GNU bug report logs - #62107
[PATCH] home: services: Add home-unclutter-service-type.

Previous Next

Package: guix-patches;

Reported by: conses <contact <at> conses.eu>

Date: Fri, 10 Mar 2023 22:17:03 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 62107 in the body.
You can then email your comments to 62107 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#62107; Package guix-patches. (Fri, 10 Mar 2023 22:17:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to conses <contact <at> conses.eu>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Fri, 10 Mar 2023 22:17:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: conses <contact <at> conses.eu>
To: guix-patches <at> gnu.org
Cc: contact <at> conses.eu
Subject: [PATCH] home: services: Add home-unclutter-service-type.
Date: Fri, 10 Mar 2023 23:16:41 +0100
* gnu/home/services/xdisorg.scm: New file.
---
 gnu/home/services/xdisorg.scm | 72 +++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 gnu/home/services/xdisorg.scm

diff --git a/gnu/home/services/xdisorg.scm b/gnu/home/services/xdisorg.scm
new file mode 100644
index 0000000000..02c538ff9f
--- /dev/null
+++ b/gnu/home/services/xdisorg.scm
@@ -0,0 +1,72 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 conses <contact <at> conses.eu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu home services xdisorg)
+  #:use-module (gnu home services)
+  #:use-module (gnu home services shepherd)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu services configuration)
+  #:use-module (guix packages)
+  #:use-module (guix gexp)
+  #:export (home-unclutter-configuration
+            home-unclutter-service-type))
+
+(define-configuration/no-serialization home-unclutter-configuration
+  (unclutter
+   (package unclutter)
+   "The @code{unclutter} package to use.")
+  (seconds
+   (integer 5)
+   "The number of idle seconds to wait to remove 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-seconds config)))
+              #:log-file (string-append
+                          (or (getenv "XDG_LOG_HOME")
+                              (format #f "~a/.local/var/log"
+                                      (getenv "HOME")))
+                          "/unclutter.log"))))))
+
+(define (home-unclutter-profile-service config)
+  (list (home-unclutter-configuration-unclutter config)))
+
+(define home-unclutter-service-type
+  (service-type
+   (name 'home-unclutter)
+   (extensions
+    (list
+     (service-extension
+      home-profile-service-type
+      home-unclutter-profile-service)
+     (service-extension
+      home-shepherd-service-type
+      home-unclutter-shepherd-service)))
+   (default-value (home-unclutter-configuration))
+   (description "Set up an unclutter daemon.")))
-- 
2.39.1



-- 
Best regards,
conses




Information forwarded to guix-patches <at> gnu.org:
bug#62107; Package guix-patches. (Mon, 13 Mar 2023 14:04:01 GMT) Full text and rfc822 format available.

Message #8 received at 62107 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: conses <contact <at> conses.eu>
Cc: 62107 <at> debbugs.gnu.org
Subject: Re: bug#62107: [PATCH] home: services: Add
 home-unclutter-service-type.
Date: Mon, 13 Mar 2023 15:03:49 +0100
Hi,

conses <contact <at> conses.eu> skribis:

> * gnu/home/services/xdisorg.scm: New file.

Could you (1) add this file to ‘gnu/local.mk’, and (2) document it in
‘doc/guix.texi’ (again: a few introductory lines, an example, and the
reference)?

> +   (description "Set up an unclutter daemon.")))

Could you expand it a bit?  For example:

  Run the unclutter daemon, which, on systems using the Xorg graphical
  display server, automatically hides the cursors after a user-defined
  timeout has expired.

TIA,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#62107; Package guix-patches. (Tue, 14 Mar 2023 12:36:02 GMT) Full text and rfc822 format available.

Message #11 received at 62107 <at> debbugs.gnu.org (full text, mbox):

From: conses <contact <at> conses.eu>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: contact <at> conses.eu, 62107 <at> debbugs.gnu.org
Subject: Re: bug#62107: [PATCH] home: services: Add
 home-unclutter-service-type.
Date: Tue, 14 Mar 2023 13:35:06 +0100
Ludovic Courtès <ludo <at> gnu.org> writes:

> Hi,
>
> conses <contact <at> conses.eu> skribis:
>
>> * gnu/home/services/xdisorg.scm: New file.
>
> Could you (1) add this file to ‘gnu/local.mk’, and (2) document it in
> ‘doc/guix.texi’ (again: a few introductory lines, an example, and the
> reference)?
>

I decided to bundle this home service in (gnu home services desktop)
instead as it makes more sense for someone to use it only when running a
graphical display server.  I also documented it in the manual.

>> +   (description "Set up an unclutter daemon.")))
>
> Could you expand it a bit?  For example:
>
>   Run the unclutter daemon, which, on systems using the Xorg graphical
>   display server, automatically hides the cursors after a user-defined
>   timeout has expired.
>

Amended the service description with the above.

-- 
Best regards,
conses




Information forwarded to guix-patches <at> gnu.org:
bug#62107; Package guix-patches. (Tue, 14 Mar 2023 12:37:01 GMT) Full text and rfc822 format available.

Message #14 received at 62107 <at> debbugs.gnu.org (full text, mbox):

From: conses <contact <at> conses.eu>
To: 62107 <at> debbugs.gnu.org
Cc: contact <at> conses.eu
Subject: [PATCH v2] home: services: Add home-unclutter-service-type.
Date: Tue, 14 Mar 2023 13:36:36 +0100
* 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.
---
 doc/guix.texi                 | 30 ++++++++++++++++++++
 gnu/home/services/desktop.scm | 53 +++++++++++++++++++++++++++++++++--
 2 files changed, 81 insertions(+), 2 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 6671ba9305..551e5078f6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -42541,6 +42541,36 @@ Desktop Home Services
 @end table
 @end deftp
 
+@defvar home-unclutter-service-type
+This is the service type for Unclutter, a program that runs on the
+background of an X11 session and detects when the X pointer hasn't moved
+for a specified idle timeout, after which it hides the cursor so that
+you can focus on the text underneath.  Its associated value must be a
+@code{home-unclutter-configuration} record, as shown below.
+
+A typical configuration, where we manually specify the idle timeout (in
+seconds), might look like this:
+
+@lisp
+(service home-unclutter-service-type
+         (home-unclutter-configuration
+          (idle-timeout 2)))
+@end lisp
+@end defvar
+
+@deftp {Data Type} home-unclutter-configuration
+The configuration record for @code{home-unclutter-service-type}.
+
+@table @asis
+@item @code{unclutter} (default: @code{unclutter}) (type: file-like)
+Unclutter package to use.
+
+@item @code{idle-timeout} (default: @code{5}) (type: integer)
+A timeout in seconds after which to hide cursor.
+@end table
+
+@end deftp
+
 @node Guix Home Services
 @subsection Guix 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 <ludo <at> gnu.org>
 ;;; Copyright © 2022 ( <paren <at> disroot.org>
+;;; Copyright © 2023 conses <contact <at> conses.eu>
 ;;;
 ;;; 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.")))
-- 
2.39.1



-- 
Best regards,
conses




Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Thu, 16 Mar 2023 10:52:01 GMT) Full text and rfc822 format available.

Notification sent to conses <contact <at> conses.eu>:
bug acknowledged by developer. (Thu, 16 Mar 2023 10:52:01 GMT) Full text and rfc822 format available.

Message #19 received at 62107-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: conses <contact <at> conses.eu>
Cc: 62107-done <at> debbugs.gnu.org
Subject: Re: bug#62107: [PATCH] home: services: Add
 home-unclutter-service-type.
Date: Thu, 16 Mar 2023 11:51:23 +0100
Hi,

conses <contact <at> conses.eu> skribis:

> * 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.

Perfect.  Applied, thanks!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 13 Apr 2023 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 11 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.