我做了一些研究试图弄清楚这一点,结果发现只是为了启动一项服务,各种选项看起来都非常复杂,而这正是我需要做的。
基本上,我尝试xbindkeys
在桌面环境启动时(或用户登录时)启动。
有哪些简单的选项可以实现此目的?
答案1
小心您尝试启动的服务类型。您正确地确定了应该xbindkeys
与桌面环境一起启动,因为它需要访问您的 X11 显示器,而“启动时启动”服务则无法访问。很多人都忘记了这一点。
在大多数桌面环境中,创造 ~/.config/autostart/xbindkeys.desktop
根据 XDG 自动启动规范:
[Desktop Entry]
Type=Application
Exec=xbindkeys
通常这可以通过cinnamon-session-properties
或类似方式来完成。
另一种方法是将命令放在~/.xprofile
脚本,由大多数显示管理器(GDM、KDM、LXDM、LightDM)运行:
xbindkeys &
如果您只使用startx
,请在您的 中将同一行放在~/.xinitrc
启动桌面环境的部分之前。这同样适用于调用 的显示管理器startx
,例如 SLiM。
一些服务(包括 xbindkeys)会自行“分离”,因此&
并非严格要求。但是,这不会造成任何损害,并且可能会使启动快点因为 bash 甚至在启动进程之前就分离了。另一方面,有些情况下这样做会很麻烦 — 即当需要知道服务何时完全初始化时。
另一方面,系统范围的服务应通过创建/etc/systemd/system/<name>.service
单元文件作为 systemd 服务启动。它们启动较早,无法访问任何 X11 显示(并且通常在显示管理器启动之前启动)。
答案2
xbindkeys 不是一项服务,它需要使用系统控制。
然而,绑定键就像 Arch 中的任何东西一样,它有一个非常好的 wiki 页面,这里,其中除其他内容外,规定如下:
完成密钥配置后,编辑 ~/.xinitrc 并放置
xbindkeys
在启动窗口管理器或 DE 的行之前。
你真的应该开始阅读 Wiki,它确实写得很好,甚至当我必须在其他非 Arch Linux 系统中添加/修改配置时,我也会阅读它。
答案3
在我这边,我使用 Cinnamon 作为桌面环境。所以我只需/usr/bin/xbindkeys
在 Cinnamon 设置面板 → 启动应用程序中添加即可。
这样,xbindkeys
当我的桌面环境启动时,它就会启动。
如果您不使用 Cinnamon,我相信您将能够将同样的东西应用到您的桌面环境中。