Можно ли запустить сценарий / команду при остановке сеанса xfce?
Как выполнить скрипт при завершении сеанса xfce
Ответы (4)
Замените исполняемый файл /usr/bin/xfce4-session
на сценарий оболочки, который запускает исходный xfce4-session
и ваш сценарий выхода, если xfce4-session
завершился.
# mv /usr/bin/xfce4-session /usr/bin/xfce4-session.orig
Новый файл /usr/bin/xfce4-session
:
#!/bin/bash
/usr/bin/xfce4-session.orig
echo "my logout script" > /tmp/testfile
Не забудьте установить права на выполнение:
# chmod a+x /usr/bin/xfce4-session
(Проверено на Debian Squeeze.)
xfce4-settings
.
- person kdg1955; 30.05.2017
См. http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - Там Эрик Хабихт предложил создать сценарий оболочки в /usr/local/bin/xfce4-session
(или другом каталоге, предшествующем каталогу, в котором установлен xfce4-session
, /usr/bin
в вашем PATH
). Таким образом, вам не нужно изменять /usr/bin/X11/xfce4-session
, поэтому его можно обновлять независимо.
#!/bin/bash
# Add your own pre-session logic here
/usr/bin/xfce4-session
# Add your own logout logic here
тогда
$ chmod +x /usr/local/bin/xfce4-session
Это не идеально (зависит от порядка PATH
), но может быть более вкусным.
(Примечание: я превратил свой комментарий в ответ.)
Я бы предпочел решение, которое не касается системных каталогов или файлов и будет запускать ловушку выхода в текущем сеансе пользователя и его привилегиях.
ниже мое решение:
создать ~/.local/bin/xfce4-session-logout
скрипт со следующим содержанием:
#!/bin/bash
PRELOGOUT=${HOME}/scripts/pre-logout.sh
RESULT=RES_`echo -e "logout\nrestart\nshutdown\nsuspend" | zenity --height=250 --list --title "Logout from $USER" --column "What do You want to do?"`
case $RESULT in
RES_logout)
[ -x $PRELOGOUT] && $PRELOGOUT
/usr/bin/xfce4-session-logout --fast --logout
;;
RES_restart)
[ -x $PRELOGOUT] && $PRELOGOUT
/usr/bin/xfce4-session-logout --fast --reboot
;;
RES_shutdown)
[ -x $PRELOGOUT] && $PRELOGOUT
/usr/bin/xfce4-session-logout --fast --halt
;;
RES_suspend)
/usr/bin/xfce4-session-logout --suspend
;;
*)
exit 1
;;
esac
и сделаем его исполняемым:
chmod u+x ~/.local/bin/xfce4-session-logout
Теперь поместите все, что Вам нужно выполнить при выходе из системы, в ~/scripts/pre-logout.sh
и сделайте его исполняемым.
chmod u+x ~/scripts/pre-logout.sh
после повторного входа либо menu > logout button
, либо Alt+f3: "logout"
откроет простой диалог для выхода из текущего сеанса
Примечание: нажатие Alt+F4
не работает с этим, но, возможно, некоторые пользователи xfce4 с черным поясом предложат что-нибудь
Я подтвердил ответ выше, поскольку он не требует написания нового кода. Однако я нашел другой способ продолжить: создать программу X11, которая будет запускаться при запуске сеанса: она может выполнять пользовательские сценарии, когда сеанс X закрыт.
Примечание: недостатком является то, что используемые сценарии не могут подключаться к X windows, поэтому это решение может, в зависимости от необходимости, выполнить сценарий слишком поздно.