Ответы:
Этот список создается путем анализа файлов .desktop, расположенных по адресу:
/usr/share/applications
~/.local/share/applications
В каждом приложении может быть несколько вариантов использования, например, медиаплеер, banshee
который по умолчанию имеет три файла .desktop:
$ ls -1 /usr/share/applications/banshee*
/usr/share/applications/banshee-1-audiocd.desktop
/usr/share/applications/banshee-1.desktop
/usr/share/applications/banshee-1-media-player.desktop
Единственная разница между этими файлами - это начальный параметр и список MimeType.
banshee-1.desktop
: Общие медиафайлыbanshee-1-audiocd.desktop
: Аудио CDbanshee-1-media-player.desktop
Аудио плеер (также используется rhythmbox
, vlc
и другие)Итак, у нас есть три «Banshee Media Player» в списке «Открыть с помощью» (и, возможно, также в «Главном меню»).
Другой способ заполнить это пространство - создать личные файлы .desktop в ~/.local/share/applications
. Либо вручную, либо с помощью инструмента. alacarte
(или щелкните правой кнопкой мыши на «Главное меню» -> «Редактировать меню») является одним из них.
Каждый раз, когда вы создаете или перемещаете приложение alacarte
, в него помещается новый файл .desktop ~/.local/share/applications
. Отключение приложения «удалит» его из «Главного меню», но не из списка «Открыть с помощью».
Но кнопка «Удалить» делает это, создавая идентичную копию /usr/share/applications
в ~/.local/share/applications
и добавляя Hidden=true
в файл .desktop, тем самым «перезаписывая» общесистемные унаследованные значения.
Удаление двух из этих записей из alacarte
результатов в:
$ ls -1 ~/.local/share/applications/banshee*
/home/user/.local/share/applications/banshee-1-audiocd.desktop
/home/user/.local/share/applications/banshee-1-media-player.desktop
Удаление любых записей ~/.local/share/applications
вернется к существующему состоянию (три banshee
элемента).
Если у вас действительно нет дубликатов в этих двух папках, попробуйте удалить любые дубликаты alacarte
или играть с Hidden=true
опцией в соответствующих файлах .desktop.
Если вы заглянете внутрь ~/.local/share/applications
и /usr/share/applications
сможете удалить дубликаты из этих двух мест. Это сделало это для меня.
Признавая, что эта ветка старая, я сама была озадачена этой проблемой. Лично я чувствовал, что удалять файлы или играть в «чистку» не нужно, так как просто настраиваю вещи для текущего пользователя. Если существует более 1 файла .desktop, не может ли каждый иметь уникальное описание? Что касается Linux, разве некоторые разработчики приложений действительно упускают из виду такие простые вещи?
Я обнаружил, что если вы открываете файлы .desktop в текстовом редакторе, поле « Имя» - это то, что отображается в меню «Открыть с помощью». Поэтому я искал файлы .desktop, которые, как я знал, создавали проблему (например, 3 файла Banshee). Глядя на каждый из них, разница почти всегда была связана с тем, с какими типами мимтипа работает ярлык. Это связано с тем, что некоторые программы предпочитают передавать разные параметры в зависимости от mimetype. Только в 1 случае я нашел дубликаты записей в результате обновления приложения, которое не очищает его старый файл .desktop.
Вооружившись этим открытием, я изменил поля Name известных дублированных записей, чтобы отразить это. Например, редактируя файл .desktop, который Banshee имеет специально для обработки аудио компакт-дисков , я сделал название следующим образом:
Банши (Аудио CD)
Rhythmbox также является хорошим примером, поскольку у него есть отдельный файл .desktop, специально предназначенный для работы с CD + MP3-плеерами, но каждый из них показывает то же самое. Я предполагаю, что файл 1 загружает приложение и фокусируется на устройстве, а не на вашей библиотеке. Это стоит переименовать, так как вы не хотите, чтобы это происходило при обработке файлов MP3 / OGG.
В любом случае, я думаю, что это делает меню Open With чистым, не удаляя файлы, которые кажутся полезными. Сохраняются ли эти изменения между обновлениями приложения, еще неизвестно ... но это простое и быстрое редактирование, которое можно даже записать в сценарии. Оболочка очень помогает в этом случае. Например, чтобы увидеть все имена файлов (с путем) с такими повторяющимися записями:
grep -rl "^Name=Banshee$" /usr/share/applications
Где «Banshee» - это то, что более одного раза появляется в меню «Открыть с помощью». В приведенном выше примере приложение называлось Geany.
Благодаря этому вы можете отправить полученные файлы прямо в ваш редактор. Если вы не являетесь экспертом в выражениях reg, символы ^ и $ указывают начало и конец строки соответственно. Это удерживает систему от поиска строк, таких как, XGnome-FullName=Banshee Media Player
а также предотвращает поиск записей, которые вы, возможно, уже исправили.
Вы также можете посмотреть в редакторе меню Gnome «Applications» и удалить дубликаты отсюда.
jhbuild.desktop
иmimeapps.list
в ~ / .local / share / Applications . И в / usr / share / Applications нет дупликов , и я все еще испытываю проблему.