61
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bash on windowsってすごーい!powerlineとTmuxを駆使してMacのターミナルっぽくする(Tera Termも卒業する)

Posted at

はじめに

私はプライベートでmacOS Sierraを使用していて、ターミナルはこんな感じに設定しています。
題名にもある通り、tmuxとpowerlineを使ってます。
image

しかし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

ディレクトリを移動して、ソースをコピーします。

/usr/local/lib/python2.7/dist-packages/powerline/config_files
$ cp -r * ~/.config/powerline

これでホームディレクトリでconfigを自由に編集できますね。

設定ファイル

ホームディレクトリにコピーしたファイルをちょっといじってみます。

~/.config/powerline/themes/
$ vim powerline.json

image

70行目あたりから天気の記述があると思います。ターミナルに天気を表示させたい場合、locationの記述が必要らしいのでわかりやすく86行目に追記しておきます。

"location_query": "tokyo, japan"

※画像MacですがWindowsも同じです。
image

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

無題.png

画像をみてもらえばわかると思いますが、右のステータスバーの表示がuptime-ロードアベレージ-日付-hostnameになっています。Macではここを天気-バッテリー残量-日付-時間-hostnameにしてるので、ここも似たような感じに設定変更します。

以下の内容で記述します。

~/.config/powerline/themes/tmux/default.json
{                                                                                      
        "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"   
                        }                                                              
                ]                                                                      
        }                                                                              
}                                                                                      

編集後、リロードします。
すると、ステータスバーがこんな風に!

無題.png

おお、きたぞきたぞ。
ペインを分割していけば、最初の画像みたいになるでしょう。

無題.png

また、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立てて・・・とかやりたくなかったのでだいぶよくなりました。

参考

61
64
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?