tmux.conf incorporant un script shell?

Dans mon tmux.conf , j'ai besoin de démarrer une session avec le nom de l'user actuel en majuscules (il s'agit en fait d'une simplification, mais ce sera un exemple).

Imaginez une ligne fictive comme celle-ci, qui est illégale:

 new-session -n BananaWindow -s "$(echo "${USER}" | tr '[:lower:]' '[:upper:]')" 'bash -l' 

Comment puis-je atteindre ce qui est prévu ci-dessus?

D'après mon expérience, toute recette efficace pour get un .tmux.conf afin d'exécuter plusieurs commands conditionnellement ne reposant pas sur chaque instruction enveloppée dans un if-shell utilise plusieurs files et la command source-file .

Voici comment je fais des profils basés sur l'hôte:

 # Use `run-shell` to resolve arbitrary shell commands, and set-environment to # make them available to tmux. # # Note that any variables set with `set-environment` are not available later in # the same conf file, but will be available interactively once the conf file # has loaded--and also in any sourced conf files. run-shell "tmux set-environment -g TMUX_PROFILE $(hostname)" # Here we're just defining a variable to reduce duplication later... set-environment -g TMUX_PROFILE_PATH "${HOME}/.tmux/profiles/${TMUX_PROFILE}.tmux" # The file that contains the instruction to source the proper conf file. We # have to put the command contained in this file in a separate file because of # that `set-environment` issue. source-file "${HOME}/.tmux/profiles/select-profile.tmux" 

Contenu de ${HOME}/.tmux/profiles/select-profile.tmux :

 if-shell "test -f ${TMUX_PROFILE_PATH}" 'source-file ${TMUX_PROFILE_PATH}' 'display-message "profile not found: ${TMUX_PROFILE_PATH}"' 

Il vous suffit de mettre des configurations spécifiques à l'hôte dans ${HOME}/.tmux/profiles/ , et elles seront chargées automatiquement.


Vous pouvez utiliser une technique similaire pour une session nommée.

 run-shell "tmux set-environment -g SESSION_NAME $(echo "${USER}" | tr '[:lower:]' '[:upper:]')" source-file "${HOME}/.tmux/functions/named-session.tmux" 

Contenu de ${HOME}/.tmux/functions/named-session.tmux :

 new-session -n BananaWindow -s "${SESSION_NAME}" 'bash -l'