背景:我在笔记本电脑上运行 Arch Linux 版本。该系统已经运行了三年。我重新安装了几次,在重新安装过程中,我将主目录中的旧点文件带了过去。这让我几乎不可能记住我所做的所有配置。我使用 openbox 作为 WM,并且没有任何桌面环境。
现在我想要一些简单的事情:
我希望计算机tint2
在启动时运行。为此,我进行了搜索并了解到~/.xinitrc
每当我运行startx时都会运行,并且~/.config/openbox/autostart
在运行openbox时执行。
所以我首先将其写成.xinitrc
两行:
exec openbox
tint2 &
然后再次运行pkill x
,startx
openbox 照常运行,但 tint2 没有运行。
那么我们何不试试autostart
呢?我写了一行代码autostart
tint2 &
重新启动 X,什么也没发生。
我还chmod +x
删除了自动启动脚本,并尝试将行更改为
(sleep 2s && tint2) &
但是 openbox 一直拒绝在启动时显示 tint2 任务栏。
如果我在终端窗口中运行自动启动脚本,它就可以起作用。
我的猜测是,其他一些配置文件/脚本被执行了。如果是这样,有什么方法可以知道它们是哪些文件?或者简单地说,为什么 xinitrc 或 autostart 脚本不起作用?
答案1
制作粗略的 .xinitrc 的传统方法是将其结构化为
进程1 &
进程2 &
进程3 &
...
最后一个进程
最后一个没有 & 符号的进程是“魔法进程”,关闭它会关闭 X。传统上,在 twm 中,魔法进程是一个 xterm。当没有 & 符号的进程结束时,X 就会关闭。如果你将最后一个进程 ( process4 &
) 置于后台,X 就会关闭。我认为你的例子应该是这样的:
tint2 和
执行 openbox 会话
至少在某些情况下,我发现省略“&”符号似乎没什么关系。我偶尔会不小心省略“&”,但并没有什么不良影响。
还要确保chmod u+x .xinitrc
答案2
我通过更换解决了这个问题
exec openbox
和
openbox-session
在.xinitrc
。结果发现autostart
只有 才能运行openbox-session
。