Как я могу удалить осиротевшие пункты меню Пуск?


14

По какой-то причине у меня есть куча оставшихся пунктов меню «Пуск» из приложений (например, Gnome Do, Synapse, Leafpad.), И мне было интересно, есть ли способ удалить все потерянные записи для приложений, которые больше не установлены?

Ответы:


33

Вы можете использовать следующую команду для отображения значков приложений, которые ссылаются на несуществующие программы:

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

Я подозреваю, что вы обнаружите, что большинство ваших значков являются настроенными в вашей домашней папке, поскольку они не очищаются менеджером пакетов автоматически. Если это так, и вы хотите удалить Установите trash-cli их все сразу, вы можете использовать модификацию предыдущей команды:

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

Или, конечно, найдите ~/.local/share/applications/в Nautilus и удалите их через графический интерфейс.


Это сделало трюк! Можно ли как-нибудь превратить это в ярлык, который я могу запустить, когда такое случится снова?
— Алан

3

Если под меню «Пуск» имеется в виду меню «Приложения», вы можете отредактировать его, выбрав: Система -> Настройки -> Главное меню.

Вы можете добавлять, переставлять, редактировать и удалять записи по желанию.


Привет, Эухенио. Это правильно, но я должен просмотреть каждый из них, подтвердить, действительно ли он осиротел или нет, а затем удалить его. Я ищу способ сделать все это для меня, так как у меня есть около 40+ записей, которые я хочу удалить.
— Алан

Наверное, самый дружелюбный ответ. +1
— tir38

3

Когда приложение удалено, оно должно удалить пункты меню, которые оно установило. И так работает на моей машине.

Если это работает по-другому, это ошибка определенного пакета или проблема в вашей системе. Я не могу поверить, что у вас есть более 40 записей сиротами. Это было бы симптомом проблемы.


Это очень странно, у меня никогда не было этой проблемы, пока я не перешел на Натти Нарвал. Я могу понизить рейтинг до 10.04LTS и немного подождать, пока 11.04 не станет более безошибочным.
— Алан

Существуют программы, которые активно устанавливаются самостоятельно, но сами по себе не имеют фактического установщика. Они становятся сиротами, если бинарный файл перемещен.
— Заостренный

2

Ну, это сложно, но я хочу, по крайней мере, сказать вам, в чем проблема.

Gnome хранит установленные приложения в / usr / share / apps с файлами, оканчивающимися на .desktop (поэтому программа vlc запускается vlc.desktop)

Внутри каждого есть раздел «Категория», в котором вы можете указать, в какой части меню «Приложения» эта программа должна быть. Дело в том, что единственный способ, которым я думаю, что это может быть сделано, - это использовать bash-скрипт, который спрашивает, установлен ли пакет, связанный с этим .desktop, или нет. если это не так, удалите этот файл .desktop. Когда вы удаляете файл, он будет вне меню, а когда ваше приложение находится в категории, оно не будет отображаться.

Это немного выходит за рамки моей компетенции, потому что каждая команда (dpkg, apt-get и т. Д.) Всегда возвращает хороший выход, когда говорят, что пакет не установлен, поэтому мы должны прочитать выход из этого приложения, ища строку (например, «не установлена»), проверьте ее, и если строка существует, это означает, что приложение не установлено и файл .desktop можно удалить.

Итак, если вы хотите, вы можете просто войти в папку (/ usr / share / Applications) и щелкнуть по файлам, которые соответствуют программам. Они исчезнут из меню приложений. Чтобы сделать это автоматически, я думаю, нам нужен хороший bash-скрипт на треке, который я сказал.

Я надеюсь, что это поможет в некотором роде.


Привет Дэвид, спасибо за вашу помощь! Этот совет о переходе в / usr / share / apps, безусловно, экономит время по сравнению с удалением неработающих ссылок по одному в редакторе меню.
— Алан

0

Альтернатива:

После ответа @ ændrük, вот аналогичное решение, которое поддерживает пробелы в пути и подпапках , его можно использовать в определенной папке или на всем диске для поиска поврежденных .desktopфайлов (ярлык)

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

Для всего диска

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

Обратите внимание: что любой метод может показать ложную положительную проверку дважды найденных файлов перед их удалением


0

Это может быть старый опубликованный вопрос, но я подумал, что мне следует в любом случае ответить, поскольку у меня возникла та же проблема, однако ни одно из этих предложений не сработало, но я нашел в Интернете очень умного человека, который знал о программе под названием Alacarte (простое редактирование меню GNOME) Запрограммируйте его с помощью диспетчера программного обеспечения, и я очень рад, что он по-прежнему доступен, потому что он по умолчанию используется для установки, но не сейчас и не является широко известной программой, но я так рад, что он по-прежнему доступен через диспетчер программного обеспечения и настолько простой в использовании, просто нажмите, чтобы выделить удаленную запись программы, от которой вы хотите избавиться, и нажмите «Удалить» справа, и все готово. может быть, это поможет, если эти другие предложения не работают для вас

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.