{"id":13563545,"url":"https://github.com/esjeon/krohnkite","last_synced_at":"2025-04-08T11:07:14.288Z","repository":{"id":37561649,"uuid":"156337394","full_name":"esjeon/krohnkite","owner":"esjeon","description":"A dynamic tiling extension for KWin","archived":false,"fork":false,"pushed_at":"2023-08-09T10:47:28.000Z","size":1011,"stargazers_count":1774,"open_issues_count":117,"forks_count":82,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-01T10:06:37.223Z","etag":null,"topics":["kde","kwin","kwin-script","tiling","tiling-scripts","tiling-window-manager","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esjeon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-11-06T06:35:53.000Z","updated_at":"2025-03-24T02:01:23.000Z","dependencies_parsed_at":"2024-01-05T20:51:20.401Z","dependency_job_id":"7d8153ce-1926-4db5-8410-350a7ef9b642","html_url":"https://github.com/esjeon/krohnkite","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esjeon%2Fkrohnkite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esjeon%2Fkrohnkite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esjeon%2Fkrohnkite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esjeon%2Fkrohnkite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esjeon","download_url":"https://codeload.github.com/esjeon/krohnkite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247829490,"owners_count":21002995,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kde","kwin","kwin-script","tiling","tiling-scripts","tiling-window-manager","typescript"],"created_at":"2024-08-01T13:01:20.447Z","updated_at":"2025-04-08T11:07:14.256Z","avatar_url":"https://github.com/esjeon.png","language":"TypeScript","funding_links":[],"categories":["Window Managers","TypeScript"],"sub_categories":["Dynamic Window Managers"],"readme":"Kröhnkite\n=========\n\n[![AUR-git](https://img.shields.io/aur/version/kwin-scripts-krohnkite-git.svg?label=AUR-git)](https://aur.archlinux.org/packages/kwin-scripts-krohnkite-git/)\n\nA dynamic tiling extension for KWin.\n\nKröhnkite is mainly inspired by [dwm][] from suckless folks, and aims to\nprovide rock solid stability while fully integrating into KWin.\n\nThe name of the script is from mineral [Kröhnkite][wikipedia]; it starts with\nK and looks cool.\n\n[dwm]: https://dwm.suckless.org/\n[wikipedia]: https://en.wikipedia.org/wiki/Kr%C3%B6hnkite\n\n![screenshot](img/screenshot.png)\n\n\nFeatures\n--------\n * DWM-like window tiling\n    - Dynamically tile windows, rather than manually placing each.\n    - Floating windows\n * Fully integrates into KWin features, including:\n    - **Multi-screen**\n    - **Activities \u0026 Virtual desktop**\n    - Basic window management (minimize, fullscreen, switching, etc)\n * Multiple Layout Support\n    - Tiling layout\n    - Monocle layout\n    - Desktop-friendly layouts (Spread, Stair)\n\nDevelopment Requirement\n-----------------------\n\n * Typescript (tested w/ 3.1.x)\n * GNU Make\n * p7zip (7z)\n\n\nInstallation\n------------\n\nYou can install Kröhnkite in multiple ways.\n\n### Using .kwinscript package file ###\n\nYou can download `krohnkite-x.x.kwinscript` file, and install it through\n*System Settings*.\n\n 1. Download the kwinscript file\n 2. Open `System Settings` \u003e `Window Management` \u003e `KWin Scripts`\n 3. Press `Import KWin script...` on the top-right corner\n 4. Select the downloaded file\n\nAlternatively, through command-line:\n\n    plasmapkg2 -t kwinscript -i krohnkite.kwinscript # installing new script\n    plasmapkg2 -t kwinscript -u krohnkite.kwinscript # upgrading existing script\n\nTo uninstall the package:\n\n    plasmapkg2 -t kwinscript -r krohnkite\n\n### Installing from Git repository ###\n\nThe simplest method would be:\n\n    make install\n    make uninstall # to uninstall the script\n\nThis will automatically build and install kwinscript package.\n\nYou can also manually build package file using:\n\n    make package\n\nThe generated package file can be imported from \"KWin Script\" dialog.\n\n### Simply Trying Out ###\n\nKrohnkite can be temporarily loaded without installing the script:\n\n    make run\n    make stop\n\nNote that Krohnkite can destroy itself completely once it is disabled, so no\nrestart is required to deactivated it.\n\n### Enabling User-Configuration ###\n\n[It is reported][kwinconf] that a manual step is required to enable user\nconfiguration of KWin scripts. This is a limitation of KWin scripting.\n\nTo enable configuration, you must perform the following in command-line:\n\n    mkdir -p ~/.local/share/kservices5/\n    ln -s ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop\n\nA configuration button will appear in `KWin Scripts` in `System Settings`.\n\n![config button shown](img/conf.png)\n\nTo make changes effective, **the script must be reactivated**:\n  1) On `KWin Scripts` dialog, untick Krohnkite\n  2) `Apply`\n  3) tick Krohnkite\n  4) `Apply`\n\n[kwinconf]: https://github.com/faho/kwin-tiling/issues/79#issuecomment-311465357\n\n\nDefault Key Bindings\n--------------------\n\n| Key               | Action                         |\n| ----------------- | ------------------------------ |\n| Meta + J          | Focus Down/Next                |\n| Meta + K          | Focus Up/Previous              |\n| Meta + H          | Left                           |\n| Meta + L          | Right                          |\n|                   |                                |\n| Meta + Shift + J  | Move Down/Next                 |\n| Meta + Shift + K  | Move Up/Previous               |\n| Meta + Shift + H  | Move Left                      |\n| Meta + Shift + L  | Move Right                     |\n|                   |                                |\n| Meta + I          | Increase                       |\n| Meta + D          | Decrease                       |\n| Meta + F          | Toggle Floating                |\n| Meta + \\          | Cycle Layout                   |\n|                   |                                |\n| Meta + Return     | Set as Master                  |\n|                   |                                |\n| Meta + T          | Use Tile Layout                |\n| Meta + M          | Use Monocle Layout             |\n| *unbound*         | Use Spread Layout              |\n| *unbound*         | Use Stair Layout               |\n\n\nTips\n----\n\n### Setting Up for Multi-Screen ###\n\nKrohnkite supports multi-screen setup, but KWin has to be configured to unlock\nthe full potential of the script.\n\n1. Enable `Separate Screen Focus` under `Window Management` \u003e \n   `Window Behavior` \u003e `Multiscreen Behaviour`\n2. Bind keys for global shortcut `Switch to Next/Previous Screen`\n   (Recommend: `Meta + ,` / `Meta + .`)\n3. Bind keys for global shortcut `Window to Next/Previous Screen`\n   (Recommend: `Meta + \u003c` / `Meta + \u003e`)\n\nNote: `Separate Screen Focus` appears only when multiple monitors are present.\n\n### Removing Title Bars ###\n\nBreeze window decoration can be configured to completely remove title bars from\nall windows:\n\n1. `System Setting` \u003e `Application Style` \u003e `Window Decorations`\n2. Click `Configure Breeze` inside the decoration preview.\n3. `Window-Specific Overrides` tab \u003e `Add` button\n4. Enter the followings, and press `Ok`:\n   - `Regular expression to match`: `.*`\n   - Tick `Hide window title bar`\n\n### Changing Border Colors ###\n\nChanging the border color makes it easier to identify current window. This is\nconvinient if title bars are removed.\n\n1. Open `~/.config/kdeglobals` with your favorite editor\n2. Scroll down and find `[WM]` section\n3. Append the followings to the section:\n    - `frame=61,174,233`: set the border color of active window to *RGB(61,174,233)*\n    - `inactiveFrame=239,240,241`: set the border color of inactive window to *RGB(239,240,241)*\n\n   Here's a nice 2-liner that'll do it for you:\n\n        kwriteconfig5 --file ~/.config/kdeglobals --group WM --key frame 61,174,233\n        kwriteconfig5 --file ~/.config/kdeglobals --group WM --key inactiveFrame  239,240,241\n4. You must **restart** your session to see changes. (i.e. re-login, reboot)\n\nNote: the RGB values presented here are for the default Breeze theme\n\nNote: You might also need to set the border size larger than the theme's default:\n`System Settings` \u003e `Application Style` \u003e `Window Decorations`: Untick `Use theme's default window border size` and adjust the size (right from the checkbox).\n\n### Setting Minimum Geometry Size ###\n\nSome applications like discord and KDE settings dont tile nicely as they have a minimum size requirement.\nThis causes the applications to overlap with other applications. To mitigate this we can set minimum size for all windows to be 0.\n\n1. `System Setting` \u003e `Window Management` \u003e `Window Rules`\n2. Click on `+ Add New...`\n3. Set `Window class` to be `Unimportant`\n4. Set `Window types` to `Normal Window`\n5. Click `+ Add Properties...`\n6. Add the `Minimum Size` Property\n7. Set the fields to `Force` and `0` x `0`\n8. Apply\n\n### Prevent borders and shadows from disappearing. ###\n\nWhen a window is marked \"maximized\" in Breeze theme, its borders are removed to save screen space.\nThis behavior may not be preferable depending on your setup. This can be mitigated by disabling maximized windows using Window Rules.\n\n1. `System Setting` \u003e `Window Management` \u003e `Window Rules`\n2. Click on `+ Add New...`\n3. Set `Window class` to be `Unimportant`\n4. Set `Window types` to `Normal Window`\n5. Click `+ Add Properties...`\n6. Add the `Maximized horizontally` and `Maximized vertically` Properties.\n7. Set the options to `Force` and `No`.\n8. Apply\n\nUseful Development Resources\n----------------------------\n\n * [KWin Scripting Tutorial](https://techbase.kde.org/Development/Tutorials/KWin/Scripting)\n * [KWin Scripting API 4.9 Reference](https://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9)\n * Adding configuration dialog\n    - [Development/Tutorials/Plasma/JavaScript/ConfigDialog](https://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/ConfigDialog)\n    - [Development/Tutorials/Using KConfig XT](https://techbase.kde.org/Development/Tutorials/Using_KConfig_XT)\n * `*.ui` files can be edited with [Qt Designer](http://doc.qt.io/qt-5/qtdesigner-manual.html).\n   It's very straight-forward if you're used to UI programming.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesjeon%2Fkrohnkite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesjeon%2Fkrohnkite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesjeon%2Fkrohnkite/lists"}