每当我想通过 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 文件对话框),但我不确定它是否可以被覆盖以支持另一种实现。
- 规范
xdg-desktop-portal
可以在这里找到:https://github.com/flatpak/xdg-desktop-portal。 - KDE 实现可以在这里找到:https://github.com/KDE/xdg-desktop-portal-kde. 它也许能帮助你编写自己的代码。
- 以下是如何在 Firefox 64(尚不是默认设置)上启用此功能的说明:https://www.reddit.com/r/kde/comments/a5cxwk/firefox_v64_can_now_use_the_kde_file_selection/
答案2
这gist 似乎展示了如何创建一个kdialog
脚本,通过运行 chrome XDG_CURRENT_DESKTOP=KDE chrome
(最好使用传递附加选项的附加包装器来完成),你可以欺骗 chrome 认为它是官方kdialog
应用程序。
kdialog
有问题的脚本是一个简单的包装器,ranger
并且 gist 还为 ranger 提供了一个 python 插件,该插件还启用了 ranger 的“在 chrome 中打开文件”功能(带有自定义映射)。
答案3
有可能吗? 有可能。 毕竟都是开源软件。 会不会很简单? 很可能不会。
应用程序可以提供自己的“打开文件”对话框,但更频繁地调用应用程序使用的工具箱(例如 GTK3 或 QT5)提供的通用对话框,以便在使用相同工具包的不同应用程序之间保持一致性。这也是 Chromium 或 Firefox 所做的。用您的自定义对话框替换对系统对话框的这些调用需要“破解”特定工具包的 API,以便对该对话框的调用返回您的自定义对话框。