Por que este comando de atalho de teclado do KDE não funciona?

Por que este comando de atalho de teclado do KDE não funciona?

Depois de algumas pesquisas, consegui descobrir que para obter o nome do emulador de terminal preferido do usuário, conforme definido na seção 'Aplicativos padrão' das configurações do KDE5, pode-se executar este comando:

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

No meu caso (executando Manjaro com KDE Plasma 5), ​​isso retorna a string 'alacritty'. Assim, agrupar isso $(...)e digitar o comando resultante dentro de um terminal inicia o emulador de terminal preferido do usuário (eu testei que funciona).

No entanto, quando eu crio um atalho de teclado personalizado para o KDE executar este comando Meta+Return, nada acontece. Também tentei colocar execna frente caso fosse necessário, mas não mudou nada. Se eu apenas configurar o atalho para executar o comando alacritty(que é o que é retornado pelo primeiro comando que mencionei), então funciona, mas é claro que quero poder executar qualquer terminal preferido do usuário, não um específico. .

Alguém pode me explicar por que não está funcionando? Estou fazendo algo errado?

Responder1

A construção $(...)(substituição de comando) faz parte da linguagem de comando shell POSIX e requer um shell para interpretá-la. Pelo que sei, os inicializadores de aplicativos incluídos em ambientes de desktop não são obrigados a interpretar a linguagem de comando do shell; para errar pelo lado seguro, presumo que eles só podem execusar um arquivo e passar a ele uma lista de argumentos.

Você deve ser capaz de definir um atalho de teclado que invoque algo como:

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

A substituição do comando é colocada entre aspas duplas para garantir que não falhará se o caminho do arquivo produzido pelo comando substituído contiver caracteres de espaço em branco.
Para completar, observe que isso ainda falhará se o nome do arquivo executável terminar com um ou mais caracteres de nova linha (extremamente improvável, é claro).

informação relacionada