show names on tabs in tabbed layout

This commit is contained in:
2026-08-01 14:19:24 +02:00
parent 8d99d9171c
commit 4a08d19365
7 changed files with 457 additions and 12 deletions
+12 -7
View File
@@ -189,9 +189,12 @@ order — the first master slot — and takes focus, as in dwm. A window spawned
onto a tag nobody is viewing leaves both the order and focus alone.
**tabbed** — same geometry as monocle, minus a strip at the top where att_wm
draws one solid colour block per window, the focused one highlighted. The blocks
are clickable. Titles are *not* drawn — that would mean a font stack — but the
window list is published over IPC, so a bar can draw a textual tab strip
draws one tab per window, the focused one highlighted. Each tab is clickable and
carries the window's title, elided with an ellipsis when the tab is too narrow.
Titles are drawn in a 5x8 bitmap font built into the binary (`src/font.zig`) —
a font stack for one strip of pixels would be a poor trade — scaled by whole
pixels to suit `tabbar_height`, or by `tab_font_scale` if you would rather say.
The same window list is published over IPC, so a bar can draw its own tab strip
alongside (the bundled quickshell config does). Set `tabbar_height = 0` to drop
the built-in strip entirely and let the bar own it.
@@ -217,9 +220,10 @@ zig build -Dconfig=/path/to/my-config.zig
att_wm.override { configFile = ./my-config.zig; }
```
`config.zig` covers border width and colours, gaps, tab bar height and colours,
the default layout, `nmaster` / `mfact`, tag names, focus-follows-mouse, key and
pointer bindings, autostart commands, input devices, and window rules:
`config.zig` covers border width and colours, gaps, tab bar height, colours and
text size, the default layout, `nmaster` / `mfact`, tag names,
focus-follows-mouse, key and pointer bindings, autostart commands, input
devices, and window rules:
```zig
pub const rules = [_]Rule{
@@ -487,7 +491,8 @@ river's identifier is shared between them.
| `src/input.zig` | Input configuration types — no Wayland, unit tested |
| `src/config.zig` | Compile-time configuration |
| `src/ipc.zig` | Socket server and JSON encoding |
| `src/shm.zig` | memfd buffers for the tab bar |
| `src/shm.zig` | memfd buffers for the tab bar, and drawing into them |
| `src/font.zig` | The built-in 5x8 bitmap font — no Wayland, unit tested |
| `src/sys.zig` | Thin Linux syscall wrappers |
The single most important invariant: **river only permits window management