Я хотел бы создать новое действие Nautilus для выбранных файлов, но я не знаю, куда поместить саму информацию о действии. nautilus-actions-new --desktop
segfaults, nautilus-actions-config-tool
просто печатает Trace/breakpoint trap
и возвращает код выхода 133, и, похоже, на man
страницах нет никаких ссылок на где должны быть установлены внутренние файлы .desktop Nautilus, какие-либо советы или альтернативные способы настройки контекстного меню Nautilus< /сильный>.
Где хранить файлы .desktop Nautilus-Actions?
Ответы (2)
Возможно, я не понял ваш вопрос, и я также не смог воспроизвести ошибку сегментации в сжатии 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/
.
gconftool-2 --dump /apps /desktop /schemas /system | grep -C 50 nautilus
ничего не вернул...
- person isync; 09.06.2016
В действиях наутилуса была ошибка, которую недавно исправили (по крайней мере, в 3.2). Последняя версия 3.2.2.
Что касается настройки контекстного меню Nautilus, вы можете создать свои собственные скрипты или расширение на Python/C.
Скрипты:
Они хранятся в .gnome2/scripts. Имя сценария будет текстом, который появится в контекстном меню (в разделе «Сценарии»). Дополнительную информацию можно найти в руководстве пользователя Nautilus Scripts. Обратите внимание, что nautilus 3 также будет читать каталог .gnome2/scripts.
Расширения:
Несмотря на то, что вы можете писать расширения либо на Python, либо на C, Python более удобен для ваших нужд.
Ниже шаблон, который вы можете использовать для создания собственного пользовательского меню для Nautilus 3. Он основан на расширении Postr для 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):
...