Из-за странного фокуса окна и/или поведения привязки клавиш в моей системе, иногда я случайно закрываю окно Nautilus/Files, когда мое намерение состоит в том, чтобы закрыть верхнее окно приложения (например, документ LibreOffice). Я заканчиваю тем, что имел необходимость вручную повторно запустить Наутилус/Файлы. Я должен делать этот путь чаще, чем я хотел бы.
Я не вижу примера использования, где я требовал бы для Наутилуса/Файлов к не, сразу повторно запускаются после выхода в моем ежедневном использовании.
Как я могу автоматически проверить, чтобы видеть, работает ли Наутилус/Файлы, и, если это не, для перезапуска его?
Бонусные очки для эффективности ресурса используют в решении.
За ответы, утвержденные на мне, не желая это поведение, вниз проголосуют.
Благодаря ответу эксперта гнома по связанному вопросу ниже, был реализован более быстрый более стабильный метод повторно запускающегося Файлового менеджера Наутилуса.
Это оказалось сложной проблемой, потому что Наутилус всегда работает для управления рабочим столом. Если Вы закрываете программу 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"
команда после выходящего Наутилуса с Alt+F4 или X нажатия на окне, трехсекундная задержка (для сокращения использования ресурсов) произойдет перед Наутилусом, вновь появляется на рабочем столе.