为什么这个 KDE 键盘快捷键命令不起作用?

为什么这个 KDE 键盘快捷键命令不起作用?

经过一番挖掘,我设法发现,要获取用户首选终端仿真器的名称(如 KDE5 设置的“默认应用程序”部分中设置的那样),可以运行以下命令:

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

就我而言(使用 KDE Plasma 5 运行 Manjaro),这将返回字符串“alacrtty”。因此,将其包装起来$(...)并在终端中输入生成的命令会启动用户首选的终端模拟器(我已经测试过这项工作)。

然而,当我为 KDE 创建自定义键盘快捷键来运行此命令时Meta+Return,没有任何反应。我也尝试把它放在exec它前面以防万一有必要,但它没有改变任何东西。如果我只是设置运行命令的快捷方式alacritty(这是我提到的第一个命令返回的内容),那么它就可以工作,但当然我希望能够运行用户首选的终端,而不是特定的终端。

谁能向我解释为什么它不起作用?难道我做错了什么?

答案1

该构造$(...)(命令替换)是 POSIX shell 命令语言的一部分,需要 shell 才能解释它。据我所知,桌面环境中包含的应用程序启动器不需要能够解释 shell 命令语言;为了安全起见,我假设他们只能exec使用一个文件并向其传递一个参数列表。

您应该能够定义一个调用类似以下内容的键盘快捷键:

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

命令替换用双引号引起来,以确保替换命令生成的文件路径包含空格字符时不会失败。
为了完整起见,请注意,如果可执行文件的名称以一个或多个换行符结尾(当然,极不可能),这仍然会失败。

相关内容