我正在配置我的 i3 窗口管理器(版本 4),有时我认为使用其本机自动启动exec
或exec_all
失败。 (*)
因此,我决定创建一个i3_autostart.sh
脚本,将我需要的所有内容添加到一个有组织的位置。很像KDE
或GNOME
有自己的文件夹来做到这一点。
该脚本是通过~/.config/i3/config
以下行 (**) 调用的:
exec_always --no-startup-id /home/beco/.config/i3/i3_autostart.sh
然后输入自动启动脚本,该脚本基本上只是调用一个运行我想要自动启动的每个程序的函数。这是一个例子:
Autostart()
{
# why, o my?
sleep 1
# set keyboard bindings
xkbcomp -w 0 /home/beco/.config/xkbmap_kde $DISPLAY
# toggle touchpad
/home/beco/bin/touchpad off
# set wallpaper
feh --bg-scale /home/beco/Pictures/wallpaper/Stonehenge-Desktop-Wallpaper-i3help.png
# clipboard
parcellite
# network manager
nm-tray
# why, o my?
sleep 1
}
所有程序启动都很好,除了nm-tray
。我尝试了多种命令组合和技术,但均无济于事。
从我所看到的来看,问题是 nm-tray 喜欢运行前台,但需要运行后台,据我所知,它没有选项在命令行中设置它。所以我们需要使用bash
设施。
这是我的尝试:
- 简单的背景
# network manager
nm-tray &
- 试图否认
# network manager
nm-tray &>/dev/null &
disown $!
- nohup 和否认
# network manager
nohup nm-tray &>/dev/null &
disown $!
我什至尝试让整个自动启动脚本在后台运行,只是为了确保 nm-tray 继续运行:exec_always --no-startup-id /home/beco/.config/i3/i3_autostart.sh &>/dev/null &
我看到剪贴板图标和键盘图标。触摸板设置为关闭。但 nm-tray 图标坚持不工作。
有什么建议么?谢谢。
@drbeco
(*) 我读过一些错误报告,但这个问题并不是要解决这个问题。这只是为了创建一个我可以信赖的良好解决方法,同时问题仍然存在。
(**) 这条线exec_always
从来没有失败过,所以我很喜欢它。
答案1
唯一拒绝在后台运行(或随后不工作)的程序是需要终端的程序。
您的问题是nm-tray
根本没有运行,因为您没有parcellite
在后台启动。
因此,只需将&符号添加到这两行的末尾(如果您启动其他不会自行分离的长期运行/持久程序,则添加&符号,但我认为目前您上面的列表中没有)并在末尾添加一个否认脚本,不要让脚本挂在那里等待程序完成。
尝试使用此块代替上面的示例:
Autostart()
{
# why, o my?
sleep 1
# set keyboard bindings
xkbcomp -w 0 /home/beco/.config/xkbmap_kde $DISPLAY
# toggle touchpad
/home/beco/bin/touchpad off
# set wallpaper
feh --bg-scale /home/beco/Pictures/wallpaper/Stonehenge-Desktop-Wallpaper-i3help.png
# clipboard
parcellite &
# network manager
nm-tray &
# detach the started background programs
disown
# why, o my?
#sleep 1
}