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