6

xfce 会话停止时是否可以运行脚本/命令?

4

4 回答 4

5

请参阅http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - 在那里,Erik Habicht 建议在(或在您的安装/usr/local/bin/xfce4-session目录之前的另一个目录中创建一个包装脚本)。这样,您不必更改,因此可以独立更新。xfce4-session/usr/binPATH/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订单)但可能更可口。

注意:我将我的评论提升为答案。

于 2013-08-12T12:48:15.230 回答
2

使用 shell 脚本更改/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 上测试。)

于 2011-10-06T20:36:24.870 回答
1

我更喜欢不触及系统目录或文件的解决方案,并将在当前用户会话及其权限内运行注销挂钩。

以下是我的解决方案:

创建~/.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 用户会提供一些建议

于 2019-05-01T20:08:54.030 回答
0

我验证了上面的答案,因为它不涉及新的代码编写。然而,我找到了另一种方法:创建一个将在会话启动时启动的 X11 程序:它可以在 X 会话关闭时执行自定义脚本

注意:缺点是使用的脚本无法连接到 X windows,因此此解决方案可能会根据需要执行脚本太晚。

于 2012-08-20T13:44:10.077 回答