3
10
Fork
You've already forked argen
1
Task-oriented tiling window manager designed for keyboard + IPC workflows.
  • Zig 97.8%
  • Shell 1.7%
  • Python 0.5%
Find a file
2026年07月07日 21:45:34 +02:00
doc ContextOutput: correct tearing behavior if fullscreen window 2026年07月07日 17:58:56 +02:00
example example: use new fuzzel(1) command line options 2026年06月26日 02:46:49 +02:00
protocol protocol update 2026年03月24日 18:11:26 +01:00
src argen: finally fix the catch return in the wayland listeners 2026年07月07日 21:45:34 +02:00
.gitignore build: migrate to 0.16 2026年05月08日 19:04:45 +02:00
build.zig build: generate argen man page 2026年05月20日 16:41:34 +02:00
build.zig.zon build: bump version to 0.1.2-dev 2026年06月07日 18:28:50 +02:00
LICENSE squashed 2026年03月05日 14:55:40 +01:00
README.md readme: update layout section 2026年06月16日 23:09:29 +02:00

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.