如何找到默认文件管理器?

如何找到默认文件管理器?

作为 Linux 用户,我发现某些应用程序可以请求打开路径,这会导致启动文件管理器。我想通过编程来实现这一点,但我怎么知道哪个是默认文件管理器?有没有办法找到这个信息?有环境变量吗?“文件管理器”是指允许您管理文件的应用程序:创建、重命名、创建文件夹等,例如 Nautilus(在 GNOME 中)或 Dolphin(在 KDE 中)。

提前致谢!

答案1

不存在“Linux 的默认文件管理器”。这完全取决于您尝试打​​开它的方式。如果您询问 XDG,那么您必须检查 XDG 认为这个文件管理器应该是什么。对于任何其他“环境”,例如 Gnome 或 KDE,情况也是如此。如果您安装了所有这些环境,那么它们每个环境都有可能(并且很好)拥有不同的“默认文件管理器”。

默认应用的案例似乎主要来自 Windows。在那里,我们只有一个环境,即 Windows 呈现给我们的环境。因此,默认应用的概念实际上是系统范围的。Linux 的情况并非如此。

您可能认为 Linux 下的默认应用程序(例如存储在 $EDITOR 环境变量中的应用程序)并不是“真正的”默认应用程序,而只是许多编写系统工具和脚本的人使用的惯例。如果适合您的用例,请随意定义 $FILEMANAGER。

答案2

使用xdg-mime命令来实现这一点。xdg 应该与桌面环境无关(例如,xdg-open将参数传递给正确的文件打开器)。要获取默认文件管理器,请使用:

xdg-mime query default inode/directory

来源

答案3

您可以使用xdg-open <DIR>启动目录中的文件管理器。您也许可以查询某个xdg应用程序以查明正在使用哪个文件管理器。

答案4

似乎每个人都提到了inode/directoryMIME 类型,并且xdg-open应该在大多数情况下满足您的需要(以编程方式通过文件管理器打开目录),但有时错误的应用程序(不是文件管理器,例如 Visual Studio Code)也可以将其关联为inode/directory默认应用程序。

此外,还有一个D-Bus 的文件管理器界面org.freedesktop.FileManager1在 Session Bus 中)可以满足您的需求,因此如果您的文件管理器支持此 D-Bus 接口,您也可以使用它。请确保您是否可以使用它,因为并非所有文件管理器都实现了此功能,目前看来海豚(KDE),鹦鹉螺(GNOME)和深度文件管理器(DDE) 实现了此 D-Bus 接口。若要找出此 D-Bus 接口的进程所有者(如果您只是想以编程方式请求通过文件管理器打开路径,则无需执行此操作),请参阅这个答案

相关内容