一段时间以来,我的 DWM 运行良好(我不记得在此之前对 xinitrc 之外做过任何更改),现在当我按下键绑定(killclient)时,它不再将我注销。所谓注销,只是意味着它将我送回 tty1 shell,然后我可以从那里输入 startx 以使用我的 xinitrc 重新启动 xorg 服务器。
现在它只是关闭 DWM,所以此时我要么通过按下电源按钮手动重新启动,要么如果我打开了 ST,我只需在 ST 中输入 reboot。
答案1
你“注销”不是当你的窗口管理器退出时,而是当你的 xinitrc 脚本结束时。在简单情况下,脚本在该脚本调用的最后一个非后台(非 &)命令退出时结束 - 在您的脚本中是不再是 dwm;您实际上已经拥有了slstatus
最后等待的命令,但由于某种原因,您的dwm
命令正在“后台”分离运行。&
重新排序为:
slstatus &
dwm
(exec dwm
可选)
通常,当你在exec dwm
脚本的最后,dwm取代脚本,因此“当 xinitrc 退出时”现在变为“当 dwm 退出时”。这在没有“exec”的情况下仍然有效,因为脚本仍然等待退出调用的命令('exec'在这里实际上只有最小的优势)。
但是,在后台运行某些程序可以&
阻止这种情况发生 - 你专门要求脚本不是等待“dwm”退出,然后继续执行下一个命令(slstatus)。
该&
操作符还使 无效exec
(因为“在后台”意味着产生一个单独的进程,这与“exec”所做的完全相反),所以exec dwm &
- 相当于dwm &
- 不再定义脚本的生命周期。