- Zig 97.8%
- Shell 1.7%
- Python 0.5%
| doc | ContextOutput: correct tearing behavior if fullscreen window | |
| example | example: use new fuzzel(1) command line options | |
| protocol | protocol update | |
| src | argen: finally fix the catch return in the wayland listeners | |
| .gitignore | build: migrate to 0.16 | |
| build.zig | build: generate argen man page | |
| build.zig.zon | build: bump version to 0.1.2-dev | |
| LICENSE | squashed | |
| README.md | readme: update layout section | |
argen
Task-oriented Wayland tiling window manager designed for keyboard + IPC workflows. Based on river.
Note: argen is still in development. If you encounter bugs or missing features, please open an issue on Codeberg.
Concept
tl;dr: Named workspaces called contexts. One context is meant to be used for one task. Switching contexts should only be necessary when switching tasks.
I tend to run into the "workspace/tag hunting" problem in every window manager I've used so far: over the course of a day (or week) I work on different tasks, sometimes interrupting them and starting new tasks. This workflow gradually "fills up" workspaces. At some point I feel lost and have trouble finding my way back to a previous task.
At the same time, workspaces force unnecessary switching. Shared tools like mail or chat often live on another workspace, so accessing them means leaving the current task.
I'm trying to solve these problems by introducing contexts: Named task environments that replace traditional workspaces/tags. Because contexts are named, they can be fuzzy-searched instead of remembered by position.
Windows can also be attached to multiple contexts, allowing shared windows to appear in the current context without switching away from it.
Features
- Contexts are global, meaning a context spans all outputs
- No static config file, configuration is done at runtime via a custom IPC protocol + CLI client, similar to river-classic
- All window management operations can be triggered from key bindings or CLI
- Rich CLI query capabilities, enabling powerful scripting
Layouts
Stacktile
This layout is inspired and called after the river-classic layout generator.
It has up to three tiles. If there are more than three windows in the layout, they are stacked in the third tile. An overlay indicator helps the user to orientate themselves when cycling/ordering windows within the third tile.
-------------
| | 2 |
| 1 |-----|
| | 3 |
-------------
Monocle
Only one full-size window is visible at a time. An overlay indicator helps to keep an overview over windows in the layout.
-------------
| |
| |
| |
-------------
Columns
Windows are arranged in equally sized columns.
-------------
| | | |
| | | |
| | | |
-------------
Building
The following dependencies are necessary to compile argen.
- zig 0.16
- wayland
- xkbcommon
- pixman
- fcft
- scdoc (optional, for man page generation)
Then run:
zig build -Doptimize=ReleaseSafe --prefix ~/.local install
Usage
Add argen to the river init file or directly run river -c argen.
On startup argen will run an executable file at $XDG_CONFIG_HOME/argen/init if such an executable exists. If $XDG_CONFIG_HOME is not set, ~/.config/argen/init will be used instead.
Usually this executable is a shell script that configures argen via argenctl calls. For an example, see example/init.
For complete documentation see the argen(1) and argenctl(1) man pages.