如何在Nautilus中自定义上下文菜单?


29

我有时会在Nautilus的上下文菜单中想出一些我想提供的操作想法。如何在其中添加它们?是否有类似Nautilus的Thunar UCA插件?


有关右键单击“创建新文档”的信息,请参阅此askubuntu.com/questions/777711/…–
HMagdy,

Answers:


25

下面的答案是过时的:最近更新的答案是这一个


Nautilus的上下文菜单以前可以通过Nautilus扩展程序进行自定义。请注意,此链接将导致存档的文档;Gnome开发人员删除了该文档,不再支持这种自定义。它可能仍然可以工作。

您还可以将普通外壳脚本放置在~/.local/share/nautilus/scripts~/.gnome2/nautilus-scripts在早期版本中)目录下,它们将显示在“ 脚本”子菜单下的文件上下文菜单中。


3
请注意,如askubuntu.com/questions/281062/中所述,如果您使用的是较新版本的Nautilus的ubuntu 13.04,则应该使用~/.local/share/nautilus/scripts文件夹放置脚本。即使这样,它也只会显示脚本当您右键单击文件或文件夹而不是空白空间时。
Logan

2
这不是过时的吗?

@cipricus。回答于2011年,这是六年前的事。较早的12个Ubuntu版本。
ulidtko

该问题未标记为特定于版本,并且有非常近期的答案

@dessert-我认为将问题调整为过时的答案没有意义,因为该答案在过去被标记为确定的。这样一来,经过更新(且投票最多)的答案就显得不合时宜了,方法是将后一个答案简单地标记为确定的答案。-另一种方法是将简短的编辑添加到已确定的,已经过时的答案中,以链接到更新的答案:我刚刚做了。

30

Ubuntu 18.04的更新

在发布Ubuntu 18.04的日期,Nautilus-Actions已经/不再可用。它似乎也已被名为Filemanager-Actions的新程序所取代,该程序在其他情况下看起来相同。


要安装此程序,请参阅解决方案。


鹦鹉螺行动

我们可以使用nautilus-actions 定义自己的右键单击上下文菜单项安装鹦鹉螺动作

  • 从Dash或从终端运行Nautilus-Actions配置工具

    nautilus-actions-config-tool
    

在此处输入图片说明

  • 在“ 操作”选项卡中,为您的操作指定一个合理的标签,例如“在终结者中打开”,然后选择在选择或上下文菜单中显示此标签。

  • 接下来打开“ 命令”选项卡以输入要运行的命令

在此处输入图片说明

  • 输入命令(/usr/bin/command_to_run)和程序选项的完整路径。

  • 注销并且再次右键关联菜单下面会显示:

在此处输入图片说明



1
这仍然是最新的吗?
RolandiXor

2
Nautilus Actions按预期在12.04
Takkat 2012年


11

可以使用python-nautilus扩展名替代nautilus-actions

安装:

sudo apt-get install python-nautilus

一个简单的例子:

import os

from gi.repository import Nautilus, GObject

class ColumnExtension(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass
    def menu_activate_cb(self, menu, file):
         os.system("write here your simple bash command & pid=$!")

    def get_background_items(self, window, file):
        item = Nautilus.MenuItem(name='ExampleMenuProvider::Foo2', 
                                         label='Name of your item', 
                                         tip='',
                                         icon='')
        item.connect('activate', self.menu_activate_cb, file)
        return item,

在下面复制此python脚本,~/.local/share/nautilus-python/extensions然后重新启动nautilus。当您右键单击桌面并选择您的项目时,将执行简单的bash命令:)


您可能需要创建nautilus-pythonextensions文件夹(如果不存在)。
souravc 2014年

我尝试了本主题中的大多数解决方案,发现python解决方案是最好的解决方案。尽管不完美,主要是由于缺乏文档,但它允许更灵活的脚本编写和可移植性。
里卡多·罗德里格斯

3

如果您想随时可以做某事,请像ulidtko所说并使用~/.gnome2/nautilus-scripts

如果希望看到时可以自定义,请安装nautilus-actions软件包,然后转到“系统”->“首选项”->“ Nautilus Actions配置”。


3

2016年11月29日, Ubuntu 14.04、16.04和16.10以及更早的版本。

请参阅Nautilus有关在此处创建自己的脚本的说明帮助Ubuntu-Nautilus Scripts How to)。基本上,您:

  • 导航到目录 ~/.local/share/nautilus/scripts/
  • 将您的脚本(用Bash,Perl或Python编写)放在此处。
  • 使用Nautilus或从终端将脚本标记为可执行文件 chmod +x script_name
  • Nautilus使环境变量可用于您的脚本:NAUTILUS_SCRIPT_SELECTED_FILE_PATHS,NAUTILUS_SCRIPT_SELECTED_URIS,NAUTILUS_SCRIPT_CURRENT_URI和NAUTILUS_SCRIPT_WINDOW_GEOMETRY

帮助Ubuntu-Nautilus示例脚本)中有一些示例脚本,用于通过电子邮件发送文件,挂载ISO文件,将文件设置为只读,使用gedit ROOT特权编辑文件,在当前位置打开终端等。

浏览这些脚本,并以其中一个作为模板来加密文件,上传到云,压缩到备份或您需要执行的任何操作。


2

TL; DR

对于应用程序开发人员而言,最好的解决方案是使用python-nautilus

创建您的python脚本(以下 示例和错误的文档)并将其复制到正确的文件夹中:

mkdir -p ~/.local/share/nautilus-python/extensions && cp script.py ~/.local/share/nautilus-python/extensions

详细说明

假设您要创建一个用户使用脚本或脚本安装的应用程序 .deb文件请牢记这一点,我将解释为什么我认为python-nautilusnautilus-actionsnautilus脚本相比,这是一个更好的解决方案。

鹦鹉螺行动

这是提供GUI的唯一解决方案,因此可以轻松创建复杂的行为,例如,确定所选文件的mime-type为时要显示哪些菜单项text/plain

此解决方案的主要问题在于,如果没有配置工具和用户导入,将条目导入到另一台计算机是不容易的(即使可能的话),我们只能说无法使用脚本来完成。

Nautilus脚本

这是更直接的解决方案,选择一个脚本,将其放在文件夹中并完成。这肯定会允许安装脚本或.deb文件在上下文菜单中创建新条目。有什么问题?我从哪里开始...

  • 它始终显示在“脚本”子菜单下。
  • 如果未选择任何内容,则不会显示。
  • 它不允许您决定是否显示该条目。
  • 不允许使用工具提示或其他标题。(也许我很挑剔)

好的应用不会使用这种快捷方式,因为它会破坏用户体验。

python-nautilus

创建起来不像以前的解决方案那么容易,但是可以兼顾两者。脚本和自定义。

该解决方案允许您创建一个Python脚本,该脚本接收在nautilus中选择的文件,让您决定是否要显示一个条目以及如何处理该条目。它还允许您创建子菜单和/或很酷的东西。

缺点是缺少大量文档,仅想添加条目的开发人员可能会发现自己浪费了数小时来创建工作原型(在我的研究中,我发现基于C的解决方案要比这复杂得多)。

我通常使用Visual Studio Code,而在Windows上它提供了一个上下文菜单项Open with Visual Studio Code,但在Linux上却缺少相同的功能,而使用Python解决方案则很容易解决问题。我认为Linux中的应用程序可能会从Nautilus集成中受益。

希望这个解释可以帮助您决定选择什么。


这正是我也想添加上下文菜单的原因。您能否发布“使用VS代码打开” python-nautilus解决方案?谢谢。
沙皮罗'18

Cra0zy将我的版本改进为合适的解决方案:gist.github.com/cra0zy/f8ec780e16201f81ccd5234856546414
Ricardo Rodrigues
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.