Como posso remover entradas órfãs do menu Iniciar?

14

Por alguma razão, tenho um monte de entradas do menu Iniciar restantes de aplicativos (por exemplo, Gnome Do, Synapse, Leafpad.) E fiquei imaginando se há uma maneira de remover todas as entradas órfãs de aplicativos que não estão mais instalados?

Alan
fonte

Respostas:

32

Você pode usar o seguinte comando para listar ícones de aplicativos vinculados a programas inexistentes:

for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done

Eu suspeito que você descobrirá que a maioria de seus ícones são personalizados na sua pasta pessoal, pois eles não são limpos automaticamente pelo gerenciador de pacotes. Se esse for o caso, e você gostaria de lixeira Instale o lixo-cli todos de uma vez, você pode usar uma modificação do comando anterior:

for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done

Ou, é claro, navegue ~/.local/share/applications/no Nautilus e jogue-o fora na interface gráfica.

ændrük
fonte
Isso fez o truque! Existe alguma maneira de transformar isso em um atalho que eu possa executar quando isso acontecer novamente?
2177 Alan Alan
3

Se por menu inicial você quer dizer o menu 'Aplicativos', você pode editá-lo indo para: Sistema -> Preferências -> Menu Principal.

Você pode adicionar, reorganizar, editar e excluir entradas à vontade.

Eugenio Perea
fonte
Oi Eugenio. Está correto, mas eu tenho que passar por cada um deles, confirmar se realmente é órfão ou não e excluí-lo. Estou procurando uma maneira de fazer tudo isso por mim, pois tenho mais de 40 entradas que quero remover.
7773 Alan
Provavelmente a resposta mais fácil de usar. 1
tir38
3

Quando um aplicativo é desinstalado, ele deve remover os itens de menu instalados. E funciona assim na minha máquina.

Se funcionar de maneira diferente, é um bug de um pacote específico ou um problema no seu sistema. Não acredito que você tenha mais de 40 órfãos. Seria o sintoma de um problema.

enzotib
fonte
É muito estranho, eu nunca tive esse problema até minha atualização para Natty Narwhal. Posso fazer o downgrade para 10.04LTS e esperar um pouco até que o 11.04 seja um pouco mais livre de erros.
21311 Alan
Existem programas que se instalam ativamente, mas que não têm um instalador real em si. Eles ficam órfãos se o binário for movido.
Pointy
2

Bem, este é difícil, mas eu quero, pelo menos, dizer qual é o problema.

O Gnome armazena os aplicativos instalados em / usr / share / applications com arquivos terminados em .desktop (então o programa vlc é iniciado pelo vlc.desktop)

Dentro de cada um, há uma seção "Categoria" na qual você pode definir em que parte do menu Aplicativos é o programa que deseja que seja. A questão é: a única maneira que eu acho que pode ser feito o que você está pedindo é usando um script bash que pergunte se o pacote relacionado a esse .desktop está instalado ou não. caso contrário, exclua esse arquivo .desktop. Quando você exclui o arquivo, ele fica fora do menu e, quando o aplicativo está em uma categoria, esse não é mostrado.

Esse está um pouco fora do meu escopo, porque todo comando (dpkg, apt-get, etc.) sempre retorna uma boa saída quando diz que o pacote não está instalado, por isso precisamos ler a saída desse aplicativo procurando por uma String (fi "não instalado"), verifique e, se a String existir, significa que o aplicativo não está instalado e o .desktop pode ser excluído.

Então, se você quiser, basta entrar na pasta (/ usr / share / applications) e clicar nos arquivos que correspondem aos programas. Eles desaparecerão do menu Aplicativos. Para fazer isso automaticamente, acho que precisamos de um bom script bash na faixa que eu disse.

Espero que isso ajude de algum jeito.

David Rando
fonte
Oi David, obrigado pela sua ajuda! Essa dica sobre como entrar em / usr / share / applications é certamente uma economia de tempo em comparação com a exclusão dos links quebrados, um por um, no editor de menus.
21711 Alan Alan
0

Alternativo:

Após a resposta @ ændrük, aqui está uma solução semelhante que suporta espaços no caminho e nas subpastas , que pode ser usada em uma pasta específica ou em todo o disco para procurar .desktoparquivos quebrados (atalho)

find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

Para todo o disco

find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

Nota: que qualquer método pode mostrar arquivos de verificação falso positivo encontrados duas vezes antes de excluí-los

intika
fonte
0

Esta pode ser uma pergunta antiga, mas achei que deveria concordar de qualquer maneira, já que tinha o mesmo problema, mas nenhuma dessas sugestões funcionou, mas encontrei na internet uma pessoa muito inteligente que conhecia um programa chamado Alacarte (edição fácil de menus do GNOME) programa instalado usando o gerenciador de software e estou emocionado por ainda estar disponível porque ele foi instalado por padrão, mas não é agora e não é um programa conhecido, mas estou tão feliz por ele ainda estar disponível via gerenciador de software e tão fácil de usar, basta clicar para destacar a entrada do programa desinstalado da qual você deseja se livrar e clicar em excluir à direita e pronto. talvez isso ajude se essas outras sugestões não funcionarem para você

Ken
fonte