Hacer que los nombres de las ventanas tmux usen bash $PS1

Hacer que los nombres de las ventanas tmux usen bash $PS1

En Windows, conectándose a tmux1.8 en CentOS 7 a través de MobaXterm.

Idealmente, quiero que mis ventanas tmux tengan el nombre del último comando que escribí en cualquier panel que esté activo (como, cd /homeno bashcomo {pane_current_command}impresiones). No tengo idea de cómo hacer eso, así que estoy tratando de descubrir cómo hacer que el nombre coincida con el PS1del panel activo. Lo intentélas sugerencias en esta respuestacon esto en mi bashrc:

settitle() {
    printf "\033k$1\033\\"
}
basic_prompt='${USER:0:3}@${PWD:${#PWD}<15?0:(-15)}'
PROMPT_COMMAND='if [ $? -eq 0 ]; then ((counter++)); else counter=0; fi; settitle($basic_prompt)'
PS1='(\[\e[4m\]${USER:0:3}\[\e[0m\]@\[\e[34m\]${PWD:${#PWD}<15?0:(-15)}\[\e[m\])[$counter]\\$ '

y consiguió

bash: PROMPT_COMMAND: line 10: syntax error near unexpected token '$basic_prompt'

  1. ¿Hay alguna forma de nombrar una ventana tmux según el último comando completado?

  2. Si no es así, ¿cómo puedo configurarlo correctamente en my PS1, que es dinámico según mi nombre de usuario y ruta?

Respuesta1

Resuelto para tmux 2.6 y tmux 1.8 (probado en ambos).

Para tmuxmostrar un título de ventana dinámico, edítelo ~/.bashrca algo similar a lo siguiente:

settitle() {
    printf "\033k$1\033\\"
}
dynamic_window_title='${USER:0:3}@${PWD:${#PWD}<25?0:(-25)}'
PROMPT_COMMAND='if [ "$TERM" =~ "screen" ]; then eval prompt=$dynamic_window_title; settitle "$prompt"; fi;'

Y (probablemente) necesitarás ~/.tmux.confque tengas:

setw -g automatic-rename on

Según tengo entendido, settitle()básicamente se trata de cambiar el nombre de la ventana después de cada comando que ejecuta. No entiendo completamente cómo hace esto.

PROMPT_COMMANDes parte de bash que se ejecuta después de cada comando que ejecutas, lo que te permite hacer cosas interesantes comorealizar un seguimiento de cuántos comandos bash correctos ha escrito seguidos, además de nuestro uso aquí de redefinir continuamente nuestro título.

$TERMes una variable de entorno que para mí está configurada en "pantalla" (o algo así como "pantalla-256color") cuando estoy en tmux o en "xterm" cuando uso MobaXterm. Verificamos esto porque, de lo contrario, $PS1esencialmente se imprime doblemente cuando no está en tmux.

Debe dynamic_titleestar entre comillas simples; de lo contrario, se definirá cuando obtenga el suyo ~/.bashrcy no será dinámico. Sin embargo, es necesario que se defina en algún momento o, de lo contrario, se cambiará el nombre de la ventana literalmente ${USER:0:3}@${PWD:${#PWD}<15?0:(-15)}. Esto es lo que evalhace, crear una cadena que es literalmente lo que desea que sea el título de la ventana. Luego simplemente le damos esa cadena settitle(), entre comillas dobles para que los espacios funcionen correctamente.

información relacionada