ELENCO DELLE APPLICAZIONI PRESENTI NEL MENÙ DI GNOME
SISTEMA OPERATIVO: LINUX
I sistemi operativi, ormai da parecchi anni, si orientano sempre di più verso interfacce grafiche facili da utilizzare per l'utente, che non lo costringono a ricordare lunghe liste di comandi (come accadeva ai tempi del DOS). Per esempio, il menù delle applicazioni di Gnome permette di eseguire facilmente un'applicazione senza che sia necessario sapere qual è il comando associato.
Tuttavia, in alcune situazioni, è comunque utile conoscere il comando che viene eseguito cliccando su una voce del menù: per esempio, perché dovete far partire un'applicazione durante una sessione ssh avviata da un altro computer, e quindi non avete accesso al menù. Oppure, perché per qualche motivo devete formattare, e volete salvare l'elenco dei programmi installati. E magari vi interessa l'elenco non tanto di tutti i programmi installati (questo potreste ottenerlo con il comando rpm -qa1), ma solo di quelli presenti nel menù, che conoscete attraverso il nome ivi utilizzato. Di solito giocate a Forza 4, non a four-in-a-row. O, per essere più precisi, non sapete affatto di eseguire four-in-a-row (una volta si chiamava gnect!) quando giocate a Forza 4.
Con Gnome 2, perlomeno per le applicazioni presenti sulla barra dei preferiti, era possibile, utilizzando il tasto destro e selezionando la voce 'Proprietà', conoscere il comando associato alla singola applicazione. Metodo non molto comodo se vi serve la lista completa, e comunque non utilizzabile con Gnome 3.
Se volete comunque conoscere l'elenco dei comandi associati alle applicazioni del menù, potete installare dalla pagina menuapps.html il programma menuapps. Oppure, eseguite da terminale uno dei seguenti script (dovete fare il copia e incolla di TUTTO lo script, anche se qui lo visualizzate su più righe):

PROGRAMMA1=; find /usr/share/applications/ ~/.local/share/applications -name "*.desktop" | while read FILE; do grep "Exec=" "$FILE" | while read RIGA; do if [ "$RIGA" == "${RIGA/TryExec=/}" ]; then RIGA="${RIGA/Exec=/}"; echo "$RIGA"; fi; done; done | sort | while read PROGRAMMA2; do if [ "$PROGRAMMA2" != "$PROGRAMMA1" ]; then echo "$PROGRAMMA2"; PROGRAMMA1="$PROGRAMMA2"; fi; done

Attendete 1-2 secondi, ed avrete il vostro elenco visualizzato sul terminale. Se volete l'elenco dei comandi "puri", senza parametri (per esempio, volete che venga visualizzato /usr/bin/gparted, e non /usr/bin/gparted %f), digitate quanto segue:

PROGRAMMA1=; find /usr/share/applications/ ~/.local/share/applications -name "*.desktop" | while read FILE; do grep "Exec=" "$FILE" | while read RIGA; do if [ "$RIGA" == "${RIGA/TryExec=/}" ]; then RIGA="${RIGA/Exec=/}"; let N=`expr index "$RIGA" " "`; if [ $N \> 0 ]; then RIGA=${RIGA:0:$N-1}; fi; echo "$RIGA"; fi; done; done | sort | while read PROGRAMMA2; do if [ "$PROGRAMMA2" != "$PROGRAMMA1" ]; then echo "$PROGRAMMA2"; PROGRAMMA1="$PROGRAMMA2"; fi; done

Se preferite salvare l'elenco su un file (per esempio, in un file chiamato applicazioni.txt e posto sulla scrivania), aggiungete alla fine del comando, sulla stessa riga, >~/Scrivania/applicazioni.txt.

Se, infine, vi interessa l'associazione tra il nome visualizzato nel menù e il comando che viene eseguito, salvando il tutto nel solito file applicazioni.txt sulla scrivania, eseguite (sempre facendo il copia e incolla di TUTTO lo script, anche se qui lo visualizzate su più righe):

PROGRAMMA1=; LANG="it"; find /usr/share/applications ~/.local/share/applications -type f -name "*.desktop" | while read FILE; do PROGRAMMA=`egrep "Exec=|Name=|Name\[$LANG\]=" "$FILE" | while read RIGA; do if [ "${RIGA:0:4}" == "Exec" ] || [ "${RIGA:0:4}" == "Name" ]; then echo -n "$RIGA"$'\t'; fi; done`; PROGRAMMA=${PROGRAMMA:0:${#PROGRAMMA}-1}; COMANDO=; NOME=; INIZIO="$PROGRAMMA"; FINE=; let N=`expr index "$PROGRAMMA" $'\t'`; if [ $N \> 0 ]; then let LEN=`expr length "$PROGRAMMA"`; let LEN=LEN-N; let M=N-1; INIZIO=`expr substr "$PROGRAMMA" 1 $M`; let M=N+1; FINE=`expr substr "$PROGRAMMA" $M $LEN`; fi; if [ "${INIZIO:0:5}" == "Exec=" ]; then COMANDO="${INIZIO:5}"; elif [ "${INIZIO:0:5}" == "Name=" ]; then NOME="${INIZIO:5}"; elif [ "${INIZIO:0:9}" == "Name[$LANG]=" ]; then NOME="${INIZIO:9}"; fi; if [ $N \> 0 ]; then let N=`expr index "$FINE" $'\t'`; if [ $N \> 0 ]; then let M=N-1; INIZIO=`expr substr "$FINE" 1 $M`; let LEN=`expr length "$FINE"`; let LEN=LEN-N; let M=N+1; FINE=`expr substr "$FINE" $M $LEN`; fi; if [ "${INIZIO:0:5}" == "Exec=" ]; then COMANDO="${INIZIO:5}"; elif [ "${INIZIO:0:5}" == "Name=" ] && [ "$NOME" == "" ]; then NOME="${INIZIO:5}"; elif [ "${INIZIO:0:9}" == "Name[$LANG]=" ]; then NOME="${INIZIO:9}"; fi; if [ "${FINE:0:5}" == "Exec=" ]; then COMANDO="${FINE:5}"; elif [ "${FINE:0:5}" == "Name=" ] && [ "$NOME" == "" ]; then NOME="${FINE:5}"; elif [ "${FINE:0:9}" == "Name[$LANG]=" ]; then NOME="${FINE:9}"; fi; fi; echo "La voce di menù \`"$NOME"\` esegue il comando \`$COMANDO\`."; done | sort | while read PROGRAMMA2; do if [ "$PROGRAMMA2" != "$PROGRAMMA1" ]; then echo "$PROGRAMMA2"; PROGRAMMA1="$PROGRAMMA2"; fi; done >~/Scrivania/applicazioni.txt

Ah, dimenticavo... Se vi interessa un programma particolare (per esempio, la calcolatrice), inserite alla fine dell'ultimo script, al posto di >~/Scrivania/applicazioni.txt, | grep -i "calcolatrice".

Dovreste ottenere il seguente output:

La voce di menú `Calcolatrice` esegue il comando `gcalctool`.

Nota bene: rilascio tutti gli script presenti in questa pagina sotto licenza gpl, senza nessuna garanzia, ma con la speranza di risultare utile a qualcuno.

Ritorna all’indice del software



Nota

1 Se volete sapere quanti programmi sono installati nel vostro computer, digitate

rpm -qa | wc -l

Nel mio caso, sono ben 4282 programmi!