From 837e179e009cd55acc03193e5600fb0a8eb60e6b Mon Sep 17 00:00:00 2001 From: conses Date: Tue, 14 Mar 2023 13:36:36 +0100 Subject: home: services: Add home-unclutter-service-type. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- gnu/home/services/desktop.scm | 53 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'gnu/home/services') 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 ;;; Copyright © 2022 ( +;;; Copyright © 2023 conses ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +23,7 @@ (define-module (gnu home services desktop) #: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 @@ (define-module (gnu home services desktop) 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 @@ (define home-dbus-service-type (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."))) -- cgit v1.2.3