Powerline: Soporte Gnome 3.22

Creado en 1 oct. 2016  ·  44Comentarios  ·  Fuente: powerline/powerline

Esto es lo que veo después de la actualización de Gnome 3.22:

output

ctmux linux sforeign bug bug

Comentario más útil

Dado que esto sigue siendo problemático, los usuarios de OS X / macOS en una versión nueva de iTerm2 podrían tener este problema si su perfil está configurado para usar anchos de caracteres de la versión 9 de Unicode; la solución aquí es simplemente desmarcar esa casilla de verificación en Preferencias -> Perfiles -> Texto -> Unicode.

Todos 44 comentarios

Powerline determina qué mostrar, escribir esto correctamente en el terminal es responsabilidad de tmux. Tu captura de pantalla parece que hay

  1. tmux pensando incorrectamente que la terminal es una celda más ancha de lo que realmente es.
  2. hay un carácter para el que tmux cree que tiene una celda de ancho y el emulador de terminal cree que tiene dos celdas de ancho.

Powerline no puede hacer nada con esto. Puede solucionar el problema eligiendo otro conjunto de caracteres (por ejemplo, establezca el tema top_level en ascii o descubra y anule solo un carácter ofensivo), pero esto es un error de tmux.

Parece que @frol también está en Gnome. No tuve ningún problema con tmux 2.3.1, que se actualizó según los administradores de paquetes de Arch el 30 de septiembre. Parece más un problema con el terminal Gnome y tal vez powerline debido a un error misterioso. tmux sin powerline funciona bien en Gnome 3.22.

¡Funciona bien con urxvt!

En powerline.json cambiar:

image

a

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

@mrmodolo ¡ Sí, esto ayuda!

@burningTyger Estoy usando testing repositorios, así que obtuve Tmux 2.3.1 y Gnome 3.22 el mismo día y pensé que era incompatibilidad con Tmux, pero parece que estaba equivocado.

@mrmodolo, el símbolo del reloj es el culpable, pero el otro símbolo no está disponible en mi fuente powerline, así que dejé la cadena anterior vacía, lo que también lo resuelve por ahora. Gracias.

En mi configuración, "" es el carácter UTF8 f017 .
Puede imprimir el símbolo en VIM:
Cambiar al modo de inserción;
CTRL + vy luego escriba uf017

¿Qué carácter Unicode es el símbolo del reloj que causa problemas (en una captura de pantalla de fondo amarillo en un comentario anterior)?

(Nota: U + F017 está en el área de uso privado, en mi sistema aparece de manera similar al símbolo de tilde (~), pero tal vez este sea el que aparece como un reloj en su sistema. Si es así, ¿qué hizo @ mrmodolo realmente recomiendo cambiar ??)

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

En tipo VIM:
CTRL + vy luego escriba uf231A

¡Ahora tengo esto!
image
Estoy usando Arch, ¡pero Ubuntu usa  en powerline por defecto!

Entonces ... lo entiendo bien que:

  • con U + 231A funciona incorrectamente,
  • con U + F017 en la misma posición, ¿funciona correctamente?

(¿O es al revés? Lo siento, estoy bastante perdido).

En mi caso, ¡U + F017 en la misma posición funciona bien!
Mi archivo de configuración es:

"hora": {
"antes": ""
},

Al leer primero el informe de error de gnome-terminal, pensé que era un indicador de línea de alimentación bash / zsh que se comportaba mal. Mirando el screencast aquí, me parece que es una barra de estado de powerline tmux.

¿Podría alguien señalarme la documentación más rápida y breve que debo seguir para configurar tmux en powerline (para poder reproducir este error)? Nunca he usado powerline, y tampoco estoy familiarizado con tmux, y Google da demasiados resultados. Estoy feliz de depurar este problema, pero no tengo tiempo para familiarizarme con el ecosistema powerline. ¡Gracias por adelantado!

Estoy usando arch ...
yaourt -S python-powerline

En .tmux.conf ...
ejecutar-shell "powerline-daemon -q"
fuente "/usr/lib/python3.5/site-packages/powerline/bindings/tmux/powerline.conf"

Si el problema es que tmux piensa que U + 231A es más ancho, entonces el terminal GNOME cree que lo es, entonces el problema debería ser perfectamente reproducible sin línea eléctrica: simplemente haga que alguna opción status- contenga este símbolo (nota: no estoy seguro de si y qué optimizaciones de renderizado usa tmux, por lo que status-right debería contener algo).

¡Gracias por la información!

Estoy en Ubuntu Yakkety (gtk + gnome 3.20 / glib 2.50.0 [que pertenece a gnome 3.22] / glibc 2.24) con tmux-2.3 y gnome-terminal / vte git compilados manualmente. No puedo reproducir este error (ni con powerline, ni con un simple status-right).

Si el problema es que tmux piensa que U + 231A es más ancho, entonces el terminal GNOME piensa

Esto no explicaría el problema actual. Entonces tmux imprimiría un carácter menos (porque cree que uno es más ancho) y por lo tanto no llenaría todo el ancho. Creo que es lo contrario: tmux piensa que es un carácter regular, mientras que gnome-terminal piensa que es un doble ancho. De ahí que se desborde.

Como se indica en https://bugzilla.gnome.org/show_bug.cgi?id=762052#c30 , gnome-terminal (vte) usa g_unichar_iswide () en lugar de wcwidth () (que es usado por xterm y probablemente también por tmux) .

¿Podrías probar estos?

echo $'\u231A' | wc -L

Esto imprime wcwidth () de glibc, supongo que la salida será 1.

echo ABCDE; echo a$'\u231A'cde

¿Las letras mayúsculas y minúsculas se alinean correctamente? Supongo que en xterm sí, mientras que en gnome-terminal no (el reloj ocupa 2 celdas).

¿Podría compartir su versión de glib y glibc? Mi conjetura es que tiene glib 2.50.1 cuyo registro de cambios dice "Actualizar el soporte Unicode a Unicode 9.0.0" y quizás Unicode 9.0.0 aumentó el ancho de este punto de código.

Parece que mi conjetura salvaje era cierta:

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

Los puntos de código del reloj y del reloj de arena (y tal vez muchos más) se ampliaron con Unicode 9.0.0.

gnome-terminal usa el nuevo ancho si se ejecuta con glib 2.50.1 o más reciente, mientras que xterm y tmux se basan en glibc cuya última versión (2.24) todavía usa el ancho anterior.

No puedo encontrar el informe de error de gnome-terminal vinculado aquí, así que aquí está para su referencia:
https://bugzilla.gnome.org/show_bug.cgi?id=772812
https://bugzilla.gnome.org/show_bug.cgi?id=772890

¿Las letras mayúsculas y minúsculas se alinean correctamente? Supongo que en xterm sí, mientras que en gnome-terminal no (el reloj ocupa 2 celdas).

Hay otra falla posible que tengo con este símbolo: tanto konsole como tmux piensan que tiene una celda de ancho, pero la biblioteca de representación de fuentes no está (¿no se puede?) Se le dice que la escale en esa celda de visualización (el glifo real se toma de otra fuente porque terminus no tiene este glifo), lo que resulta en algo como

e is off compared to E

. Esto _no_ conduce a los problemas que están experimentando las personas aquí, pero puede hacer que su prueba arroje resultados incorrectos.

konsole es el único emulador que conozco que tiene esta locura de no alinearse con las celdas.

En todos los demás emuladores, el símbolo del reloj puede desbordarse a la celda de c , pero las letras estarán exactamente una debajo de la otra: Cc, Dd, Ee o (como espero en gnome-terminal con glib-2.50 .1) Dc y Ed se alinearán.

Tengo el mismo problema en Termite, con Arch x86 + tmux. Sin embargo, editar el ícono del reloj en themes / powerline.json no cambia nada.

Apareció hoy en Debian Stretch (prueba). Estoy usando LXDE y Tilda.
tmux versión 2-3-1
tilda versión 1.3.1-1 + b1

Realmente no sé qué paquetes glib / glibc le interesan, así que hice una captura de pantalla:
zrzut ekranu z 2016-10-19 14-10-01

Actualización: Esta es la fuente _Liberation Mono para Powerline_, pero la salida de _Linux Libertine Mono_ es la misma (y también de otros, supongo).

Editar: Editar el icono del reloj (U + 231A o U + F017) tampoco funciona para mí. ¿Alguna sugerencia?
Edit2: En mi captura de pantalla, me equivoqué y usé wc -l lugar de wc -L , pero en este ejemplo la salida es la misma. 1.
Edit3: Finalmente, tmux + powerline funciona de nuevo, ¡gracias! Señal de reloj eliminada de/ usr / local / lib / ..., como se mencionó anteriormente y de el archivo local de mi usuario en
~/.local/lib/python2.7/site-packages/powerline/config_files/themes/powerline.json
Después de reiniciar, funciona como un encanto.

@dunemkk , ¿a qué te refieres con eliminar el inicio de sesión del reloj / usr / local / lib?

@ s0r00t Mi mal. Actualicé mi comentario.
Ahora veo que esta ubicación no se mencionó en absoluto.

Al principio, ni siquiera sabía que tenía el archivo powerline.json en el directorio de mi usuario. Encontré que el archivo está en
/usr/local/lib/python2.7/dist-packages/powerline/config_files/themes/powerline.json
(ya que usé una línea eléctrica de enlace de ubicación similar para zsh / tmux / vim) y no me molesté en verificar si está en otro lugar de mi sistema. Probablemente por eso no funcionó. ;PAGS

El compromiso de ahaasler me ayudó: https://github.com/ahaasler/dotfiles/commit/aafef1f7a0b5a1d398c8ac33062b5d223b9a25a6

Gracias, lo arreglé.

Trabajado como un encanto.
FYI: U + 23F2 con dos espacios detrás, se parece al anterior (excepto que no está roto). Solo con un reloj temporizador en lugar de un reloj.

Otros caracteres posibles, pero no probados son:
U + 23F0 (despertador)
U + 1F570 (reloj de
U + 1F570 a U + 1F567 (

¡Gracias por el trabajo!

Dado que esto sigue siendo problemático, los usuarios de OS X / macOS en una versión nueva de iTerm2 podrían tener este problema si su perfil está configurado para usar anchos de caracteres de la versión 9 de Unicode; la solución aquí es simplemente desmarcar esa casilla de verificación en Preferencias -> Perfiles -> Texto -> Unicode.

tener este problema repentinamente en ubuntu 16.10 - la semana pasada esto no sucedió. extraño. probablemente algo cambió durante una actualización de apt-get o una actualización de pip, no lo recuerde.

entonces, ¿cuál es la solución oficial?

@binarykitchen lo mismo aquí desde ayer también!

Encontré una solución

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

luego edite ~ / .config / powerline / themes / powerline.json y busque un bloque que diga:

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

Reemplacé el valor de "antes" con "◴"

@CVirus gracias pero en mi caso, ya existía ese reloj char.

Pero no tenía el archivo json en mi carpeta .config ... ¿podría ser esa la causa?

Y algunos comentarios en la parte superior de este hilo dicen que se elimine o reemplace el carácter del reloj. Confuso.

@binarykitchen reemplaza el reloj que tienes con el que pegué o con cualquier otro carácter

@CVirus servirá: para aclarar, ¿tengo que reiniciar algo después de reemplazar el personaje? mi máquina, la sesión de zsh?

y para ser claros, solo ocurre durante una sesión tmux en mi servidor remoto. y solo estoy corrigiendo ese json de mi lado, el cliente, no del lado del servidor.

Házmelo saber ...

@binarykitchen Necesita reiniciar cualquier proceso en el que se encuentre powerline. Lo más probable es que esto signifique powerline-daemon, pero no shell o tmux. Aunque zsh es especial aquí: si tiene zpython instalado, powerline vivirá dentro de un proceso de shell. No es muy probable que esto suceda a menos que instale zpython usted mismo.

@ ZyX-I gracias - no tengo idea si tengo instalado zpython y por cierto, he instalado powerline a través de apt-get, no pip.

y mi última pregunta: "solo ocurre durante una sesión tmux en mi servidor remoto" - ¿cómo puedo saber si el problema de la línea eléctrica está en el lado del cliente o del servidor?

@binarykitchen Cualquiera que sea la aplicación que usa powerline, usa powerline en el lado donde se está ejecutando.

@ ZyX-I "Cualquier aplicación que use powerline, usa powerline en el lado donde se está ejecutando".

-> mi problema es que, cuando ejecuto una sesión ssh sobre tmux, empiezo a creer que es un problema con la instalación de la línea eléctrica en el lado del servidor. pero cuanto más leo sobre powerline, supongo que es un problema del lado del cliente. es realmente abstracto ...

He reiniciado mi máquina y el error sigue ocurriendo. ¿Alguna otra pista? desesperado aquí ...

si no puedo tener una sesión ssh adecuada pronto para verificar mi servidor, tendré que desinstalar powerline :(

Solo usé el cronómetro en lugar del reloj para arreglar esto. Entonces en /usr/share/powerline/config_files/themes/powerline.json , cambié estas líneas

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

a

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

@binarykitchen La configuración se toma de la línea eléctrica de la máquina. La visualización del símbolo ocurre en el cliente. La solución sugerida actualmente es alterar la configuración.

Si no configuró los temas, solo actualice todas las líneas eléctricas para desarrollar la versión, ahora usa el tema sin símbolos problemáticos de forma predeterminada.

Probé la corrección del cronómetro pero no, eso no ayudó

creo que simplemente desinstalaré powerline - lo siento chicos

@binarykitchen Tal vez solo use un espacio en lugar de cualquier ícono de reloj.

@binarykitchen Solo cambiar el archivo no es suficiente. También debe hacer que powerline use la nueva configuración (tal vez reiniciar sea lo más fácil). Tal vez sea powerline-daemon usando la configuración anterior, por lo que matar eso puede funcionar también, sin embargo, no estoy seguro.

@ liuhuiping2013 ¿siquiera leíste los comentarios anteriores?

¿Fue útil esta página
0 / 5 - 0 calificaciones