2018/4/7 追記
macOS High Sierraにアップグレードしたところ、一部のスクリプトが正常に動作しないところがありました(SSIDとbattery)。
- SSIDに関してはawkをちょっといじれば直ります。0.2秒考えればわかる様なやつなので割愛します。
- batteryですが、環境によりそのままでも正常に動作する方もいるかもしれません。正常に動作しない方は(僕の場合はtmux自体がまともに使用不可になるほど致命的な問題が発生しました)こちらを参考にしてください。Statusbar broken on High Sierra 10.13
(追記ここまで)
こんな感じ
左:ペイン番号、ホスト名
右:load average、音量、ssid、回線の強さ的なもの、バッテリー、日付、時刻
ターミナルのthemeはsolarized darkです。違うやつだと色が変わります、多分。
どのくらい普及してるのかわかりませんが、tmuxのステータスの設定はpowerlineを使っている人も多いかと思います。僕は暇つぶしみたいなものなのでなるべく自分で書いています
環境はMax OS X El Capitan (10.11.2)です。
load average以外はOS Xでないと動かないと思います。
#解説
以下を.tmux.conf
に書いてください。
すでにset-option -g status-right~~
の箇所が存在している方はまあ適当になんとかしてください
set-option -g status-right '#(get_load_average_tmux)#(get_volume_tmux)#(get_battery_tmux)#(get_ssid_tmux)#[fg=colour014] %H:%M | %m/%d %a#[default]'
#[fg=red]
みたいなのは色の設定です。その辺の設定はめんどくさいので割愛します。
この記事がとてもわかりやすので参考にしてください。
tmux の status line の設定方法
#(get_load_average_tmux)#(get_volume_tmux)#(get_battery_tmux)#(get_ssid_tmux)
👆の部分が今回の肝です。tmuxのステータスバーでは、#()
で囲うことで、シェルのコマンドが実行できます。そのコマンドの出力の一行目がステータスラインに反映されます。
つまり、👆のではget_load_average_tmux
get_volume_tmux
get_battery_tmux
get_ssid_tmux
の四つのコマンドを実行しているということです。そのコマンドは自分で書かなくてはいけません。
僕は今はすべてのコマンドをまとめて一つのコマンドにしていますが、とりあえずわかりやすいように今回はコマンドごとに分けて紹介します。分けてない現行で使っている設定はこちらです。
-
[tmux-status-line]
(https://github.com/arks22/dotfiles/blob/master/commands/tmux-status-line) -
[.tmux.conf]
(https://github.com/arks22/dotfiles/blob/master/.tmux.conf)
zshを使っている人は以下のスクリプトをコピペすればそのまま動くと思います。bashは音量のやつだけ対応してないです、改行抑制のためのecho
の-n
オプションが効かないのでそこだけ直せば動くと思います。
あるいは.tmux.confの#(get_battery_tmux)
みたいなやつを
#(sh path/to/get_battery_tmux.sh)
みたいな感じでやれば動くと思います。
##load average
まずload averageを知らない方はこちらの記事とかを参考に。
#!/bin/sh
echo "(#[fg=yellow]$(uptime | awk '{print $(NF-2)}')#[default]) "
uptimeで取ってきたやつをawkでペッとしてるだけです。
##音量
音量は少し凝っています。OS Xは音量が16段階なので、それに合わせて16段階で表示しています。muteの時はmuteってなります
#!/bin/zsh
if sound_info=$(osascript -e 'get volume settings') ; then
if [ "$(echo $sound_info | awk '{print $8}')" = "muted:false" ]; then
sound_volume=$(expr $(echo $sound_info | awk '{print $2}' | sed "s/[^0-9]//g") / 6 )
str=""
for ((i=0; i < $sound_volume; i++ )); do
str="${str}■"
done
for ((i=$sound_volume; i < 16; i++ )); do
str="${str} "
done
sound="#[bold][$str]#[default] "
else
sound="#[bold][ mute ]#[default] "
fi
echo $sound
fi
##SSIDとか
これはオリジナルも入ってますが、b4b4r07さんの設定に強く影響を受けています。というかほとんど真似してます。
ssid,接続状態,回線の強さ的なやつが一目でわかるので本当に便利です。
#!/bin/sh
airport_path="/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport"
if air_info=($(eval "$airport_path" -I | grep -E "^ *(agrCtlRSSI|state|SSID):" | awk '{print $2}')) ; then
rssi=${air_info[0]}
state=${air_info[1]}
ssid=${air_info[2]}
case "$state" in
"running" )
signals=(▁ ▂ ▄ ▆ █)
signal=""
rssi_=$(expr 5 - ${rssi} / -20)
for ((i=0; i < $rssi_; i++ )); do
signal="${signal}${signals[$i]}"
done
airport_=" #[underscore]${ssid}#[default] | ${signal} "
;;
"init" ) airport_="#[fg=yellow] ... " ;;
* ) airport_="#[fg=red] ✘ " ;;
esac
echo "#[bold]|#[default]${airport_}#[fg=colour014]|#[default] "
fi
##バッテリー
充電中、または残量が15%より大きい時は背景がcyan(僕の設定だとほとんど緑)で、15%以下かつ充電していない時は背景が赤になります。
充電中は⚡雷⚡マークが出ます
#!/bin/sh
if battery_info=$(/usr/bin/pmset -g ps | awk '{ if (NR == 2) print $2 " " $3 }' | sed -e "s/;//g" -e "s/%//") ; then
battery_quantity=$(echo $battery_info | awk '{print $1}')
if [[ ! $battery_info =~ "discharging" ]]; then
battery="#[bg=cyan,fg=black] ⚡ $battery_quantity% #[default]"
elif (( $battery_quantity < 16 )); then
battery="#[bg=red,fg=white] $battery_quantity% #[default]"
else
battery="#[bg=cyan,fg=black] $battery_quantity% #[default]"
fi
echo $battery
fi
どこか動かないところがあれば多分こちらのミスなのでコメントしていただけるとありがたいです。