# 解决 Nautilus 自定义终端插件安装依赖问题

解决 Nautilus 自定义终端插件安装依赖问题

事实上,本文为了追求最新,采用了源码安装。对于一般用户,直接去Release里下载deb包安装,快速解决冲突,配置才是理想选择

问题背景

默认的 GNOME Nautilus 只支持打开 gnome-terminal,如果你像我一样使用 GhosttyAlacrittyKitty 这样的第三方终端,就需要一个扩展来添加右键菜单。

nautilus-open-any-terminal 正是这样一个优秀开源扩展,支持数十种终端模拟器的开箱即用,还支持自定义快捷键。

但是在 Ubuntu 24.04 上直接安装官方提供的 .deb 包会遇到依赖错误:

bash 复制代码
$ sudo apt install ./nautilus-extension-any-terminal_xxx.deb
正在读取软件包列表... 完成
正在分析依赖关系树... 完成
下列软件包有未满足的依赖关系:
 nautilus-extension-any-terminal : 依赖: python3-nautilus 但是它将不会被安装

问题分析

Ubuntu 24.04 搭载的 Nautilus 版本是 46,使用 GTK 4 作为界面工具包。官方 deb 包的 debian/control 文件中缺少了两个关键依赖:

  • gir1.2-gtk-4.0 - GTK 4 的 GObject 内省数据
  • gir1.2-nautilus-4.0 - Nautilus 4.0 扩展接口的 GObject 内省数据

这导致 python3-nautilus 因为缺少依赖无法安装,整个扩展安装流程卡住。

解决方案

修复依赖,重新安装

我们需要更新 debian/control 添加缺失的依赖,然后从源码编译安装。

1. 安装基础依赖

bash 复制代码
sudo apt install gettext python3-nautilus gir1.2-gtk-4.0 gir1.2-nautilus-4.0 libglib2.0-dev-bin

如果之前安装失败了,先修复:

bash 复制代码
sudo apt --fix-broken install

2. 克隆源码

bash 复制代码
git clone https://github.com/Stunkymonkey/nautilus-open-any-terminal.git
cd nautilus-open-any-terminal

3. (可选)修复 debian/control

如果你想重新打包 deb,可以在 debian/controlDepends 部分添加缺失依赖.

diff 复制代码
 Depends: ${python3:Depends},
          ${misc:Depends},
          python3-nautilus,
+         gir1.2-gtk-4.0,
+         gir1.2-nautilus-4.0,
          nautilus

4. 编译并从源码安装

bash 复制代码
make
sudo make install-nautilus schema

5. 重启 Nautilus 生效

bash 复制代码
nautilus -q

配置你喜欢的终端

安装完成后,通过 gsettings 命令配置你想要的终端:

bash 复制代码
# 设置为 Ghostty
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal ghostty

# 设置为 Alacritty
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal alacritty

# 设置为 Kitty
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal kitty

# 设置快捷键 Ctrl+Alt+T 快速打开
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal keybindings '<Ctrl><Alt>t'

# 开启新标签页打开(支持的终端)
gsettings set com.github.stunkymonkey.nautilus-open-any-terminal new-tab true

完整支持的终端列表可以查看项目README,从 alacritty 到 xterm 应有尽有。

常见问题

右键出现两个相同的"Open in XXX"

大概率是因为你使用的终端模拟器本身就自带Nautilus插件,在你kill Nautilus之后又显示罢了,只需要删除冗余就好

bash 复制代码
# 检查是否有重复安装
find /usr/share/nautilus-python/extensions/ -name "*.py"

# 删除冗余的扩展
sudo rm /usr/share/nautilus-python/extensions/xyz.py
# 重启 Nautilus
nautilus -q

小结

通过添加缺失的 gir1.2-gtk-4.0gir1.2-nautilus-4.0 依赖,就能在 Ubuntu 24.04 上成功安装这个很棒的扩展。现在你可以在 Nautilus 右键直接打开你喜欢的任意终端了。

小结

通过添加缺失的 gir1.2-gtk-4.0gir1.2-nautilus-4.0 依赖,就能在 Ubuntu 24.04 上成功安装这个很棒的扩展。现在你可以在 Nautilus 右键直接打开你喜欢的任意终端了。

解决 Nautilus 自定义终端插件安装依赖问题

作者:xingwangzhe

本文链接: xingwangzhe.fun/posts/nauti...

本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

相关推荐
东风破_3 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
钛态3 小时前
Vite 中的 CSS 工程化:从 CSS Modules 到 UnoCSS 的渐进式迁移
前端·vue·react·web
东风破_4 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
大鸡腿同学4 小时前
黄仁勋点透的 AI 真相:能实现你知道但做不到的,却实现不了你不知道的
后端
FfHUCisI4 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI4 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
Csvn5 小时前
原型链、this 与闭包内存:三座深水区一次打通(含内存泄漏排查实战)
前端·javascript
葡萄城技术团队5 小时前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
浪兎兎6 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
++==6 小时前
RESTful详解:核心思想、框架、与HTTP的区别,API的设计风格
后端·http·restful