Я хотел бы создать новое действие Nautilus для выбранных файлов, но я в тупике о том, где разместить информацию о действии. nautilus-actions-new --desktop
segfaults, nautilus-actions-config-tool
просто печатает Trace/breakpoint trap
и возвращает код выхода 133, и, кажется, не существует какие-либо ссылки в man
страниц в где Nautilus-внутренние .desktop файлы должны быть установлены, любые советы или альтернативными способами настроить Контекстное меню Nautilus.Где хранить файлы Nautilus-Actions .desktop?
ответ
Возможно, у меня не возник вопрос, и я не смог воспроизвести ошибку сегментации при сжатии Debian, используя nautilus 2.30.1
и nautilus-actions 2.30.2
. Я также не уверен, что вы подразумеваете под Nautilus-internal .desktop files
, но я понимаю, что вы имеете в виду, где действия nautilus хранят сами действия.
Они не хранятся в определенном файле. Они фактически хранятся в GConf, и вы можете видеть их и редактировать их с помощью Configuration Editor
или из пакета установки командной строки gconf2
(Debian) и используя команду gconftool-2
. Вы можете найти их под кодом /apps/nautilus-actions/configurations/
.
Была обнаружена ошибка в действиях nautilus, которая была исправлена недавно (по крайней мере, в 3.2). Последняя версия - 3.2.2.
Что касается настройки контекстного меню Nautilus, вы можете создать свои собственные скрипты или расширение в Python/C.
Сценарии:
Те, хранятся в .gnome2/скриптов. Имя скрипта будет текстом, который появится в контекстном меню (в разделе «Сценарии»). Вы можете найти более подробную информацию в Nautilus Scripts user guide. Обратите внимание, что nautilus 3 также прочитает каталог .gnome2/scripts.
Расширение:
Даже если вы можете писать расширения либо в Python или C, Python является более простым для ваших нужд.
Под шаблоном, вы можете использовать для создания своего собственного меню для Nautilus 3. Он основан на Postr's nautilus extension. Для 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):
...
Я пришел сюда, пытаясь выяснить, где Nautilus Nautilus хранит действия, на Ubuntu 14.04 с Nautilus 3.10.1. Я не смог найти их в GConf, например 'gconftool-2 --dump/apps/desktop/schemas/system | grep -C 50 nautilus ничего не вернул ... – isync