diff options
author | conses <contact@conses.eu> | 2023-03-14 13:36:36 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-03-16 12:37:03 +0100 |
commit | 837e179e009cd55acc03193e5600fb0a8eb60e6b (patch) | |
tree | 0f04fe0dbde0cd87176f57ba9c5f61132135c4ac /gnu | |
parent | 797461e16c0053db499285cbbcb66d7a4024dd42 (diff) | |
download | guix-837e179e009cd55acc03193e5600fb0a8eb60e6b.tar.gz guix-837e179e009cd55acc03193e5600fb0a8eb60e6b.zip |
home: services: Add home-unclutter-service-type.
* gnu/home/services/desktop.scm (home-unclutter-configuration)
(home-unclutter-service-type): New variables;
(home-unclutter-shepherd-service): New procedure;
* doc/guix.texi (Desktop Services): Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/home/services/desktop.scm | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm index cb25b03b64..ab2b871539 100644 --- a/gnu/home/services/desktop.scm +++ b/gnu/home/services/desktop.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2022 ( <paren@disroot.org> +;;; Copyright © 2023 conses <contact@conses.eu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +23,7 @@ #:use-module (gnu home services shepherd) #:use-module (gnu services configuration) #:autoload (gnu packages glib) (dbus) - #:autoload (gnu packages xdisorg) (redshift) + #:autoload (gnu packages xdisorg) (redshift unclutter) #:use-module (guix records) #:use-module (guix gexp) #:use-module (srfi srfi-1) @@ -32,7 +33,10 @@ home-redshift-service-type home-dbus-configuration - home-dbus-service-type)) + home-dbus-service-type + + home-unclutter-configuration + home-unclutter-service-type)) ;;; @@ -226,3 +230,48 @@ according to time of day."))) (default-value (home-dbus-configuration)) (description "Run the session-specific D-Bus inter-process message bus."))) + + +;;; +;;; Unclutter. +;;; + +(define-configuration/no-serialization home-unclutter-configuration + (unclutter + (file-like unclutter) + "The @code{unclutter} package to use.") + (idle-timeout + (integer 5) + "Timeout in seconds after which to hide the cursor.")) + +(define (home-unclutter-shepherd-service config) + (list + (shepherd-service + (provision '(unclutter)) + (requirement '()) + (one-shot? #t) + (start #~(make-forkexec-constructor + (list + #$(file-append + (home-unclutter-configuration-unclutter config) + "/bin/unclutter") + "-idle" + (number->string + #$(home-unclutter-configuration-idle-timeout config))) + #:log-file (string-append + (or (getenv "XDG_LOG_HOME") + (format #f "~a/.local/var/log" + (getenv "HOME"))) + "/unclutter.log")))))) + +(define home-unclutter-service-type + (service-type + (name 'home-unclutter) + (extensions + (list + (service-extension home-shepherd-service-type + home-unclutter-shepherd-service))) + (default-value (home-unclutter-configuration)) + (description "Run the @code{unclutter} daemon, which, on systems using the +Xorg graphical display server, automatically hides the cursor after a +user-defined timeout has expired."))) |