komorebi's workspaces exist on Windows and macOS because neither has a virtual desktop API: switching hides every window of the workspace being left. KWin has virtual desktops, per output since 6.8, so here workspace i is KWin's desktop i on every monitor, and each monitor shows one. KWin shows, hides and focuses the windows of a desktop; komorebi asks for a switch, puts a window on a desktop, and follows what anything else does. The Backend gets the workspace methods (ensure_workspaces, switch_workspace, set_window_workspace, window_workspace, current_workspaces), and the fake its desktops. The bridge reports the desktops, the desktop each output shows and a window's desktops, and carries out output_desktop and desktop commands, typed and tested with the fixtures like the rest. The table turns a switch or a move komorebi did not make into a WorkspaceChange or a WorkspaceMove, and records its own when it sends them, so that KWin's report of those raises nothing. The window manager follows a switch with no command in reply (adopt_workspace_change), puts windows on their desktops before a desktop is shown (focusing a window first would take the monitor back), and loads the windows open at startup onto the workspace of their desktop. Per-output desktops are a kwinrc setting that is off by default, and kwriteconfig6 was not on the PATH of the user service in a live session, so komorebi edits kwinrc itself (kwin::kwinrc) and puts the user's value back when it stops, also after a crash. focus-workspace, move-to-workspace and send-to-workspace come with this commit, since the tests of switching and moving, and vm-workspace-switch, need them; the named and cycling workspace commands follow. vm-workspace-switch runs the daemon against a real KWin; vm-kwin-contract checks what komorebi relies on from KWin's per-output desktops, on a headless KWin with two outputs and no komorebi.
5.7 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 the focused window to another tile,
Layouts how to change the arrangement of the tiles,
Resizing windows how to change the size of one,
Floating windows how to take a window out of the layout,
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.
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.