Еще одно исправление для пользовательских скриптов: Определите соответствующие переменные среды внутри вашего скрипта.
Для этого можно использовать фрагмент, подобный следующему:
getXuser() {
user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
if [ x"$user" = x"" ]; then
startx=`pgrep -n startx`
if [ x"$startx" != x"" ]; then
user=`ps -o user --no-headers $startx`
fi
fi
if [ x"$user" = x"" ]; then
user=$(pinky -fw | awk '{ print $1; exit; }')
fi
if [ x"$user" != x"" ]; then
userhome=`getent passwd $user | cut -d: -f6`
export XAUTHORITY=$userhome/.Xauthority
else
export XAUTHORITY=""
fi
export XUSER=$user
}
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
fi
done
( на основе функции ACPI getXuser)
Если вы обнаружили, что ваш файл .desktop все еще не работает, вы можете попробовать обернуть ваш pkexec commandline в фрагменте sh, например:
Exec=sh -c "pkexec --user root script_that_needs_root.sh"
]
Последняя проблема - известная ошибка, по-видимому:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339
http://bugs.debian.org/cgi-bin/bugreport. cgi? bug = 650038