Где хранить файлы .desktop Nautilus-Actions?

Я хотел бы создать новое действие Nautilus для выбранных файлов, но я не знаю, куда поместить саму информацию о действии. nautilus-actions-new --desktop segfaults, nautilus-actions-config-tool просто печатает Trace/breakpoint trap и возвращает код выхода 133, и, похоже, на man страницах нет никаких ссылок на где должны быть установлены внутренние файлы .desktop Nautilus, какие-либо советы или альтернативные способы настройки контекстного меню Nautilus< /сильный>.


person l0b0    schedule 02.04.2012    source источник


Ответы (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/.

person Mosty Mostacho    schedule 18.04.2012
comment
Я пришел сюда, пытаясь выяснить, где Nautilus хранит действия nautilus, в Ubuntu 14.04 с Nautilus 3.10.1. В GConf я их не нашел, например 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):
...
person gpoo    schedule 05.05.2012