我需要在每个用户会话结束时运行一个脚本,并且这似乎是最好的方法。我没有编写 X11 程序的经验,那么我该如何做呢?
答案1
答案取决于使用哪个显示管理器(如果有)来启动 X。例如,如果 Gnome 桌面环境启动,则很可能是 Gnome 显示管理器启动了 X。如果是 KDE,则很可能是 KDE 显示管理器启动了它。
一旦我知道正在使用哪个显示管理器,我就会查阅该特定显示管理器的文档,看看它是否提到了执行所需操作的方法。如果做不到这一点,我会按照您链接中描述的方式继续操作——但这需要知道正在使用哪个“启动系统”。例如,Ubuntu 和 Red Hat 使用 Upstart;Arch Linux 和 Fedora 使用 systemd;Debian(我认为)使用 SysV init。
顺便说一句,最简单的解决方案是修改您的系统,使其启动到文本模式,从而使用户养成使用 startx 启动 X 的习惯。我不知道该解决方案是否可接受,但这种做法在 2000 年代中期(我上次运行 Linux 时)及更早的时候相当普遍。然后,您只需在 ~/.xinitrc 的末尾调用您的脚本即可。其实,它比这稍微复杂一些:该文件的最后一行通常是这样的形式,exec gnome-session
其中gnome-session
可能存在任何程序。您需要将其更改exec gnome-session
为gnome-session
(换句话说,删除exec
),然后在其后添加调用脚本的行。