はじめに
私はプライベートでmacOS Sierraを使用していて、ターミナルはこんな感じに設定しています。
題名にもある通り、tmuxとpowerlineを使ってます。
しかしWindowsのコマンドプロンプトはどうしても使いづらいです。
「あ~業務端末もMacにしてくれないかな~」と嘆いていましたが、偉大な先輩たちはそんな文句も言わずWindowsでもイケてるターミナルを構築しているんですよね。
そういうわけで、この画像に限りなく近いターミナルをWindowsでも構築することに。
※macで構築する場合はADACHIN SERVER Labにわかりやすく書いてあります。
cmderを入れるとよい
偉大な記事です。もうこれだけで全然違います。こちらの記事を参考にまずはcmdから離れます。
記事にも記載されてますが、mini版を落としました。
・ Bash on Windows + cmderでまともなターミナルを獲得する(tmuxに関する追記有り)
・ cmderをダウンロード
Macではzshを使用しているので、Windowsでも合わせてzshをデフォルト起動に設定しました。
zshをインストールしていない場合は以下の手順でできます。
C:\Users\username
入 bash #bashと入力すればbashが起動します
root@DESKTOP-XXX:/mnt/c/Users/username# apt-get install zsh
あとは参考記事に記載されたとおり、zshをデフォルトで起動する設定を加えればOKです。
powerlineのインストール
powerlineはpipを使ってインストールするので、pipが入ってない場合は先にインストールします。
$ apt-get install python-pip
その後、powerlineをインストールします。
pip install powerline-status
すると、以下の場所にディレクトリが配置されます。
/usr/local/lib/python2.7/dist-packages/powerline
さらに下の階層にある、config_filesというディレクトリをホームディレクトリにコピーしたいので先にディレクトリを作成しておきます。
$ mkdir -p ~/.config/powerline
ディレクトリを移動して、ソースをコピーします。
$ cp -r * ~/.config/powerline
これでホームディレクトリでconfigを自由に編集できますね。
設定ファイル
ホームディレクトリにコピーしたファイルをちょっといじってみます。
$ vim powerline.json
70行目あたりから天気の記述があると思います。ターミナルに天気を表示させたい場合、locationの記述が必要らしいのでわかりやすく86行目に追記しておきます。
"location_query": "tokyo, japan"
Tmuxをインストール
以下のコマンドでインストールします。
$ apt-get install tmux
$ tmux -V
tmux 1.8
バージョンが見れたので無事インストール完了です。
以下のコマンドを叩くと、起動するはずです。
$ tmux
緑色のバーが出てきたらOKです。
設定ファイル
次はconfigファイルを新規作成して、細かい設定をしていきます。
$ vim ~/.tmux.conf
bind r source-file ~/.tmux.conf \; display-message "Reload Config!!"
set-window-option -g mode-keys vi
unbind-key C-b
set-option -g prefix C-s
bind-key C-s send-prefix
#mouse_linux
#set -g mouse on
setw -g window-status-current-fg blue
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
#tmux powerline
run-shell "powerline-daemon -q"
source "/usr/local/lib/python2.7/dist-packages/powerline/bindings/tmux/powerline.conf"
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'
set-option -g status-position top
キーバインドをデフォルトの(Ctrl-b)から(Ctrl-s)変えています。
次に一度exitでTmuxから離脱して、再度Tmuxを起動します。
すると今変更したconfigがリロードされるので、ステータスバーの表示が変わると思います。
※次回以降のリロードはキーバインドで設定したCtrl-s + rでリロードできちゃいます。
$ exit
$ tmux
画像をみてもらえばわかると思いますが、右のステータスバーの表示がuptime-ロードアベレージ-日付-hostnameになっています。Macではここを天気-バッテリー残量-日付-時間-hostnameにしてるので、ここも似たような感じに設定変更します。
以下の内容で記述します。
{
"segments": {
"right": [
{
"function": "powerline.segments.common.wthr.weather"
},
{
"function": "powerline.segments.common.bat.battery"
},
{
"function": "powerline.segments.common.time.date"
},
{
"function": "powerline.segments.common.time.date",
"name": "time",
"args": {
"format": "%H:%M",
"istime": true
}
},
{
"function": "powerline.segments.common.net.hostname"
}
]
}
}
編集後、リロードします。
すると、ステータスバーがこんな風に!
おお、きたぞきたぞ。
ペインを分割していけば、最初の画像みたいになるでしょう。
また、zshrcに以下の記述をしておくと、$ tm <windowname>
でTmuxを起動できるようになったりします。偉大すぎる。
#tmux
function tm() {
if [ -n "${1}" ]; then
tmux attach-session -t ${1} || \
tmux new-session -s ${1}
else
tmux attach-session || \
tmux new-session
fi
}
トラブルシューティング
最初にconfigを作成したときは一度exitして、再度tmuxコマンドを叩くとconfigをリロードしてくれるのですが、リロードしても設定が反映されない場合がありました。
前に立ち上げたTmuxのプロセスが残ってる場合があるので、そいつらをkillしてあげてください。
$ ps aux | grep tmux
.ssh/configを作成してTera Termいらずにする
「Windowsのコマンドプロンプトは使いたくない、なのでターミナルは無難にTera Termにしとこう」などという私はもういない。
だいぶ使いやすいターミナルになったので、bash on windowsからSSHできるようにしておけば何の問題もないですね。
これでWindowsローカルからAnsibleを叩くこともできてしまいますね!(それが一番やりたかった)
おわりに
bash on windowsを舐めてましたすいません。Betaとかって書いてますけど「もうこれただのUbuntuじゃん!」とか言いながらワイワイやってました。
わざわざVM立ててAnsible立てて・・・とかやりたくなかったのでだいぶよくなりました。