2012-04-02 195 views
2

我想爲選定的文件創建一個新的Nautilus動作,但我很難決定將動作信息本身放在哪裏。 nautilus-actions-new --desktopsegfaultsnautilus-actions-config-tool只是打印Trace/breakpoint trap並返回退出代碼133,並且似乎沒有要在man頁面中其中鸚鵡螺內部.desktop文件應安裝,任何提示或替代方法的任何引用定製鸚鵡螺上下文菜單在哪裏存儲Nautilus-Actions .desktop文件?

回答

1

我可能沒有得到您的問題,也無法使用nautilus 2.30.1nautilus-actions 2.30.2來重現Debian擠壓中的分段錯誤。我不確定你的意思是Nautilus-internal .desktop files,但我明白你的意思是鸚鵡螺動作自己存儲這些動作。

他們不存儲在一個特定的文件。他們實際上是存儲在GConf信息,你可以看到他們使用Configuration Editor或安裝包gconf2命令行(Debian的),並使用命令gconftool-2編輯它們。你可以在/apps/nautilus-actions/configurations/路徑下找到它們。

+0

我來到這裏,試圖找出鸚鵡螺店鸚鵡螺行動,在Ubuntu 14.04鸚鵡螺3.10.1。我無法在GConf中找到它們,例如'gconftool-2 --dump/apps/desktop/schemas/system | grep -C 50鸚鵡螺「沒有任何返回... – isync 2016-06-09 13:56:40

1

有在鸚鵡螺操作中的錯誤,這是最近固定的(至少在3.2)。最新版本是3.2.2。

關於定製鸚鵡螺上下文菜單,您可以創建使用自己的腳本或在Python/C的延伸。

腳本:

那些存儲在.gnome2 /腳本。腳本的名稱將是將出現在上下文菜單中(在腳本下)的文本。你可以在Nautilus Scripts user guide找到更多的信息。請注意,鸚鵡螺 3也將讀取目錄.gnome2 /腳本

擴展:

即使您可以編寫擴展,無論是在Python或C,Python是適合您的需求更直接。

下面你可以用它來創建鸚鵡螺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, 

對於鸚鵡螺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): 
...