Files
riverguile/README.md
2023-12-30 09:02:22 +01:00

46 lines
1.6 KiB
Markdown

# riverguile
Layout generator for the [river](https://github.com/riverwm/river) Wayland
server which uses [Guile Scheme](https://www.gnu.org/software/guile/) for
layouts. Its layout namespace is `riverguile`.
Uppon launch, riverguile tries to load a scheme script and checks the following
paths for it in the given order:
* `layout.scm`
* `$XDG_CONFIG_HOME/river/layout.scm`
* `$HOME/.config/river/layout.scm`
* `/etc/riverguile/layout.scm`
In the context of this script, a special procedure `(install-handler key proc)`
is available, which can be used to install handlers to certain events.
Check the man page for more information.
Here is an example `layout.scm` file replicating rivertiles behavior of having
a main window and a stack of windows aside:
```scheme
(define split 0.55)
(define (layout:rows n x y w h)
(letrec ((height (/ h n))
(rows (lambda (n)
(if (eq? n 0)
'()
(let ((Y (- (+ y h) (* n height))))
(append (list (list x Y w height))
(rows (- n 1))))))))
(rows n)))
(define (layout:split n x y w h)
(if (eq? n 1)
(list (list x y w h))
(letrec* ((left (* split w))
(right (- w left)))
(append (list (list x y left h))
(layout:rows (- n 1) (+ x left) y right h)))))
(install-handler 'layout-demand (lambda (view-count width height tags output)
(layout:split view-count 0 0 width height)))
```