我正在使用带有 dwm(动态窗口管理器)的 manjaro linux,我需要运行一些只有在启动 x 显示服务器后才会起作用的命令。Lightdm 用于登录。
示例命令:
/usr/bin/xrandr --output eDP1 --auto --right-of HDMI1
/usr/bin/xset r rate 280 40
/usr/bin/copyq
我尝试过将这些添加到,,~/.xinitrc
并延迟/etc/X11/xinit/xinitrc
crontab
~/.xsession
将它们放入后~/.xession
确实可以运行,但只会加载壁纸,而窗口管理器永远不会启动。
将它们放在用户crontab
给出的输出中,例如:
Can't open display
xset: unable to open display ""
ERROR: QtFatal: This application failed to start because no Qt platform plugin could be initialized.
将这些命令放在哪里比较合适?
答案1
LightDM 是启动 X 显示服务器(因此称为“显示管理器”)的程序,因此命令应该位于 LightDM 可以查看的位置。(另一个不错的选择是使用窗口管理器“自动启动”脚本(如果有) - 但不幸的是 dwm 没有。)
对于 LightDM 来说,~/.xsession
是个好地方,但请注意,它是同步运行的 - 也就是说,你的会话仅在 xsession 脚本之后启动结束。因此,如果您想启动任何长时间运行的命令,您必须使用以下&
运算符“在后台”运行它们:
/usr/bin/copyq &
~/.xprofile
GDM 则以同样的方式使用。
也可以放入/etc/X11/xinit/xinitrc.d/*
有同样要求的脚本。
~/.xinitrc
类似,但通常不曾用过由显示管理器执行;只有 startx 和 SDDM 读取它,而其他 DM 则在 /usr/share/xsessions 中查找会话配置。此外,xinitrc 还负责启动实际会话 - 即它需要dwm
在最后调用。