понижение версии пакетов xcb-* до версии 1.11 в debian

Да, это работает как положено (символ x удаляется):

$ echo -e 'ax\bc'
ac

И да, это "похоже", что при этом теряется символ возврата на одну позицию:

$ echo -e 'abx\b'
abx

Обратите внимание, что символ возврата(\b)не совпадает с клавишей клавиатуры Backspace .
Клавиатура Backspace печатает ^?с Ctrl -VBackspace .
Многие редакторы интерпретируют это как возвращение и удаление персонажа. Это намного сложнее, чем просто напечатать пробел, вся строка вправо должна быть перемещена на один пробел (или два для широких символов, или ноль для управляющих символов )влево для каждого стираемого символа, или, если стертый символ представляет собой новую строку, переместите всю строку на одну строку вверх. Нет, это не простой символ, это целая процедура, связанная с клавишей Backspace .

Однако нет, на самом деле в консоль записывается символ возврата.
Посмотреть, что передается на консоль, можно с помощьюod:

$ echo -e 'abx\b' | od -vAn -tx1c
  61  62  63  08  0a
   a   b   x  \b  \n

Итак, что происходит?

  1. Строка abxзаписывается в консоль.
  2. Консоль выводит abxв линейный буфер.
  3. Символ \bзаписывается в консоль.
  4. Символ \bзаставляет буфер строки консоли перемещаться на один символ назад.
  5. символ \nвыводится на консоль.
  6. Буфер строки консоли перемещается на следующую строку (ничего не печатается ).
  7. На консоль выводится «конец строки».
  8. Консоль выводит весь строковый буфер.

Это стандартный способ работы консолей.

Взгляните на это:

$ printf 'abcdef\b\b\b \n'
abc ef

Символ dзаменяется пробелом.

Почему 'ax\bc'удаляет x?

Поскольку символ cперезаписывает символ x.

0
17.08.2019, 03:00
1 ответ

Я попытаюсь ответить на изначальную проблему, связанную с тем, что polybar не компилируется. Скорее всего, проблема не в версии, установленной через apt. Эта конкретная проблема возникает только в системах, где xcb-proto— это версия 1.12, а libxcb-randr0-dev— 1.11, но, поскольку все версии 1.13.1, все должно быть в порядке.

Проблема в ваших журналах:

ERROR: could not calc required_start_align of Struct "xcb.Setup

Появился раньше, здесь . Там проблема заключалась в том, что анаконда использовалась для python, что вызывало множество проблем.

В вики есть инструкции о том, как скомпилировать polybar при установленной анаконде (без удаления анаконды ). Самый простой способ, о котором сообщают люди, — это запустить conda deactivateв терминале, где вы компилируете polybar перед компиляцией. Также убедитесь, что вы полностью повторно загрузили архив tar -(или сделали чистый клон git )перед сборкой.

0
28.01.2020, 03:21

Теги

Похожие вопросы