Shell
為什麼這個 KDE 鍵盤快捷鍵命令不起作用?
經過一番探勘,我設法找到了要獲取使用者首選終端仿真器的名稱,如 KDE5 設置的“預設應用程序”部分中設置的那樣,可以執行以下命令:
kreadconfig5 --file kdeglobals --group General --key TerminalApplication
在我的例子中(使用 KDE Plasma 5 執行 Manjaro),這將返回字元串 ‘alacritty’。因此,將其包裝
$(...)
並在終端中鍵入生成的命令會啟動使用者首選的終端仿真器(我已經測試過這項工作)。然而,當我為 KDE 創建自定義鍵盤快捷鍵以使用 執行此命令時
Meta+Return
,什麼也沒有發生。我還嘗試將exec
它放在它前面以防萬一,但它沒有任何改變。如果我只是設置了執行命令的快捷方式alacritty
(這是我提到的第一個命令返回的內容),那麼它可以工作,但是我當然希望能夠執行使用者首選的終端,而不是特定的終端.誰能向我解釋為什麼它不起作用?難道我做錯了什麼?
構造
$(...)
(命令替換)是 POSIX shell 命令語言的一部分,需要一個 shell 來解釋它。據我所知,桌面環境中包含的應用程序啟動器不需要能夠解釋 shell 命令語言。為了安全起見,我假設他們只能exec
使用文件並將參數列表傳遞給它。您應該能夠定義呼叫類似以下內容的鍵盤快捷鍵:
sh -c '"$(kreadconfig5 ...)"'
命令替換用雙引號括起來,以確保如果替換命令生成的文件路徑包含空白字元,它不會失敗。
為了完整起見,請注意,如果執行檔的名稱以一個或多個換行符結尾(當然,這極不可能),這仍然會失敗。