![tmux가 tmux.conf에서 변수를 가져오지 못하는 이유는 무엇입니까?](https://linux55.com/image/106237/tmux%EA%B0%80%20tmux.conf%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%A4%EC%A7%80%20%EB%AA%BB%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
색상을 별도의 파일로 추상화하여 tmux 구성을 더욱 모듈화하려고 합니다. 해당 파일을 가져온 다음 여기에 정의된 변수를 내 tmux 테마로 사용하고 있습니다.
# part of my tmux.conf:
source '~/.tmux/themes/gruvbox'
# status bar
set -g status "on"
set -g status-attr "none"
set -g status-justify "left"
set -g status-bg $TMUX_STATUS_BG
# status left
set -g status-left-attr "none"
set -g status-left-length "100"
# status right
set -g status-right-attr "none"
set -g status-right-length "100"
# window
setw -g window-status-attr "none"
setw -g window-status-separator ""
# this isn't picked up
setw -g window-status-format "#[fg=$TMUX_WINDOW_STATUS_FG,bg=$TMUX_WINDOW_STATUS_BG] #I | #W "
# active window
setw -g window-status-activity-attr "none"
# this isn't picked up either
setw -g window-status-current-format "#[fg=$TMUX_ACTIVE_WINDOW_STATUS_FG,bg=$TMUX_ACTIVE_WINDOW_STATUS_BG] #I | #W "
# panes
set -g pane-active-border-fg $TMUX_ACTIVE_BORDER_FG
set -g pane-border-fg $TMUX_BORDER_FG
# command bar
set -g message-command-fg $TMUX_MESSAGE_COMMAND_FG
set -g message-command-bg $TMUX_MESSAGE_COMMAND_BG
set -g message-fg $TMUX_MESSAGE_FG
set -g message-bg $TMUX_MESSAGE_BG
여기가 색상을 설정하는 곳이에요
# ~/.tmux/themes/gruvbox
TMUX_STATUS_BG="#3c3836"
TMUX_ACTIVE_BORDER_FG="#fabd2f"
TMUX_BORDER_FG="#3c3836"
TMUX_MESSAGE_COMMAND_FG="#a89984"
TMUX_MESSAGE_COMMAND_BG="#3c3836"
TMUX_MESSAGE_FG="#a89984"
TMUX_MESSAGE_BG="#3c3836"
# these aren't picked up, the above vars are
TMUX_WINDOW_STATUS_FG="#a89984"
TMUX_WINDOW_STATUS_BG="#3c3836"
TMUX_ACTIVE_WINDOW_STATUS_FG="#282828"
TMUX_ACTIVE_WINDOW_STATUS_BG="#fabd2f"
tmux가 작동하지 않는 창 상태 변수를 제외하고는 대부분 작동합니다. 다른 구문이 필요합니까? 그렇다면 어느 것입니까?
답변1
따라서 창 상태 설정에서는 변수 보간을 허용하지 않습니다. 그러나 스크립트를 사용하여 창 구성을 반영할 수 있습니다. 이 스크립트 변수에서할 수 있는사용. 그래서 당신은 .tmux.conf
다음과 같이 할 수 있습니다 :
setw -g window-status-current-format "#(~/.tmux/window.sh current)"
setw -g window-status-format "#(~/.tmux/window.sh)"
window.sh
(또는 다른 스크립트) 에서 :
#!/bin/bash
if [[ $1 == "current" ]]; then
echo "#[fg=${TMUX_CURRENT_WINDOW_FG},bg=${TMUX_CURRENT_WINDOW_BG}] #I | #W "
else
echo "#[fg=${TMUX_WINDOW_FG},bg=${TMUX_WINDOW_BG}] #I | #W "
fi
실제로 작동합니다.