28 июля 2010 г.

Приложения по-умолчанию (update-alternatives)

Часто нужно, чтобы данные определённого типа обрабатывались какой-то конкретной программой, и чтобы если программ с нужным функционалом в системе было несколько, можно было каким-либо образом выбрать из них ту, что будет делать это по-умолчанию всегда.
Мощные рабочие среды обычно предоставляют графический интерфейс для этой настройки. Например, в KDE в разделе Приложения по умолчанию параметров системы можно задать программы для семи типов задач: почтовый клиент, текстовый редактор, файловый менеджер, клиент обмена короткими сообщениями, эмулятор терминала, веб-браузер, оконный менеджер.
В Gnome есть Preferred Applications (команда gnome-default-applications-properties), где можно задать дефолтный браузер, почтовый клиент, мультимедиа-плеер и эмулятор терминала.

Однако, двумя этими DE всё не ограничивается. Возникает иногда необходимость задать программы по-умолчанию и в простых оконных менеджерах. Один из примеров - если установлено больше одного браузера, как заставить открываться ссылки (например, из мессенджера) в каком-то определённом из них, работая при этом, допустим, в openbox. Собственно, так я с данной проблемой и столкнулась.
Частичное решение предоставляет пакет update-alternatives. Эта команда управляет символическими ссылками на реальные программы. То есть для определённой задачи создаётся специальная символическая ссылка, которая уже вызывает приложение, подходящее для данной задачи. Соответственно при необходимости сменить программу, ссылка остаётся, в ней просто прописывалется другое приложение.

Простой способ использования - просто перебрать все альтернативы:

sudo update-alternatives --all
Последовательно перечислит все существующие в системе символические ссылки на приложения и предложит для них выбор.
Если нужно просто посмотреть на возможные альтернативы для ссылки:
update-alternatives --display link
Если нужно поменять:
sudo update-alternatives --config link
Однако, вместо 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. Но как-то я не заметила, чтобы это работало.

Хотелось бы ещё узнать, возможно ли и как подобным образом задать дефолтный файловый менеджер, например. И если так это сделать невозможно, то каким методом это делается (если вне зависимости от среды).

4 комментария:

  1. Спасибо за толчек мысли!
    Прочитав статью, вспомнил когда-то виданную программу "gAlternatives" -GUI, 30k весом.
    Это надстройка (для удобства) над "update-alternatives" и потому систему никак не грузит.
    Единственный минус -плохо переведена -старая, 2003г.

    ОтветитьУдалить
  2. И вам спасибо. Я про неё не знала, оказывается, есть в стандартных репах. Ещё kalternatives - видимо, гуёвая надстройка только для кед. А что старая, думаю, не страшно - там, возможно, обновлять-то нечего.

    ОтветитьУдалить
  3. Интересно как например подредактировать симлинк для файрфокса изменить дефолтовый менеджер загрузки, если стоит например kget или wget.

    кому интересно мой блог о линукс: http://interio-tech.com

    ОтветитьУдалить
  4. В смысле чтобы при клике на ссылку на скачивание в фф запускался wget или kget? или чего?

    ОтветитьУдалить