i3 gerenciador de janelas: e comercial (&) em comandos

0

Eu comecei a usar o i3 e configurei alguns keyyms para renomear um espaço de trabalho, como diz nos documentos:

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

Agora percebi que nem todas as entradas são aceitas: se eu inserir um nome de área de trabalho como "Mail & Notícias", o espaço de trabalho será renomeado para uma string vazia.

Ainda não encontrei uma solução para isso - isso pode ser um bug?

    
por Dave Vogt 03.09.2015 / 09:42

1 resposta

2

(Esta resposta é o resultado do relatório de erros que publiquei. Obrigado ao Airblader pela resposta rápida.)

Você provavelmente configurou font na sua configuração do i3 para usar o Pango. Por exemplo:

font "pango:SomeFont 12"

Do Guia do usuário do i3 :

Workspace names are parsed as Pango markup by i3bar.

A marcação do Pango é baseada em XML, pois caracteres como & e < têm um significado especial porque fazem parte da sintaxe XML.

Se você deseja ter & ou < em seu nome de espaço de trabalho, é necessário escapar deles e escrever &amp; ou &lt; :

rename workspace to "Mail&amp;News"
rename workspace to "ten&lt;eleven"

É claro que isso é bastante difícil quando renomeando utilizando i3-input . Você pode usar dmenu para um método mais amigável.

Salve o seguinte script como workspace-renamer.sh e torne-o executável:

#!/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}\""

Em seguida, adicione isso à sua configuração do i3 :

bindsym $mod+r exec --no-startup-id /path/to/workspace-renamer.sh

Isso escapa automaticamente de \ , " , & e < , para que o nome digitado seja exibido no i3bar. Este é, obviamente, apenas um protótipo rápido e será melhorado. Você poderia, por exemplo, substituir echo -n por algo que forneça uma lista de opções separadas por nova linha como predefinidas.

    
por 21.09.2015 / 16:05