用 ranger 替换打开文件对话框

用 ranger 替换打开文件对话框

每当我想通过 Chromium 或 Firefox 上传文件时,就会弹出一个选择文件的对话框。

打开文件对话框

是否可以ranger --choosefiles在新的终端窗口中替换该对话框?

ranger 手册页:https://ranger.github.io/ranger.1.html

Ubuntu 18.04。我的窗口管理器是 i3。

答案1

是的,这是可能的——至少对于 Firefox 来说。

已经开发出一种新标准,允许任意程序使用当前桌面环境的“默认”文件对话框,而无需了解具体实现。这被称为协议xdg-desktop-portal,它是为桌面容器开发的,但 Firefox 最近增加了对它的支持(详情见下文)。

如果您可以xdg-desktop-portal为 Ranger 创建一个新的实现(已经有针对 KDE 和 GTK 文件对话框的实现),那么您可以在 Firefox 下使用它们。

Chrome 有不同的机制(它根据在 Plasma 还是 GNOME 下运行正确选择 KDE 或 GTK 文件对话框),但我不确定它是否可以被覆盖以支持另一种实现。

答案2

gist 似乎展示了如何创建一个kdialog脚本,通过运行 chrome XDG_CURRENT_DESKTOP=KDE chrome(最好使用传递附加选项的附加包装器来完成),你可以欺骗 chrome 认为它是官方kdialog应用程序。

kdialog有问题的脚本是一个简单的包装器,ranger并且 gist 还为 ranger 提供了一个 python 插件,该插件还启用了 ranger 的“在 chrome 中打开文件”功能(带有自定义映射)。

答案3

有可能吗? 有可能。 毕竟都是开源软件。 会不会很简单? 很可能不会。

应用程序可以提供自己的“打开文件”对话框,但更频繁地调用应用程序使用的工具箱(例如 GTK3 或 QT5)提供的通用对话框,以便在使用相同工具包的不同应用程序之间保持一致性。这也是 Chromium 或 Firefox 所做的。用您的自定义对话框替换对系统对话框的这些调用需要“破解”特定工具包的 API,以便对该对话框的调用返回您的自定义对话框。

相关内容