[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xterm, Operating System Controls и utf8



    Здравствуйте,

Я попытался изменить заголовок окна xterm с помощью OSC,
использовав русские символы и кодировку utf8. Не получилось.

gr@tegri:~$ cat /etc/debian_version
5.0
gr@tegri:~$ xterm -version
XTerm(235)
gr@tegri:~$ echo $SHELL
/bin/bash
gr@tegri:~$ echo $PS1 cmd
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ cmd

gr@tegri:~$ locale | grep LC_CTYPE
LC_CTYPE="en_US.UTF-8"
gr@tegri:~$ xterm -T "синяя борода"

правильно показывает заголовок.
А вот так нет:

gr@tegri:~$ echo -ne "\e]2;синяя борода\a"

В заголовке окна каракули.
Каракули сильно схожи с тем, что показывает xmessage

gr@tegri:~$ xmessage "синяя борода"

кроме того, что некоторые символы в окне xmessage печатаются кодами
(\201 \217 \200)

Но, xmessage работает в кои8.
Тогда я попробывал так.
Изменил шрифт в настройках WM.
Изменил локаль при старте WM.
Ctrl+Alt+Backspace

gr@tegri:~$ locale | grep LC_CTYPE
LC_CTYPE="uk_UA.koi8-u"
gr@tegri:~$ echo -ne "\e]2;синяя борода\a"

все работает.

Файл ctlseqs.txt прочитал (по крайней мере до OSC включительно).
Вернулся в utf8. Запустил xev, нажал 'а' - получил код d0 b0.

gr@tegri:~$ perl -e 'print "\x{00d0}\x{00b0}\n"'
а
gr@tegri:~$ echo -ne "\e]2;\xd0\xb0\a"

Две уже знакомые загогулины.

Собственно вопрос, на каком этапе и кто принимает решение соединять
два байта (d0 b0) в один символ ('а') в заголовке окна терминала?
И можна ли этим процессом управлять?

--
Grygory Tertychny

Reply to: