2012-04-02 3 views
2

選択したファイルに対して新しいNautilusアクションを作成したいと思いますが、アクション情報自体をどこに置くべきかについてはわかりません。 nautilus-actions-new --desktopsegfaultsnautilus-actions-config-toolだけTrace/breakpoint trapを出力し、終了コード133を返し、に任意のヒントや代替方法は、カスタマイズ、ノーチラス、内部の.desktopファイルをインストールする必要がありますmanページ内のすべての参照があるようには思えませんノーチラスのコンテキストメニューNautilus-Actions .desktopファイルを保存する場所は?

答えて

1

私は質問が表示されず、nautilus 2.30.1nautilus-actions 2.30.2のどちらかを使用してDebian squeezeでセグメンテーション違反を再現できませんでした。私はNautilus-internal .desktop filesが意味するものも確かではありませんが、ノーティラスのアクションがどこにアクションを保存するのかを理解しています。

特定のファイルには格納されません。それらは実際にGConfに保存されていて、Configuration Editorを使ってそれらを見たり編集したりできます。パッケージgconf2(Debian)をインストールし、コマンドgconftool-2を使ってコマンドラインから編集できます。それらは/apps/nautilus-actions/configurations/パスの下にあります。

+0

ノーチラス3.10.1でのUbuntu 14.04上のどこNautilusのストアオウムガイのアクションを、見つけるためにしようとしているときに私がここに来ました。 'gconftool-2 --dump/apps/desktop/schemas/system | 'のように、GConfでそれらを見つけることができませんでした。 grep -C 50 nautilus'は何も返しませんでした... – isync

1

最近修正されたノーチラスの動作にバグがありました(少なくとも3.2)。最新バージョンは3.2.2です。

Nautilusのコンテキストメニューをカスタマイズする場合は、Python/Cで独自のスクリプトや拡張機能を使用することができます。

スクリプト:

者は.gnome2 /スクリプトに格納されています。スクリプトの名前は、コンテキストメニュー(スクリプトの下)に表示されるテキストになります。詳細はNautilus Scripts user guideにあります。 ノーチラス 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): 
... 
関連する問題