Ubuntu 与 Xmonad - 如何在启动时运行程序

Ubuntu 与 Xmonad - 如何在启动时运行程序

我正在使用 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 xmonadshell 脚本中的这一行取代使用 xmonad 进程运行脚本的 shell。所以没有人可以跑下一条线了。输入help execbash shell,或参见bash(1)。

您可能想将最后两行重写为

/home/juser/.xmonad/autostart.sh &
exec xmonad

如果自动启动的东西都不需要 xmonad。

相关内容