Powerline: Suporte para Gnome 3.22

Criado em 1 out. 2016  ·  44Comentários  ·  Fonte: powerline/powerline

Aqui está o que vejo após a atualização do Gnome 3.22:

output

ctmux linux sforeign bug bug

Comentários muito úteis

Uma vez que isso ainda é problemático, os usuários do OS X / macOS em uma versão nova do iTerm2 podem ter esse problema se o seu perfil estiver configurado para usar larguras de caracteres Unicode versão 9 - a solução aqui é apenas desmarcar a caixa de seleção em Preferências -> Perfis -> Texto -> Unicode.

Todos 44 comentários

O Powerline determina o que exibir, escrever isso corretamente no terminal é responsabilidade do tmux. Sua captura de tela parece que existe

  1. tmux pensando incorretamente que o terminal é uma célula mais largo do que realmente é.
  2. há um caractere para o qual tmux pensa que tem uma célula de largura e o emulador de terminal pensa que tem duas células de largura.

Powerline não pode fazer nada com isso. Você pode resolver o problema, escolhendo um outro conjunto de caracteres (por exemplo, conjunto top_level tema para ascii ou descobrir e substituir apenas um personagem ofender), mas este é um bug tmux.

Parece que @frol também está no Gnome. Não tive nenhum problema com o tmux 2.3.1, que foi atualizado de acordo com os gerenciadores de pacotes do Arch em 30 de setembro. Parece mais um problema com o terminal Gnome e talvez powerline devido a algum bug misterioso. tmux sem powerline funciona bem no Gnome 3.22.

Funciona bem com urxvt!

Mudança em powerline.json:

image

para

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

@mrmodolo Sim, isso ajuda!

@burningTyger Estou usando testing repos, então comprei Tmux 2.3.1 e Gnome 3.22 no mesmo dia e pensei que era incompatibilidade de Tmux, mas parece que estava errado.

@mrmodolo o símbolo do relógio é o culpado, mas o outro símbolo não está disponível na minha fonte powerline, então deixei a string anterior em branco, que também resolve por agora. Obrigado.

Na minha configuração, "" é o UTF8 char f017 .
Você pode imprimir o símbolo no VIM:
Mude para o modo de inserção;
CTRL + v e digite uf017

Qual caractere Unicode é o símbolo do relógio que causa problemas (em uma captura de tela com fundo amarelo em um comentário anterior)?

(Nota: U + F017 está na área de uso privado, no meu sistema ele é semelhante ao símbolo de til (~), mas talvez este seja o que aparece como um relógio em seu sistema ?? Se sim, então o que @ mrmodolo realmente recomenda mudar ??)

$ printf "% d \ n" \ 'image
8986
$ echo "obase = 16; 8986" | aC
231A

No tipo VIM:
CTRL + v e, em seguida, digite uf231A

Agora eu tenho isso!
image
Estou usando o Arch, mas o Ubuntu usa  no powerline por padrão!

Então ... eu entendi direito que:

  • com U + 231A funciona incorretamente,
  • com U + F017 em vez na mesma posição funciona corretamente?

(Ou é o contrário? Desculpe, estou completamente perdido.)

No meu caso, U + F017 na mesma posição funciona bem!
Meu arquivo de configuração é:

"Tempo": {
"antes": ""
},

Lendo o relatório de bug do gnome-terminal primeiro, achei que era um prompt do powerline bash / zsh que se comportou mal. Olhando para o screencast aqui, parece-me que é uma barra de status tmux powerline.

Alguém poderia me indicar a documentação mais curta que devo seguir para configurar o tmux para powerline (para que eu possa reproduzir este bug)? Eu nunca usei o powerline e dificilmente estou familiarizado com o tmux, e o Google dá muitos resultados. Estou feliz em depurar esse problema, mas não tenho tempo para me familiarizar com o ecossistema powerline. Desde já, obrigado!

Estou usando arco ...
yaourt -S python-powerline

Em .tmux.conf ...
run-shell "powerline-daemon -q"
fonte "/usr/lib/python3.5/site-packages/powerline/bindings/tmux/powerline.conf"

Se o problema é com o tmux pensar que U + 231A é mais largo, então o terminal GNOME pensa que é, então o problema deve ser perfeitamente reproduzível sem powerline: apenas faça com que alguma opção status- contenha este símbolo (nota: não tenho certeza se e quais otimizações de renderização o tmux usa, então status-right deve conter algo).

Obrigado pela informação!

Estou no Ubuntu Yakkety (gtk + gnome 3.20 / glib 2.50.0 [que pertence ao gnome 3.22] / glibc 2.24) com tmux-2.3 e gnome-terminal / vte git compilados manualmente. Não consigo reproduzir este bug (nem com powerline, nem com um simples status-right).

Se o problema é com o tmux pensando que U + 231A é mais amplo, então o terminal GNOME pensa

Isso não explicaria o problema atual. Então o tmux imprimiria um caractere a menos (porque ele pensa que um é mais largo) e, portanto, não ocuparia toda a largura. Eu acho que é o oposto: tmux pensa que é um caractere regular, enquanto gnome-terminal pensa que é de largura dupla. Portanto, ele transborda.

Conforme declarado em https://bugzilla.gnome.org/show_bug.cgi?id=762052#c30 , gnome-terminal (vte) usa g_unichar_iswide () em vez de wcwidth () (que é usado por xterm e provavelmente tmux também) .

Você poderia tentar estes:

echo $'\u231A' | wc -L

Isso imprime wcwidth () da glibc, presumo que a saída será 1.

echo ABCDE; echo a$'\u231A'cde

As letras maiúsculas e minúsculas estão alinhadas corretamente? Acho que no xterm sim, enquanto no gnome-terminal não (o relógio ocupa 2 células).

Você poderia compartilhar sua versão de glib e glibc? Meu palpite é que você tem o glib 2.50.1 cujo changelog diz "Atualizar o suporte a Unicode para Unicode 9.0.0" e talvez o Unicode 9.0.0 tenha aumentado a largura deste ponto de código.

Parece que meu palpite era verdade:

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

Os pontos de código do relógio e da ampulheta (e talvez muito mais) tornaram-se amplos pelo Unicode 9.0.0.

O gnome-terminal usa a nova largura se estiver executando com glib 2.50.1 ou mais recente, enquanto o xterm e o tmux dependem da glibc cuja versão mais recente (2.24) ainda usa a largura antiga.

Não consigo encontrar o relatório de bug gnome-terminal vinculado aqui, então aqui está para sua referência:
https://bugzilla.gnome.org/show_bug.cgi?id=772812
https://bugzilla.gnome.org/show_bug.cgi?id=772890

As letras maiúsculas e minúsculas estão alinhadas corretamente? Acho que no xterm sim, enquanto no gnome-terminal não (o relógio ocupa 2 células).

Há outra falha possível que eu tenho com este símbolo: tanto o konsole quanto o tmux pensam que tem uma célula de largura, mas a biblioteca de renderização de fontes não é (não pode ser?) Instruída a escalá-la para essa célula de exibição (o glifo real é tirado de outra fonte porque terminus não tem esse glifo), resultando em algo como

e is off compared to E

. Isso _não_ leva aos problemas que as pessoas estão enfrentando, mas pode fazer com que seu teste produza resultados incorretos.

O konsole é o único emulador que conheço que causa essa loucura de não se alinhar às células.

Em todos os outros emuladores, o símbolo do relógio pode transbordar para a célula de c , mas as letras estarão exatamente abaixo umas das outras: Cc, Dd, Ee ou (como espero no gnome-terminal com glib-2.50 .1) Dc e Ed serão alinhados.

Tenho o mesmo problema no cupim, com Arch x86 + tmux. No entanto, editar o ícone do relógio em themes / powerline.json não muda nada.

Apareceu hoje no Debian Stretch (testes). Estou usando LXDE e Tilda.
tmux versão 2-3-1
tilda versão 1.3.1-1 + b1

Eu realmente não sei em quais pacotes glib / glibc você está interessado, então fiz uma captura de tela:
zrzut ekranu z 2016-10-19 14-10-01

Atualização: Esta é a fonte _Liberation Mono para Powerline_, mas a saída do _Linux Libertine Mono_ é a mesma (e de outros também, suponho).

Editar: Editar ícone de relógio (U + 231A nem U + F017) também não funciona para mim. Alguma sugestão?
Edit2: Em minha captura de tela eu me enganei e usei wc -l vez de wc -L , mas neste exemplo a saída é a mesma. 1
Edit3: Finalmente, tmux + powerline funciona novamente, obrigado! Apagado sinal de relógio de/ usr / local / lib / ..., conforme mencionado acima e de arquivo local do meu usuário em
~/.local/lib/python2.7/site-packages/powerline/config_files/themes/powerline.json
Depois de reiniciar, funciona perfeitamente.

@dunemkk , o que você quer dizer com deletar o registro do relógio em / usr / local / lib?

@ s0r00t Foi mal. Atualizei meu comentário.
Agora vejo que este local não foi mencionado.

No começo, eu nem sabia que tinha powerline.json file no diretório do meu usuário. Eu descobri que o arquivo está em
/usr/local/lib/python2.7/dist-packages/powerline/config_files/themes/powerline.json
(já que usei powerline de ligação de localização semelhante para zsh / tmux / vim) e não me preocupei em verificar se está em algum outro lugar do meu sistema. Provavelmente é por isso que não funcionou. ; P

O commit de ahaasler me ajudou: https://github.com/ahaasler/dotfiles/commit/aafef1f7a0b5a1d398c8ac33062b5d223b9a25a6

Obrigado, eu consertei.

Funcionou como um encanto.
FYI: U + 23F2 com dois espaços atrás, parece com o antigo (exceto não quebrado). Apenas com um cronômetro em vez de um relógio.

Outros caracteres possíveis, mas não testados são:
U + 23F0 (despertador)
U + 1F570 (relógio da lareira)
U + 1F570 a U + 1F567 (div.

Obrigado pela solução!

Uma vez que isso ainda é problemático, os usuários do OS X / macOS em uma versão nova do iTerm2 podem ter esse problema se o seu perfil estiver configurado para usar larguras de caracteres Unicode versão 9 - a solução aqui é apenas desmarcar a caixa de seleção em Preferências -> Perfis -> Texto -> Unicode.

tendo esse problema de repente no Ubuntu 16.10 - na semana passada isso não aconteceu. esquisito. provavelmente algo mudou durante um apt-get update ou pip upgrade, não se lembra.

então qual é a correção oficial?

@binarykitchen mesmo aqui desde ontem também!

Encontrou uma solução

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

em seguida, edite ~ / .config / powerline / themes / powerline.json e encontre um bloco que diz:

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

Substituí o valor de "antes" por "◴"

@CVirus obrigado, mas no meu caso, já existia aquele char do relógio.

Mas eu não tinha o arquivo json na minha pasta .config ... poderia ser essa a causa?

E alguns comentários no topo deste tópico dizem para remover ou substituir o char do relógio. Confuso.

@binarykitchen substitua o relógio que você tem pelo que colei ou por qualquer outro caractere

@CVirus servirá - para esclarecer, eu tenho que reiniciar algo depois de substituir o caractere? minha máquina, a sessão zsh?

e para ser claro, isso só acontece durante uma sessão tmux para meu servidor remoto. e estou apenas corrigindo esse json do meu lado, o cliente, não do lado do servidor.

Avise-se me ...

@binarykitchen Você precisa reiniciar qualquer processo em que o powerline não shell ou tmux. Embora o zsh seja especial aqui: se você tiver o zpython instalado, o powerline ficará dentro de um processo shell. É pouco provável que isso aconteça, a menos que você mesmo instale o zpython.

@ ZyX-I obrigado - não faço ideia se eu tenho o zpython instalado e btw, eu instalei o powerline via apt-get, não pip.

e re minha última pergunta: "isso só acontece durante uma sessão tmux para meu servidor remoto" - como posso descobrir se o problema de powerline está no lado do cliente ou servidor?

@binarykitchen Qualquer aplicativo que use powerline, ele usa powerline no lado em que está sendo executado.

@ ZyX-I "Qualquer aplicativo que use powerline, ele usa powerline do lado em que está sendo executado."

-> meu problema é que, quando executo uma sessão SSH no tmux, começo a acreditar que é um problema com a instalação do powerline no servidor. mas quanto mais leio sobre powerline, acho que é um problema do lado do cliente. é muito abstrato ...

reiniciei minha máquina e o bug ainda acontece - alguma outra pista? ficando desesperado aqui ...

se eu não puder ter uma sessão SSH adequada em breve para verificar meu servidor, terei que desinstalar o powerline :(

Usei apenas o cronômetro em vez do relógio para consertar isso. Então, em /usr/share/powerline/config_files/themes/powerline.json , eu mudei essas linhas

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

para

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

@binarykitchen A configuração é tirada da linha de energia da máquina ligada. A exibição do símbolo acontece no cliente. A correção sugerida atualmente é alterar a configuração.

Se você não configurou os temas, apenas atualize todas as linhas de energia para desenvolver a versão, agora usa o tema sem símbolos problemáticos por padrão.

tentei consertar o cronômetro, mas não, isso não ajudou

Acho que vou desinstalar o powerline - desculpe, pessoal

@binarykitchen Talvez apenas use um espaço em vez de qualquer ícone de relógio.

@binarykitchen Apenas alterar o arquivo não é suficiente. Você também deve fazer o powerline usar a nova configuração (talvez reiniciar seja mais fácil). Talvez seja powerline-daemon usando as configurações antigas para matar que pode funcionar bem, no entanto, não tenho certeza.

@ liuhuiping2013 você ao menos leu os comentários acima?

Esta página foi útil?
0 / 5 - 0 avaliações