Я начал использовать i3 и настроил некоторые ключевые слова для переименования рабочего пространства, как сказано в документации:

bindsym $mod+r i3-input -F 'rename workspace to "%s"' -P 'New name: '

Теперь я заметил, что не все входные данные принимаются: если я ввожу имя рабочего пространства, такое как «Mail & News», рабочее пространство переименовывается в пустую строку.

Я еще не нашел обходной путь для этого - может ли это быть ошибкой?

1 ответ1

2

(Этот ответ является результатом сообщения об ошибке, которое я опубликовал. Спасибо Airblader за быстрый ответ.)

Вы, вероятно, установили font в своей конфигурации i3 для использования Pango. Например:

font "pango:SomeFont 12"

Из руководства пользователя i3:

I3bar анализирует имена рабочих пространств как разметку Pango.

Разметка Pango основана на XML, так как такие символы, как & и < имеют особое значение, потому что они являются частью синтаксиса XML.

Если вы хотите, чтобы в вашем рабочем пространстве было указано & или < , вы должны экранировать их и написать &amp; или &lt; вместо:

rename workspace to "Mail&amp;News"
rename workspace to "ten&lt;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//&/&amp;}
# escape less-than sign also because of pango
wsname=${wsname//</&lt;}

# 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 на что-то, что в качестве предустановки предоставляет список вариантов, разделенных новой строкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .