guix-devel
[Top][All Lists]
Advanced

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

[PATCH] Fix XFCE shutdown/reboot via menu.


From: Ricardo Wurmus
Subject: [PATCH] Fix XFCE shutdown/reboot via menu.
Date: Sat, 21 Nov 2015 17:55:23 +0100
User-agent: mu4e 0.9.13; emacs 24.5.1

Hi Guix,

in the XFCE panel there is an item called “Action Buttons” offering
screen locking, log out, switch user, shutdown and reboot.  Shutdown and
reboot do not work at the moment.

I investigated a little and came up with a configuration in which these
two features do work.

First I had to patch our xfce-session package.  Upower is checked for at
configure time and needed for shutdown and reboot.  Polkit’s “pkexec” is
required to run the shutdown helper.

The helper contains a bunch of hardcoded paths to /sbin/shutdown, which
are replaced in a build phase — not in a snippet because eventually we
should also fix the paths to pm-{suspend,hibernate}, which would be
provided by an input that is currently not present(?).

I also needed to change my system configuration to add “pkexec” to the
list of setuid programs:

  (setuid-programs (cons #~(string-append #$polkit "/bin/pkexec")
                           %setuid-programs))

Maybe this should just be added to %setuid-programs?

Is it okay to use /run/setuid-programs/pkexec in the shutdown helper or
should this rather be a reference to the polkit input?

Here’s the patch:

>From 2d39ace79b79a1672488e09bdcf442ff893cbf98 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <address@hidden>
Date: Sat, 21 Nov 2015 17:47:00 +0100
Subject: [PATCH] WIP: xfce-session: Fix shutdown/reboot via menu.

---
 gnu/packages/xfce.scm | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index a4987c1..4c223d7 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages pdf)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages photo)
@@ -429,13 +430,29 @@ your system in categories, so you can quickly find and 
launch them.")
                (list (search-patch "xfce4-session-fix-xflock4.patch")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths-to-shutdown-tools
+           (lambda _
+             ;; FIXME: also replace paths to "pm-hibernate" and "pm-suspend"
+             (substitute* "xfsm-shutdown-helper/main.c"
+               (("/sbin/shutdown -h now")
+                "/run/current-system/profile/sbin/halt")
+               (("/sbin/shutdown -r now")
+                "/run/current-system/profile/sbin/restart"))
+             ;; TODO: should we use a store reference to polkit instead?
+             (substitute* "xfce4-session/xfsm-shutdown-fallback.c"
+               (("pkexec ") "/run/setuid-programs/pkexec "))
+             #t)))
+       #:configure-flags
        (list (string-append "--with-xsession-prefix=" %output))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (inputs
      `(("iceauth" ,iceauth)
+       ("upower" ,upower)
+       ("polkit" ,polkit)
        ("libsm" ,libsm)
        ("libwnck" ,libwnck-1)
        ("libxfce4ui" ,libxfce4ui)))
-- 
2.5.0

~~ Ricardo

reply via email to

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