该笔记将记录:在系统中,当发生某些事件时,如何自动执行脚本?如何启动桌面应用程序?
解决方案
该文章主要的内容参考 ArchWiki/Autostaring 中的介绍,然后加入了一些补充说明;
在系统启动和关机时
使用systemd服务;
在用户登入和登出时
可以使用systemd/User服务;
时间事件
按日期、时间进行周期的执行:
- systemd/Timers
- Cron
在某个日期和时间执行一次:
- systemd/Timers
- at
systemd/Timers 中涵盖了 Cron 及 at 的功能;
在文件系统事件发生时
通常使用 inotify 实现,由下面这些工具:
- inotify-tools (see some examples)
- Incron
- fswatch
在 SHELL 的登入或登出时
这个可以通过配置命令行 SHELL 的配置文件实现;
在 Xorg 启动时
可以通过下面两个配置文件实现:
- xinitrc,如果我们使用 xinit 手动启动 Xorg;
- xprofile,如果我们使用了显示管理器;
在桌面环境启动时
大多数桌面环境实现了XDG Autostart,如果可以参考相关 ArchWiki 中桌面环境的 Autostart 部分的介绍:
在窗口管理器启动时
可以参考桌面管理器在 ArchWiki 中的文章,文章中的 Autostart 部分中有相关的介绍:
我现在使用的窗口管理器是 FVWM,但是没有 Arch 中没有相关的 Autostart 介绍。可以通过 Fvwm 中的 InitFunction 实现应用的自启动;