我正在配置我的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脚本,它只调用一个函数来运行我想要自动启动的每个程序。这就是一个例子:
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托盘喜欢运行前台,但需要运行后台,据我所知,它没有在命令行中设置它的选项。因此,我们需要使用bash设施。
在这里,我的尝试:
# network manager
nm-tray & # network manager
nm-tray &>/dev/null &
disown $! # network manager
nohup nm-tray &>/dev/null &
disown $!我甚至试图让整个自动启动脚本在后台,只是为了确保nm-托盘继续运行:exec_always --no-startup-id /home/beco/.config/i3/i3_autostart.sh &>/dev/null &。
我看到剪贴板图标,键盘图标。Touchpad设置为off。但奈米托盘图标坚持不工作。
有什么建议吗?谢谢。
@drbeco
(*)我读过一些错误报告,但这个问题不是关于解决那个问题的。这只是为了创造一个好的解决办法,我可以依赖,而问题继续。
(**) exec_always的这一行从未失败过,所以我对它很在行。
发布于 2019-10-13 19:08:01
唯一拒绝在后台运行(或在后台不工作)的程序是需要终端的程序。您的问题是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
}https://unix.stackexchange.com/questions/544840
复制相似问题