由于奇怪的窗口焦点和/或键绑定在我的系统上,有时我本想关闭最上面的应用程序窗口(例如 LibreOffice 文档),但无意中关闭了 Nautilus/Files 窗口。最后我不得不手动重新启动 Nautilus/Files。我必须这样做方式比我希望的还要频繁。
我可以看到不用例:我希望 Nautilus/Files 在日常使用中退出后不会立即重新启动。
我如何自动检查 Nautilus/Files 是否正在运行,如果没有运行,则重新启动它?
解决方案中资源使用效率的提高可获得加分。
基于我不希望出现这种行为的答案将被否决。
答案1
更新:2019年10月16日。
感谢 gnome 专家对下面链接问题的回答,我们实现了一种更快、更稳定的重新启动 Nautilus 文件管理器的方法。
这竟然是一个具有挑战性的问题因为 Nautilus 一直在运行以控制桌面。如果您终止该程序,则nautilus
所有桌面图标都会消失。当 nautilus 正在运行且您的桌面图标存在时,如果您nautilus
在终端中键入内容,则 Nautilus 文件管理器就会出现。
~/ttlus
将此脚本复制到名为:的文件中
#!/bin/bash
# NAME: ttlus (Twenty Thousand Loops Under Startup)
# PATH: $HOME/askubuntu/
# DESC: Answer for: https://askubuntu.com/questions/1180043/how-can-i-automatically-relaunch-nautilus-if-i-quit-the-program
# Call Nautilus, named after Twenty Thousand Leagues Under the Sea novel,
# 20,000 times in loop from Startup Applications
# DATE: October 10, 2019. Modified October 16, 2019.
# NOTE: Things that don't work:
# https://askubuntu.com/questions/965052/how-to-make-script-wait-for-nautilus-to-exit
# https://ubuntuforums.org/showthread.php?t=1604843
# UPDT: Rpelace loop with occassional focus grabbing and unpredictable delays:
# while ps -L -p "$PID" -o pid,nice,lwp,comm | grep pool > /dev/null ; do
# with:
# while gdbus introspect --session --dest org.gnome.Nautilus \ ... 3 lines
LoopLimit=20000
Program="nautilus"
#Program="/usr/bin/nautilus --gapplication-service"
PID=$(pgrep nautilus)
Sec=3
if [[ $PID == "" ]] ; then
notify-send "ERROR in $0: Cannot find nautilus PID"
exit
fi
for (( l=0; l<LoopLimit; l++ )) ; do
# Is nautilus file manager running? 1 Window only is desktop icons
while gdbus introspect --session --dest org.gnome.Nautilus \
--object-path /org/gnome/Nautilus --recurse | \
grep -q '^ *node /org/gnome/Nautilus/window/' | \
grep -v '/window/1' ; do
sleep "$Sec"
done
"$Program" "$HOME" 2> /dev/null
sleep $(( Sec / 2 ))
done
notify-send "ERROR in $0: $Program exceeded $LoopLimit loop limit"
使其可执行chmod a+x ~/ttlus
第一个测试是在终端中输入~/ttlus &
。满意后,将其添加到启动应用程序。
如果程序运行失控使用:
$ pgrep ttlus
7970
$ kill 7970
[1]+ Terminated ttlus
笔记:
- 由于在使用+
sleep "$Sec"
退出 Nautilus或单击窗口后,Nautilus 重新出现在桌面上之前会有三秒钟的延迟(以减少资源使用)。AltF4X