Files
komorebi/docs/linux/usage/application-specific-configuration.md
T
LGUG2Z d781028a2a refactor(repo): move the KDE and macOS docs under docs/ (pure move)
komorebi-for-kde/docs/ -> docs/linux/
komorebi-for-mac/docs/ -> docs/macos/

The Windows docs stay where they are (docs/). Renames only, so links and include paths
that named the old directories are broken at this revision; they are fixed in the revision
that fixes the paths of the whole layout move.
2026-11-05 15:03:27 -08:00

2.9 KiB

Application specific configuration

Some applications need to be told how to behave under a tiling window manager: a calculator that should float instead of taking a tile, a launcher that should never be tiled. The rules that say so can be put in komorebi.json, or in a file of their own, applications.json, that the configuration names. The file can be shared, or kept apart from the settings, and a list of files can be put together from several sources.

The file

applications.json is an object with one entry for each application. The name of the entry is only for the reader. Each entry has lists of rules, as komorebi.json has them:

{
  "KDE Plasma": {
    "floating": [
      { "kind": "Class", "id": "org.kde.kcalc", "matching_strategy": "Equals" },
      { "kind": "Class", "id": "org.kde.spectacle", "matching_strategy": "Equals" }
    ]
  },
  "Steam": {
    "ignore": [{ "kind": "Exe", "id": "steam", "matching_strategy": "Equals" }]
  }
}
List What it does In komorebi.json
ignore komorebi leaves the windows alone ignore_rules
manage komorebi tiles the windows, whatever the ignore rules say manage_rules
floating the windows open floating floating_applications
titleless, tabbed nothing: they work around how another platform exposes windows, and a KWin window is always a window titleless_applications, tabbed_applications

An entry named $schema has the address of a schema as its value, as an editor wants it, and is ignored.

Naming the file

app_specific_configuration_path in komorebi.json is the path of one file, or a list of paths:

{
  "app_specific_configuration_path": "$HOME/.config/komorebi/applications.json"
}
{
  "app_specific_configuration_path": [
    "$HOME/.config/komorebi/applications.json",
    "$HOME/.config/komorebi/mine.json"
  ]
}

Environment variables in a path, such as $HOME, are replaced. The files are read when komorebi.json is: when the daemon starts, and again when the configuration changes. Their rules are added to the ones the daemon has, after the rules of komorebi.json itself, which Configuration explains.

A path with no file behind it is skipped, and the daemon logs a warning: one komorebi.json can serve every platform, even if it names a file that only another platform has. A file that is there and is not an applications.json, or has a rule that is not valid, is an error: the daemon does not start with it, and a reload with it fails and logs the error. Only a file with the extension .json is read.

The file komorebi ships

komorebic/applications.json in the repository has an entry for KDE Plasma, which floats the calculators of KDE and GNOME, the screenshot tool, the authentication dialog of Plasma and System Settings. A test loads it, and opens the windows it names.