tmuxがtmux.confから変数を取得できないのはなぜですか?

tmuxがtmux.confから変数を取得できないのはなぜですか?

色を別々のファイルに抽象化して、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

実際に動作します。

おすすめ記事