この KDE キーボード ショートカット コマンドが機能しないのはなぜですか?

この KDE キーボード ショートカット コマンドが機能しないのはなぜですか?

少し調べてみたところ、KDE5 の設定の「既定のアプリケーション」セクションで設定されている、ユーザーの好みの端末エミュレーターの名前を取得するには、次のコマンドを実行できることがわかりました。

kreadconfig5 --file kdeglobals --group General --key TerminalApplication

私の場合 (KDE Plasma 5 で Manjaro を実行)、これは文字列 'alacritty' を返します。したがって、これをラップして$(...)結果のコマンドをターミナル内に入力すると、ユーザーが好むターミナル エミュレーターが起動します (これが機能することをテストしました)。

しかし、このコマンドを実行するための KDE のカスタム キーボード ショートカットを で作成しても、何も起こりません。必要に応じて を前にMeta+Return付けてみることもしましたが、何も変わりませんでした。コマンドを実行するためのショートカットを設定するだけであれば(これは、最初に述べたコマンドによって返されるものです)、それは機能しますが、もちろん、特定の端末ではなく、ユーザーの好みの端末を実行できるようにしたいのです。execalacritty

なぜ動作しないのか誰か説明してもらえますか? 何か間違っているのでしょうか?

答え1

この構造$(...)(コマンド置換) は POSIX シェル コマンド言語の一部であり、これを解釈するにはシェルが必要です。私の知る限り、デスクトップ環境に含まれるアプリケーション ランチャーは、シェル コマンド言語を解釈できる必要はありません。安全を期すために、execファイルを読み込んで引数のリストを渡すことしかできないと想定します。

次のようなものを呼び出すキーボード ショートカットを定義できるはずです。

sh -c '"$(kreadconfig5 ...)"'

コマンド置換は二重引用符で囲まれているため、置換されたコマンドによって生成されたファイル パスに空白文字が含まれている場合でも失敗することはありません。
完全を期すために、実行可能ファイルの名前が 1 つ以上の改行文字で終わる場合も、これは失敗することに注意してください (もちろん、非常にまれですが)。

関連情報