我正在使用 Ubuntu Mate 和 XMonad。我似乎无法理解如何在登录后启动时运行某些内容。
我希望在登录桌面时运行某些程序(例如 Firefox)。
现在假设我只想运行一个简单的脚本:
/home/juser/.xmonad/autostart.sh
该文件被设置为可执行文件。
我已经尝试了很多事情。 Ubuntu Mate 设置中的启动应用程序显然无法在 xmonad 上运行。
我尝试的第二件事是在执行 xmonad 后将命令放在 .xsessionrc 文件的末尾。我的 .xsessionrc 文件:
#!/bin/bash
xrdb -merge .Xresources
stalonetray &
feh --bg-scale /usr/share/backgrounds/cosmos/sombrero.jpg &
udiskie &
xfce4-power-manager &
xrandr --auto --output HDMI-1 --primary --left-of VGA-1 &
# Firefox PulseAudio fix
pulseaudio --start --exit-idle-time=-1 &
compton -bCG --active-opacity 1.0 --shadow-ignore-shaped &
if [ -x /usr/bin/nm-applet ] ; then
nm-applet --sm-disable &
fi
exec xmonad
exec /home/juser/.xmonad/autostart.sh #THIS IS NOT WORKING
桌面启动成功,但我的脚本没有执行。
另一件不起作用的事情是在 xmonad.hs 文件中使用 SpawnOnce 。类似的东西(我已将整个文件粘贴在这里:https://pastebin.com/yUXjbgva):
...
import XMonad.Util.SpawnOnce
myConfig = docks defaultConfig
...
, startupHook = myStartupHook
...
myStartupHook = do
spawnOnce "/home/juser/.xmonad/autostart.sh"
...
与前面的示例相同,我的脚本被简单地忽略。所以我放弃了 SpawnOnce 指令。
我还有其他选择吗?我究竟做错了什么?
答案1
exec xmonad
shell 脚本中的这一行取代使用 xmonad 进程运行脚本的 shell。所以没有人可以跑下一条线了。输入help exec
bash shell,或参见bash
(1)。
您可能想将最后两行重写为
/home/juser/.xmonad/autostart.sh &
exec xmonad
如果自动启动的东西都不需要 xmonad。