tmux.conf que incorpora um script de shell?

4

No meu tmux.conf , preciso iniciar uma sessão com o nome do usuário atual em maiúsculas (isso é realmente uma simplificação, mas serve como exemplo).

Imagine uma linha fictícia como essa, que é ilegal:

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

Como posso alcançar o objetivo acima?

    
por Robottinosino 05.10.2012 / 09:33

1 resposta

4

Na minha experiência, qualquer receita efetiva para obter um .tmux.conf para executar vários comandos condicionalmente que não dependa de cada instrução envolvida em if-shell faz uso de vários arquivos e o comando source-file .

Veja como faço perfis baseados em host:

# 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"

Conteúdo 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}"'

Agora você só precisa colocar configurações específicas do host em ${HOME}/.tmux/profiles/ e elas serão carregadas automaticamente.

Você pode usar uma técnica semelhante para uma sessão nomeada.

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

Conteúdo de ${HOME}/.tmux/functions/named-session.tmux :

new-session -n BananaWindow -s "${SESSION_NAME}" 'bash -l'
    
por 04.04.2015 / 08:18

Tags