Я помню, что при использовании 12.04 (и возможно также 14.04), что, если я удалил диск, который в настоящее время монтировался и открыт в окне Nautilus, окно закроется автоматически.
Теперь в 16,04, открытое окно автоматически возвращается назад к каталогу медиа (/media/{username}
) если я удаляю открытый диск. Там какой-либо путь состоит в том, чтобы восстановить эту функциональность?
В Предпочтениях наутилуса нет никаких опций зафиксировать его, насколько я вижу; - ничто, чтобы быть найденным в Предпочтениях. С крошечным чрезвычайно-low-on-juice-фоновый сценарий мы можем исправить его как бы то ни было. Дополнительная нагрузка процессора является ничем.
#!/usr/bin/env python3
import subprocess
import os
import time
def get(cmd):
try:
return subprocess.check_output(cmd).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
curruser = os.environ["USER"]
nautpid = get(["pgrep", "nautilus"])
connected1 = [l for l in get("lsblk").splitlines() if "media" in l]
wlist1 = [l.strip() for l in get(["wmctrl", "-lp"]).splitlines() if nautpid in l]
t = 0
while True:
time.sleep(1.5)
connected2 = [l for l in get("lsblk").splitlines() if "media" in l]
time.sleep(0.5)
while True:
wlist = get(["wmctrl", "-lp"])
if wlist:
break
wlist2 = [l.strip() for l in wlist.splitlines() if nautpid in l]
removed = [l for l in connected1 if not l in connected2]
if removed:
close = [
w for w in wlist2 if all([
not w in wlist1,
any([
w.endswith(" "+curruser),
w.endswith(" Home")]),
])
]
for w in close:
subprocess.Popen(["wmctrl", "-ic", w.split()[0]])
connected1 = connected2
wlist1 = wlist2
# periodically (re)set nautpid to fix if nautilus crashed somehow
t += 1
if t == 20:
nautpid = get(["pgrep", "nautilus"])
t = 0
Потребности сценария wmctrl
быть установленным
sudo apt-get install wmctrl
Скопируйте сценарий в пустой файл, сохраните его как close_removed.py
Тестовый прогон это командой
python3 /path/to/close_removed.py
подключите один или несколько дисков, удалите их после того, как они были автоматически смонтированы. Их окно должно закрыться.
Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:
/bin/bash -c "sleep 15 && python3 /path/to/close_removed.py"
/media/<username>/<drivename>
nautilus
окно возвращается к (по крайней мере, в моей системе) /media/<username>
. Окно поэтому (ре), названное в честь текущего пользователя.nautilus
окна, названные в честь текущего пользователя, возможные несоответствия могли произойти. Однако безопасно предположить, что окно, которое было сразу переименовано текущему пользователю после диска, было разъединено, тот, который представил удаленный диск.Именно так сценарий работает, с помощью:
pgrep nautilus
... на запуске сценария, для получения pid наутилуса
wmctrl -lp
... получить окна наутилуса
lsblk
... следить возможно за разъединенными дисками
wmctrl -ic <window_id>
... закрывать целенаправленное окно
Сценарий имеет цикл двух секунд, который подразумевает, что диск должен быть присоединен по крайней мере две секунды для него для работы.