anametologin/Krohnkite: A dynamic tiling extension for KWin - Codeberg.org
anametologin
Krohnkite
Fork
You've already forked Krohnkite
10
Code
Issues
15
Pull requests
Releases
Wiki
Activity
A dynamic tiling extension for KWin
742
commits
branch
28
tags
MiB
TypeScript
87%
Python
7.8%
QML
3.9%
Makefile
0.7%
Shell
0.6%
Find a file
2026-03-28 16:37:57 +03:00
.github
/ISSUE_TEMPLATE
Update bug_report.md
2025-07-10 12:41:13 +00:00
img
update user documentaion
2019-01-28 16:05:16 +09:00
res
HF: Rename keyboard shortcuts to group all layouts together
#23
2026-03-21 08:27:24 +03:00
src
FIX: Frequent crashes and possible
fixes
#25
2026-03-28 16:37:57 +03:00
tools
ADD_DEV: A developer tool for automatically installing Krohnkite builds to a specified folder
2025-12-05 12:43:42 +03:00
translations
ADD: binary Chinese translation
2025-07-25 08:58:13 +03:00
.gitignore
fix: update repo URLs in package metadata
2026-02-27 14:15:58 -05:00
LICENSE
merge with master
2024-04-04 16:05:03 +03:00
Makefile
Add missing QML file to Makefile
2025-12-02 21:35:54 +01:00
package-lock.json
Bump version back down
2026-02-09 19:50:23 +01:00
package.json
fix: update repo URLs in package metadata
2026-02-27 14:15:58 -05:00
README.md
Remove default bind for cascade layout
2026-02-09 19:50:09 +01:00
taskfile.yaml
ADD: Move the mouse pointer to the center of the active window or to the center of the active screen when using krohnkites's keyboard shortcuts
2025-11-23 13:06:07 +03:00
tsconfig.json
move from ES5 to ES6
2024-09-26 04:45:14 +03:00
tslint.json
Tile
class refactor
2019-02-11 18:19:00 +09:00
README.md
Kröhnkite
A dynamic tiling extension for KWin 6 only.
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.
Features
DWM-like window tiling
Dynamically tile windows, rather than manually placing each.
Floating windows
Fully integrates into KWin features, including:
Multi-screen
Activities & Virtual desktop
Basic window management (minimize, fullscreen, switching, etc)
Multiple Layout Support
Tiling layout
Monocle layout
Desktop-friendly layouts (Spread, Stair)
Development Requirement
Typescript (see package.json)
go-task
p7zip (7z)
Look at me
If you change the Krohnkite configuration, 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.kglobalaccel
path -
/component/kwin
method -
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
Installation
You can install Kröhnkite in multiple ways.
Using .kwinscript package file
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
Installing from Git repository
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
Settings
Add a class name, a resource name or a window caption to ignore or float
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...
Choose layout for screen by default
Open Krohnkite options:
Tab
Rules->Screen default layout
. Layout configuration has format
OutputName:ActivityId:VirtualDesktopName:layoutName
multi monitor example:
HDMI-A-1:99a12h44-e9a6-1142-55eedaa7-3a922a15ab08::columns,DP-2:spread,DP-3:Desktop 3:tile,:threecolumn
- result will be:
set
columns
layout as default on monitor
HDMI-A-1
, only on activity with id:
99a12h44-e9a6-1142-55eedaa7-3a922a15ab08
, every Virtual Desktops on this activity.(if you specify
activity id
you have to to specify virtual desktop name or leave it blank)
set
spreadlayout
layout as default on monitor
DP-2
, every Activities, every Virtual Desktops;
set
tilelayout
layout as default on monitor
DP-3
, on every activity, only on virtual desktop with name
Desktop 3
set
threecolumnlayout
layout as default on all monitors,all activities and all Virtual Desktops not covered by the previous rules
How to find
outputName
activityId
VirtualDesktopName
layoutName
Right after system boot run KSystemLog
Push ignore button
Type in filter string:
krohnkite
Right after
KROHNKITE: starting the script
string you will see one if you have one monitor or multiple lines: Screen(output):
Screen Name
,Desktop(name):
Virtual Desktop Name
,Activity:
Activity Id
,layouts:
numbered layouts
(the case doesn't matter,
layout
ending can be omitted):
tilelayout
monoclelayout
columns
threecolumnlayout,
spreadlayout
stairlayout
spirallayout
stackedlayout
floatinglayout
btreelayout
Apply
->
reboot
Search a window parameters to filter, float etc.
Krohnkite options:
Options->Debug new Windows
Reboot
Run KSystemLog
Push
Ignore
button
Type in filter string:
krohnkite
All created windows krohnkite working with will be there.
Every debug entry contains parameters except those that are false and empty.
Default Key Bindings
Key
Action
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
Meta + T
Use Tile Layout
Meta + M
Use Monocle Layout
unbound
Use Spread Layout
unbound
Use Stair Layout
unbound
Use Cascade Layout
Tips
Setting Up for Multi-Screen
Krohnkite supports multi-screen setup, but KWin has to be configured to unlock
the full potential of the script.
Enable
Separate Screen Focus
feature:
System Settings
Window Management
Window Behavior
Multiscreen Behaviour
OR
use 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 + >
Removing Title Bars
Breeze window decoration can be configured to completely remove title bars from
all windows:
System Setting
Application Style
Window Decorations
Click
Configure Breeze
inside the decoration preview.
Window-Specific Overrides
tab >
Add
button
Enter the followings, and press
Ok
Regular expression to match
.*
Tick
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.
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,B
inactiveFrame=R,G,B
Setting Minimum Geometry Size
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 class
to be
Unimportant
Set
Window types
to
Normal Window
Click
+ Add Properties...
Add the
Minimum Size
Property
Set the fields to
Force
and
Apply
Prevent borders and shadows from disappearing.
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 class
to be
Unimportant
Set
Window types
to
Normal Window
Click
+ Add Properties...
Add the
Maximized horizontally
and
Maximized vertically
Properties.
Set the options to
Force
and
No
Apply
Useful Development Resources
KWin Scripting Tutorial
KWin Scripting API
Adding configuration dialog
Development/Tutorials/Plasma/JavaScript/ConfigDialog
Development/Tutorials/Using KConfig XT
*.ui
files can be edited with
Qt Designer
It's very straight-forward if you're used to UI programming.
US