Muestra el subtítulo de la pantalla en la primera línea del terminal

8

Cuando comienzo una nueva terminal, el indicador está en la primera línea. Después de trabajar durante un tiempo (o ejecutar un comando que produce algún resultado), el indicador está en la última línea. Hay que permanecerá durante el resto de la sesión a menos que presiono Ctrl- l, ejecución clearo reseto algo similar.

Para obtener alguna medida de continuidad en el trabajo, lo uso screencon un truco para mostrar el nombre de la sesión en el título (uso el último con los dos screencomandos .screenrc).

Para evitar la sobrecarga cognitiva al saturar el área de trabajo, me gustaría que este título se muestre en la parte superior del terminal.

l0b0
fuente

Respuestas:

3

Eres afortunado, la pantalla honra guardar y resorear comandos. Entonces con bash se puede hacer.

Esto proporciona instrucciones sobre cómo mover el cursor con secuencias de escape especiales. Puedes escribir "Hello World!" a la esquina superior izquierda con esto:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

Explicado: El personaje \033[sguarda la posición actual del cursor, que es lo que queremos. Los tamaños de los terminales de pantalla b / c pueden variar mucho. Luego \033[2;0mueve el cursor a la tercera fila al primer carácter (comenzamos a contar en la esquina superior izquierda y con 0). Luego viene el texto y una pequeña ilustración de lo que es posible. Finalmente, el código \033[uvuelve a \033[scolocar el cursor donde fue emitido.

Este ejemplo mueve el cursor a la segunda fila porque al emitir el comando se imprimen 2 líneas nuevas, por lo que cuál es la tercera fila actual será la primera fila.

Puede usar esto junto con el título de la sesión que ya puede obtener mediante la explicación que ya ha vinculado.

Bananguin
fuente
2
Puede tputhacerlo para hacerlo de forma independiente del terminal, sin necesidad de codificar esos códigos de escape. Por ejemplo:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
Jim Paris, el
Estoy seguro de que cada shell tiene una forma de emitir estos caracteres, pero solo sé bash :-) Gracias por la entrada de tput, no sabía sobre eso.
Bananguin
@ user1129682: Lo intenté screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'y screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'ninguno funcionó. ¿Algunas ideas?
l0b0
Depende de lo que quieras. Si solo desea el título de la sesión actual en su título de pantalla, entonces lo haría screen -X caption always; screen -X caption string "%t". Si desea el título actual en la esquina superior izquierda, tendría que modificar su PS1variable de entorno para invitar a la tputmagia.
Bananguin
@ l0b0: y al leer esto nuevamente, tput cup 0 0 bien podría tener el doble problema de la nueva línea, por eso coloco mi texto en la tercera línea, no en la primera. ¿Has probado tput cup 2 0 o 0 2 ... todavía no has leído sobre tput ...
Bananguin