いくつかの調査の終わりに、ユーザーが好むターミナルエミュレータの名前(KDE5設定の「基本アプリケーション」セクションに設定されている)を取得するには、次のコマンドを実行できることがわかりました。
kreadconfig5 --file kdeglobals --group General --key TerminalApplication
私の場合(KDE Plasma 5でManjaroを実行)、 "alacrtty"文字列が返されます。したがって、これを終了して$(...)
端末に結果コマンドを入力すると、ユーザーが好む端末エミュレータが起動します(動作するかどうかをテストしました)。
ただし、このコマンドを実行するためにKDE用のカスタムキーボードショートカットを作成すると、Meta+Return
何も起こりません。exec
もしかしたら必要かと思って前に貼ってみようともしてみましたが変わることはありませんでした。コマンドを実行するためのショートカットを設定するとalacritty
(私が言及した最初のコマンドが返されます)、うまくいきますが、もちろん、特定の端末ではなく、ユーザーが好きな端末を実行できるようにしたいです。
なぜ動作しないのかを説明できる人はいますか?私は何が間違っていましたか?
答え1
この構成$(...)
(コマンドの置き換え)はPOSIXシェルコマンド言語の一部であり、それを解釈するにはシェルが必要です。私が知る限り、デスクトップ環境に含まれているアプリケーションランチャーはシェルコマンド言語を安全に解釈できる必要はなく、ファイルをインポートして引数リストのみを渡すことができると仮定exec
します。
次のように呼び出すキーボードショートカットを定義できる必要があります。
sh -c '"$(kreadconfig5 ...)"'
コマンド置換は、スペース文字が含まれている場合に代替コマンドで生成されたファイルパスが失敗しないように、二重引用符で囲まれています。
完全性を期すために、実行可能ファイル名が1つ以上の改行で終わっても失敗することに注意してください(もちろん可能性は非常に低いです)。