Ответы:
Этот список создается путем анализа файлов .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 нет дупликов , и я все еще испытываю проблему.