如何在xfce会话结束时执行脚本

时间:2011-09-28 07:02:54

标签: linux xfce

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

4 个答案:

答案 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 buttonAlt+f3: "logout"都会弹出一个简单对话框,退出当前会话

注意:按Alt+F4不能使用它,但是也许有些黑带xfce4用户会提供一些建议