Відповіді:
Ви можете використовувати таку команду, щоб перераховувати піктограми програм, які посилаються на неіснуючі програми:
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 / додатках з файлами, що закінчилися в .desktop (тому програма vlc запускається vlc.desktop)
Всередині кожного є розділ "Категорія", в якому ви можете встановити, в якій частині меню "Програми" ви хочете програму. Річ у тім: єдиний спосіб, на який я думаю, можна зробити те, що ви просите, - це використовувати скрипт bash, який запитує, встановлений чи пакет, пов'язаний з цим .desktop, чи ні. якщо ні, видаліть цей .desktop файл. Коли ви видалите файл, він вийде з меню, а коли додаток перебуває в категорії, той не відображається.
Цей варіант трохи не входить у міру мого застосування, оскільки кожна команда (dpkg, apt-get і т. Д.) Завжди повертає хороший вихід, коли вони кажуть, що пакет не встановлений, тому нам потрібно прочитати вихід із цього додатка, який шукає a String (fi "не встановлено"), перевірте її, і якщо String існує, це означає, що додаток не встановлено, а .desktop можна видалити.
Отже, якщо ви хочете, ви можете просто увійти в папку (/ usr / share / applications) і натиснути на файли, які відповідають програмам. Вони вийдуть з меню «Програми». Щоб зробити це автоматично, я думаю, нам потрібен хороший сценарій башти на треку, який я сказав.
Я сподіваюся, що це певним чином допомагає.
Альтернатива:
Після відповіді @ æ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) програму, встановлену за допомогою диспетчера програмного забезпечення, і я в захваті, вона все ще доступна, тому що вона використовувалась за замовчуванням, але це не зараз, і це не добре відома програма, але я дуже радий, що це все ще доступно через менеджер програмного забезпечення, і це настільки простий у використанні, просто натисніть на, щоб виділити видалену програму, яку ви хочете позбутися, і натисніть Видалити праворуч, і це зроблено. можливо, це допоможе, якщо ці інші пропозиції не спрацюють для вас