A dynamic tiling extension for KWin.
Kröhnkite is mainly inspired by dwm from suckless folks, and aims to be "simple" in both development and usage.
- DWM-like window tiling
- Dynamically tile windows, rather than manually placing each.
- Floating windows
- Multiple Layout Support
- Tiling layout
- Monocle layout
- Desktop-friendly layouts (Spread, Stair)
- Integrates well into KWin features, including:
- Virtual desktops
- Window switcher
- Fullscreen (KWin can fullscreen any window)
- Typescript (tested w/ 3.1.x)
- GNU Make
- p7zip (7z)
Build & Install
You can install Kröhnkite in multiple ways.
The simplest method would be:
This will automatically build and install kwinscript package. Note that you can
manually build package file using
make package. The generated package file
can be imported from "KWin Script" dialog in "System Settings".
Simply Trying Out
If you don't want to install the script, but still want to try, you can:
make run make stop
to temporarily load (and unload) the script to KWin. You may also want to restart KWin w/:
New instance will replace the current one, and print debugging message(i.e.
console.log) to terminal. This is useful for testing and debugging.
It is reported that a manual step is required to enable configuration of KWin scripts. This is a current limitation of KWin scripting envrionment.
To enable configuration, you must perform the following in command-line:
mkdir -p ~/.local/share/kservices5/ cp ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop
A configuration button will appear in
KWin Scripts in
Default Key Bindings
|Meta + J||Focus Down/Next|
|Meta + K||Focus Up/Previous|
|Meta + H||Left|
|Meta + L||Right|
|Meta + Shift + J||Move Down/Next|
|Meta + Shift + K||Move Up/Previous|
|Meta + Shift + H||Move Left|
|Meta + Shift + L||Move Right|
|Meta + I||Increase|
|Meta + D||Decrease|
|Meta + F||Toggle Floating|
|Meta + \||Cycle Layout|
|Meta + Return||Set as Master|
|Meta + T||Use Tile Layout|
|Meta + M||Use Monocle Layout|
|unbound||Use Spread Layout|
|unbound||Use Stair Layout|
Removing Title Bars
Configure Breezeinside the preview.
Window-Specific Overridestab >
- Enter the following:
Regular expression to match:
Hide window titel bar
(Note: not all decorations support this feature.)
Changing Border Colors
Changing the color of borders makes it easier to identify the currently focused window. This is quite an essential if title bars are removed.
~/.config/kdeglobalswith your favoir editors. (i.e. Kate, Vim, Nano)
- Scroll down and find
- Below the section, append the followings:
frame=61,174,233: set the border color of active window to RGB(61,174,233)
inactiveFrame=239,240,241: set the border color of inactive window to RGB(239,240,241)
- You must restart your session to see changes. (i.e. re-login, reboot)
(Note: the RGB values presented here is for the default Breeze theme. Feel free to change these values. You can use KColorChooser to pick colors from the screen.)
Setting Up for Multi-Screen
Krohnkite supports tiling on multi-screen environment, but users must configure KWin to unlock the full potential of tiling management.
- Switching between Screens
Separate Screen Focusoption is required to enable
Switch to Next/Previous Screenshortcuts, which allow switching b/w screens only with keyboard.
- The option can be found under
Multiscreen Behaviour. Note that this option appears only when multiple monitors are present.
Active Screen follows Mouseis NOT recommended.
- Switching screen with Shortcuts
Global Shortcut, you can find
Switch to Next Screenand
Switch to Previous Screen. They have no default key bindings.
- It's recommended to bind them to
Meta + ,and
Meta + ..
- Switching b/w screens also sets the active window to the last active window on the current screen.
- Moving Window b/w Screens
- KWin provides
Window to Next/Previous Screenfeature
- Recommended bindings are
Meta + <and
Meta + >
- KWin provides
Useful Development Resources
- KWin Scripting Tutorial
- KWin Scripting API 4.9 Reference
- KDE API Reference
- Adding configuration dialog
*.uifiles can be edited with Qt Designer. It's very straight-forward if you're used to UI programming.