bin | ||
img | ||
res | ||
src | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
README.md | ||
tsconfig.json | ||
tslint.json |
Kröhnkite
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.
Features
- 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:
- Activities
- Virtual desktops
- Window switcher
- Fullscreen (KWin can fullscreen any window)
- Minimization
Development Requirement
- 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:
make install
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/:
kwin_x11 --replace
New instance will replace the current one, and print debugging message(i.e.
console.log
) to terminal. This is useful for testing and debugging.
Enabling User-Configuration
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 System Settings
.
Default Key Bindings
Key | Action |
---|---|
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 |
Tips
Removing Title Bars
System Setting
>Application Style
>Window Decorations
- Click
Configure Breeze
inside the preview. Window-Specific Overrides
tab >Add
button- Enter the following:
Regular expression to match
:.*
- Check
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.
- Open
~/.config/kdeglobals
with your favoir editors. (i.e. Kate, Vim, Nano) - Scroll down and find
[WM]
section - 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 Focus
option is required to enableSwitch to Next/Previous Screen
shortcuts, which allow switching b/w screens only with keyboard.- The option can be found under
Window Management
>Window Behavior
>Multiscreen Behaviour
. Note that this option appears only when multiple monitors are present. Active Screen follows Mouse
is NOT recommended.
- Switching screen with Shortcuts
- In
Global Shortcut
, you can findSwitch to Next Screen
andSwitch to Previous Screen
. They have no default key bindings. - It's recommended to bind them to
Meta + ,
andMeta + .
. - Switching b/w screens also sets the active window to the last active window on the current screen.
- In
- Moving Window b/w Screens
- KWin provides
Window to Next/Previous Screen
feature - Recommended bindings are
Meta + <
andMeta + >
- KWin provides
Useful Development Resources
- KWin Scripting Tutorial
- KWin Scripting API 4.9 Reference
- KDE API Reference
- Adding configuration dialog
*.ui
files can be edited with Qt Designer. It's very straight-forward if you're used to UI programming.