在預設文件管理器中打開一個目錄並選擇一個文件
在我正在編寫的程序中,我想提供打開我目前正在處理的文件所在的目錄並自動選擇該文件的功能(這樣使用者就不需要搜尋它)。
我知道我可以使用在預設文件管理器中打開一個目錄
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
-s, –select
在父文件夾中選擇指定的 URI。
2.
xdg-mime
返回Thunar.desktop
但xdg-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
**注意:**可以在此處找到確定“預設應用程序”的完整算法。