Часто нужно, чтобы данные определённого типа обрабатывались какой-то конкретной программой, и чтобы если программ с нужным функционалом в системе было несколько, можно было каким-либо образом выбрать из них ту, что будет делать это по-умолчанию всегда.
Мощные рабочие среды обычно предоставляют графический интерфейс для этой настройки. Например, в KDE в разделе Приложения по умолчанию параметров системы можно задать программы для семи типов задач: почтовый клиент, текстовый редактор, файловый менеджер, клиент обмена короткими сообщениями, эмулятор терминала, веб-браузер, оконный менеджер.
В Gnome есть Preferred Applications (команда gnome-default-applications-properties), где можно задать дефолтный браузер, почтовый клиент, мультимедиа-плеер и эмулятор терминала.
Однако, двумя этими DE всё не ограничивается. Возникает иногда необходимость задать программы по-умолчанию и в простых оконных менеджерах. Один из примеров — если установлено больше одного браузера, как заставить открываться ссылки (например, из мессенджера) в каком-то определённом из них, работая при этом, допустим, в openbox. Собственно, так я с данной проблемой и столкнулась.
Частичное решение предоставляет пакет update-alternatives. Эта команда управляет символическими ссылками на реальные программы. То есть для определённой задачи создаётся специальная символическая ссылка, которая уже вызывает приложение, подходящее для данной задачи. Соответственно при необходимости сменить программу, ссылка остаётся, в ней просто прописывалется другое приложение.
Простой способ использования — просто перебрать все альтернативы:
sudo update-alternatives --all |
Последовательно перечислит все существующие в системе символические ссылки на приложения и предложит для них выбор.
Если нужно просто посмотреть на возможные альтернативы для ссылки:
update-alternatives --display link |
Если нужно поменять:
sudo update-alternatives --config <em>link</em> |
Однако, вместо link в этих командах нужно подставлять имя конкретной символической ссылки и для этого его нужно знать.
А примеры ссылок таковы:
- editor — редактор текста (типа nano, vi, vim, emacs)
- ftp — ftp-клиент
- x-cursor-theme — тема курсора
- x-session-manager — графическая сессия (kde, gnome, openbox)
- x-terminal-emulator — эмулятор терминала
- x-window-manager — оконный менеджер (kwin, metacity, openbox)
- x-www-browser — веб-браузер
И кстати, таким образом решается моя давняя проблема с «неустойчивым» видом курсора — просто в alternatives была задана одна тема, а в графической среде выбрана другая, по причине, видимо, того, что в системе сосуществуют сразу несколько графических сред.
Пройдясь по всем симлинкам с помощью первой приведённой тут команды, возможно, встретить и ещё что-нибудь интересное. Если менять ничего не требуется, нужно просто нажимать Enter, а при необходимости выбора следует нажимать соответствующую цифру. Вывод команды довольно понятен, например:
opossum@opossum:~$ sudo update-alternatives --config gnome-www-browser There are 3 choices for the alternative gnome-www-browser (providing /usr/bin/gnome-www-browser). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/google-chrome 150 auto mode 1 /usr/bin/chromium-browser 40 manual mode 2 /usr/bin/firefox 40 manual mode 3 /usr/bin/google-chrome 150 manual mode Press enter to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/bin/chromium-browser to provide /usr/bin/gnome-www-browser (gnome-www-browser) in manual mode. |
Кстати, эта ссылка вроде задаёт путь к дефолтному браузеру в среде gnome. Но как-то я не заметила, чтобы это работало.
Хотелось бы ещё узнать, возможно ли и как подобным образом задать дефолтный файловый менеджер, например. И если так это сделать невозможно, то каким методом это делается (если вне зависимости от среды).