在默认文件管理器中打开目录并选择一个文件

Modified on: Sat, 30 Jun 2018 08:54:00 +0800

在我正在编写的程序中,我想提供打开我当前正在处理的文件所在目录的功能,并自动选择该文件(以便用户不需要搜索它)。 / p>

我知道我可以使用

在默认文件管理器中打开一个目录

xdg-open /path/to/directory

我知道我可以在nautilus中打开一个目录并使用

选择一个文件

nautilus /path/to/file.txt

我可以使用

xdg-mime query default inode/directory

获取默认文件管理器 - 如果是nautilus - 如上所示调用它。
但是,尽管nautilus是我系统的默认设置(xdg-open打开nautilus,gnome shell中的places菜单也是如此),xdg-mime返回Thunar.desktop
(我已经尝试过find / -name Thunar.desktop -mount 2>/dev/null但它没有找到任何东西。)

另外,我不知道如何在nautilus中打开一个目录并选择一个子目录(用上面提到的方法打开子目录)。

如何在默认文件管理器中打开一个目录,选择该目录中的文件(如果选择一个目录也可能很好,但不需要此应用程序)
或至少找出默认的文件管理器,以便我可以直接调用它?

作者:jakun

最佳答案

1。要在nautilus中打开目录并选择子目录/文件:

nautilus --select path/to/file/or/directory

来自nautilus(1)手册页

  

-s, - 选择
  在父文件夹中选择指定的URI。

2. xdg-mime返回Thunar.desktopxdg-open打开nautilus

xdg-mime使用mimeapps.list来确定要使用的默认应用程序。

存在单独的mimeapps.list文件,用于处理特定于用户,特定于系统和特定于分发的要求。他们的查找顺序可以在这里找到一>

mimeapps.list列出[Default Applications]部分下给定mimetype的默认应用程序。它允许以递减的优先顺序列出多个默认应用程序。例如:

[Default Applications]
mimetype1 = default1.desktop;default2.desktop;

其中 mimetype1 是mime类型, *。desktop 是桌面文件。

xdg-open在首选项列表中搜索查找顺序的桌面文件,直到找到有效的桌面文件。如果在所有文件中找不到这样的文件,则选择根据关联的最优选文件并将其用作默认应用程序。

因此,在我们的示例中,假设我们的系统中没有default1.desktop,因此xdg-open将尝试使用default2.desktop。但是,xdg-mime返回default1.desktop,它是我们的mimeapps.list文件中的第一个条目。

在你的情况下default1.desktop必须是Thunar.desktop因此输出。但是,它未安装在您的系统上。所以xdg-open使用系统上的nautilus打开你的文件/目录。要验证这一点,您可以检查mimeapps.list文件中包含inode/directory的行。对于Ubuntu 17.10,mimeapps.list文件的位置为:/usr/share/applications/defaults.list

注意:可以找到确定“默认应用程序”的完整算法此处


相关问答

添加新评论