tmux の Status-Line をカスタマイズする


作業場所への移動

Terminal

cd /usr/local/bin

起動時間を取得するスクリプトの作成

pc-running-time

#!/bin/sh
uptime | sed -e 's/.* up *\(.*\)/\1/' -e 's/\(.*\),.* user.*/\1/' | awk -F, '{print $1 $2}' | tr -s ' '

ロードアベレージを取得するスクリプトの作成

loadaverage

#!/bin/sh
uptime | awk -F\  '{print $(NF - 2),$(NF - 1),$NF}'

メモリ使用率を取得するスクリプトの作成

used-mem

#!/bin/sh

## debug mode
#DEBUG="yes"
if [ "$DEBUG" = "yes" ]; then
    set -x
fi

## vm_stat コマンドのチェック
if ! type vm_stat > /dev/null 2>&1; then
    exit 1
fi

#
# メモリ使用率(%)を求める
#   精度は小数点第1位までとする
#
calculate_used_mem() {
    # vm_stat
    #  page size of 4096 bytes
    VM_STAT=$(vm_stat)
    PAGES_FREE=$(echo "$VM_STAT" | awk '/Pages free/ {print $3}' | tr -d '.')
    PAGES_ACTIVE=$(echo "$VM_STAT" | awk '/Pages active/ {print $3}' | tr -d '.')
    PAGES_INACTIVE=$(echo "$VM_STAT" | awk '/Pages inactive/ {print $3}' | tr -d '.')
    PAGES_SPECULATIVE=$(echo "$VM_STAT" | awk '/Pages speculative/ {print $3}' | tr -d '.')
    PAGES_WIRED=$(echo "$VM_STAT" | awk '/Pages wired down/ {print $4}' | tr -d '.')

    # 空きメモリ
    FREE_MEM=$(($PAGES_FREE + $PAGES_SPECULATIVE))

    # 使用中メモリ
    USED_MEM=$(($PAGES_ACTIVE + $PAGES_INACTIVE + $PAGES_WIRED))

    # 合計
    TOTAL_MEM=$(($FREE_MEM + $USED_MEM))


    # 使用中メモリ(%)
    #  小数点第1位まで求めて後から小数点文字(ドット)を挿入
    USED_MEM_PERCENT=$(echo "$(($USED_MEM * 1000 / $TOTAL_MEM))" | sed -e 's/\(.*\)\([0-9]\)/\1.\2/' -e 's/^\./0./')
    echo "${USED_MEM_PERCENT}"

    # RET
    return 0
}

# Debug
debug() {
    if [ "$DEBUG" = "yes" ]; then
        echo "PAGES_FREE: $PAGES_FREE pages"
        echo "PAGES_FREE: $(($PAGES_FREE * 4096 / 1024 / 1024 )) MB"
        echo "PAGES_ACTIVE: $PAGES_ACTIVE pages"
        echo "PAGES_ACTIVE: $(($PAGES_ACTIVE * 4096 / 1024 / 1024)) MB"
        echo "PAGES_INACTIVE: $PAGES_INACTIVE pages"
        echo "PAGES_INACTIVE: $(($PAGES_INACTIVE * 4096 / 1024 / 1024)) MB"
        echo "PAGES_SPECULATIVE: $PAGES_SPECULATIVE pages"
        echo "PAGES_SPECULATIVE: $(($PAGES_SPECULATIVE * 4096 / 1024 / 1024 )) MB"
        echo "PAGES_WIRED: $PAGES_WIRED pages"
        echo "PAGES_WIRED: $(($PAGES_WIRED * 4096 / 1024 / 1024)) MB"
        echo "FREE_MEM: $FREE_MEM pages"
        echo "FREE_MEM: $(($FREE_MEM * 4096 / 1024 / 1024)) MB"
        echo "USED_MEM: $USED_MEM pages"
        echo "USED_MEM: $(($USED_MEM * 4096 / 1024 / 1024)) MB"
        echo "TOTAL_MEM: $TOTAL_MEM pages"
        echo "TOTAL_MEM: $(($TOTAL_MEM * 4096 / 1024 / 1024)) MB"
        echo "---------------"
        # 搭載メモリ(理論値): 8GBの場合
        echo "TOTAL_MEM: $((8 * 1024)) MB (Theoretical value)"
        echo "---------------"
        echo "USED_MEM: $(($USED_MEM * 1000 / $TOTAL_MEM)) %"
    fi
}

RET=0
## メイン処理 -----
calculate_used_mem
RET=$?

## デバッグ -----
#DEBUG=yes debug

## exit
exit $RET

作成したスクリプトに実行権限を渡す

Terminal

chmod u+x used-mem pc-running-time loadaverage

設定ファイルの編集

~/.tmux.conf

# ステータスライン - Right
set -g status-right '#[bg=yellow,bold] #(echo $LANG) #[bg=blue] up #(pc-running-time) #[bg=green] (#(loadaverage)) Mem #(used-mem)%% #[bg=red,bold] %y/%m/%d(%a)%H:%M:%S '

# Rightの表示領域最大長
set -g status-right-length 90

# 文字色と背景色
set -g status-fg white
set -g status-bg black

参考URL