Respuestas:
Los .desktop
archivos se encuentran en /usr/share/applications/
(todo el sistema) o ~/.local/share/applications
(por usuario). La categorización se realiza mediante la configuración de la propiedad "Categorías" en el archivo y esto puede no ser exactamente el mismo que se muestra en el menú, por lo que primero debe encontrar el nombre de categoría correcto. En mi menú hay una categoría llamada "Büro", que es el término alemán para "Office", y contiene un iniciador para qpdfview
. Para revisar la .desktop
línea "Categorías" del archivo que ejecuto:
$ grep Categories /usr/share/applications/qpdfview.desktop
Categories=Viewer;Office;
Eso muestra las dos categorías para el programa, por lo que se llama "Office" en los .desktop
archivos. Para obtener una lista de cada .desktop
archivo categorizado con "Office", lo uso grep
nuevamente, con la -l
bandera para mostrar solo los nombres de archivo sin coincidencias:
$ grep -l Categories.*Office /usr/share/applications/*
/usr/share/applications/evince.desktop
/usr/share/applications/evince-previewer.desktop
/usr/share/applications/gnucash.desktop
/usr/share/applications/libreoffice-base.desktop
/usr/share/applications/libreoffice-calc.desktop
/usr/share/applications/libreoffice-draw.desktop
/usr/share/applications/libreoffice-impress.desktop
/usr/share/applications/libreoffice-math.desktop
/usr/share/applications/libreoffice-startcenter.desktop
/usr/share/applications/libreoffice-writer.desktop
/usr/share/applications/qpdfview.desktop
Esa es nuestra lista de programas de oficina, ahora para ejecutarlos simplemente usaría xdg-open
, por ejemplo:
xdg-open /usr/share/applications/qpdfview.desktop
Si xdg-open
no funciona en su sistema, también puede extraer el comando de inicio del archivo y ejecutarlo directamente, por ejemplo:
exec $(grep -Po 'Exec=\K[^ ]*' /usr/share/applications/qpdfview.desktop)
No proporcionó información sobre cómo usted o el usuario del script deberían elegir el programa para ejecutar, por lo que aquí hay algunos enlaces que pueden ayudarlo con eso:
Guardar los nombres de archivo en una matriz para facilitar el procesamiento en un script es tan fácil como eso:
options=("$(grep -l Categories.*Office /usr/share/applications/*)")