(Этот ответ является результатом сообщения об ошибке, которое я опубликовал. Спасибо Airblader за быстрый ответ.)
Вы, вероятно, установили font
в своей конфигурации i3 для использования Pango. Например:
font "pango:SomeFont 12"
Из руководства пользователя i3:
I3bar анализирует имена рабочих пространств как разметку Pango.
Разметка Pango основана на XML, так как такие символы, как &
и <
имеют особое значение, потому что они являются частью синтаксиса XML.
Если вы хотите, чтобы в вашем рабочем пространстве было указано &
или <
, вы должны экранировать их и написать &
или <
вместо:
rename workspace to "Mail&News"
rename workspace to "ten<eleven"
Конечно, это довольно громоздко при переименовании с использованием i3-input
. Вы можете использовать dmenu
для более удобного метода.
Сохраните следующий скрипт как workspace-renamer.sh
и сделайте его исполняемым:
#!/bin/bash -
# get name from dmenu.
$wsname=$(echo -n | dmenu)
# escape backslashes to avoid inadvertently escaping other characters
wsname=${wsname//\\/\\\\}
# escape double quotes as the name is passed inside double quotes to i3-msg
wsname=${wsname//\"/\\\"}
# escape ampersand because of pango
wsname=${wsname//&/&}
# escape less-than sign also because of pango
wsname=${wsname//</<}
# call i3-msg to rename workspace
i3-msg rename workspace to "\"${wsname}\""
Затем добавьте это в вашу конфигурацию i3 :
bindsym $mod+r exec --no-startup-id /path/to/workspace-renamer.sh
Это автоматически экранирует \
, "
, &
и <
, так что имя, которое вы вводите, отображается на панели i3bar. Это, конечно, только быстрый прототип и будет улучшен. Например, вы можете заменить echo -n
на что-то, что в качестве предустановки предоставляет список вариантов, разделенных новой строкой.