#!/run/current-system/profile/bin/guile \ -s !# (use-modules (ice-9 popen) (ice-9 textual-ports) (ice-9 rdelim)) (define cmd "wmctrl -l | awk -v ws=\"$(wmctrl -d | awk '$2 == \"*\" {print $1}')\" '$2 == ws {print}' | cut -d ' ' -f 5-") (define box-attrs '(:class "classes" :orientation "h" :valign "center" :halign "start" :space-evenly "false")) (define titles (let* ((process (open-pipe* OPEN_READ "sh" "-c" cmd)) (output (get-string-all process))) (close-pipe process) output)) (define labels (map (lambda (t) `(eventbox :onclick ,(string-concatenate `("wmctrl -a \"" ,t "\"")) (label :class "class" :text ,t :truncate true :valign "center"))) (filter (lambda (s) (not (string=? s ""))) (string-split titles #\newline)))) (write `(box ,@box-attrs ,@labels))