From bebf2f791a4860127dacc76c745a4c35f4e4c777 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Fri, 6 Aug 2021 07:57:49 -0700 Subject: [PATCH] docs(readme): add screenshot, features and debugging info --- README.md | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 169 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e2e075d..77c2ae3f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Tiling Window Management for Windows. -![demo](https://s2.gifyu.com/images/ezgif-1-a21b17f39d06.gif) +![screenshot](https://i.ibb.co/BTqNS45/komorebi.png) ## About @@ -90,6 +90,30 @@ As previously mentioned, this project does not handle anything related to keybin personally use AutoHotKey to manage my window management shortcuts, and have provided a sample [komorebi.ahk](komorebi.sample.ahk) AHK script that you can use as a starting point for your own. +## Features + +- [x] Multi-monitor +- [x] Virtual workspaces +- [x] Window stacks +- [x] Cycle through stacked windows +- [x] Change focused window by direction +- [x] Move focused window container in direction +- [x] Move focused window container to monitor +- [x] Move focused window container to workspace +- [x] Mouse drag to swap window container position +- [x] Configurable workspace and container gaps +- [x] BSP tree layout +- [x] Flip BSP tree layout horizontally or vertically +- [x] Equal-width, max-height column layout +- [x] Floating rules based on exe name +- [x] Floating rules based on window title +- [x] Floating rules based on window class +- [x] Toggle floating windows +- [x] Toggle monocle window +- [x] Pause all window management +- [x] View window manager state +- [ ] Configure split ratio like *bspwm* + ## Development If you would like to contribute code to this repository, there are a few requests that I have to ensure a foundation of @@ -102,4 +126,147 @@ code quality, consistency and commit hygiene: the [Commitizen CLI](https://github.com/commitizen/cz-cli#conventional-commit-messages-as-a-global-utility) to prepare commit messages * Provide at least one short sentence or paragraph in your commit message body to describe your thought process for the - changes being committed \ No newline at end of file + changes being committed + +## Logs and Debugging + +Logs from `komorebi` will be appended to `~/komorebi.log`; this file is never rotated or overwritten, so it will keep +growing until it is deleted by the user. + +Whenever running the `komorebic stop` command or sending a Ctrl-C signal to `komorebi` directly, the `komorebi` process +ensures that all hidden windows are restored before termination. + +If however, you ever end up with windows that are hidden and cannot be restored, a list of window handles known +to `komorebi` are stored and continuously updated in `~/komorebi.hwnd.json`. + +Running `komorebic restore-windows` will read the list of window handles and forcibly restore them, regardless of +whether the main `komorebi` process is running. + +## Window Manager State and Integrations + +The current state of the window manager can be queried using the `komorebic state` command, which returns a JSON +representation of the `WindowManager` struct. + +This may also be polled to build further integrations and widgets on top of (if you ever wanted to build something +like [Stackline](https://github.com/AdamWagner/stackline) for Windows, you could do it by polling this command). + +```json +{ + "monitors": { + "elements": [ + { + "id": 65537, + "monitor_size": { + "left": 0, + "top": 0, + "right": 3840, + "bottom": 2160 + }, + "work_area_size": { + "left": 0, + "top": 40, + "right": 3840, + "bottom": 2120 + }, + "workspaces": { + "elements": [ + { + "name": "bsp", + "containers": { + "elements": [ + { + "windows": { + "elements": [ + { + "hwnd": 2623596, + "title": "komorebi – README.md", + "exe": "idea64.exe", + "class": "SunAwtFrame", + "rect": { + "left": 8, + "top": 60, + "right": 1914, + "bottom": 2092 + } + } + ], + "focused": 0 + } + }, + { + "windows": { + "elements": [ + { + "hwnd": 198266, + "title": "LGUG2Z/komorebi: A(nother) tiling window manager for Windows 10 based on binary space partitioning - Mozilla Firefox", + "exe": "firefox.exe", + "class": "MozillaWindowClass", + "rect": { + "left": 1918, + "top": 60, + "right": 1914, + "bottom": 1042 + } + } + ], + "focused": 0 + } + }, + { + "windows": { + "elements": [ + { + "hwnd": 1247352, + "title": "Windows PowerShell", + "exe": "WindowsTerminal.exe", + "class": "CASCADIA_HOSTING_WINDOW_CLASS", + "rect": { + "left": 1918, + "top": 1110, + "right": 959, + "bottom": 1042 + } + } + ], + "focused": 0 + } + }, + { + "windows": { + "elements": [ + { + "hwnd": 395464, + "title": "Signal", + "exe": "Signal.exe", + "class": "Chrome_WidgetWin_1", + "rect": { + "left": 2873, + "top": 1110, + "right": 959, + "bottom": 1042 + } + } + ], + "focused": 0 + } + } + ], + "focused": 2 + }, + "monocle_container": null, + "floating_windows": [], + "layout": "BSP", + "layout_flip": null, + "workspace_padding": 10, + "container_padding": 10 + }, + ], + "focused": 0 + } + } + ], + "focused": 0 + }, + "is_paused": false +} +``` \ No newline at end of file