docs/dev/COMPARE.md says what komorebi for KDE shares with komorebi for Windows and komorebi for Mac, what differs, what KDE does by itself and what is not supported, for a reader who knows komorebi on one of them. Its tables are generated by scripts/compare-gen.py from this checkout and from checkouts of the other two, because a count or a name typed by hand is wrong after the next change to a command, a key or an event. The script also checks the notes that say why a command has no counterpart, and the sentences of the document that depend on a table, and stops when one of them is no longer true. CI has neither checkout and cannot run it; CONTRIBUTING says when to run it. The tables have no column for the commit that added a row: the plan that numbered the commits is not in the repository, and a number the script cannot derive for the next commit would stop it. The other documents had places that said something the repository does not carry or does not do: - DESIGN cited docs/kde.md, which no commit carries, said spike 8 "asked whether" one komorebi.json could be shared, and described the default of the key binding mode as a plan. Each entry now states the rule and the evidence. The first entry no longer says that the Windows implementation is the reference: both it and the macOS one were read, and the native thing is preferred where the other two need a workaround. - "The spikes" was used in PLATFORM, DESIGN and COMPARE and defined nowhere. PLATFORM's vocabulary defines it, and PLATFORM has a list of what was not measured, which COMPARE links to. - ARCHITECTURE said a maximized window is hidden with its workspace and shown with it, and that the code has a TODO for cycling the focus. A workspace switch hides nothing, since KWin shows and hides the desktop's windows, and the cycle leaves a maximized window as it is; the TODO and the commented-out code under it in window_manager.rs are replaced by a comment that says so. The Key bindings section no longer repeats the headings of the sections before it. - README listed the subcommands that work without the daemon, and the list was short. It gives the rule and one example of each kind. - The page on changing monitors opened with "nothing to configure" and then named display_index_preferences. - COMPARE said KWin waits 300 ms for the pointer to settle before it moves the focus. That is KWin's default (DelayFocusInterval, in KWin 6.8.1), and komorebi sets it to 0 while focus follows mouse is on; the page now says so. - ARCHITECTURE's opening list of what the page describes stopped at the borders and had no word of animation, themes, wallpapers, transparency, focus follows mouse or key bindings. Two link definitions that it had twice are there once. - PLATFORM's list of what was not measured has the progress of the stock animation effect against the clock: one capture showed none four seconds into a 30 s animation, where the curve gives about 60 %. - README, docs/index.md and ARCHITECTURE link COMPARE.md. - COMPARE's list of the methods of Backend has drag_end, which the end of a resize is read through, and compare-gen.py has the row and the counts.
2.9 KiB
Focusing windows
komorebi gives the focus to another window of the focused workspace when it is told to. It moves no window to do it: the windows stay on their tiles, and KWin makes the chosen one the active window.
In a direction
komorebic focus focuses the window whose tile is on one side of the
focused one: left, right, up or down. Which tile is on which side is the layout's
business. In the BSP layout with three windows, for example, the first window has the left
half, and focus right from it goes to the window at the top right.
komorebic focus left
komorebic focus down
komorebic focus up
komorebic focus right
When there is no tile on that side, the focus goes to the monitor on that side, if there is one,
to the tile nearest the monitor the focus came from: focus right lands on the leftmost tile of
the monitor on the right. With no monitor there either, nothing happens, and the daemon logs
"there is no container or monitor in this direction".
komorebic focus-monitor focuses a monitor by its index,
komorebic cycle-monitor the next or the previous one, and
komorebic focus-monitor-at-cursor the one the pointer is
on. komorebic eager-focus focuses the first window komorebi manages of
an executable, on any workspace of any monitor, and shows its workspace.
komorebic focus-monitor 1
komorebic eager-focus firefox
In order
komorebic cycle-focus focuses the next or the previous window in the
order of the workspace, which is the order in which the windows were opened, each new one
after the window that had the focus. It wraps around: next from the last window is the
first.
komorebic cycle-focus next
komorebic cycle-focus previous
The largest tile
komorebic promote-focus focuses the window on the first tile of the
layout, which is its largest (Moving windows).
The pointer
By default the pointer moves to the middle of the window that is given the focus. komorebi asks
KWin to do it with its "Move Mouse to Focus" shortcut, so the pointer follows only in a session
that has KWin's global shortcuts (a headless KWin has none).
komorebic mouse-follows-focus turns this on or off, and
komorebic toggle-mouse-follows-focus switches between
the two:
komorebic mouse-follows-focus disable
komorebic toggle-mouse-follows-focus
The setting is in the daemon's state as mouse_follows_focus, and it lasts until the daemon
stops.
Binding them to keys
komorebi reads no keys. Bind the commands to keys in Plasma's System Settings, under Keyboard,
Shortcuts, as custom shortcuts that run a command: for example Meta+H for
komorebic focus left and Meta+L for komorebic focus right.