Ответы:
Вы можете использовать следующую команду для отображения значков приложений, которые ссылаются на несуществующие программы:
for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done
Я подозреваю, что вы обнаружите, что большинство ваших значков являются настроенными в вашей домашней папке, поскольку они не очищаются менеджером пакетов автоматически. Если это так, и вы хотите удалить их все сразу, вы можете использовать модификацию предыдущей команды:
for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done
Или, конечно, найдите ~/.local/share/applications/
в Nautilus и удалите их через графический интерфейс.
Если под меню «Пуск» имеется в виду меню «Приложения», вы можете отредактировать его, выбрав: Система -> Настройки -> Главное меню.
Вы можете добавлять, переставлять, редактировать и удалять записи по желанию.
Когда приложение удалено, оно должно удалить пункты меню, которые оно установило. И так работает на моей машине.
Если это работает по-другому, это ошибка определенного пакета или проблема в вашей системе. Я не могу поверить, что у вас есть более 40 записей сиротами. Это было бы симптомом проблемы.
Ну, это сложно, но я хочу, по крайней мере, сказать вам, в чем проблема.
Gnome хранит установленные приложения в / usr / share / apps с файлами, оканчивающимися на .desktop (поэтому программа vlc запускается vlc.desktop)
Внутри каждого есть раздел «Категория», в котором вы можете указать, в какой части меню «Приложения» эта программа должна быть. Дело в том, что единственный способ, которым я думаю, что это может быть сделано, - это использовать bash-скрипт, который спрашивает, установлен ли пакет, связанный с этим .desktop, или нет. если это не так, удалите этот файл .desktop. Когда вы удаляете файл, он будет вне меню, а когда ваше приложение находится в категории, оно не будет отображаться.
Это немного выходит за рамки моей компетенции, потому что каждая команда (dpkg, apt-get и т. Д.) Всегда возвращает хороший выход, когда говорят, что пакет не установлен, поэтому мы должны прочитать выход из этого приложения, ища строку (например, «не установлена»), проверьте ее, и если строка существует, это означает, что приложение не установлено и файл .desktop можно удалить.
Итак, если вы хотите, вы можете просто войти в папку (/ usr / share / Applications) и щелкнуть по файлам, которые соответствуют программам. Они исчезнут из меню приложений. Чтобы сделать это автоматически, я думаю, нам нужен хороший bash-скрипт на треке, который я сказал.
Я надеюсь, что это поможет в некотором роде.
Альтернатива:
После ответа @ æ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
Обратите внимание: что любой метод может показать ложную положительную проверку дважды найденных файлов перед их удалением
Это может быть старый опубликованный вопрос, но я подумал, что мне следует в любом случае ответить, поскольку у меня возникла та же проблема, однако ни одно из этих предложений не сработало, но я нашел в Интернете очень умного человека, который знал о программе под названием Alacarte (простое редактирование меню GNOME) Запрограммируйте его с помощью диспетчера программного обеспечения, и я очень рад, что он по-прежнему доступен, потому что он по умолчанию используется для установки, но не сейчас и не является широко известной программой, но я так рад, что он по-прежнему доступен через диспетчер программного обеспечения и настолько простой в использовании, просто нажмите, чтобы выделить удаленную запись программы, от которой вы хотите избавиться, и нажмите «Удалить» справа, и все готово. может быть, это поможет, если эти другие предложения не работают для вас