Нужно быстро прогнать .py, .sh или бинарник прямо из «Файлов» — без ручного открытия терминала и набора пути. Открываю gnome-terminal в папке файла: Python через python3, shell — через bash. После выполнения окно не закрываю.
Куда положить
Можно просто скачать скрипт Nautilus ниже и положить по этому пути. Скрипты Nautilus живут здесь:
~/.local/share/nautilus/scripts/
В свойствах файла включаю «Исполняемый как приложение» — без этого пункта в меню не будет.
Или через командную строку
- Ставлю зависимости
Нужны gnome-terminal и python3.
sudo apt install -y gnome-terminal python3 - Создаю файл
Имя файла — то, что будет в меню: Запустить в терминале.
mkdir -p ~/.local/share/nautilus/scripts touch ~/.local/share/nautilus/scripts/"Запустить в терминале" - Даю права на исполнение
Без бита исполнения Nautilus скрипт не покажет.
chmod +x ~/.local/share/nautilus/scripts/"Запустить в терминале" - Открываю в редакторе
xdg-open поднимает графический редактор, не nano.
xdg-open ~/.local/share/nautilus/scripts/"Запустить в терминале" - Вставляю код и пользуюсь
Вставляю код ниже и пользуюсь: выделил файлы → ПКМ → «Сценарии». Чтобы меню подхватило файл:
nautilus -q
Код
#!/bin/bash
# Nautilus передаёт пути через переменную NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
zenity --error --text="Выберите файл для запуска"
exit 1
fi
# Берём первый выбранный файл
full_path=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | head -n1)
extension="${full_path##*.}"
# Проверяем существование файла
if [ ! -f "$full_path" ]; then
zenity --error --text="Файл не существует: $full_path"
exit 1
fi
# Проверяем права на исполнение только для бинарных файлов (не .py и не .sh)
if [ ! -x "$full_path" ] && [ "$extension" != "py" ] && [ "$extension" != "sh" ]; then
zenity --error --text="Файл не имеет прав на исполнение. Выполните: chmod +x "$full_path""
exit 1
fi
# Открываем терминал и запускаем файл
if [ "$extension" = "py" ]; then
gnome-terminal -- bash -c "cd "$(dirname "$full_path")" && python3 "$full_path"; exec bash"
elif [ "$extension" = "sh" ] || [ -x "$full_path" ]; then
gnome-terminal -- bash -c "cd "$(dirname "$full_path")" && bash "$full_path"; exec bash"
else
gnome-terminal -- bash -c "cd "$(dirname "$full_path")" && "$full_path"; exec bash"
fi
Комментарии
Пока нет комментариев — можете написать первый.