当xfce会话停止时,是否可以运行脚本/命令?
答案 0 :(得分:4)
请参阅http://mail.xfce.org/pipermail/xfce/2012-November/031694.html - 在那里,Erik Habicht建议在/usr/local/bin/xfce4-session
(或安装xfce4-session
的目录之前的另一个目录中创建一个包装脚本,/usr/bin
在{ {1}})。这样,您就不必更改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
顺序),但可能更适合。
(注意:我将评论提升为答案。)
答案 1 :(得分:2)
使用运行原始/usr/bin/xfce4-session
的shell脚本和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上测试过。)
答案 2 :(得分:0)
我验证了上面的答案,因为它不涉及新的代码编写。 然而,我找到了另一种方法:创建一个X11程序,它将在会话启动时启动:它可以在X会话关闭时执行自定义脚本
注意:缺点是使用的脚本无法连接到X窗口,因此根据需要,此解决方案可能会过晚执行脚本。
答案 3 :(得分:0)
我希望解决方案不要接触系统目录或文件,并且会在当前用户会话及其特权中运行注销钩子。
以下是我的解决方法:
创建包含以下内容的~/.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用户会提供一些建议