Desktop

以程式方式在預設文本編輯器中打開文件

  • April 16, 2019

我正在編寫一個程序,我需要實現在文本編輯器中打開特定文件。預設情況下,文件類型具有不同的關聯(它與程序本身關聯),因此呼叫xdg-open $file不起作用。使用$EDITOR是次優的,因為它通常包含終端文本編輯器,如果這是第一個偏好,我想打開一個 GUI 文本編輯器。也不清楚如何找到預設終端模擬器來打開終端$EDITOR

我可以使用 查詢(可能是 GUI)編輯器xdg-mime query default text/plain,它給了我一個.desktop文件,但我不確定如何實際執行它,特別是因為它可能包含Terminal=true它,然後再次引發一個問題,即弄清楚預設終端是什麼.

澄清一下,該程序不是腳本或已經在終端中執行的東西。它是一個 GUI 應用程序,因此啟動終端編輯器需要弄清楚預設終端是什麼。

那麼,在預設的(可能是 GUI)文本編輯器中以程式方式打開文件的最佳方式是什麼?

*.desktop您通過呼叫獲得的文件xdg-mime query default text/plain位於以下兩個位置之一:

$HOME/.local/share/applications/
/usr/share/applications/

所以你需要在那裡尋找它,然後解析該Exec=行並傳遞所有參數執行它,例如:

$(grep Exec /usr/share/applications/seahorse.desktop | cut -d= -f2) "$@"

要確定 debian-like 發行版上的預設終端仿真器,您可以執行以下命令並類似地解析輸出以獲取路徑:

update-alternatives --query x-terminal-emulator

或者只是嘗試直接執行您需要的命令:

x-terminal-emulator -e "your command here"

如果您需要使其與分發無關,則需要實現桌面環境猜測,因為它似乎取決於每個 DE 儲存其配置的方式。您可能想查看xdg-terminal程式碼,它是負責執行預設終端的 xdg 實用程序包的一部分(但由於某種原因未分發)。

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