Как выполнить скрипт, когда сессия xfce заканчивается - PullRequest
5 голосов
/ 28 сентября 2011

Можно ли запустить скрипт / команду после остановки сеанса xfce?

Ответы [ 4 ]

4 голосов
/ 12 августа 2013

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

1011 * тогда *

$ chmod +x /usr/local/bin/xfce4-session

Это не идеально (зависит от порядка PATH), но может быть более приемлемым.

( Примечание: я повысил свой комментарий до ответа. )

2 голосов
/ 07 октября 2011

Измените исполняемый файл /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.)

0 голосов
/ 01 мая 2019

Я бы предпочел решение, которое не касается системных каталогов или файлов и будет запускать ловушку выхода из системы в рамках текущего сеанса пользователя и его привилегий.

ниже мое решение:

сценарий создания ~/.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 с черным поясом предложат

0 голосов
/ 20 августа 2012

Я подтвердил ответ выше, так как он не требует написания нового кода. Однако я нашел другой способ продолжить: создать программу X11, которая будет запускаться при запуске сеанса: она может выполнять пользовательские сценарии при закрытии сеанса X

Примечание: недостатком является то, что используемые сценарии не могут подключиться к X-окнам, поэтому это решение может, в зависимости от необходимости, выполнить сценарий слишком поздно.

...