mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-14 12:53:43 +01:00
komorebi managed every normal window that is alive, and there was no way to keep an application out of the layout. The rule engine decides whether a window is managed: an ignore rule keeps the windows it matches out, unless a manage rule matches them too, and a float rule puts a window in the floating windows of its workspace when it opens. A rule matches a window by its title, its executable, its class or the path of its executable. Plasma's shell and KRunner are ignored from the start. `komorebic ignore-rule` and `manage-rule` add a rule, `session-float-rule` floats the focused window and the windows like it until the daemon stops, `clear-session-float-rules` removes those rules, and `global-state` shows the rules. The `DebugWindow` message says why a window is managed or not. Applications often open a window before they give it its title, so the bridge now reports a title change, and a window komorebi does not have is asked about again when its title changes, for a rule on the title to decide. The vm-commands sweep adds and shows rules, and a section of its own checks that a window an ignore rule matches by its first title is tiled once it has another. vm-kwin-events checks that a window giving itself another title reaches the daemon as a title update.
72 lines
3.0 KiB
Markdown
72 lines
3.0 KiB
Markdown
# Rules
|
|
|
|
A rule names an application by one of four things about its windows, and says what komorebi does
|
|
with them:
|
|
|
|
- `exe`: the name of the program's executable, such as `kate`;
|
|
- `class`: the app id of a Wayland window, such as `org.kde.kate`, or the class of an X11 window;
|
|
- `title`: the title of the window;
|
|
- `path`: the full path of the executable, such as `/usr/bin/kate`.
|
|
|
|
[`komorebic state`](../cli/state.md) shows them for every window komorebi has, as the `title`,
|
|
`exe`, `class` and `path` of its `details`.
|
|
|
|
## Ignoring an application
|
|
|
|
[`komorebic ignore-rule`](../cli/ignore-rule.md) makes komorebi leave the windows of an
|
|
application alone. A rule given this way matches a title or a class that starts or ends with what
|
|
it names, and an executable or a path that is exactly what it names. The windows it matches are
|
|
not tiled when they open, and the tiled windows of the workspaces in front whose executable,
|
|
class, title or path is exactly what it names leave the layout.
|
|
|
|
```sh
|
|
komorebic ignore-rule exe steam
|
|
komorebic ignore-rule class org.kde.kcalc
|
|
komorebic ignore-rule title "Picture-in-Picture"
|
|
```
|
|
|
|
`komorebic float-rule` is the same command. Plasma's desktop and panels (`plasmashell`) and
|
|
KRunner are ignored from the start.
|
|
|
|
[`komorebic manage-rule`](../cli/manage-rule.md) makes komorebi tile the windows of an
|
|
application that an ignore rule covers, from the next one that opens.
|
|
|
|
```sh
|
|
komorebic manage-rule class org.kde.plasmashell
|
|
```
|
|
|
|
[`komorebic manage`](managing-windows.md#taking-a-window-out-of-the-layout) does not take in a
|
|
window an ignore rule covers: a manage rule does.
|
|
|
|
## When a rule decides
|
|
|
|
A rule decides when a window opens. Applications often open a window before they give it its
|
|
title, so the title a rule sees then can be a placeholder. When the title of a window komorebi
|
|
does not have changes, komorebi asks the rules again, so a window that a title rule ignored while
|
|
it had its first title is tiled once its title no longer matches. A window komorebi tiles stays
|
|
tiled whatever its title becomes.
|
|
|
|
## Floating the windows of an application
|
|
|
|
[`komorebic session-float-rule`](../cli/session-float-rule.md) takes the focused window out of
|
|
the layout into the floating windows of its workspace, and adds a rule that floats every window
|
|
that opens with the same executable, class and title.
|
|
[`komorebic session-float-rules`](../cli/session-float-rules.md) shows those rules, and
|
|
[`komorebic clear-session-float-rules`](../cli/clear-session-float-rules.md) removes them: the
|
|
windows that float already stay floating.
|
|
|
|
```sh
|
|
komorebic session-float-rule
|
|
komorebic session-float-rules
|
|
komorebic clear-session-float-rules
|
|
```
|
|
|
|
A window that a float rule matches floats when it opens, and
|
|
[`komorebic toggle-float`](floating-windows.md) puts one in the layout.
|
|
|
|
## How long rules last
|
|
|
|
The rules given with these commands last until the daemon stops.
|
|
[`komorebic global-state`](../cli/global-state.md) shows the ignore and the manage rules the daemon
|
|
has, and its data directory.
|