
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 exec
na 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 exec
usar 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).