Powerline: Поддержка Gnome 3.22

Созданный на 1 окт. 2016  ·  44Комментарии  ·  Источник: powerline/powerline

Вот что я вижу после обновления Gnome 3.22:

output

ctmux linux sforeign bug bug

Самый полезный комментарий

Поскольку это все еще проблематично, пользователи OS X / macOS в новой версии iTerm2 могут столкнуться с этой проблемой, если ваш профиль настроен на использование ширины символов Unicode версии 9 - обходной путь здесь - просто снимите этот флажок в разделе Настройки -> Профили. -> Текст -> Юникод.

Все 44 Комментарий

Powerline определяет, что отображать, за правильную запись этого в терминал отвечает tmux. Ваш скриншот выглядит так, будто есть

  1. tmux неправильно считает, что терминал на одну ячейку шире, чем есть на самом деле.
  2. есть один символ, для которого tmux считает его шириной в одну ячейку, а эмулятор терминала считает, что он имеет ширину в две ячейки.

Powerline ничего с этим поделать не может. Вы можете обойти проблему, выбрав другой набор символов (например, установите для темы ascii или найдите и переопределите только один недопустимый символ), но это ошибка tmux.

Похоже, что @frol тоже есть в Gnome. У меня не было никаких проблем с tmux 2.3.1, который был обновлен согласно менеджерам пакетов Arch 30 сентября. Больше похоже на проблему с терминалом Gnome и, возможно, с powerline из-за какой-то загадочной ошибки. tmux без Powerline отлично работает в Gnome 3.22.

Прекрасно работает с urxvt!

В powerline.json измените:

image

к

            "time": {
                    "before": " "
            },

@mrmodolo Ага, это помогает!

@burningTyger Я использую testing , поэтому я получил Tmux 2.3.1 и Gnome 3.22 в тот же день и просто подумал, что это несовместимость с Tmux, но, похоже, я был неправ.

@mrmodolo, символ часов является виновником, но другой символ недоступен в моем шрифте Powerline, поэтому я просто оставил строку до пустой, что тоже решает ее. Спасибо.

В моей конфигурации «» - это символ UTF8 f017 .
Вы можете распечатать символ в VIM:
Перейти в режим вставки;
CTRL + v и затем введите uf017

Какой символ Unicode является символом часов, вызывающим проблемы (на скриншоте с желтым фоном в предыдущем комментарии)?

(Примечание: U + F017 находится в области частного использования, в моей системе он похож на символ тильды (~), но, возможно, это тот, который отображается как часы в вашей системе? Если да, то что сделал @ мрмодоло вообще рекомендую поменять ??)

$ printf "% d \ n" \ 'image
8986
$ echo "obase = 16; 8986" | до н.э
231A

В типе VIM:
CTRL + v и затем введите uf231A

Теперь у меня есть это!
image
Я использую Arch, но Ubuntu по умолчанию использует  в powerline!

Итак ... правильно ли я понимаю, что:

  • с U + 231A работает некорректно,
  • с U + F017 вместо этого в том же положении он работает правильно?

(Или все наоборот? Извини, я совсем потерялся.)

В моем случае U + F017 в той же позиции работает нормально!
Мой файл конфигурации:

"время": {
«до»: «»
},

Сначала, прочитав отчет об ошибке gnome-terminal, я подумал, что это некорректно вела себя командная строка bash / zsh. Глядя на скринкаст, мне кажется, что это строка состояния Powerline tmux.

Может ли кто-нибудь указать мне самую быструю-краткую документацию, которой я должен следовать, чтобы настроить tmux на powerline (чтобы я мог воспроизвести эту ошибку)? Я никогда не использовал Powerline, и я почти не знаком с tmux, а Google дает слишком много результатов. Я счастлив отладить эту проблему, но у меня нет времени знакомиться с экосистемой Powerline. Заранее спасибо!

Я использую арку ...
yaourt -S python-powerline

В .tmux.conf ...
запустить оболочку "powerline-daemon -q"
источник "/usr/lib/python3.5/site-packages/powerline/bindings/tmux/powerline.conf"

Если проблема связана с тем, что tmux считает, что U + 231A шире, тогда терминал GNOME считает, что это так, тогда проблема должна быть полностью воспроизводимой без powerline вообще: просто сделайте какой-нибудь параметр status- содержащий этот символ (примечание: я не уверен, и какие оптимизации рендеринга использует tmux, поэтому status-right должен что-то содержать).

Спасибо за информацию!

Я использую Ubuntu Yakkety (gtk + gnome 3.20 / glib 2.50.0 [который принадлежит gnome 3.22] / glibc 2.24) с tmux-2.3 и gnome-terminal / vte git, скомпилированными вручную. Я не могу воспроизвести эту ошибку (ни с powerline, ни с простым статусом).

Если проблема в том, что tmux считает, что U + 231A шире, тогда терминал GNOME считает

Это не объясняет текущую проблему. Тогда tmux будет печатать на один символ меньше (потому что считает, что один шире) и, следовательно, не будет заполнять всю ширину. Я думаю, что все наоборот: tmux считает, что это обычный символ, а gnome-terminal думает, что это двойной ширины. Отсюда и переполнение.

Как указано на https://bugzilla.gnome.org/show_bug.cgi?id=762052#c30 , gnome-terminal (vte) использует g_unichar_iswide () вместо wcwidth () (который используется xterm и, возможно, также tmux) .

Не могли бы вы попробовать:

echo $'\u231A' | wc -L

Это напечатает wcwidth () glibc, я предполагаю, что на выходе будет 1.

echo ABCDE; echo a$'\u231A'cde

Правильно ли совмещены прописные и строчные буквы? Я предполагаю, что в xterm они есть, а в gnome-terminal - нет (часы занимают 2 ячейки).

Не могли бы вы поделиться своей версией glib и glibc? Я догадываюсь, что у вас есть glib 2.50.1, в журнале изменений которого написано «Обновите поддержку Unicode до Unicode 9.0.0» и, возможно, Unicode 9.0.0 увеличил ширину этой кодовой точки.

Похоже, мое безумное предположение сбылось:

ftp://ftp.unicode.org/Public/8.0.0/ucd/EastAsianWidth.txt

2313..231F;N     # So    [13] SEGMENT..BOTTOM RIGHT CORNER

ftp://ftp.unicode.org/Public/9.0.0/ucd/EastAsianWidth.txt

2313..2319;N     # So     [7] SEGMENT..TURNED NOT SIGN
231A..231B;W     # So     [2] WATCH..HOURGLASS
231C..231F;N     # So     [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER

Кодовые точки часов и песочных часов (и, возможно, намного больше) стали более широкими благодаря Unicode 9.0.0.

gnome-terminal использует новую ширину, если он работает с glib 2.50.1 или новее, тогда как xterm и tmux полагаются на glibc, последняя версия которой (2.24) по-прежнему использует старую ширину.

Я не могу найти связанный здесь отчет об ошибке gnome-terminal, поэтому вот он для вашей справки:
https://bugzilla.gnome.org/show_bug.cgi?id=772812
https://bugzilla.gnome.org/show_bug.cgi?id=772890

Правильно ли совмещены прописные и строчные буквы? Я предполагаю, что в xterm они есть, а в gnome-terminal - нет (часы занимают 2 ячейки).

Есть еще один возможный сбой, который у меня есть с этим символом: и konsole, и tmux думают, что он имеет ширину в одну ячейку, но библиотеке рендеринга шрифтов не сказано (нельзя?) Масштабировать его в эту ячейку дисплея (фактический глиф взят из другой шрифт, потому что конечная точка не имеет этого глифа), в результате получается что-то вроде

e is off compared to E

. Это _не_ приводит к проблемам, с которыми здесь сталкиваются люди, но из-за этого ваш тест может дать неверные результаты.

konsole - единственный известный мне эмулятор, который делает это безумие, не выравниваясь по ячейкам.

Во всех других эмуляторах символ часов может вылиться в ячейку c , но буквы будут располагаться точно друг под другом: либо Cc, Dd, Ee, либо (как я ожидаю в gnome-terminal с glib-2.50 .1) Dc и Ed выровняются.

У меня такая же проблема на Termite, с Arch x86 + tmux. Однако редактирование значка часов в themes / powerline.json ничего не меняет.

Появился сегодня в Debian Stretch (тестирование). Использую LXDE и Тильду.
tmux версии 2-3-1
тильда версия 1.3.1-1 + b1

Я действительно не знаю, какие пакеты glib / glibc вам интересны, поэтому я сделал снимок экрана:
zrzut ekranu z 2016-10-19 14-10-01

Обновление: это шрифт _Liberation Mono для Powerline_, но вывод _Linux Libertine Mono_ такой же (и других, я полагаю).

Изменить: редактирование значка часов (U + 231A или U + F017) для меня тоже не работает. Какие-либо предложения?
Edit2: На моем снимке экрана я ошибся и использовал wc -l вместо wc -L , но в этом примере результат такой же. 1.
Edit3: Наконец, tmux + powerline снова работает, спасибо! Знак часов удален из/ usr / local / lib / ..., как указано выше и из локальный файл моего пользователя в
~/.local/lib/python2.7/site-packages/powerline/config_files/themes/powerline.json
После перезапуска работает как шарм.

@dunemkk , что вы имеете в виду, удаляя вход с часами в / usr / local / lib?

@ s0r00t Моя плохая. Обновил мой комментарий.
Теперь я вижу, что это место вообще не упоминалось.

Сначала я даже не знал, что у меня есть файл powerline.json каталоге моего пользователя. Я обнаружил, что файл находится в
/usr/local/lib/python2.7/dist-packages/powerline/config_files/themes/powerline.json
(поскольку я использовал аналогичную привязку местоположения для zsh / tmux / vim) и не стал проверять, есть ли это где-то еще в моей системе. Видимо поэтому не получилось. ;П

Коммит ahaasler помог мне: https://github.com/ahaasler/dotfiles/commit/aafef1f7a0b5a1d398c8ac33062b5d223b9a25a6

Спасибо, исправил.

Работал как шарм.
К вашему сведению: U + 23F2 с двумя пробелами позади, выглядит так же, как старый (только не сломанный). Только с таймером вместо часов.

Другие возможные, но не проверенные символы:
U + 23F0 (будильник)
U + 1F570 (
U + 1F570 - U + 1F567 (

Спасибо за работу!

Поскольку это все еще проблематично, пользователи OS X / macOS в новой версии iTerm2 могут столкнуться с этой проблемой, если ваш профиль настроен на использование ширины символов Unicode версии 9 - обходной путь здесь - просто снимите этот флажок в разделе Настройки -> Профили. -> Текст -> Юникод.

внезапно возникла эта проблема на ubuntu 16.10 - на прошлой неделе этого не произошло. странно. возможно, что-то изменилось во время обновления apt-get или обновления pip, не помню.

так какое официальное исправление?

@binarykitchen тоже здесь со вчерашнего дня!

Нашел решение

cp /usr/share/powerline/config_files/themes/powerline.json ~ / .config / powerline / themes /

затем отредактируйте ~ / .config / powerline / themes / powerline.json и найдите блок, в котором говорится:

                "time": {
                        "before": "  "
                },

Я заменил значение "до" на "◴"

@CVirus, спасибо, но в моем случае это уже было.

Но у меня не было файла json в папке .config ... может быть, это причина?

И некоторые комментарии в верхней части этой ветки говорят об удалении или замене часового символа. Смущенный.

@binarykitchen замените часы, которые у вас есть, на те, которые я вставил, или на любой другой символ

@CVirus подойдет - уточнить, нужно ли перезапускать что-то после замены персонажа? моя машина, сеанс zsh?

и, чтобы быть ясным, это происходит только во время сеанса tmux на моем удаленном сервере. и я исправляю этот json только на моей стороне, на клиенте, а не на стороне сервера.

дай мне знать ...

@binarykitchen Вам необходимо перезапустить любой процесс, в котором находится powerline. Скорее всего, это означает powerline-daemon, но не оболочку или tmux. Хотя здесь zsh особенный: если у вас установлен zpython, powerline будет жить внутри процесса оболочки. Это вряд ли произойдет, если вы не установили zpython самостоятельно.

@ ZyX-I спасибо - не знаю, установлен ли у меня zpython, и, кстати, я установил powerline через apt-get, а не через pip.

И мой последний вопрос: «это происходит только во время сеанса tmux с моим удаленным сервером» - как я могу узнать, возникла ли проблема с Powerline на стороне клиента или сервера?

@binarykitchen Какое бы приложение ни использовало Powerline, оно использует Powerline на той стороне, на которой оно запущено.

@ ZyX-I "Какое бы приложение ни использовало Powerline, оно использует Powerline на той стороне, где оно запущено".

-> Моя проблема в том, что, когда я запускаю сеанс ssh через tmux, я начинаю полагать, что это проблема с установкой Powerline на стороне сервера. но чем больше я читаю о Powerline, я думаю, это проблема на стороне клиента. это действительно абстрактно ...

перезапустили мою машину, но ошибка все еще возникает - есть ли другие подсказки? отчаялся здесь ...

если у меня скоро не будет правильного сеанса ssh для проверки моего сервера, мне придется удалить powerline :(

Я просто использовал секундомер вместо часов, чтобы исправить это. Итак, в /usr/share/powerline/config_files/themes/powerline.json я изменил эти строки

"time": {
    "before": "◴ "
},

к

"time": {
    "before": "⏱ "
},

@binarykitchen Конфигурация взята из машины, которая включена. Отображение символа происходит на клиенте. Предлагаемое в настоящее время исправление - изменение конфигурации.

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

попробовал исправить секундомер, но нет, это не помогло

Думаю, я просто удалю Powerline - извините, ребята

@binarykitchen Может быть, просто используйте пробел вместо значков часов.

@binarykitchen Недостаточно просто изменить файл. Вы также должны заставить powerline использовать новую конфигурацию (возможно, перезагрузка будет проще). Возможно, это powerline-daemon, использующий старые настройки, так что это тоже может сработать, но я не уверен.

@ liuhuiping2013 ты вообще читал комментарии выше?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги