如何在Nautilus中自定义上下文菜单?
我不时会想出我想在Nautilus的上下文菜单中提供的操作。 我如何在那里添加它们? 是否有类似Nautilus的Thunar UCA插件?
以下答案已过时:最近更新的答案就是这个答案。
Nautilus的上下文菜单过去可以通过Nautilus扩展进行自定义。 请注意,此链接会导致归档文档; Gnome开发人员删除了该文档,不再支持这种自定义。 它可能仍然有效。
您还可以在~/.local/share/nautilus/scripts
(早期版本中的~/.gnome2/nautilus-scripts
)目录下放置普通shell脚本,它们将出现在Scripts子菜单下的文件上下文菜单中。
Ubuntu 18.04的更新
在Ubuntu 18.04发布之日,Nautilus-Actions已经/不再可用。 它似乎也被一个名为Filemanager-Actions的新程序所取代,该程序看起来完全相同。
要安装此程序,请参阅此解决方案。
鹦鹉螺行动
我们可以使用nautilus-actions定义我们自己的右键单击上下文菜单项 。
-
从Dash运行Nautilus-Actions配置工具 ,或从终端运行Nautilus-Actions配置工具
nautilus-actions-config-tool
-
在“ 操作”选项卡中,为您的操作添加一个合理的标签,例如“在终结器中打开”,然后选择在选择或上下文菜单中显示。
-
接下来,打开“ 命令”选项卡以输入要运行的命令
-
提供命令(
/usr/bin/command_to_run
)和程序选项的完整路径。 -
注销后再次显示右键单击上下文菜单:
可以使用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命令:)
如果你想在任何时候能够做某事,请像ulidtko说的那样使用~/.gnome2/nautilus-scripts
。
如果您希望能够在看到它时进行自定义,请安装nautilus-actions软件包,然后转到System-> Preferences-> Nautilus Actions Configuration。
2016年11月29日时代 Ubuntu 14.04,16.04和16.10加早期版本。
请参阅Nautilus有关在此创建自己脚本的说明 ( 帮助Ubuntu – Nautilus脚本如何 )。 基本上你:
- 导航到目录
~/.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权限编辑文件,在当前位置打开终端等。
查看脚本并将其作为模板加密文件,上传到云,压缩到备份或任何您需要做的事情。
TL; DR
应用程序开发人员的最佳解决方案是使用python-nautilus 。
创建您的python脚本( 以下 示例和错误的文档 )并将其复制到正确的文件夹:
mkdir -p ~/.local/share/nautilus-python/extensions && cp script.py ~/.local/share/nautilus-python/extensions
详细说明
假设您要创建一个用户使用脚本或.deb
文件安装的应用程序,请记住,我将解释为什么我认为python-nautilus
是一个比nautilus-actions和nautilus脚本更好的解决方案。
鹦鹉螺行动
这是提供GUI的唯一解决方案,因此可以轻松创建复杂的行为,例如,如果所选文件的mime类型是text/plain
则决定显示哪些菜单条目。
这个解决方案的主要问题是,如果没有配置工具并且用户导入条目,将条目导入另一台计算机并不容易(如果可能的话),我们只能说它不可能用于脚本。
Nautilus脚本
这是更直接的解决方案,选择一个脚本,将其放在一个文件夹中并完成。 这肯定会允许安装脚本或.deb
文件在上下文菜单中创建新条目。 有什么问题? 我从哪里开始…
- 它始终显示在Scripts子菜单下。
- 如果您没有选择任何内容,则不会显示。
- 它不允许您决定是否应该显示该条目。
- 不允许使用工具提示或不同的标题。 (也许我很挑剔)
一个好的应用程序不会使用这样的快捷方式,因为它会破坏用户体验。
python-鹦鹉螺
不像以前的解决方案那样容易创建,但提供了两全其美的优势。 脚本和自定义。
此解决方案允许您创建一个python脚本,该脚本接收在nautilus中选择的文件,然后让您决定是否要显示条目以及如何处理该条目。 它还允许您创建子菜单和/或酷的东西。
缺点是缺乏文档和开发人员只想添加一个条目可能会发现自己失去了几个小时来创建一个工作原型(在我的研究中,我发现了一个基于C的解决方案比这更复杂)。
我通常使用Visual Studio Code,而在Windows上它提供了一个上下文菜单条目Open with Visual Studio Code
,它在Linux上缺乏相同的function,使用Python解决方案很容易解决问题。 我认为Linux中的应用程序可能会受益于nautilus集成。
希望这个解释能帮助您决定选择什么。