Возможный дубликат:
Как настроить контекстное меню в Nautilus?
Я пытаюсь сделать Mark as executable
команду для правой кнопки мыши в nautilus для более быстрого рабочего процесса. Я пришел к такому сценарию:
#! /bin/bash
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
gksudo "chmod +x $file" &
done
Как мне заставить это работать. Сейчас у меня есть файл .sh
, но я не знаю, куда его поместить.
Просто сохраните этот файл как «Пометить как исполняемый файл», сделайте его исполняемым и поместите его в ~/.gnome2/nautilus-scripts
. Он будет отображаться в вашем меню правой кнопки мыши, под подменю Scripts
. Вы можете захотеть удалить gksudo
оттуда, если вы планируете пометить как исполняемые файлы, которыми вы владеете (в вашем домашнем каталоге), в противном случае каждый раз, когда вы запускаете скрипт через меню, вызываемое правой кнопкой мыши, он запрашивает у вас пароль. ..
НО скрипт, который у вас там, не будет работать для файлов, которые содержат пробелы в имени файла. Чтобы заставить его работать на них, вы должны изменить сценарий следующим образом:
#!/bin/bash
IFS_BAK=$IFS
IFS="
"
for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
if [[ "$line" = "" || "$line" = " " ]]; then
exit
else
chmod +x "$line"
fi
done
IFS=$IFS_BAK
IFS_BAK=
ТАКЖЕ , вы можете иметь свою собственную запись для «Отметить как исполняемый файл» штуковина. Но, чтобы включить это, вам нужно установить пакет python-nautilus:
sudo apt-get install python-nautilus
Затем сохраните этот файл как mark_as_executable.py
в ~/.local/share/nautilus-python/extensions/
:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
if len(files) != 1:
return
file = files[0]
if file.get_uri_scheme() != 'file':
return
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
item.connect('activate', self.menu_activate_cb, file)
return item,
. выше, будет работать только для отдельных файлов, если вы хотите добавить поддержку нескольких файлов, вы должны вставить это в скрипт Python, хотя:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
for yourfile in files:
if yourfile.get_uri_scheme() != 'file':
return
item.connect('activate', self.menu_activate_cb, yourfile)
return item,
, чтобы иметь возможность использовать функциональность , вам также потребуется перезапустить nautilus:
nautilus -q
и затем открыть окно nautilus.