Como remover o ícone do aplicativo do menu do Ubuntu e formas de instalar aplicativos

Introdução

Suponha que, no Ubuntu, ícones apareceram no menu de aplicativos que você deseja:

  1. Remover junto com o aplicativo — será abordado separadamente.
  2. Remover apenas o ícone — é o foco deste guia.

Neste exemplo, desejo remover apenas o ícone do Telegram ou do Telegram Desktop, sem afetar o próprio aplicativo.

Métodos de Instalação

Como você não lembra como realizou a instalação, pode ser um dos seguintes métodos:

Método de Instalação Como identificar Como remover (terminal) Observações / Riscos
1 Repositório integrado apt policy nomearchive.ubuntu.com sudo apt remove --purge nome && sudo apt autoremove Seguro, mas autoremove pode afetar outros pacotes — verifique.
2 Repositório adicionado (PPA etc.) apt policy nome → URL externo
Arquivo em /etc/apt/sources.list.d/
1. sudo apt remove nome
2. Remover .list + chave
3. sudo apt update
Remova o pacote antes do repositório — caso contrário, erros no apt.
3 Pacote .deb `dpkg -l grep nome` sudo apt remove --purge nome (melhor que 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 Binário pronto (AppImage, .tar.gz) Não está em apt/dpkg/snap
Binário em ~/Apps/, /opt/, ~/.local/bin/
rm -rf /caminho/para/o/programa ~/.local/share/applications/nome.desktop ~/.config/nome/ Sem gerenciamento centralizado — fácil “esquecer” algo.
7 Instalador .run Foi executado sudo ./nome.run
Existe /opt/nome/, uninstall.sh
1. sudo /opt/nome/uninstall.sh
2. Caso contrário, manualmente — /opt/, /usr/bin/, .desktop, systemd, ~/.config/
Método mais “sujo”. Muitas vezes não deixa script de desinstalação.
8 Compilação (make install) which nome/usr/local/bin/ 1. make uninstall (se existir)
2. Caso contrário — manualmente
A remoção ou checkinstall no futuro
9 Gerenciadores (pipx, cargo, npm -g) which nome~/.local/bin/, ~/.cargo/bin/ pipx uninstall nome, cargo uninstall nome, npm uninstall -g nome Não quebra o sistema, mas pode conflitar com versões do apt (ex: node).

Essa é uma lista incompleta, e espero que você não use outras opções :slight_smile:

  • go install, gem install
  • Imagens Docker / Podman com GUI
  • Instalação via linuxbrew / nix / guix

O que não é considerado um método de instalação separado

  • apt install ./file.deb → é a instalação do pacote .deb, apenas via apt, e não dpkg.
  • Instaladores gráficos (Software Center, Discover) → frontend para apt / snap / flatpak.
  • “Adicionar ao carregamento automático” / systemd --user → é uma configuração pós-instalação, e não um método de instalação.

Como identificar rapidamente o método de instalação de um programa desconhecido?

# 1. Onde está o binário?
which nome

# 2. De onde veio o pacote (se for apt/dpkg)
dpkg -S $(which nome) 2>/dev/null || echo "Não está no dpkg"

# 3. Verificar snap/flatpak
snap list | grep -i nome
flatpak list | grep -i nome

# 4. Verificar se está em ~/.local/bin ou /opt
ls -l $(which nome)

# 5. Histórico de instalação (se recente)
grep "install.*nome" /var/log/apt/history.log 2>/dev/null
journalctl --since "2 weeks ago" | grep -i "install.*nome"

Dicas para sistemas limpos:

  • Para programas .run no futuro — considere AppImage ou isolamento via bubblewrap / toolbox.
  • Em vez de make install, use checkinstall → cria um .deb, fácil de remover via apt.
  • Gerencie arquivos .desktop pessoais em ~/.local/share/applications/ — eles sempre sobrescrevem os sistemas.

Onde estão todos os arquivos de ícones do menu de aplicativos?

Isso não é um ícone, mas um script de inicialização. Similar aos usados para iniciar serviços (lembra?)

Um dos locais:

/usr/share/applications/

Análise do aplicativo 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=Versão oficial do aplicativo de mensagens Telegram para desktop
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

Dessa forma, vemos que o executável está em

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

Agora fica claro que a assinatura do ícone é Telegram Desktop.

O caminho aponta para o arquivo /opt/telegram/Telegram. Ele é muito pequeno, 55 bytes — vamos ver o conteúdo:

cat /opt/telegram/Telegram

#!/usr/bin/env bash
/opt/telegram/telegram -noupdate $@

Esse é um script wrapper (wrap=embalagem), que por sua vez chama /opt/telegram/telegram com a flag de linha de comando que diz ao Telegram não verificar nem instalar atualizações automaticamente.

$@ é uma variável especial que se expande em argumentos individuais passados ao script. Recomenda-se usar essa construção entre aspas duplas para evitar problemas quando o argumento contiver espaços. Mas parece que aqui isso não é necessário, pois o nome de usuário ou login usado não contém espaços ou caracteres especiais.

O arquivo /opt/telegram/telegram é executável — ele tem o atributo x (para pastas, esse atributo significa que é possível atravessá-las, mesmo sem permissão de leitura do conteúdo da pasta).

:backhand_index_pointing_right: Isso é apenas um dos ícones e o que está relacionado a ele. Ainda não está claro como o aplicativo foi instalado. De acordo com a tabela, parece ter sido um instalador .run, mas não é exatamente isso. O Telegram é fornecido ou como snap na loja de aplicativos, ou como arquivo tar.gz. Parece mais o segundo caso.

Para encontrar os arquivos do segundo aplicativo, use a comando whence.

whence

Na verdade, isso não é um comando, mas um alias (quando uma palavra de comando esconde várias linhas de código).

Abra seu ~/.bash_aliases — se o arquivo não existir, crie-o. Adicione essas linhas:

# whence — verificação rápida do método de instalação
whence() {
    local prog="$1"
    [ -z "$prog" ] && { echo "Uso: whence <programa>"; 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 '—')"

Assim está configurado, que .bash_aliases é chamado no arquivo ~/.bashrc. Portanto, após fazer alterações no arquivo, aplique-as (essas alterações só serão aplicadas no terminal onde você executar o comando abaixo (ou ao fazer um novo login no sistema):

source ~/.bashrc

Nada mudará externamente, mas na sessão aparecerão novas variáveis e aliases.

Verifique:

whence telegram

=== telegram ===
• which: —
• snap: —
• flatpak: 
• dpkg: 
• .desktop: /home/ivan/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

Você pode notar que o arquivo .desktop aqui está localizado no diretório pessoal, e não no diretório de sistema /usr/share/applications/ (veja quantos existem lá):

ls -l ~/.local/share/applications/

-rwxrwxr-x 1 ivan ivan 579 Nov  8 16:22 org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

Por enquanto, nos interessa o conteúdo desse arquivo:

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

O nome do ícone é Telegram (sem “Desktop”).

O script aponta … para o mesmo executável /opt/telegram/telegram, apenas sem passar a variável e a chave “não atualizar”. Não sei por quê. A voz interna diz que o desenvolvedor deve ter uma abordagem uniforme em qualquer tipo de implantação. Mas aqui, provavelmente esse ponto não é crítico. A passagem do login não é obrigatória, isso será carregado das configurações. A diferença será apenas na atualização automática do software. E, curiosamente, o usuário em um caso verá uma notificação dizendo que o Telegram precisa ser atualizado, enquanto no outro o aplicativo atualizará sozinho e aguardará reinicialização (mas isso não é garantido).

Em resumo, descobrimos que ambos os ícones levam ao mesmo instância do Telegram, o que é o mais importante. Agora podemos remover um deles, já que o programa e as configurações (perfil) são os mesmos.

Vamos remover o menos bonito:

~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

NÃO REMOVA o arquivo. O esconder do ícone é feito de outra forma!

Remoção apenas do ícone do Telegram do menu (mantendo o programa e o serviço)

Adicione o parâmetro Hidden=true na seção [Desktop Entry] do script:

sed -i '/^\\[Desktop Entry\\]$/a Hidden=true' ~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

Observe que essa é uma comando simplificado. Ele não considera se essa linha já existe no arquivo (em caso de reexecução) ou ainda não existe. Mas duplicações não são um problema.

A alteração será aplicada imediatamente — o ícone desaparecerá do menu. Para restaurar o ícone, apenas remova a linha adicionada (indicada pela seta).