153b5e0858f690e1d1a913f04768b627809204f9
This makes the logic of installing idle handlers and layout handlers a bit cleaner and allows us to send wayland request from the script in the future.
riverguile
Scripting layer for the river Wayland server using Guile Scheme.
Send commands to river and install handlers for various events, inclusing layout events.
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 while also automatically locking
the screen after five minutes of inactivity.
(install-handler 'idle:300 (lambda (event)
(cond ((eq? event 'idle) (system "swaylock &")
(system "backlight.sh set-to 40"))
((eq? event 'resume) (system "backlight.sh set-to 100")))))
(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)))
Description
Languages
C
87.2%
Scheme
7.8%
Makefile
3.5%
Nix
1.5%