xfce 会话停止时是否可以运行脚本/命令?
4 回答
请参阅http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - 在那里,Erik Habicht 建议在(或在您的安装/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
订单)但可能更可口。
(注意:我将我的评论提升为答案。)
使用 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 上测试。)
我更喜欢不触及系统目录或文件的解决方案,并将在当前用户会话及其权限内运行注销挂钩。
以下是我的解决方案:
创建~/.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,因此此解决方案可能会根据需要执行脚本太晚。