После установки дополнительных браузеров в систему через источники приложений (apt) было обнаружено, что при вызове на файле правого контекстного меню мыши "Открыть с помощью", а также обращения к настройке "Предпочтительные приложения" появились дублирующиеся записи. Это было замечено на браузерах Brave, Chrome, Yandex.
1. Способ на скорую руку
Откройте папку общеситемного списка приложений с правами root
sudo xdg-open /usr/share/applications
В списке приложений вы можете обнаружить повторяющиеся записи установленных в системе браузеров:
Обратите внимание на размеры этих файлов desktop. Как правило, один из них побольше, а другой поменьше. Откройте файл большего размера в текстовом редакторе и найдите строку
NoDisplay=true
Допишите ещё одну строку, содержающую Hidden=true
Сохраните внесённые изменения и перезагрузите систему. Дублируюбщиеся записи браузеров в правом конктекстном меню мыши "Открыть с помощью", а также в настройке "Предпочительные приложения" должны изчезнуть.
Краткое пояснение дополнительных инструкций в файлах desktop (примеры):
NoDisplay=false – Не показывать в меню. Обычно "нет" (false). Файловые ассоциации (сопоставления файлов приложениям), если есть, будут работать.
Hidden=false – Не показывать в меню, убрать из файловых ассоциаций (сопоставления файлов приложениям). И вообще сделать вид, что приложения не существует. Обычно "нет" (false).
OnlyShowIn=GNOME; – Показывать только в указанной рабочей среде: GNOME, KDE, Xfce, ещё какие-нибудь через ;.
NotShowIn=KDE; – Не показывать в указанных рабочих средах. Должен быть только один из параметров: либо OnlyShowIn, либо NotShowIn.
Со временем, однако, по мере обновления системы было обнаружено, что при обновлении браузеров двойные записи появляются снова.
2. Автоматическое отслеживание и удаление "повторяющихся" ярлыков
Упомянутые выше файлы, которые редактировались, отличаются именами. Например, существует файл google-chrome.desktop, но существует и файл com.google.Chrome.desktop В менеджере файлов Nemo графического окружения Cinnamon вы этого не увидите. Разницу в Cinnamon можно обнаружить в какой-либо жругом менеджере файлов, например в Midnight Commander или Double Coomander.
В п.1 редактированию подвергались файлы com.google.Chrome.desktop, com.brave.Browser.desktop, ru.yandex.desktop.browser.desktop, в то время как файлы google-chrome.desktop, brave-browser.desktop, yandex-browser.desktop оставались нетронутыми.
Ниже приводится пример, для удаления com.google.Chrome.desktop Для сопоставления другим браузерам используйте список ниже:
Brave Web Browser – com.brave.Browser.desktop
Brave Web Browser (beta) – com.brave.Browser.beta.desktop
Google Chrome (beta) – com.google.Chrome.beta.desktop
Yandex Browser – ru.yandex.desktop.browser.beta.desktop
Yandex Browser (beta) – ru.yandex.desktop.browser.beta.desktop
Если существует файл com.google.Chrome.desktop, то он будет помещён в архив xz. При этом исходный файл автоматически будет удалён (алгоритм работы xz). Перед этим действием проверяется, существует ли архив xz, содержащий предыдущую версию обрабатываемого файла desktop. Если такой архив xz будет найден, то он подлежит удалению.
if [ -f /usr/share/applications/com.google.Chrome.desktop ]; then
if [ -f /usr/share/applications/com.google.Chrome.desktop.xz ]; then
rm /usr/share/applications/com.google.Chrome.desktop.xz
fi
xz /usr/share/applications/com.google.Chrome.desktop
else
:
fi
Так как упомянутые файлы desktop расположены в папке, для внесения изменений в которую необходимы права root, то создаваемый сценарий действий (исполняемый файл, исполняемый файл sh) необходимо добавить в записи файла /etc/sudoers, чтобы пароль не запрашивался. Самым простым способом является вызов тестового редактора
sudo xed /etc/sudoers
и внесение в него строки, например,
user ALL=NOPASSWD: полный_путь_к_сценарию_действий
Вместо user необходимо указать свой логин в системе.