Как я вынуждаю Наутилус потребовать да/нет подтверждение после удара клавиши Delete?
Я знаю об опции "Files"-> "Preferences"-> "Behaviour": "Спросите прежде, чем освободить мусорное ведро или удалить файлы", но оно проверяется и только применяется на пустеющий Мусор.
Существует ли способ получить окно подтверждения, прежде чем файлы будут перемещены в Мусор?
Фон
Основная проблема, которую я имею, состоит в том, что я иногда случайно поразил клавишу Delete в свою клавиатуру без того, чтобы даже замечать. Я уверен, что это произошло, и я не могу жить с идеей просмотреть мою папку "Удаленные", чтобы проверить, не собираюсь ли я выбрасывать что-то, для чего я не значил.
Нет, Единица не имеет подтверждения, удаляют поле как окна. Это - причина, мусорное ведро существует, поэтому если Вы действительно делали ошибку, можно отменить его путем удара восстановления.
То, что наутилус не предоставляет возможность, не означает, что необходимо рискнуть для случайной потери файлов неумышленно (и незамеченный) при ударе клавиши Enter.
Можно просто запустить скрипт в фоновом режиме, слежение удаляет действия, с помощью trash-cli
- инструменты. Если Вы запускаете скрипт ниже в фоновом режиме, он делает две вещи, которые предотвратят незамеченное удаление
Это уведомляет Вас каждый раз, когда Вы перемещаете файл в мусор:
При нажатии на "OK" ничего не происходит. При нажатии на "Cancel" мусор будет открыт, и можно восстановить объект, так как Вы знаете имя и первоначальный тракт в файл.
Это отслеживает последние 50 действий мусора (один на строку)
В Вашем Корневом каталоге сценарий создает файл журнала, trashlog.txt
, с последними 50 действиями мусора. Это удостоверяется, что можно отследить то, что произошло, даже если Вы случайно нажимаете кнопку "OK".
Это регистрирует все события мусора с меткой времени, как:
Tue Feb 24 07:30:55 2015: '/home/jacob/Naamloze map/Naamloos document (11e kopie)'
Tue Feb 24 07:31:09 2015: '/home/jacob/Naamloze map/Naamloze map'
В цикле сценарий проверяет список удаленных файлов с помощью trash-cli
, с командой:
trash-list
Списки команд все удаляют действия, также от, например, внешние диски.
Каждый раз, когда новые объекты появляются в списке, сценарий называет окно Zenity, перечисляя (недавно) удаленные файлы. В то же время эти файлы перечислены в файл журнала: ~/trashlog.txt
. Для предотвращения файла для становления к большому это только "помнит" (немного больше затем), последние 50 удаляют события.
Окно Zenity возвращает "ненулевое" когда Cancel
кнопка нажимается, и сценарий открывается Trash
(на самом деле trash:///
) позволять пользователю восстановить файл.
Использование сценария trash-cli
sudo apt-get install trash-cli
Скопируйте сценарий ниже в пустой файл, сохраните его как trash_secure
(никакое расширение) в ~/bin
. Сделайте каталог, если он еще не существует.
Выйдите из системы и въезжайте задним ходом, тестовый прогон сценарий от терминала eindow с командой:
trash_secure
Если все хорошо работает, добавьте его к своим Приложениям Запуска: Тире> Приложения Запуска> Добавляет.
#!/usr/bin/env python3
import subprocess
import os
import time
home = os.environ["HOME"]
trashlog = home+"/trashlog.txt"
def trashlist():
return subprocess.check_output(["trash-list"]).decode("utf-8")
def log_trash(last_trashed):
if not os.path.exists(trashlog):
with open(trashlog, "wt") as log:
log.write(last_trashed)
else:
with open(trashlog, "r") as log:
log = log.readlines()
log = log[50:]+[last_trashed] if len(log) > 50 else log+[last_trashed]
with open(trashlog, "wt") as out:
for it in log:
out.write(it)
out.write("\n")
trash1 = trashlist()
while True:
time.sleep (1)
trash2 = trashlist()
if trash2 != trash1:
diff = (" ").join(["'"+l[l.find("/"):]+"'" for l in trash2.splitlines() if not l in trash1])
log_trash(time.ctime()+": "+diff)
zenity_message = "zenity --list --width=600 --height=200 --title='Items were trashed' --text='' --column='Path' "+diff
try:
check = subprocess.check_output(["/bin/bash", "-c", zenity_message]).decode("utf-8")
if check != "":
subprocess.Popen(["nautilus", "trash:///"])
except subprocess.CalledProcessError:
subprocess.Popen(["nautilus", "trash:///"])
trash1 = trash2
trash-cli
оснащает использование сценария.trash-cli
инструменты не предоставляют возможность делать это из командной строки однако кроме интерактивной.