Была ошибка в действиях nautilus, которая была недавно исправлена (по крайней мере, в 3.2).Последняя версия - 3.2.2.
Что касается настройки контекстного меню Nautilus, вы можете создавать собственные сценарии или расширения в Python / C.
Сценарии:
Они хранятся в .gnome2 / scripts .Имя скрипта будет тем текстом, который появится в контекстном меню (в разделе «Сценарии»).Вы можете найти более подробную информацию в руководстве пользователя Nautilus Scripts .Обратите внимание, что nautilus 3 также будет читать каталог .gnome2 / scripts .
Расширения:
Даже если вы можетеписать расширения на Python или C, Python более прост для ваших нужд.
Ниже шаблона вы можете использовать для создания собственного меню для Nautilus 3. Оно основано на Расширение nautilus Постра .Для Nautilus 3 его нужно сохранить в ~ / .local / share / nautilus-python / extensions .
from gi.repository import Nautilus, GObject
import os, os.path
from urllib import unquote
PROGRAM_NAME = '/path/to/the/program/you/want/to/run/with/the/files/selected'
class MyExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
pass
def action_for_my_files(self, menu, files):
# This is the method invoked when our extension is activated
# Do whatever you want to do with the files selected
if len(files) == 0:
return
names = [ unquote(file.get_uri()[7:]) for file in files ]
argv = [ PROGRAM_NAME ] + names
GObject.spawn_async(argv, flags=GObject.SPAWN_SEARCH_PATH)
def get_file_items(self, window, files):
''' This method is invoked to create a contextual menu.
We can filter out the files, directories we do not want a menu
'''
'''No files selected -> no menu'''
if len(files) == 0:
return
for fd in files:
''' Not a file -> no menu '''
if fd.is_directory() or fd.get_uri_scheme() != 'file':
return
''' Not an image -> no menu '''
if not fd.is_mime_type("image/*"):
return
item = Nautilus.MenuItem(name='MyExtension::MethodUniqueId',
label='Label in the menu...',
tip='Tip for the menu',
icon='icon_name')
item.connect('activate', self.action_for_my_files, files)
return item,
Для Nautilus 2 начало сценария более или менеетот же самый.Вам нужно только изменить начало.Для предыдущего примера это будет:
import gobject, nautilus
import os, os.path
from urllib import unquote
PROGRAM_NAME = '/path/to/the/program/you/want/to/run/with/the/files/selected'
class PostrExtension(nautilus.MenuProvider):
...