пятница, 7 сентября 2007 г.

xmms и utf-8

или "когда деревья были большими", а первым дистрибутивом, доступным мне на компакт-диске (это была непозволительная роскошь и крутизна), явился RH-5.1, тогда и состоялось знакомство с тем, что нонче известно как xmms и пинаемо всеми без малейших на то оснований. вернее есть одно основание - кривые руки, что перевешивает всё, включая здравый смысл (зачатки которого иногда можно обнаружить у некоторых особей). последние несколько лет я провёл в "марьяже" с SuSE, где многие вещи работают как-бы сами по себе (мои самые искренние слова признательности всем мейнтейнерам этого дистрибутива), в том числе и пресловутый xmms. все вопросы по "русификации" решались выбором шрифта для отображения плейлиста и основного окна программы. но что-то потянуло на "экзотику" - так появился Archlinux (забавная зверушка, о которой надеюсь рассказать позднее). поводом для выбора этого дистрибутива явился мультик "Kleines Arschloch" и ничего более (кто не смотрел - марш в кино). вопросов бы не было, если бы не моя приверженность локали en_US.UTF-8 (en_US.utf8 в "арче"). это принципиальный вопрос и обсуждению не подлежит (до тех пор, пока комментарии в исходных текстах программ не станут писать на каком-то другом языке). как русифицировал - отписался здесь:

http://www.linux.org.ru/view-message.jsp?msgid=2020916
после чего поставил следующие пакеты:

mc-utf8
xlib-locale-ru-ru-utf8 (субъективно - пакет явно лишний, ставил из ABS)
xmms
gtk


есть в репозитории и пакет rusxmms - меня он совершенно не впечатлил (надо бы наверное "ручками" пересобрать из ABS - вдумчиво, не торопясь, но смысла пока нет). потратил наконец-то немного времени на перекодировку всех тегов аудиоколлекции в UTF-8 (для чистоты эксперимента), и стартанул xmms, предварительно выбрав шрифт с поддержкой utf-8:

вполне ожидаемый ужас, что и видим на окне с информацией о файле. имя файла, id3v1 и id3v2 - в utf-8. перед тем как махать напильником направо и налево попробуем немного почитать:
http://admdenis.narod.ru/HOWTO_GTK1_with_UTF8.html
http://gentoo-wiki.com/HOWTO_Make_your_system_use_unicode/utf-8
http://bbs.archlinux.org/viewtopic.php?id=25571
http://bugs.archlinux.org/task/4652

цель была в достижении результата, аналогичного SuSE - при LANG="en_US.utf8" добиться от gtk1 корректного отображения кириллических имён файлов в utf-8 и от xmms показа utf-8 тегов в плейлисте и основном окне программы. скорее всего где-то напортачил, потому как получилось не всё (вернее не совсем так, как планировалось). в /etc/gtk создал файлик gtkrc.utf, взяв за основу оный из SuSE:

$ cat /etc/gtk/gtkrc.utf8

# This file defines the fontsets for UTF-8 encoding
#
# Mon Jan 27 18:21:42 2003 Mike Fabian
and sda00@himki.net

style "gtk-default-utf-8" {
fontset = "-b&h-lucida sans unicode-medium-*-*-*-*-*-*-*-*-*-iso10646-1,\
-xos4-terminus-medium-r-normal-*-*-120-*-*-c-*-iso10646-1,\
-*-arial-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
-*-*-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
-efont-biwidth-medium-r-normal-*-12-*-*-*-*-*-iso10646-1,\
-gnu-unifont-medium-r-normal-*-16-*-*-*-*-*-iso10646-1,\
-baekmuk-gulim-medium-r-normal-*-12-*-*-*-*-*-ksc5601.1987-*,\
-shinonome-gothic-medium-r-normal-*-12-*-*-*-*-*-jisx0208.*-0,\
-*-*-*-r-*--12-*-*-*-*-*-iso10646-1,\
-*-*-*-*-*--12-*-*-*-*-*-iso10646-1,\
-*-*-*-*-*--12-*-*-*-*-*-*-*"
}
class "GtkWidget" style "gtk-default-utf-8"


потом (для очистки совести и из стремления к прекрасному) создал ~/.gtkrc:

$ cat ~/.gtkrc

style "user-font"
{
fontset = "-b&h-lucida sans unicode-medium-*-*-*-*-80-*-*-p-*-iso10646-1"
}
widget_class "*" style "user-font"


завершающими аккордами накидал несколько симлинков:

ln -s /usr/share/X11/locale/compose.dir /usr/lib/X11/locale/compose.dir
ln -s /usr/share/X11/locale/locale.alias /usr/lib/X11/locale/locale.alias
ln -s /usr/share/X11/locale/locale.dir /usr/lib/X11/locale/locale.dir
ln -s /usr/share/X11/locale/en_US.UTF-8 /usr/share/X11/locale/en_US.utf8
ln -s /usr/share/X11/locale/en_US.utf8 /usr/lib/X11/locale/en_US.utf8
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.ru_RU.UTF-8
mv /etc/gtk/gtkrc.ru /etc/gtk/gtkrc.ru.backup
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.ru
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.en_US.UTF-8
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.en_US.utf8
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.en_US
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.en
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.iso-10646-1
ln -s /etc/gtk/gtkrc.utf8 /etc/gtk/gtkrc.ru_RU.utf8


а в /usr/share/X11/locale/locale.alias подредактировал секцию с описанием ru_RU кодировок:

ru ru_RU.UTF-8
ru_RU ru_RU.UTF-8
ru_RU.iso88595 ru_RU.ISO8859-5
ru_RU.ISO-8859-5 ru_RU.ISO8859-5
ru_RU.koi8r ru_RU.KOI8-R
ru_RU.cp1251 ru_RU.CP1251
ru_RU.microsoftcp1251 ru_RU.CP1251
ru_RU.microsoft-cp1251 ru_RU.CP1251
ru_RU.MICROSOFT-CP1251 ru_RU.CP1251
ru_RU.UTF-8 ru_RU.UTF-8
ru_RU.utf8 ru_RU.UTF-8


запустил xmms заново - такой же ужас. сделал для проверки:

export LANG="ru_RU.UTF-8" && xmms

оба-на!

gtk1 в мгновение ока вызубрил русский язык и готов "петь про вино, дороги и баб" на этом самом русском, что характерно... только вот наблюдать слова родного алфавита в окнах настройки программы и диалогах работы с файлами как-то ни разу не улыбалось. вполне достаточно корректного плейлиста и osd сообщений (osd плагинчик к xmms - очень душевная вещь). далее я принялся яростно топтать клаву, куроча системные настройки и зарываясь в дебри gtk1 параметров по самое не горюй, но, видимо когда Господь раздавал мозги - я стоял в очереди за бухлом - посему сие рытьё и швыряние говна на вентилятор к удобоваримым результатам не привели. остановился на самом примитивном способе решения поставленной задачи:

$ cat ~/bin/xmms_start

#!/bin/sh
export LC_CTYPE="ru_RU.UTF-8" && \
xmms

и вот оно, за что собственно и боролись:

кроме стандартного xmms-а вы видите плагин поиска изображений (xmms-coverviewer-0.11.tar.gz работает гораздо лучше прочих аналогов, что доводилось видеть. ищет сразу на 5-ти различных сайтах и результаты очень хороши), плагинчик для работы с cue и очень качественный эквалайзер (eq-xmms-0.7.tar.bz2). "за бортом" остались плагин поиска текстов песен (singit-0.1.36.tar.bz2), плагин визуализации (vumeter-0.9.2.tar.gz) и очень полезный плагин "нормализации" звука (volnorm-0.8.3.tar.gz). ежели кому будет интересно - постараюсь вспомнить откуда брал (или залью всё скопом на файлообменник).

шрифт в xmms-е:

-b&h-lucida sans unicode-medium-r-normal-*-*-80-*-*-p-*-iso10646-1

Когда ты уйдёшь,
Совсем далеко...
Я выпью вина,
Мне станет легко...
Потом закурю,
И выпущу дым...
Как в кайф иногда,
Пнуть xmms...

p.s. для тех, кто хочет громко посмеяться...

$ locale -a

C
POSIX
de_DE.utf8
en_US
en_US.iso88591
en_US.utf8
ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian

если даже мы сделаем export LANG="
ru_RU.utf8" && xmms - ничего путного не получится...

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

Aectann комментирует...

И всё это вместо того, чтобы поставить какой-нибудь клон(точнее не клон, скорее "продолжение ветки") xmms, например audacious(тем более он на gtk2) или bmp(beep media player)... М-да...

sda комментирует...

как это не печально, но до сих пор полной замены функционалу (и внешнему виду imho) xmms не существует. не так давно кто-то (очень похожий на Вашего покорного слугу) на ЛОР-е открыл трэд по выбору достойной замены. audacious выиграл, но с потерей функционала. в конце то концов я - старый преданный пользователь xmms.

пинки в сторону xmms раздаются очень часто, полагаю сугубо из-за кривизны рук. качество воспроизведения, стабильность в работе и потребление системных ресурсов являются критериями выбора. мне лениво разбивать ape/cue, mp3/cue, flac/cue. да и после остальных плееров остаётся (imho) какое-то ощущение "недо..." (как говорила Фаина Раневская)...

Анонимный комментирует...

xmms рулит :) особенно с xmms-mpg123-ja

Анонимный комментирует...

Спасибо большое за статью. Очень интересно . Прочел как за увлекательный роман (детектив). Сам же полез в xmms, который время от времени на тэгах mp3 любил выдавать абракадабру и выставил там.
-cronyx-helvetica-medium-r-normal-*-*-100-*-*-p-*-microsoft-cp1251
И убрал галочку с "использование многобайтных символов"

Вроде бы пока нормально.

Да локаль у меня "ru_RU.UTF-8".
Да и спасибки благодаря вам узнал про audacious. Правда он по памяти в два раза больше сжирает.
Респект там и все такое...