Introduzione
Supponiamo che nei menu delle applicazioni di Ubuntu siano apparsi icone che desideri:
- Rimuovere insieme all’applicazione — esamineremo separatamente.
- Rimuovere solo l’icona — qui viene trattato.
Nell’esempio qui sopra, voglio rimuovere l’icona di Telegram o Telegram Desktop, senza toccare l’applicazione stessa.
Modi di installazione
In questo caso, non ricordi come hai effettuato l’installazione. Potrebbe essere uno dei seguenti modi:
| № | Metodo di installazione | Come riconoscerlo | Come rimuovere (terminale) | Caratteristiche / Rischi |
|---|---|---|---|---|
| 1 | Repository integrato | apt policy nome → archive.ubuntu.com |
sudo apt remove --purge nome && sudo apt autoremove |
Sicuro, ma autoremove potrebbe influenzare altri pacchetti — controlla. |
| 2 | Repository aggiuntivo (PPA e altri) | apt policy nome → URL esternoFile in /etc/apt/sources.list.d/ |
1. sudo apt remove nome2. Rimuovere il file .list + chiave3. sudo apt update |
Rimuovi il pacchetto prima del repository — altrimenti errori apt. |
| 3 | Pacchetto .deb |
`dpkg -l | grep nome` | sudo apt remove --purge nome (meglio di dpkg -P) |
| 4 | Snap | `snap list | grep nome<br>which nome→/snap/bin/nome` |
sudo snap remove nome |
| 5 | Flatpak | `flatpak list | grep nome` | flatpak uninstall nome && flatpak remove --unused |
| 6 | Binario pronto (AppImage, .tar.gz) |
Non presente in apt/dpkg/snapBinario in ~/Apps/, /opt/, ~/.local/bin/ |
rm -rf /percorso/alla/programma ~/.local/share/applications/nome.desktop ~/.config/nome/ |
Nessuna gestione centralizzata — facile “dimenticare” qualcosa. |
| 7 | Installatore .run |
È stato eseguito sudo ./nome.runEsiste /opt/nome/, uninstall.sh |
1. sudo /opt/nome/uninstall.sh2. Altrimenti manualmente — /opt/, /usr/bin/, .desktop, systemd, ~/.config/ |
Metodo più “sporco”. Spesso non lascia lo script di disinstallazione. |
| 8 | Compilazione (make install) |
which nome → /usr/local/bin/ |
1. make uninstall (se esiste)2. Altrimenti manualmente — /usr/local/bin/, /usr/local/lib/, .desktop, ~/.config/ |
Nessun controllo centralizzato — facile dimenticare qualcosa. |
| 9 | Gestori (pipx, cargo, npm -g) |
which nome → ~/.local/bin/, ~/.cargo/bin/ |
pipx uninstall nome, cargo uninstall nome, npm uninstall -g nome |
Non rompe il sistema, ma può confliggere con le versioni installate tramite apt (ad esempio, node). |
Questo è un elenco incompleto, e spero che non utilizzerete altri metodi ![]()
go install,gem install- Immagini Docker / Podman con GUI
- Installazione tramite linuxbrew / nix / guix
Cosa non si considera un metodo di installazione separato
apt install ./file.deb→ è comunque l’installazione di un pacchetto.deb, semplicemente tramiteaptinvece chedpkg.- Installatori grafici (Software Center, Discover) → frontend per
apt/snap/flatpak. - «Aggiungi all’avvio» /
systemd --user→ questa è già una configurazione post-installazione, non un metodo di installazione.
Come determinare rapidamente il metodo di installazione di un’applicazione sconosciuta
# 1. Dove si trova il binario?
which nome
# 2. Da dove proviene il pacchetto (se da apt/dpkg)
dpkg -S $(which nome) 2>/dev/null || echo "Not in dpkg"
# 3. Controllare snap/flatpak
snap list | grep -i nome
flatpak list | grep -i nome
# 4. Controllare se è in ~/.local/bin o /opt
ls -l $(which nome)
# 5. Storia dell'installazione (se recente)
grep "install.*nome" /var/log/apt/history.log 2>/dev/null
journalctl --since "2 weeks ago" | grep -i "install.*nome"
Consigli per una sistema pulito:
- Per le applicazioni
.runin futuro, considerate AppImage o isolamento tramitebubblewrap/toolbox. - Invece di
make install, usatecheckinstall→ genera un.deb, facile da rimuovere tramiteapt. - Gestite i file
.desktoppersonali tramite~/.local/share/applications/— questi sovrascriveranno sempre quelli di sistema.
Dove si trovano tutti i file degli iconi del menu delle applicazioni?
Questo non è un’icona, ma uno script di avvio. Simile a quelli usati per avviare servizi (ricordate?)
Uno dei percorsi:
/usr/share/applications/
Analisi dell’applicazione Telegram
ls -l /usr/share/applications/ | grep -i tele
-rw-r--r-- 1 root root 371 Mar 6 2020 telegram.desktop
cat /usr/share/applications/telegram.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Telegram Desktop
Exec=/opt/telegram/Telegram -- %u
Comment=Official desktop version of Telegram messaging app
Icon=/opt/telegram/telegram.svg
StartupWMClass=Telegram
Categories=GNOME;GTK;Network;
MimeType=application/x-xdg-protocol-tg;x-scheme-handler/tg;
X-Desktop-File-Install-Version=0.22
Da questo si vede che il file eseguibile si trova in
ls -l /opt/telegram/
total 190652
-rwxr-xr-x 1 root root 55 Mar 6 2020 Telegram
-rwxrwxr-x 1 root root 2184648 Nov 8 14:17 Updater
-rwxrwxr-x 1 root root 193023296 Nov 8 14:17 telegram
-rw-r--r-- 1 root root 4762 Mar 6 2020 telegram.svg
Ora è chiaro che il nome dell’icona è Telegram Desktop.
L’indicazione punta al file /opt/telegram/Telegram. È un file molto piccolo, 55 byte. Vediamo cosa contiene:
cat /opt/telegram/Telegram
#!/usr/bin/env bash
/opt/telegram/telegram -noupdate $@
Questo è uno script wrapper (wrap=obertura), che a sua volta chiama /opt/telegram/telegram con un flag della riga di comando che dice a Telegram di non controllare né installare aggiornamenti automaticamente.
$@ è una variabile speciale che espande in argomenti separati, passati allo script. Si consiglia di usare questa costruzione tra virgolette doppie per evitare problemi quando nell’argomento c’è uno spazio. Tuttavia, qui sembra essere escluso, poiché si tratta probabilmente di un nome utente o di un login, dove non sono consentiti spazi o caratteri speciali.
Il file /opt/telegram/telegram è eseguibile — ha l’attributo x (per una cartella, questo attributo significa che è possibile attraversarla, anche se l’utente non ha i permessi di lettura del contenuto della cartella).
questo è solo uno dei simboli e ciò a cui è collegato. Per ora non è chiaro come sia stato installato l’applicazione. Secondo la tabella sembra essere stato installato tramite un installatore run, ma non è certo. Telegram viene fornito o come snap nel negozio di applicazioni, o come archivio tar.gz. Quest’ultimo sembra più probabile.
Per trovare i file dell’altra applicazione, usiamo il comando whence.
whence
In realtà, questo non è un comando, ma un alias (quando una parola di comando nasconde molte righe di codice).
Apri il tuo ~/.bash_aliases — se il file non esiste, crealo. Aggiungi queste righe:
# whence — verifica rapida del metodo di installazione
whence() {
local prog="$1"
[ -z "$prog" ] && { echo "Usage: whence <program>"; return 1; }
echo "=== $prog ==="
echo "• which: $(which \"$prog\" 2>/dev/null || echo '—')"
echo "• snap: $(snap list 2>/dev/null | grep "^$prog " || echo '—')"
echo "• flatpak: $(flatpak list --app 2>/dev/null | awk -v p=\"$prog\" '$1==p {print $1\":\"$3}' || echo '—')"
echo "• dpkg: $(dpkg -S \"$(which \"$prog\" 2>/dev/null)\" 2>/dev/null | cut -d: -f1 || echo '—')"
echo "• .desktop: $(find ~/.local/share/applications /usr/share/applications -name \"*$prog*.desktop\" 2>/dev/null | head -1 || echo '—')"
È configurato in modo che .bash_aliases venga chiamato dal file ~/.bashrc. Pertanto, dopo aver apportato modifiche al file, applicatele (queste modifiche verranno applicate solo nel terminale in cui eseguirete il comando seguente (o verranno applicate alla nuova sessione di login nel sistema):
source ~/.bashrc
Esternamente nulla cambierà, ma nella sessione appariranno nuove variabili e alias.
Verificate:
whence telegram
=== telegram ===
• which: —
• snap: —
• flatpak:
• dpkg:
• .desktop: /home/ivan/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
Potete notare che il file .desktop qui non si trova nel percorso del sistema /usr/share/applications/, ma nella cartella personale (vedete quante ne sono presenti):
ls -l ~/.local/share/applications/
-rwxrwxr-x 1 ivan ivan 579 Nov 8 16:22 org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
Per ora ci interessa il contenuto di questo file:
cat ~/.local/share/applications/org.telegram.desktop*
[Desktop Entry]
Name=Telegram
Comment=New era of messaging
TryExec=/opt/telegram/telegram
Exec=/opt/telegram/telegram -- %u
Icon=org.telegram.desktop
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
Actions=quit;
DBusActivatable=true
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true
[Desktop Action quit]
Exec=/opt/telegram/telegram -quit
Name=Quit Telegram
Icon=application-exit
L’icona ha l’etichetta Telegram (senza Desktop).
Lo script punta … allo stesso file eseguibile /opt/telegram/telegram, ma senza passare la variabile e la chiave “non aggiornare”. Non so perché sia così. La voce interna suggerisce che lo sviluppatore dovrebbe avere un approccio uniforme in qualsiasi tipo di distribuzione. Ma qui probabilmente questo aspetto non è critico. La trasmissione del login non è obbligatoria, verrà caricata dalle impostazioni. La differenza sarà solo nell’aggiornamento automatico del software. E, per inciso, l’utente in un caso vedrà una notifica che Telegram deve essere aggiornato, mentre nell’altro l’applicazione verrà aggiornata automaticamente e attende il riavvio (ma non è certo).
In sintesi, abbiamo scoperto che entrambi gli iconi puntano allo stesso esemplare di Telegram, e questo è il punto principale. Ora potremmo rimuovere uno dei due, dato che l’applicazione e le impostazioni (profilo) sono comuni.
Proviamo a rimuovere quello meno bello:
~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
NON RIMUOVERE il file. Nascondere l’icona si fa in modo diverso!
Rimozione dell’icona Telegram dal menu (mantenendo l’applicazione e il servizio)
Aggiungere il parametro Hidden=true nella sezione [Desktop Entry] del file:
sed -i '/^\[Desktop Entry\]$/a Hidden=true' ~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop
Nota: questa è una comanda semplificata. Non tiene conto se la riga esista già nel file (in caso di ripetuto esecuzione) o meno. Ma duplicati non sono un problema.
La modifica verrà applicata immediatamente — l’icona scomparirà dal menu. Per ripristinare l’icona, rimuovere solo la riga appena aggiunta (indicata dalla freccia).

