creek

A malleable and minimalist status bar for the River compositor

git clone https://git.8pit.net/creek.git

 1## README
 2
 3Creek is a [dwm]-inspired [malleable] and minimalist status bar for the [River] Wayland compositor.
 4The implementation is a hard fork of version 0.1.3 of the [levee] status bar.
 5Compared to levee, the main objective is to ease [recombination and reuse][malleable reuse] by providing a simpler interface for adding custom information to the status bar.
 6The original version of levee only provides builtin support for certain [modules][levee modules], these have to be written in Zig and compiled into levee.
 7This fork pursues an alternative direction by allowing arbitrary text to be written to standard input of the status bar process, this text is then displayed in the status bar.
 8
 9Additionally, the following new features have been added:
10
11* Support for tracking the current window title in the status bar
12* Highlighting of tags containing urgent windows (see [xdg-activation])
13* Basic run-time configuration support via command-line flags
14
15### Screenshot
16
17![Screenshot of River with a creek status bar](https://files.8pit.net/img/creek-screenshot-20240302.png)
18
19The screenshot features three active tags: tag 2 is currently focused and has one active window, tag 4 is not focused but is occupied (i.e. has windows), and tag 9 has an urgent window.
20In the middle of the status bar, the current title of the selected window on the focused tag is displayed.
21On the right-hand side, the current time is shown, this is information is generated using `date(1)` (see usage example below).
22
23### Build
24
25The following dependencies need to be installed:
26
27* [zig] 0.13.0
28* [wayland] 1.21.0
29* [pixman] 0.42.0
30* [fcft] 3.1.5 (with [utf8proc] support)
31
32Afterwards, creek can be build as follows
33
34    $ git clone https://git.8pit.net/creek.git
35    $ cd creek
36    $ zig build
37
38### Configuration
39
40This version of creek can be configured using several command-line options:
41
42* `-fn`: The font used in the status bar
43* `-hg`: The total height of the status bar
44* `-nf`: Normal foreground color
45* `-nb`: Normal background color
46* `-ff`: Foreground color for focused tags
47* `-fb`: Background color for focused tags
48
49Example:
50
51    $ creek -fn Terminus:size=12 -hg 18 -nf 0xffffff -nb 0x000000
52
53### Usage Example
54
55In order to display the current time in the top-right corner, invoke creek as follows:
56
57    $ ( while date; do sleep 1; done ) | creek
58
59Note that for more complex setups, a shell script may [not be the best option](https://flak.tedunangst.com/post/rough-idling).
60
61[dwm]: https://dwm.suckless.org/
62[River]: https://github.com/riverwm/river/
63[malleable]: https://malleable.systems/
64[malleable reuse]: https://malleable.systems/mission/#2-arbitrary-recombination-and-reuse
65[levee]: https://sr.ht/~andreafeletto/levee
66[levee modules]: https://git.sr.ht/~andreafeletto/levee/tree/v0.1.3/item/src/modules
67[xdg-activation]: https://wayland.app/protocols/xdg-activation-v1
68[zig]: https://ziglang.org/
69[wayland]: https://wayland.freedesktop.org/
70[pixman]: http://pixman.org/
71[fcft]: https://codeberg.org/dnkl/fcft/
72[utf8proc]: https://juliastrings.github.io/utf8proc/