Desktop
以程式方式在預設文本編輯器中打開文件
我正在編寫一個程序,我需要實現在文本編輯器中打開特定文件。預設情況下,文件類型具有不同的關聯(它與程序本身關聯),因此呼叫
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 實用程序包的一部分(但由於某種原因未分發)。