Mostrando el nombre de la sesión de pantalla GNU y el título de la ventana en el indicador de comandos

11

¿Hay alguna forma de presentar el nombre de sesión de GNU Screen y el título de la ventana en el indicador del shell (digamos, el indicador Bash definido por PS1)?

brandizzi
fuente

Respuestas:

14

Screen proporciona algunas variables de entorno (de screen(1) página de manual):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

El "en el momento de la creación" significa que si renumera una ventana (usando el numbercomando de la pantalla ), no se informará al shell sobre el cambio y $ WINDOW seguirá siendo el mismo que el primer número de ventana.

Podrías usar algo como:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '
Arcege
fuente
1
¡Perfecto! Esto es lo que estaba buscando. Por cierto, hay una manera de obtener el título de la ventana, en lugar del número de la ventana?
brandizzi
No que yo sepa, no hay una API para la pantalla, y cuando emite comandos no hay salida, va a la ventana actual en la pantalla. Por ejemplo screen -xr 2466 -X windows.
Arcege
Aunque probablemente se encuentre dentro del caso de renumeración, ¿hay alguna forma de acceder al nombre de la ventana si está configurado con Ctrl-a A?
Thalis K.
1
Si GNU screense ha compilado con la -Qopción (consulta), puede ejecutar algunos comandos, como titley windowsy tener la visualización de datos en stdout, sin una nueva línea final.
Arcege
3

Siempre uso nombres de sesión de pantalla precisos. Luego puedo agregar STY env var de pantalla, con la identificación numérica eliminada (gracias dimo414), a PS1. No lo decoro con llaves ni nada porque no siempre estoy en una sesión. Ejemplo simple:

PS1='\u@\h ${STY#[0-9]*.} \w$ '
humor
fuente
1

Yo uso esto:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

elimina el número de proceso de ${STY}
incluye el número de ventana (como se menciona "en el momento de la creación")
incluye el título de la ventana (tal como se devuelve desde screen -Q title)

notas:

  • la primera vez que se ejecuta, screen -Qespera una tecla de retorno
  • configuro el título de la ventana con Ca CA y luego obtengo mi .profile para actualizar la solicitud
gotjosh
fuente
55
El uso ${STY#[0-9]*.}evita la necesidad de atravesarlo sed.
dimo414