Як я можу видалити осиротілі записи стартового меню?


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

Я підозрюю, що ви знайдете, що більшість ваших є значками, налаштованими у вашій домашній папці, оскільки вони не очищаються автоматично менеджером пакунків. Якщо це так, і ви хочете викинути Встановіть кошик для сміття їх усі відразу, ви можете скористатися модифікацією попередньої команди:

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 / додатках з файлами, що закінчилися в .desktop (тому програма vlc запускається vlc.desktop)

Всередині кожного є розділ "Категорія", в якому ви можете встановити, в якій частині меню "Програми" ви хочете програму. Річ у тім: єдиний спосіб, на який я думаю, можна зробити те, що ви просите, - це використовувати скрипт bash, який запитує, встановлений чи пакет, пов'язаний з цим .desktop, чи ні. якщо ні, видаліть цей .desktop файл. Коли ви видалите файл, він вийде з меню, а коли додаток перебуває в категорії, той не відображається.

Цей варіант трохи не входить у міру мого застосування, оскільки кожна команда (dpkg, apt-get і т. Д.) Завжди повертає хороший вихід, коли вони кажуть, що пакет не встановлений, тому нам потрібно прочитати вихід із цього додатка, який шукає a String (fi "не встановлено"), перевірте її, і якщо String існує, це означає, що додаток не встановлено, а .desktop можна видалити.

Отже, якщо ви хочете, ви можете просто увійти в папку (/ usr / share / applications) і натиснути на файли, які відповідають програмам. Вони вийдуть з меню «Програми». Щоб зробити це автоматично, я думаю, нам потрібен хороший сценарій башти на треку, який я сказав.

Я сподіваюся, що це певним чином допомагає.


Привіт, Девід, дякую за допомогу! Ця порада щодо входу в / usr / share / застосунки - це, безумовно, економія часу порівняно зі видаленням пошкоджених посилань по одному в редакторі меню.
Алан

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.