A dynamic tiling extension for KWin 6 only.
Krohnkite-i3 is a fork of Kröhnkite that specifically implements i3 style tiling to the KDE plasma desktop environment.
The main motivation for this fork came from the fact that there was no other tiler which could provide i3 style tiling inside of KDE Plasma other than just hacking out kwin and replacing it with i3 under X11 sessions which broke a lot of window management features.
Krohnkite by anametologin did come close, however it only supported layouts of other tiling window managers (dwm, bspwm). The reason why I went out of my way to delete a lot of other layouts by krohnkite was to make it easier for me to navigate through the project and built up on it.
If you require the other layouts, then it would be better to revert back to anametologin's Krohnkite.
- i3 style splitting (vertical and horizontal)
- Window Shifting/Movement
- Nested container tree
- alternative layouts
- stack
- tabbed
- Typescript (see package.json)
- go-task
- p7zip (7z)
- If you change the Krohnkite co nfiguration, you will need to reboot. Do not toggle the script on and off, this will start multiple instances of it.
- Delete unused KWin shortcuts you can use any D-Bus program which can invoke D-Bus methods. Service name -
org.kde.kglobalaccelpath -/component/kwinmethod -org.kde.kglobalaccel.Component.cleanUp. ArchLinux example:
qdbus6 org.kde.kglobalaccel /component/kwin org.kde.kglobalaccel.Component.cleanUp
- If you have a gap or vice versa you have gray(white etc) rectangle that means that there is a program with size 1x1 that have to be filtered by title or other ways. Make sure that the following programs, if you have them, have been added to the filter:
xwaylandvideobridge,plasmashell,ksplashqml
You can install Kröhnkite in multiple ways.
You can download krohnkite-x.x.x.x.kwinscript file, and install it through
System Settings.
- Download the kwinscript file
- Open
System Settings>Window Management>KWin Scripts - Press
Import KWin script...on the top-right corner - Select the downloaded file
Alternatively, through command-line: get info about package:
kpackagetool6 -t KWin/Script -s krohnkite
install:
kpackagetool6 -t KWin/Script -i krohnkite-x.x.x.x.kwinscript
upgrade:
kpackagetool6 -t KWin/Script -u krohnkite-x.x.x.x.kwinscript
uninstall:
kpackagetool6 -t KWin/Script -r krohnkite
Make sure you have go-task, npm and 7-zip packages installed. All packages after building will be in builds folder.
The simplest method to automatically build and install kwinscript package would be:
go-task install
You can also build .kwinscript package file using:
go-task package
uninstall package:
go-task uninstall
- to found window's className,resourcename or caption see readme
- you can use the name of class in square brackets:
[myNamE]will float or ignore all windows with class or resource names such: 'myname1', 'Myname2', 'Notmyname555' etc...
| Key | Action |
|---|---|
| Meta + C | Split Horizontally |
| Meta + V | Split Vertically |
| Meta + . | Focus Next |
| Meta + , | Focus Previous |
| Meta + J | Focus Down |
| Meta + K | Focus Up |
| Meta + H | Focus Left |
| Meta + L | Focus 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 + \ | Next Layout |
| Meta + | | Previous Layout |
| Meta + Return | Set as Master |
Krohnkite supports multi-screen setup, but KWin has to be configured to unlock the full potential of the script.
- Enable
Separate Screen Focusfeature:
-
System Settings>Window Management>Window Behavior>Multiscreen BehaviourORuse console commands:
kwriteconfig6 --file ~/.config/kwinrc --group Windows --key ActiveMouseScreen false
kwriteconfig6 --file ~/.config/kwinrc --group Windows --key SeparateScreenFocus true
- 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 + >)
Breeze window decoration can be configured to completely remove title bars from all windows:
System Setting>Application Style>Window Decorations- Click
Configure Breezeinside the decoration preview. Window-Specific Overridestab >Addbutton- Enter the followings, and press
Ok:Regular expression to match:.*- Tick
Hide window title bar
Changing the border color makes it easier to identify current window. This is convinient if title bars are removed.
- You can use the Oxygen decoration theme. Oxygen theme settings
- You can install third-party decorations, see Border color conversation
- You can add to the WM section in $HOME/.config/kdeglobals (this changes the default Breeze decoration frame colors):
frame=R,G,BinactiveFrame=R,G,B
Some applications like discord and KDE settings dont tile nicely as they have a minimum size requirement. This causes the applications to overlap with other applications. To mitigate this we can set minimum size for all windows to be 0.
System Setting>Window Management>Window Rules- Click on
+ Add New... - Set
Window classto beUnimportant - Set
Window typestoNormal Window - Click
+ Add Properties... - Add the
Minimum SizeProperty - Set the fields to
Forceand0x0 - Apply
When a window is marked "maximized" in Breeze theme, its borders are removed to save screen space. This behavior may not be preferable depending on your setup. This can be mitigated by disabling maximized windows using Window Rules.
System Setting>Window Management>Window Rules- Click on
+ Add New... - Set
Window classto beUnimportant - Set
Window typestoNormal Window - Click
+ Add Properties... - Add the
Maximized horizontallyandMaximized verticallyProperties. - Set the options to
ForceandNo. - Apply
- KWin Scripting Tutorial
- KWin Scripting API
- Adding configuration dialog
*.uifiles can be edited with Qt Designer. It's very straight-forward if you're used to UI programming.
