Aqui está o que vejo após a atualização do Gnome 3.22:
O Powerline determina o que exibir, escrever isso corretamente no terminal é responsabilidade do tmux. Sua captura de tela parece que existe
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:
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" \ '
8986
$ echo "obase = 16; 8986" | aC
231A
No tipo VIM:
CTRL + v e, em seguida, digite uf231A
Agora eu tenho isso!
Estou usando o Arch, mas o Ubuntu usa no powerline por padrão!
Então ... eu entendi direito que:
(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
. 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:
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?
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.