2012-04-02 5 views
2

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

ответ

1

Возможно, у меня не возник вопрос, и я не смог воспроизвести ошибку сегментации при сжатии 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/.

+0

Я пришел сюда, пытаясь выяснить, где Nautilus Nautilus хранит действия, на Ubuntu 14.04 с Nautilus 3.10.1. Я не смог найти их в GConf, например 'gconftool-2 --dump/apps/desktop/schemas/system | grep -C 50 nautilus ничего не вернул ... – isync

1

Была обнаружена ошибка в действиях 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): 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^