guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] Fix XFCE shutdown/reboot via menu.


From: Ludovic Courtès
Subject: Re: [PATCH] Fix XFCE shutdown/reboot via menu.
Date: Sat, 21 Nov 2015 21:37:46 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Ricardo Wurmus <address@hidden> skribis:

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

\o/

> 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(?).

The ‘run’ function in xfsm-shutdown-helper/main.c runs these programs
with:

      result = g_spawn_sync (NULL, argv, envp,
                             G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL |
                             G_SPAWN_STDERR_TO_DEV_NULL,
                             NULL, NULL, NULL, NULL, &status, &err);

I’m guessing G_SPAWN_SEARCH_PATH means that the program is searched for
in $PATH, in which case writing ‘halt’ would be enough (it would be
found in /run/setuid-programs.)

> 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?

I think polkit-service-type should extend setuid-service-type to add
that program.

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

The code that spawns pkexec looks like this:

  command = g_strdup_printf ("pkexec " XFSM_SHUTDOWN_HELPER_CMD " --%s", 
action);
  ret = g_spawn_command_line_sync (command, NULL, NULL, &exit_status, error);

I think this can be left unchanged, as long as we provide pkexec in
$PATH (which is the case if it’s in /run/setuid-programs.)

Thanks for looking into it!

Ludo’.



reply via email to

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