mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-19 15:21:28 +02:00
docs(mkdocs): start building dedicated site
This commit is contained in:
40
docs/design.md
Normal file
40
docs/design.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
_komorebi_ only responds to [WinEvents](https://docs.microsoft.com/en-us/windows/win32/winauto/event-constants) and the
|
||||
messages it receives on a dedicated socket.
|
||||
|
||||
_komorebic_ is a CLI that writes messages on _komorebi_'s socket.
|
||||
|
||||
_komorebi_ doesn't handle any keyboard or mouse inputs; a third party program (e.g.
|
||||
[whkd](https://github.com/LGUG2Z/whkd)) is needed in order to translate keyboard and mouse events to _komorebic_ commands.
|
||||
|
||||
This architecture, popularised by [_bspwm_](https://github.com/baskerville/bspwm) on Linux and
|
||||
[_yabai_](https://github.com/koekeishiya/yabai) on macOS, is outlined as follows:
|
||||
|
||||
|
||||
```
|
||||
PROCESS SOCKET
|
||||
whkd/ahk --------> komorebic <------> komorebi
|
||||
```
|
||||
|
||||
## Data Model
|
||||
|
||||
_komorebi_ holds a list of physical monitors.
|
||||
|
||||
A monitor is just a rectangle of the available work area which contains one or more virtual workspaces.
|
||||
|
||||
A workspace holds a list of containers.
|
||||
|
||||
A container is just a rectangle where one or more application windows can be displayed.
|
||||
|
||||
This means that:
|
||||
|
||||
- Every monitor has its own collection of virtual workspaces
|
||||
- Workspaces only know about containers and their dimensions, not about individual application windows
|
||||
- Every application window must belong to a container, even if that container only contains one application window
|
||||
- Many application windows can be stacked and cycled through in the same container within a workspace
|
||||
Reference in New Issue
Block a user