Cómo imprimir las dimensiones de xterm en la barra de título?

¿Es posible imprimir las dimensiones de xterm en la barra de título? Me gustaría algo simple como WxH , que se actualiza cada vez que se cambia el tamaño de la terminal.

Puede get las dimensiones de xterm a través de las variables ambientales $COLUMNS y $LINES . A continuación, puede establecer el título a través de ciertos códigos de escape documentados, por ejemplo, en Bash Prompt HOWTO . Aquí hay un command único para establecer el título:

 # The title text is the stuff between ; and \a printf "\e]0;${COLUMNS}x${LINES}\a" 

No sé si hay una forma de actualizar el título cuando se cambie el tamaño de la window. Luego puede atrapar la señal SIGWINCH, que xterm envía cuando cambia el tamaño del terminal. Si usas Bash, ponlo en tu ~/.bashrc :

 function update_title { printf "\e]0;${COLUMNS}x${LINES}\a" } trap -- update_title SIGWINCH 

Advertencia: tengo la sensación de que podría haber algunas interacciones extrañas causadas por esta solución. Si observa que algunas aplicaciones de la terminal se comportan mal al cambiar el tamaño de la window, intente desactivar la trampa anterior y vea si el problema persiste.

Esta no es una function incorporada de xterm.

Si está ejecutando un shell interactivo en ese terminal, puede hacer que actualice el título de la window cada vez que muestra un post. Con todos los shells populares, las variables COLUMNS y LINES se actualizan para reflejar las dimensiones actuales del terminal. Puedes poner las secuencias de escape para establecer el título de la window como parte de tu post (deberás decirle a tu shell que la secuencia de escape tiene un ancho cero, de lo contrario el shell se confundirá con la position del cursor), o puedes arregla para imprimir la cadena antes de mostrar un post. En bash, para establecer el título de la window en el directory actual seguido del tamaño de la window, puede usar algo como

 set_term_title () { printf '\[\033]2;%s %dx%d\007\]' "$PWD" "$LINES" "$COLUMNS" } PROMPT_COMMAND="$PROMPT_COMMAND set_term_title" 

En zsh:

 set_term_title () { printf '\[\033]2;%s %dx%d\007\]' $PWD $LINES $COLUMNS } precmd+=set_term_title 

Si la window se networkingimensiona mientras el shell muestra una request, el shell recibe una señal SIGWINCH . Agregue un controller para esa señal.

 trap set_term_title SIGWINCH 

Si la window se networkingimensiona mientras se está ejecutando un command, el título solo se actualizará la próxima vez que el shell muestre un post. Solo el process en primer plano recibe una señal en ese caso, por lo que el intérprete de commands nunca se entera, solo puede consultar información actualizada cuando el command finaliza o se suspende y el shell reanuda la ejecución.

Si desea que el título se actualice de forma independiente de lo que se está ejecutando en el terminal, necesitará conectarlo a un componente externo. Un administrador de windows elegante debería ser capaz de hacerlo, pero la mayoría no puede hacerlo. En sawfish, puede ajustar rewrite-window-title para agregar las dimensiones de la window en lugar de aplicar una transformación basada en expresiones regulares.

Puede usar xdotool para get la información y cambiar el título:

 ( title="$(xdotool getwindowname "$windowid")" eval "$(xdotool getwindowgeometry --shell)" title="${title% *} ${WIDTH}x${HEIGHT}" xdotool set_window --name "$title" "$windowid" ) 

Tenga en count que xdotool getwindowgeometry devuelve dimensiones en píxeles, no en caracteres. No sé cómo reactjsr ante el cambio de tamaño de una window sin la cooperación del administrador de windows.