Пользовательские действия в Nautilus
Введение
Nautilus — стандартный файловый менеджер рабочего стола GNOME. Большую часть времени вы проводите в нём: копируете файлы, открываете документы и кликаете правой кнопкой мыши. Пользовательские действия (nautilus-actions) добавляют в это привычное пространство дополнительные возможности: конвертацию, отправку, архивацию, монтирование образов и многое другое прямо из контекстного меню — без запуска посторонних приложений.
Эта статья объясняет, как создать собственные пункты контекстного меню в Nautilus. Материал подойдёт как начинающим пользователям Linux, так и продвинутым: вы получите конкретный пример, чек-листы для разных ролей, шаблоны команд и рекомендации по отладке.
Что потребуется
- Пакет nautilus-actions (графический редактор действий для Nautilus).
- Команда или скрипт, который выполняет желаемое действие (например, ffmpeg для конвертации видео).
- Права на установку ПО, если пакет отсутствует в системе.
Определение в одну строку: nautilus-actions — графический редактор, который позволяет привязать команду или скрипт к пункту контекстного меню Nautilus.
Установка пакета
В большинстве дистрибутивов nautilus-actions доступен через менеджер пакетов. Пример для Debian/Ubuntu-подобных систем:
sudo apt update
sudo apt install nautilus-actionsВ современных версиях GNOME пакет может называться иначе или интеграция может быть выполнена другими расширениями; если nautilus-actions отсутствует, найдите эквивалент в репозитории или используйте скрипты Nautilus (раздел «Альтернативные подходы» ниже).
Пример задачи и используемая команда
Мы создадим действие «Convert for iPod» — конвертацию FLV в MP4, подходящий для воспроизведения на iPod Touch / iPhone. В примере используется ffmpeg. Перед созданием действия убедитесь, что ffmpeg установлен:
ffmpeg -version
# или на Ubuntu
sudo apt install ffmpegПри создании действия вы укажете путь к утилите (/usr/bin/ffmpeg) и строку параметров, где специальные плейсхолдеры Nautilus заменяют путь к файлу.
Важно: не обязательно использовать те же опции ffmpeg — они примерные и могут быть изменены под ваши требования качества/размера.
Пошаговое создание действия
- Откройте редактор Nautilus Actions: System > Preferences > Nautilus Actions.

- Нажмите Add для создания нового действия.

В поле Label введите текст, который увидите в контекстном меню. Опционально выберите иконку и подсказку (tooltip).
На вкладке Path and Parameters укажите путь к утилите и параметры. В Path укажем полный путь до ffmpeg, например /usr/bin/ffmpeg. Если не знаете местоположение утилиты, используйте whereis или which:
whereis ffmpeg
which ffmpeg- В строке Parameters вставьте команду с плейсхолдерами Nautilus. Для нашего примера:
-i %d/%f -f mp4 -vcodec libxvid -maxrate 01000 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -s 480x320 -ab 0128000 -b 400000 %d/%f.mp4Пояснения к плейсхолдерам:
- %d — каталог файла, на который вы кликнули.
- %f — имя выбранного файла.
- %M — список файлов, если действие поддерживает несколько файлов.
Пример параметров — лишь иллюстрация. Для других задач замените на нужную команду и параметры.

- На вкладке Condition укажите, для каких файлов отображать действие. Для FLV задайте шаблон по имени файла: *.flv. Также укажите, будет ли действие доступно для файлов, папок или и того, и другого.

На вкладке Advanced Condition можно ограничить действие локальными файлами, Samba, FTP и т.д. Для простоты выберите “local files”.
Нажмите OK и сохраните действие.

Теперь найдите файл .flv в Nautilus, кликните правой кнопкой — в контекстном меню появится ваш пункт “Convert for iPod”. После запуска в той же папке появится файл .mp4.

Полезные советы и трюки
- Экспериментируйте сначала в терминале. Сложные команды удобнее отлаживать вне Nautilus.
- Для пакетной обработки используйте %M (многопользовательский список файлов) или пишите скрипт, который принимает несколько аргументов.
- Сложную логику (логирование, проверка ошибок, отправка почты) лучше реализовать в отдельном shell/Python-скрипте и в качестве Path указать путь к этому скрипту.
- Если действие должно выполняться в фоне, используйте внутри скрипта nohup или & и лог-файл.
Важно: проверьте права на выполнение скрипта (chmod +x) и правильно экранируйте пробелы/специальные символы в путях.
Примеры альтернативных подходов
- Nautilus Scripts (папка ~/.local/share/nautilus/scripts). Скрипты в этой папке автоматически появляются в подменю «Scripts» контекстного меню.
- Нативные расширения на Python для Nautilus (для более глубокой интеграции и сложной логики).
- Использовать другой файловый менеджер (Nemo, Thunar), у них свои механизмы расширений и скриптов.
- Создание .desktop файлов с mime-type и передачей файла в команду.
Когда использовать что:
- Нужна быстрая однокнопочная команда — nautilus-actions или скрипты в папке scripts.
- Нужна сложная интеграция/UI — писать расширение на Python.
- Нужна совместимость с другими файловыми менеджерами — использовать независимые скрипты и .desktop файлы.
Когда это может не сработать
- Если у вас Wayland и ограничены права на выполнение сторонних программ из GUI (редкий кейс).
- Если утилита отсутствует или её путь отличается от указанного.
- Если выбранный mime-type или шаблон имени файла не совпадают с реальным (например, файл называется video.flv.mp4).
- Если действие требует прав root — лучше запускать через polkit или просить пользователя выполнять команды вручную.
Отладка
- Проверьте, правильно ли работает команда в терминале с теми же аргументами.
- Проверьте полные пути до утилит (which, whereis).
- Вставьте в начало скрипта логирование: >> /tmp/nautilus-action.log 2>&1 и просматривайте файл.
- Убедитесь, что Nautilus действительно перезагружен после установки/изменения действий (nautilus -q).
Шаблоны и шпаргалка (Cheat sheet)
Общие плейсхолдеры Nautilus:
- %f — имя файла
- %d — директория файла
- %F — все выбранные имена файлов (в некоторых версиях)
- %M — список файлов, разделённых пробелами
Пример простого однострочного действия (конвертация изображения):
convert %d/%f %d/%f.pngПример вызова скрипта для нескольких файлов:
Path: /home/user/bin/nautilus-process-files.sh
Памятка: не забывайте делать скрипт исполнимым:
chmod +x /home/user/bin/nautilus-process-files.shПример простого shell-скрипта, который логирует и конвертирует файлы (сохраните как /home/user/bin/convert-for-ipod.sh):
#!/bin/bash
log=/tmp/convert-for-ipod.log
echo "Запуск: $(date)" >> "$log"
for f in "$@"; do
dir=$(dirname "$f")
base=$(basename "$f")
out="$dir/$base.mp4"
/usr/bin/ffmpeg -i "$f" -f mp4 -vcodec libxvid -acodec aac -s 480x320 "$out" >> "$log" 2>&1
echo "Сконвертирован: $out" >> "$log"
doneВ nautilus-actions укажите Path как /home/user/bin/convert-for-ipod.sh и в Parameters — %M
Роли и чек-листы
Роль: конечный пользователь
- Убедитесь, что нужная утилита установлена.
- Создайте простое действие с одной командой.
- Протестируйте на копии файла.
Роль: администратор
- Проверяйте безопасность команд и разрешения.
- Ограничьте видимость действий для пользователей, если требуется.
- Проводите аудит скриптов (нет вызова sudo без необходимости).
Роль: разработчик расширений
- Используйте полноценные расширения на Python для сложной логики.
- Пишите модульные тесты для скриптов и логируйте ошибки.
Методология создания действий (мини-метод)
- Определите задачу и ожидаемый результат.
- Отладьте команду в терминале с несколькими файлами и путями со пробелами.
- Вынесите сложную логику в отдельный исполняемый скрипт.
- Создайте действие, укажите Path и параметры.
- Ограничьте видимость через Condition.
- Протестируйте и добавьте логирование.
Критерии приёмки
- Действие появляется в контекстном меню для заданных типов файлов.
- Команда корректно обрабатывает файл(ы) с пробелами и нестандартными символами имени.
- Ошибки логируются в файл и не приводят к потере исходных данных.
- Права доступа и безопасность соблюдены (нет несанкционированного повышения привилегий).
Безопасность и конфиденциальность
- Не выполняйте непроверенные бинарники или скрипты, особенно с правами root.
- Логируйте только служебную информацию, избегайте записи конфиденциальных данных.
- Если действие обрабатывает личные файлы, предупредите пользователя о создании временных файлов и их удалении.
- GDPR/личные данные: при отправке файлов по сети убедитесь, что отправка согласована с политикой конфиденциальности.
Сравнение с альтернативами
- Nautilus Actions: удобный графический редактор, быстро создать действие.
- Nautilus scripts: проще для одного-двух скриптов, быстрое добавление в Scripts.
- Расширения на Python: лучше для сложной интеграции.
Выбор зависит от сложности задачи и потребностей в удобстве поддержки.
Тест-кейсы и приёмка
Тест: конвертация одного файла
- Шаги: выбрать файл .flv → правый клик → выбрать действие → проверить выходной файл .mp4
- Ожидаемый результат: файл .mp4 создан в той же папке, проигрывается.
Тест: несколько файлов
- Шаги: выделить 3 .flv → запустить действие (если поддерживается) → проверить наличие 3 .mp4
- Ожидаемый результат: все файлы обработаны без ошибок.
Тест: имена с пробелами и спецсимволами
- Ожидаемый результат: команда корректно обработает файлы, без обрезания имен.
Краткое резюме
Nautilus Actions даёт быстрый способ расширить функциональность Nautilus через контекстное меню. Главное — проверить команду в терминале, при необходимости вынести логику в скрипт и корректно использовать плейсхолдеры (%d, %f, %M). Это удобный инструмент для автоматизации рутинных задач.
Важно: перед массовым применением протестируйте действия на копиях файлов и добавьте логирование.
Спасибо за чтение. Пользовались ли вы nautilus-actions? Какие действия вы добавили? Поделитесь идеями и скриптами — возможно, кто‑то найдёт их полезными.