UTF8 локаль в ArchLinux
Дизель выложил в свое время замечательную ссылочку на форуме по поднятию UTF8 локали в Arch Linux http://vl-lug.ru/forum/viewtopic.php?id=105
hint: ныне не активном, потому саму статью смотреть тут
Здесь я хочу что бы все желающие выдавали свои дополнения, оформенные ввиде статьи.
И так, положим начало…
Имена файлов
На старой koi8-r системе было довольно приличное количество файлов в русскими именами, естественно в кодировке koi8-r. Что делать, в UTF локали с такими именами файлов работать несподручно…
на решение пробелемы навел запуск такой команды:
LANG=ru_RU.KOI8-R ls | iconv -f koi8-r
Эта команда вывела список имен файлов с русскими именами как и положено, русскими буковками. Так родился скрипт:
#!/bin/bash
#
# Recode all file names in given codepage to UTF8
# on UTF8 system
#
CODE_FROM="KOI8-R"
recursive=0
scan_only=0
function parse_cmd_line()
{
prev_arg=""
need_next=0
for i in "$@"
do
if [ $need_next -eq 0 ]; then
case $i in
"-f")
prev_arg="-f"
need_next=1
;;
"-r")
recursive=1
;;
"-s")
scan_only=1
;;
esac
else
case $prev_arg in
"-f")
CODE_FROM=`echo $i | tr '[:lower:]' '[:upper:]'`
;;
esac
prev_arg=""
need_next=0
fi
done
}
function recode_file()
{
old_name="$@"
new_name=`echo $@ | iconv -f $CODE_FROM`
stat1=$?
mid_name=`echo $@ | iconv -f UTF8 2>/dev/null`
stat2=$?
if [ x"$old_name" != x"$new_name" -a $stat1 -eq 0 -a x"$mid_name" != x"$old_name" ]; then
if [ $scan_only -eq 0 ]; then
echo "Recode: $old_name -> $new_name"
mv "$old_name" "$new_name"
else
echo `pwd`"$@"
fi
fi
}
parse_cmd_line $@
oldIFS=$IFS
IFS=$'n'
files=`ls -1 --color=none`
for i in $files
do
if [ -d "$i" ]; then
if [ $recursive -eq 1 ]; then
name=`basename $0`
if [ `dirname $0` == "." ]; then
prefix=`pwd`
else
prefix=`dirname $0`
fi
cd "$i"
$prefix/$name "$@"
cd ..
fi
fi
recode_file "$i"
done
запускам сей скрипт из директории содержимое которой нужно привести к виду UTF8:
recodedir
Скрипт понимает ключи:
- -r говорит что перебрать все каталоги рекурсивно, начиная с текущего
- -s просканирует каталоги и выдаст список файлов которые нужно изменять
- -f <кодировка> задает кодировку из которой перекодировать, по умолчанию KOI8-R
Midnight Commander
Есть два вариант, mc-utf8 из репозитария community либо вот этот образец: http://pupykins.googlepages.com/mc.html
Автор mc-cru и автор порта в community - суть один человек, имя ему Сергей Пупыкин (надеюсь правильно написал фамилию) в том виде в котором идет mc-cru очень нелицеприятный. Что бы привести его в чувство, смержил utf8 патч с той версии что в репозитарии, плюс сделал пееркодировку в редакторе (но тут кроется бага… страшаная, которую пока лень решать, при перекодировке в редакторе не работает поиск и замена).
И так, по этой ссылке можно скачать правило для сборки для makepkg и патч:
На данный момент крайне рекоменду использовать mc-utf8 из комплекта репозитария community - слишком много багов в редактрое нашел, так что пользоваться почти нереально. А вот исправлять как-то очень лениво
Музыка, MP3
Да… Чем мне нравиться формат ogg vorbis так это тем что там стандартом закреплено использование utf для тагов, в случае mp3 - это не так, и, по большей части, теги там 8ми битные, либо cp1251 (чаще всего) или какой другой (в моем случае - koi8-r).
Так вот, многие, думаю, использую для прослушивание музыки старый добрый xmms, только вот что бы там нормально смотреть теги нужно патчить и еще раз патчить, что не есть удобно, да и со стабильностью потом большие проблемы - шаг влево, шаг вправо - sig fault (может это и мои кривые руки, но, если это так, это уже мои интимные подробности). Короче, для решения данной проблемы рекомендую заюзать BMP (Beep Media Player), который является суть переписью на GTK2 xmms’а.
Сий проигрыватель идет в репозитариях Arch и потому я сделал следующие команды:
[root]# pacman -R xmms
[root]# pacman -S bmp
Для себя можете еще поставить разные плагины для него (hint: pacman -Sl | grep bmp
)
Далее идем в Настройки -> Модули -> Медиа -> Выделяем ‘Модуль поддержки MPEG’ и нажимаем Параметры -> Идем на вкладку ‘Название’ Тут включаем опцию ‘Преобразовывать ID3-теги из локальной кодировки в уникод’ и поле ‘Кодировка ID3-тегов’ указать кодировку в которой идут собственно эти теги (название кодировки должно быть понятно iconv’у, наберите iconv -l и посмотрите там, если сомневаетесь). Собственно все. Могу сказать только одно - редактировать теги вы все равно не сможете в локальной кодировке, имхо, недоделка, но жить можно. Несколько плагинов для bmp можно найти тут: http://svn.pld-linux.org/cgi-bin/viewsvn/bmp-plugins/trunk а забрать так:
svn co http://svn.pld-linux.org/svn/bmp-plugins/trunk
Есть еще проигрыватель bmpx - продолжение bmp, но еще зовется beep-media-player2, но игрушка еще довольно сырая, к сожалению, и с перекодировкой тегов траблы, хотя этим, вроде, в нем занимается gstreamer, так что туда, наверное, копать нужно. Да и грузится оне непозволительно долго для проигрывателя.
Для редактирования тегов в любых кодировках, используйте прогу easytag, там и перекодировать все можно, если нужно.
Если есть что дополнить по другим проигрывателям, особенно консольным или тем что в комплекте различных DeskTop Env, плиз, отпишите тут.
Так, вот мой последний апдейт по проигывателям и проблемами русской кодировки - Audacious - проигрыватель, который в свою очередь является форком BMP (еще цепочку не потеряли, кто от кого форкнулся? :)), форк от последней существующей версии BMP - 0.9.7.1 (BMP больше не развивается, а вот Audacious довольно динамично идет), так что содержит и всю функциональность которая присутствует в оригинальном BMP плюс некоторые импрувменты, в частности поддержки кодировок тегов. Очень советую поставить и попробывать, тем более что он есть в extra репозитарии ArchLinux. Из минусов могу отметить только медленную загрузку листов - скорее всего он детектит файлы по содержимому, но как это отключить я не нашел. Поддрежка перекодировки тегов сделана везде, в отличии от BMP. Короче, поставте и посмотрите, лично мой выбор - Audacious