bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#67314: xorg-configuration's extra-config should support file-like ob


From: Ian Eure
Subject: bug#67314: xorg-configuration's extra-config should support file-like objects
Date: Mon, 20 Nov 2023 15:33:17 -0800
User-agent: mu4e 1.10.7; emacs 29.1

I needed to tweak some xorg settings (set scroll direction, enable
tearfree, etc). On other distros, this is done by dropping files of
config snippets into /etc/xorg.conf.d.

On Guix, this needs to be done through the extra-config field of the xorg-configuration record. That field requires a list of strings, which means the configurations need to be inlined into the config, which is
verbose and unsightly.

For example:

   (operating-system
     (services
      (append (list (service openssh-service-type)
                    (set-xorg-configuration
                     (xorg-configuration
                      (keyboard-layout keyboard-layout)
                      (extra-config
                       (list
                        "Section \"InputClass\"
                        Identifier \"Touchpads\"
                        MatchIsTouchpad \"on\"

                        Driver \"libinput\"

                        Option \"ClickMethod\" \"clickfinger\"
                        Option \"DisableWhileTyping\" \"on\"
                        Option \"NaturalScrolling\" \"on\"
                        Option \"Tapping\" \"off\"
                        EndSection"))))))))

The manual states that extra-config takes "a list of strings or
objects," but doesn’t indicate what type of object is expected. If I
pass a file-like object, like this:

   (operating-system
     (services
      (append (list (service openssh-service-type)
                    (set-xorg-configuration
                     (xorg-configuration
                      (keyboard-layout keyboard-layout)
                      (extra-config
(list (local-file "xorg/touchpads.conf")))))))))

The resulting Xorg configutation has the store paths for those files
added to it, instead of their contents.  This is an invalid
configuation, rendering Xorg unable to start.

I was able to split the difference by reading the file contents into the
config, ala:

   (set-xorg-configuration
    (xorg-configuration
     (keyboard-layout keyboard-layout)
     (extra-config
      (map (lambda (file)
(call-with-port (open-file (string-append "xorg/" file ".conf") "r") get-string-all))
           '("radeon" "elecom-huge" "trackpad")))))

But this feels like a graceless hack to me.

The situation would be drastically simplified if extra-config supported
file-like objects.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]