Xdg

在預設文件管理器中打開一個目錄並選擇一個文件

  • April 29, 2022

在我正在編寫的程序中,我想提供打開我目前正在處理的文件所在的目錄並自動選擇該文件的功能(這樣使用者就不需要搜尋它)。

我知道我可以使用在預設文件管理器中打開一個目錄

xdg-open /path/to/directory

我知道我可以在 nautilus 中打開一個目錄並使用

nautilus /path/to/file.txt

以為我可以使用

xdg-mime query default inode/directory

獲取預設文件管理器 - 如果它是 nautilus - 如上所示呼叫它。但是,儘管 nautilus 是我係統上的預設設置(xdg-open打開 nautilus,gnome shell 中的位置菜單也是如此),但xdg-mime返回Thunar.desktop. (我已經嘗試過find / -name Thunar.desktop -mount 2>/dev/null,但沒有找到任何東西。)

另外,我不知道如何在 nautilus 中打開目錄並選擇子目錄*(*使用上述方法會打開子目錄)。

如何在預設文件管理器中打開一個目錄並在該目錄中選擇一個文件(如果也選擇一個目錄,那會很好,但對於這個應用程序不需要)或者至少找出預設文件管理器,以便我可以直接呼叫嗎?

**1.**在 nautilus 中打開一個目錄並選擇一個子目錄/文件:

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

nautilus(1) 手冊頁

-s, –select

  在父文件夾中選擇指定的 URI。

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

xdg-mime用於mimeapps.list確定要使用的預設應用程序。

存在單獨mimeapps.list的文件來處理特定於使用者、特定於系統和特定於分發的要求。他們的查找順序可以在這裡找到。

mimeapps.list列出給定 mimetype 下的預設應用程序

$$ Default Applications $$部分。它允許按優先級降序列出多個預設應用程序。例如 :

[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

**注意:**可以在此處找到確定“預設應用程序”的完整算法。

引用自:https://unix.stackexchange.com/questions/364997