A dynamic tiling extension for KWin.
Kröhnkite is mainly inspired by dwm from suckless folks, and aims to provide rock solid stability while fully integrating into KWin.
The name of the script is from mineral Kröhnkite; it starts with K and looks cool.
- DWM-like window tiling
- Dynamically tile windows, rather than manually placing each.
- Floating windows
- Fully integrates into KWin features, including:
- Activities & Virtual desktop
- Basic window management (minimize, fullscreen, switching, etc)
- Multiple Layout Support
- Tiling layout
- Monocle layout
- Desktop-friendly layouts (Spread, Stair)
- Typescript (tested w/ 3.1.x)
- GNU Make
- p7zip (7z)
You can install Kröhnkite in multiple ways.
Using .kwinscript package file
You can download
krohnkite-x.x.kwinscript file, and install it through
- Download the kwinscript file
Import KWin script...on the top-right corner
- Select the downloaded file
Alternatively, through command-line:
plasmapkg2 -t kwinscript -i krohnkite.kwinscript # installing new script plasmapkg2 -t kwinscript -u krohnkite.kwinscript # upgrading existing script
To uninstall the package:
plasmapkg2 -t kwinscript -r krohnkite
Installing from Git repository
The simplest method would be:
make install make uninstall # to uninstall the script
This will automatically build and install kwinscript package.
You can also manually build package file using:
The generated package file can be imported from "KWin Script" dialog.
Simply Trying Out
Krohnkite can be temporarily loaded without installing the script:
make run make stop
Note that Krohnkite can destroy itself completely once it is disabled, so no restart is required to deactivated it.
It is reported that a manual step is required to enable user configuration of KWin scripts. This is a limitation of KWin scripting.
To enable configuration, you must perform the following in command-line:
mkdir -p ~/.local/share/kservices5/ ln -s ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop
A configuration button will appear in
KWin Scripts in
To make changes effective, the script must be reactivate:
KWin Scriptsdialog, untick Krohnkite
- tick Krohnkite
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|
Setting Up for Multi-Screen
Krohnkite supports multi-screen setup, but KWin has to be configured to unlock the full potential of the script.
Separate Screen Focusunder
- Bind keys for global shortcut
Switch to Next/Previous Screen(Recommend:
Meta + ,/
Meta + .)
- Bind keys for global shortcut
Window to Next/Previous Screen(Recommend:
Meta + </
Meta + >)
Separate Screen Focus appears only when multiple monitors are present.
Removing Title Bars
Breeze window decoration can be configured to completely remove title bars from all windows:
Configure Breezeinside the decoration preview.
Window-Specific Overridestab >
- Enter the followings, and press
Regular expression to match:
Hide window title bar
Changing Border Colors
Changing the border color makes it easier to identify current window. This is convinient if title bars are removed.
~/.config/kdeglobalswith your favorite editor
- Scroll down and find
- Append the followings to the section:
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 are for the default Breeze theme)
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.