Estoy tratando screen
de establecer mi xterm
título. Tengo esto trabajando fuera de screen
, pero screen
mantiene cualquier título que estaba en su lugar cuando lo comencé. Aquí está mi .bashrc
:
función bash_prompt_command () { # ¿Cuántos caracteres de $ PWD deben mantenerse? pwdmaxlen local = 25 # Indica que ha habido truncamiento dir local trunc_symbol = ".." dir local = $ {PWD ## * /} pwdmaxlen = $ (((pwdmaxlen <$ {# dir})? $ {# dir}: pwdmaxlen)) NEW_PWD = $ {PWD / # $ HOME / \ ~} pwdoffset local = $ (($ {# NEW_PWD} - pwdmaxlen)) if [$ {pwdoffset} -gt "0"] luego NEW_PWD = $ {NEW_PWD: $ pwdoffset: $ pwdmaxlen} NEW_PWD = $ {trunc_symbol} / $ {NEW_PWD # * /} fi exportar NEW_PWD } PROMPT_COMMAND = bash_prompt_command # Carta de colores @ http://wiki.archlinux.org/index.php/Color_Bash_Prompt caso "$ {TERM}} en "xterm") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' PS1 = "$ {TITLEBAR} \ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \] @ \ e [1; 33m \] \ h \ e [ 1; 32m \]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ \ [\ e [0m " ;; "pantalla") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' ESC = '\ [\ ek \ e \\\]' PS1 = "$ {TITLEBAR} \ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ $ {ESC} \ [\ e [0m " ;; *) PS1 = "\ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \] @ \ e [1; 33m \] \ h \ e [1; 32m \ ]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ \ [\ e [0m " ;; esac
Y aquí está mi .screenrc
:
hardstatus alwayslastline cadena de estado duro '% {= kg} [% {Y}% H% {g}] [% =% {= kw}%?% - Lw%?% {= b kR} (% {W}% n-% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {g} [% {B}% m.% d.% Y% {G}% c% {g}] ' termcapinfo xterm | xterms | xs | rxvt ti @: te @ termcapinfo xterm 'hs: ts = \ E] 2;: fs = \ 007: ds = \ E] 2; pantalla \ 007' altscreen en shelltitle '$ | bash'
¿Qué estoy haciendo incorrectamente?
Actualización (19 de agosto de 2010):
el problema es que no puede actualizar el título del terminal desde la pantalla cuando configura alwayslastline
. Entonces, mi solución fue simplemente rendirme y conformarme con un título predeterminado y útil para mis sesiones de pantalla. Mi actualizado .bashrc
y .screenrc
se puede encontrar en http://bitbucket.org/jsumners/rcfiles/src .
fuente
hardstatus alwayslastline
como lo hago parascreen
impidescreen
establecer elxterm
título. Ahora, si puedo descubrir cómo hacer ambas cosas al mismo tiempo.screen
que establezca el título de la ventana y luego inicie el programa. Y luego simplemente renunciar a los títulos de terminales dinámicos mientras se usascreen
. :(En realidad, hay una manera de enviar secuencias de escape directamente al xterm, pasando por la pantalla. No fue fácil de encontrar, pero desde el código de la pantalla (src / ansi.c) creo que ha estado allí desde 2005. Lo tengo trabajando en xterm, Gnome Terminal y putty. Encontré una nota en mintty source que indica que no funciona allí simplemente porque no manejan DCS (a menos que se haya solucionado recientemente).
De la documentación para la pantalla a continuación (en http://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html )
El ANSI DCS (Cadena de control del dispositivo) es un código de escape que se utiliza para enviar directamente a un terminal (creo que ese era su propósito original desde hace muchos años). Dicha cadena termina con un código de escape ST (String Terminator).
Envuelva la cadena para establecer el título de la ventana del terminal dentro de un bloque DCS..ST, y pasará por la pantalla y se actualizará correctamente, incluso con hardstatus alwayslastline.
DCS = \ 033P, ST = \ 033 \
Ejemplo: para actualizar el título de la ventana con el directorio de trabajo actual, use
¡Mejor tarde que nunca! Espero que esto ayude a alguien.
En caso de que esté equivocado acerca de los cambios en la fuente de pantalla: estoy ejecutando lo último desde git de sesión de pantalla, que a su vez está usando casi lo último desde git de pantalla (con algunos cambios específicos de sesión de pantalla). Pero los mensajes de registro datan de la pantalla de 2005 (puede ver los cambios realizados en esa confirmación con respecto al manejo de DCS si clona el repositorio de git de pantalla y usa el comando a continuación).
fuente
crb es correcto, pero
a) el código de escape que usa no me funciona. Debería ser en
\033k
lugar de\033_
. Verscreen (1)
debajo"TITLES (naming windows)"
. Entonces debería ser:b) este tipo de escape solo se utiliza para configurar el título de la ventana de pantalla. Una instancia de pantalla puede tener varias ventanas, cada una de ellas tiene un nombre, eso es lo que se muestra
hardstatus
ycaption
con lat
secuencia de escape.c) el escape normal de bash funciona si configura el terminfo correcto para xterm en
.screenrc
:(esto también
works on my machine
para masilla)Entonces, para establecer el título correcto tanto para la ventana de la pantalla como para el título de masilla / xterm, utilizo algo como:
para referencia: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html
fuente
No voy a responder la pregunta por completo, pero permítanme sugerir la forma de resolver el problema. Muchos gestores de ventanas admiten la especificación EWMH . También hay una herramienta de línea de comandos
wmctrl
que puede interactuar con ellos. Con esta herramienta, se puede cambiar fácilmente el título de la ventana activa con el siguiente comando:También es posible cambiar el icono de la ventana, el diseño y otras propiedades. La herramienta probablemente no funcionará para PuTTY ya que Windows no es compatible con EWMH, pero la mayoría de los sistemas Linux deberían aceptarlo.
Con este método no importa si lo usas
screen
o no.fuente
Las últimas 2 semanas he buscado en muchos foros y no he encontrado la respuesta a la pregunta:
¿Cómo hacer que todos los comandos salgan al título de Putty?
Se necesita para que otros programas sepan cuándo se realizan algunos trabajos en un servidor y si se hace bien o mal. Plink stdout y stdin no funcionaban, utilicé muchos ajustes con retrasos de espera y para algunos comandos que no funcionaron para otros. XSEL y XCLIP no se pudieron instalar en ese servidor.
Entonces aquí está la solución:
En el cliente de masilla y el servidor suse se ve así:
Esperemos que alguien pueda usar esto. Por supuesto, no funcionará para todos los tipos de servidores y configuraciones de cliente de masilla, pero la idea debería funcionar bien.
fuente