LINUX.ORG.RU

В rxvt-unicode неправильно отображаются unicode символы

 , ,


0

1

Дистр CRUX.
В голом tty не в иксах всё отображается нормально.
Но в иксах в rxvt-unicode заместо unicode символов какие-то другие символы.
У меня в /etc/profile:

...
PS1='▶ ' # должно выглядеть как треугольничек
...
если не применять этот profile: Фото 1 (заметьте, что знак градуса (°) не отображается).
при этом, если в nano открыть /etc/profile, то там будет PS1=' ^v '.

если применить данный PS1, то: Фото 2 — неправильно отображается PS1 и °.

Мой .Xresources

В чём дело? Может, я неправильно приготовил шрифты?
rxvt-unicode собираю так

UPDATE

решение нашлось: прописать export LANG=en_US.UTF-8 в /etc/rc.d/xinit

★★★★★

Последнее исправление: teod0r (всего исправлений: 3)

Ответ на: комментарий от firkax

На втором фото кажется screen? Он может портить некоторые вещи, попробуй без него для начала сравнить.

tmux. пробовал без него — то же самое.

И зачем фото вместо скриншота?

пока не установил софт для скриншотов

teod0r ★★★★★
() автор топика
Ответ на: комментарий от firkax

пробовал поставить другой шрифт: видно, что шрифт поменялся, но такой же иероглиф как на 2-ом фото.

и кстати, если мышкой выделить этот неправильный символ, скопировать и вставить, то вставляется знак '?'.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от anonymous

У него там нормальный юникодный символ.

Зуб даёшь?

Если ты видишь хрень, то у тебя с браузером что-то не так.

Не гони, с браузером у меня всё так. И с (u)rxvt тоже. Если записать правильное значение в PS1, то оно нормально отображается. А вот если пытаться копипастить юникодный символ из Character Map в rxvt, то копируется какая-то хрень, заканчивающаяся на ^V. Насколько помню, у rxvt туева хуча настроек, в том числе возможность фильтровать текст, который вставляется в терминал. Вероятно, там что-то накосячено, поэтому первое, что нужно сделать — убедиться что в PS1 записано правильное значение.

debugger ★★★★★
()
Ответ на: комментарий от anonymous

У тебя UTF-8 не работает. На каком уровне — сказать сложно. Можно начать с вывода команды locale в проблемном терминале.

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
teod0r ★★★★★
() автор топика
Ответ на: комментарий от debugger

Открой свой /etc/profile в гуёвом редакторе и убедись что в PS1 записано правильное значение. У тебя там хрень какая-то.

убедился, там всё в порядке

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

Выглядит неплохо~~, если не считать кривого формата дат~~. Если религия не запрещает, поставь для сравнения эмулятор терминала на VTE, любой. Я бы предложил xterm, но там может потребоваться явное указание некоторых настроек, что совсем не упрощает эксперимент.

anonymous
()
Ответ на: комментарий от monkdt

Эта цветная иконка — дело рук сайта.

только у шрифтов nerd

В этих шрифтах действительно много не стандартизированного говна для истинных ценителей, но тут обычный треугольник, направленный вправо.

anonymous
()
Ответ на: комментарий от monkdt

у меня в другой системе (старая необновлённая гента) этот символ в PS1 отображается как просто треугольник (в гуёвом редакторе да, он больше похож на кнопку "плэй"). и кстати в проблемном терминале значок градуса не отображается нормально, об этом все забыли.

могу конечно другие юникод символы проверить, какие конкретно проверить?

teod0r ★★★★★
() автор топика
Ответ на: комментарий от anonymous

вобщем установил xterm, и юникодное многоточие стало выводиться корректно! даже в rxvt-unicode все юникод символы стали выводиться!
xterm притащил зависимости xorg-font-alias и xorg-font-misc-misc.
ещё я выполнил

mkfontdir /usr/share/fonts/X11/misc
mkfontscale /usr/share/fonts/X11/misc
сейчас попробую перевоспроизвести проблему, чтобы точно знать что именно починило

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

вобщем, выяснились новые обстоятельства: когда я руками из tty запускаю /etc/rc.d/xinit start (или restart) у меня все символы корректно отображаются, но когда /etc/rc.d/xinit start вызывается непосредственно инитом из /etc/rc.multi — юникодные символы отображаются некорректно.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

Думаю, что тут либо разница в переменных окружения, либо даже в самом факте аллокации tty. В любом случае, попробуй поставить хотя бы XDM — есть приличная вероятность, что это решит некоторое количество проблем.

anonymous
()
Ответ на: комментарий от anonymous

решение нашлось:
прописать export LANG=en_US.UTF-8 в /etc/rc.d/xinit
оно у меня итак экспортируется в консоли, но позже из profile, а оказалось оно нужно ещё раньше для старта иксов!

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

Выше всё равильно написали. А ты лучше читай доки. Да, в CRUX не всегда дефолт верный (в тот же скрипт на WiFi надо прописывать свой интерфейс), но при правильной настройке такие косяки не вылезают. И плевать, откуда ты Иксы стартуешь. Рекомендую пересобрать пакеты, так как если не подтягивалась локаль, то и собраны они были…

anonymous
()