About
This is my configuration for Guile-Daemon. I use it for 2 purposes:
- As the OSD daemon, i.e. to display something (clock, sound volume,
etc.) on screen using [[https://github.com/alezost/guile-xosd][Guile-XOSD]].
- As a client for
lircd
(instead of irexec), i.e. to handle key
signals from my remote control.
Note: along with (xosd)
module from Guile-XOSD, my guile modules are
used in this config (they have (al ...)
form).
Files
- is the "config" file itself (it is symlinked to
[[file:$XDG_CONFIG_HOME/guile-daemon/init.scm]]). All this file does is:
it adds [[file:modules]] directory (see below) to the Guile =%load-path=,
and loads =(daemon-config)= module.
- directory contains several modules with the code I use
for Guile-Daemon. I split the code into several modules to make
"logical pieces", but more importantly to speed-up the start of
Guile-Daemon, as these modules are loaded *on demand*: only
=(daemon-config)= is loaded on start-up, and it's just a wrapper that
autoloads procedures placed in the other modules.
So, for example, (daemon-config osd sound)
module is loaded only
when osd-sound
procedure is called, i.e., when I press one of my
sound keys (bound to osd-sound ...
— see below) first time.
- directory contains a couple of shell scripts that send
expressions to the Guile Daemon using =gdpipe= (it is a part of
Guile-Daemon). This directory is placed in my $PATH so I can use such
commands as =osd-text hello= or =osd-sound sset Master 3%+=. For
example, I bind several keys to such =osd-sound= commands in my
[[https://github.com/alezost/stumpwm-config][stumpwm config]]. The result may be seen in the gif demo above.