Files
komorebi/docs/index.md
T
LGUG2Z f530318cee feat(wm): outputs unplugged and plugged back
KWin takes the windows of an output that goes to the outputs that are left and
puts them where it likes, so komorebi's tiles for them were on a screen that was
gone and the windows sat untiled where they landed. The monitor reconciliator
now deals with a change in the set of monitors: the table announces it as a
display connection change instead of a resize, and reconcile_display_change
reads the monitors again, keeps each one that went (workspaces, layouts,
paddings, offsets) in a cache, has the window manager move what was on it to the
monitors that are left, and removes it.

The move is WindowManager::evacuate_monitor, in the new reconcile module: each
container and floating window goes to the workspace of the same number on the
monitor that holds the middle of its window, or on the first monitor that is
left when it is on none, and the workspaces that changed are tiled. A stack goes
as one container, and a monocle and a maximized window come as ordinary
containers. A monitor that is plugged in takes what was cached under its serial
number id, less the windows that closed or that the window manager has elsewhere
by now, so it comes back with its settings and none of the windows it had. A
monitor komorebi never saw gets workspaces of its own, and when the compositor
reports no output at all nothing is done.

The workspace rules of a monitor that goes are dropped, and those of the
workspaces of one that comes back apply again. komorebi.json fills the cache as
well: a monitor that has the entry its display index preference names is kept
with it, and so is the entry of each preference whose monitor is not connected,
which that monitor takes when it is plugged in.

vm-hotplug now sends two windows to the other monitor with komorebic, disables
that output, enables it again and sends a window over once more.
2026-10-28 07:20:57 -07:00

7.6 KiB

komorebi for KDE

Overview

komorebi is a tiling window manager for KDE Plasma on Wayland. It decides where each window goes, and KWin, the window manager of Plasma, moves and draws the windows.

komorebi is a daemon that runs in the background, and it is controlled with a CLI, komorebic. Every komorebic command that asks something of the daemon is a message on its socket, so anything that can run a command can drive komorebi: a terminal, a script, or a program that binds keys, which is how a key is given an action.

komorebi aims to make as few modifications as possible to the operating system and desktop environment by default. Users are free to make such modifications in their own configuration files for komorebi, but these will always remain opt-in and off-by-default.

How it fits together

komorebi only responds to the events KWin reports about windows and to the messages it receives on a dedicated socket. komorebic is a CLI that writes messages on komorebi's socket. komorebi doesn't handle any keyboard or mouse inputs: a program that binds keys, such as the custom shortcuts in Plasma's System Settings, runs komorebic commands.

               PROCESS                SOCKET
key bindings  -------->  komorebic  <------>  komorebi

Getting started

Installing komorebi explains how to install the two programs: on NixOS with the flake's module, which also starts komorebi with every Plasma session, and from source anywhere else. Running komorebi explains how to start and stop the daemon, ask it what it is doing and read its log. Focusing windows explains how to give the focus to another window, Moving windows how to move a window to another tile, Stacking windows how to put windows on one tile, have the others wait out of sight and bring one of them to the front, Layouts how to change the arrangement of the tiles, Resizing windows how to change the size of one (and Resizing a tile by dragging its edge what a drag with the pointer does), Floating windows how to take a window out of the layout and work with the floating ones, Monocle how to give one window the whole work area, Maximizing windows how to have KWin maximize one, Managing windows how to minimize, close and unmanage the focused window and pause the daemon, and Padding and work area offsets how to put gaps around the tiles and keep parts of a monitor free of them. Rules explains how to keep an application out of the layout, always tile it, or float its windows. Workspaces explains how each monitor shows one of its workspaces, which are KWin's virtual desktops, and how to show another or move a window to one, and Workspace rules how to have the windows of an application go to a workspace by themselves. Configuration explains komorebi.json, where komorebi looks for it and how it is reloaded when it changes, Example configurations has one to start from, and Application specific configuration explains the files of rules for particular applications it can name. Quickstart and autostart explains how to write an example configuration, how to start komorebi with Plasma without the module, and how to replace the configuration of a running daemon. Borders explains how komorebi has KWin draw a border around each window, Animation how it has KWin animate the windows going to their places, and Transparency how it makes the windows that do not have the focus see-through, Focus follows mouse how it has KWin give the focus to the window under the pointer, Themes how a theme gives the borders their colors, and Wallpapers how a monitor or a workspace shows a picture of its own, and what it does to the borders. Changing monitors explains what komorebi does when a monitor changes size, is unplugged or is plugged in. Subscribing to notifications explains how a program such as a status bar follows what komorebi does. The CLI reference has a page for every komorebic command, generated from its help.

Community

There is a Discord server available for komorebi-related discussion, help, troubleshooting etc.

There is a YouTube channel where I post komorebi development videos, feature previews and release overviews. Subscribing to the channel (which is monetized as part of the YouTube Partner Program) and watching videos is a really simple and passive way to contribute financially to the development and maintenance of komorebi.

There is an Awesome List which showcases the many awesome projects that exist in the komorebi ecosystem.

Licensing for Personal Use

komorebi is licensed under the Komorebi 2.0.0 license, which is a fork of the PolyForm Strict 1.0.0 license. On a high level this means that you are free to do whatever you want with komorebi for personal use other than redistribution, or distribution of new works (i.e. hard-forks) based on the software.

Anyone is free to make their own fork of komorebi with changes intended either for personal use or for integration back upstream via pull requests.

The Komorebi 2.0.0 License does not permit any kind of commercial use ( i.e. using komorebi at work).

Sponsorship for Personal Use

komorebi is a free and educational source project, and one that encourages you to make charitable donations if you find the software to be useful and have the financial means.

I encourage you to make a charitable donation to the Palestine Children's Relief Fund or to contribute to a Gaza Funds campaign before you consider sponsoring me on GitHub.

GitHub Sponsors is enabled for this project. Sponsors can claim custom roles on the Discord server, get shout-outs at the end of komorebi-related videos on YouTube, and gain the ability to submit feature requests on the issue tracker.

If you would like to tip or sponsor the project but are unable to use GitHub Sponsors, you may also sponsor through Ko-fi, or make an anonymous Bitcoin donation to bc1qv73wzspc77k46uty4vp85x8sdp24mphvm58f6q.

Licensing for Commercial Use

A dedicated Individual Commercial Use License is available for those who want to use komorebi at work.

The Individual Commercial Use License adds “Commercial Use” as a “Permitted Use” for the licensed individual only, for the duration of a valid paid license subscription only. All provisions and restrictions enumerated in the Komorebi License continue to apply.

More information, pricing and purchase links for Individual Commercial Use Licenses can be found here.