我想为选定的文件创建一个新的Nautilus操作,但是我对在哪里放置操作信息本身感到困惑。 nautilus-actions-new --desktop
segfaults,nautilus-actions-config-tool
只打印Trace/breakpoint trap
并返回退出代码133,man
页面中似乎没有任何引用应安装Nautilus内部.desktop文件,自定义Nautilus上下文菜单的任何提示或替代方法。
答案 0 :(得分:1)
我可能没有得到您的问题,我无法使用nautilus 2.30.1
和nautilus-actions 2.30.2
重现Debian挤压中的细分错误。我不确定Nautilus-internal .desktop files
你的意思,但我明白你的意思是鹦鹉螺动作本身存储着这些动作。
它们不存储在特定文件中。它们实际上存储在GConf中,您可以使用Configuration Editor
或命令行安装包gconf2
(Debian)并使用命令gconftool-2
查看它们并进行编辑。您可以在/apps/nautilus-actions/configurations/
路径下找到它们。
答案 1 :(得分:1)
最近修复了nautilus行动中的一个错误(至少在3.2中)。最新版本是3.2.2。
关于自定义Nautilus上下文菜单,您可以创建使用自己的脚本或Python / C中的扩展。
<强>脚本:强>
这些存储在 .gnome2 / scripts 中。脚本的名称将是将出现在上下文菜单中的文本(在“脚本”下)。您可以在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):
...