Наутилус движущиеся объекты к Мусору, не прося подтверждение

Как я вынуждаю Наутилус потребовать да/нет подтверждение после удара клавиши Delete?

Я знаю об опции "Files"-> "Preferences"-> "Behaviour": "Спросите прежде, чем освободить мусорное ведро или удалить файлы", но оно проверяется и только применяется на пустеющий Мусор.

Существует ли способ получить окно подтверждения, прежде чем файлы будут перемещены в Мусор?

Фон
Основная проблема, которую я имею, состоит в том, что я иногда случайно поразил клавишу Delete в свою клавиатуру без того, чтобы даже замечать. Я уверен, что это произошло, и я не могу жить с идеей просмотреть мою папку "Удаленные", чтобы проверить, не собираюсь ли я выбрасывать что-то, для чего я не значил.

3
задан 23 February 2015 в 22:27

2 ответа

Нет, Единица не имеет подтверждения, удаляют поле как окна. Это - причина, мусорное ведро существует, поэтому если Вы действительно делали ошибку, можно отменить его путем удара восстановления.

2
ответ дан 1 December 2019 в 16:28

Наутилус не предоставляет возможность подтверждения: решение?

То, что наутилус не предоставляет возможность, не означает, что необходимо рискнуть для случайной потери файлов неумышленно (и незамеченный) при ударе клавиши Enter.

Можно просто запустить скрипт в фоновом режиме, слежение удаляет действия, с помощью trash-cli - инструменты. Если Вы запускаете скрипт ниже в фоновом режиме, он делает две вещи, которые предотвратят незамеченное удаление

  • Это уведомляет Вас каждый раз, когда Вы перемещаете файл в мусор:

    enter image description here

    При нажатии на "OK" ничего не происходит. При нажатии на "Cancel" мусор будет открыт, и можно восстановить объект, так как Вы знаете имя и первоначальный тракт в файл.

  • Это отслеживает последние 50 действий мусора (один на строку)
    В Вашем Корневом каталоге сценарий создает файл журнала, trashlog.txt, с последними 50 действиями мусора. Это удостоверяется, что можно отследить то, что произошло, даже если Вы случайно нажимаете кнопку "OK".

    enter image description here

    Это регистрирует все события мусора с меткой времени, как:

    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:///) позволять пользователю восстановить файл.

Как использовать

  1. Использование сценария trash-cli

    sudo apt-get install trash-cli
    
  2. Скопируйте сценарий ниже в пустой файл, сохраните его как trash_secure (никакое расширение) в ~/bin. Сделайте каталог, если он еще не существует.

  3. Сделайте исполняемый файл сценария.
  4. Выйдите из системы и въезжайте задним ходом, тестовый прогон сценарий от терминала eindow с командой:

    trash_secure
    
  5. Если все хорошо работает, добавьте его к своим Приложениям Запуска: Тире> Приложения Запуска> Добавляет.

Сценарий

#!/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 оснащает использование сценария.
  • Самый изящный путь состоял бы в том, чтобы (конечно), непосредственно "не повредить" файлы при нажатии "Cancel". trash-cli инструменты не предоставляют возможность делать это из командной строки однако кроме интерактивной.
1
ответ дан 1 December 2019 в 16:28

Другие вопросы по тегам:

Похожие вопросы: