Skip to content

Usage & Shortcuts

Tiling works the same whether you run KDE Plasma + tiling (normal Plasma session, easiest start) or a KWin + Noctalia custom session. See Overview → Two ways to start for which path fits you; this page covers shortcuts and the settings panel for both.

All shortcuts are registered as KWin actions. Rebind them in System Settings → Shortcuts → KWin.

Action Default binding
Focus left / right / up / down Meta+Left / Meta+Right / Meta+Up / Meta+Down
Toggle floating Meta+W
Promote to master Meta+Shift+Space
Toggle master pin Meta+S
Move window prev / next in layout Meta+Shift+Left / Meta+Shift+Right
Move window left / right / up / down in layout Meta+Alt+Left / Meta+Alt+Right / Meta+Alt+Up / Meta+Alt+Down
Move window to left / right monitor Meta+Shift+Ctrl+Left / Meta+Shift+Ctrl+Right
Increase / decrease master width Meta+Ctrl+L / Meta+Ctrl+H
Increase / decrease window height Meta+Ctrl+K / Meta+Ctrl+J
Increase / decrease master count Meta+Ctrl+. / Meta+Ctrl+,
Retile (rebuild current screen) Meta+Shift+R
Focus last window Meta+U
Cycle layout Meta+Shift+T
Reset sizes Meta+Ctrl+0
Toggle zoom (monocle) Meta+Shift+Z
Flip master side Meta+Shift+F
Toggle gaps Meta+Shift+G
Scrolling: center column / cycle column width Meta+Shift+C / Meta+Shift+V
Scrolling: consume / expel window Meta+Shift+[ / Meta+Shift+]
Switch to MasterStack / Stacked / Scrolling / Centered / Grid (unbound)

KGlobalAccel only applies a default when the shortcut is free and the action is new in your profile. If an action was previously unbound, assign it once in Settings (or remove its stale entry from kglobalshortcutsrc).

  • Drag the master/stack divider to set the master column width
  • Drag a tiled window onto another to swap positions
  • Drag onto empty space to insert the window at that position
  • Drag horizontal borders inside a column to resize individual window heights
  • Drag vertical borders in Scrolling to resize the active column width
  • Unsupported resize directions snap back

Right-click a window for Float (Tiling) (this window) or Always Float This App (Tiling) (permanent class rule).

System Settings → Window Management → Tiling

Layout & Gaps — defaults for every monitor, plus per-output overrides:

Layout and gap settings with per-monitor overrides

Rules — float or ignore windows by app class or title:

Float and ignore rules for apps and windows

Setting What it does
Enable tiling Global on/off switch
Available layouts Which layouts appear in the cycle (MasterStack, Stacked, Scrolling, Centered)
Default layout Layout used on new monitor/desktop pairs
Master width Master column as a fraction of screen width (0.1–0.9)
Master count How many windows sit in the master area
Default column width Scrolling layout: width of new columns
Gap margins Left, right, top, bottom screen margins
Gap between Space between adjacent tiles
Per-output overrides Different layout or gap values per monitor

Per-monitor overrides can be reset with the Reset all per-monitor overrides button in the KCM.

Settings are stored in ~/.config/kwinrc under [Tiling]:

[Tiling]
Enabled=true
DefaultLayout=MasterStack
EnabledLayouts=MasterStack,Stacked,Scrolling,Centered
MasterRatio=0.5
MasterCount=1
GapBetween=4
GapLeft=8

Per-monitor values live under [Tiling][Output <name>] subgroups.

  • MasterStack — one or more primary windows on one side, the rest stacked on the other. Best for a main app plus side apps.
  • Stacked — single column, full width, windows stacked vertically.
  • Scrolling — horizontal strip of columns; viewport scrolls to the active one.
  • Centered — master window in the centre, others in left/right stacks.

Cycle between enabled layouts with the cycle action, or set a default in the KCM.

  • Tiling is on by default once the module is active
  • New windows tile into the layout for their monitor and desktop
  • Moving between desktops or monitors retiles and moves focus with the window
  • Master ratio, master count, and layout choices persist across restarts

Consume the flake and compose the module onto hosts that should run tiling:

imports = [ inputs.kwin-tiling.nixosModules.kwin-tiling ];

Or use the overlay / package directly:

nixpkgs.overlays = [ inputs.kwin-tiling.overlays.default ];

Patching KWin rebuilds the compositor and its reverse-dependencies — only enable on hosts that actually want native tiling. A binary cache for this repo is strongly recommended.

  • Master ratio, count, and scrolling column width default globally; override per monitor in the KCM (not per virtual desktop)
  • Divider drag gives an approximate ratio when gaps are non-zero

See Roadmap for planned improvements.