¿Por qué no funciona este comando de método abreviado de teclado de KDE?

¿Por qué no funciona este comando de método abreviado de teclado de KDE?

Después de investigar un poco, logré encontrar que para obtener el nombre del emulador de terminal preferido del usuario, tal como se establece en la sección 'Aplicaciones predeterminadas' de la configuración de KDE5, se puede ejecutar este comando:

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

En mi caso (ejecutando Manjaro con KDE Plasma 5), ​​esto devuelve la cadena 'alacritty'. Por lo tanto, al empaquetar esto $(...)y escribir el comando resultante dentro de una terminal se inicia el emulador de terminal preferido del usuario (he probado que esto funciona).

Sin embargo, cuando creo un método abreviado de teclado personalizado para que KDE ejecute este comando Meta+Return, no sucede nada. También intenté ponerlo execdelante por si fuera necesario, pero no cambió nada. Si simplemente configuro el acceso directo para ejecutar el comando alacritty(que es lo que devuelve el primer comando que mencioné), entonces funciona, pero, por supuesto, quiero poder ejecutar cualquier terminal preferido del usuario, no uno específico. .

¿Alguien puede explicarme por qué no funciona? ¿Estoy haciendo algo mal?

Respuesta1

La construcción $(...)(sustitución de comandos) es parte del lenguaje de comandos del shell POSIX y requiere un shell para interpretarlo. Hasta donde puedo decir, los lanzadores de aplicaciones incluidos en los entornos de escritorio no necesitan poder interpretar el lenguaje de comandos del shell; Para pecar de seguro, asumiría que solo pueden executilizar un archivo y pasarle una lista de argumentos.

Deberías poder definir un atajo de teclado que invoque algo como:

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

La sustitución del comando está entre comillas dobles para garantizar que no fallará si la ruta del archivo generada por el comando sustituido contiene espacios en blanco.
Para completar, tenga en cuenta que esto seguirá fallando si el nombre del archivo ejecutable termina en uno o más caracteres de nueva línea (es extremadamente improbable, por supuesto).

información relacionada