イケてるデスクトップ環境を作る(yabai + skhd + Übersicht)
目次
はじめに
42Tokyoに入学してからというもの、ほぼ毎日起きてから寝るまでPC画面の前で過ごすようになり、開発速度を少しでも上げるためにキーボードから手を離さず画面を操作したいなと思うようになりました。
また、一日中見続ける画面なのでせっかくなら自分好みの見た目にカスタマイズしたいとも思い色々と試した結果自分なりの最適解を見つけたのでご紹介します。
具体的にやったことは以下3点。順番に説明していきます。
- アプリケーションウインドウの自動整理
- ウインドウをキーボードショートカットで操作可能にする
- デスクトップ上部に表示されるステータスバーをMacのデフォルトのものではなく、少しカラフルで表示項目が少ないものに変更
使用ツール
- Mac
- macOS Big Sur 11.2.3
- yabai
- skhd
- Übersicht
- simple-bar(Übersichtのステータスバーウィジェット)
yabai
yabaiはタイル型ウインドウマネージャーです。
アプリケーションウインドウを自動的に綺麗なタイル状に並べてくれます。
インストール
yabaiをbrewでインストールします
brew install koekeishiya/formulae/yabai
有効化
インストールが完了したらyabaiを有効化するためにコンピュータの制御権限を付与します。
Macの設定
→セキュリティとプライバシー
→プライバシー
→アクセシビリティ
のyabaiのチェックボックスにチェックを入れます。
スクリプトの追加をインストール
スクリプトの追加をインストールすることで、デスクトップの追加や削除もコマンドで行えるようになります。
※スクリプトの追加は現在Apple Silicon(M1)をサポートしていないようなので、この手順はスキップしてもかまいません。
sudo yabai --install-sa
sudo yabai --load-sa
設定
次にyabai起動時に読み込まれる設定ファイル(.yabairc
)をルートディレクトリに作成し ます。今回はyabaiのGitHubに置いてあるサンプルをコピペして使用します。
#!/usr/bin/env sh
# global settings
yabai -m config mouse_follows_focus off
yabai -m config focus_follows_mouse off
yabai -m config window_origin_display default
yabai -m config window_placement second_child
yabai -m config window_topmost off
yabai -m config window_shadow on
yabai -m config window_opacity off
yabai -m config window_opacity_duration 0.0
yabai -m config active_window_opacity 1.0
yabai -m config normal_window_opacity 0.90
yabai -m config window_border off
yabai -m config window_border_width 6
yabai -m config active_window_border_color 0xff775759
yabai -m config normal_window_border_color 0xff555555
yabai -m config insert_feedback_color 0xffd75f5f
yabai -m config split_ratio 0.50
yabai -m config auto_balance off
yabai -m config mouse_modifier fn
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
yabai -m config mouse_drop_action swap
# general space settings
yabai -m config layout bsp
yabai -m config top_padding 12
yabai -m config bottom_padding 12
yabai -m config left_padding 12
yabai -m config right_padding 12
yabai -m config window_gap 06
echo "yabai configuration loaded.."
起動
さて、ここまでできたらyabaiを起動してみます。
起動するには次のコマンドを入力
brew services start yabai
また、yabaiを停止させたい時は次のコマンドで止まります。
brew services stop yabai
無事に起動するとアプリウインドウが自動的で綺麗なタイル状に配置されたと思います。
これだけでもちょっとテンションが上がりますがさらに使いやすくしていきます。
※もしうまく起動しない場合はこちらを参考にしてください。
skhd
skhdはショートカットキーの割り当てを設定するためのアプリケーションです。
yabaiのウインドウ操作コマンドにキーボードショートカットを割り当てるのに使用します。下のgifのような操作をキーボードのみで行うことができるようになります。
インストール
brewでインストールしていきます
brew install koekeishiya/formulae/skhd
有効化
設定
→セキュリティとプライバシー
→プライバシー
→アクセシビリティ
から有効化します。
設定
今回もGitHubのサンプルを参考に設定していきます。
設定ファイル(.skhdrc
)をルートディレクトリに作成し、サンプルをコピペします。
# focus window
alt - x : yabai -m window --focus recent
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
# swap window
shift + alt - x : yabai -m window --swap recent
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east
# move window
shift + cmd - h : yabai -m window --warp west
shift + cmd - j : yabai -m window --warp south
shift + cmd - k : yabai -m window --warp north
shift + cmd - l : yabai -m window --warp east
# move window
shift + ctrl - a : yabai -m window --move rel:-20:0
shift + ctrl - s : yabai -m window --move rel:0:20
shift + ctrl - w : yabai -m window --move rel:0:-20
shift + ctrl - d : yabai -m window --move rel:20:0
# increase window size
shift + alt - a : yabai -m window --resize left:-20:0
shift + alt - s : yabai -m window --resize bottom:0:20
shift + alt - w : yabai -m window --resize top:0:-20
shift + alt - d : yabai -m window --resize right:20:0
# decrease window size
shift + cmd - a : yabai -m window --resize left:20:0
shift + cmd - s : yabai -m window --resize bottom:0:-20
shift + cmd - w : yabai -m window --resize top:0:20
shift + cmd - d : yabai -m window --resize right:-20:0
# rotate tree
alt - r : yabai -m space --rotate 90
# mirror tree y-axis
alt - y : yabai -m space --mirror y-axis
# mirror tree x-axis
alt - x : yabai -m space --mirror x-axis
# toggle desktop offset
alt - a : yabai -m space --toggle padding && yabai -m space --toggle gap
# toggle window fullscreen zoom
alt - f : yabai -m window --toggle zoom-fullscreen
# toggle window native fullscreen
shift + alt - f : yabai -m window --toggle native-fullscreen
# toggle window split type
alt - e : yabai -m window --toggle split
# float / unfloat window and restore position
# alt - t : yabai -m window --toggle float && /tmp/yabai-restore/$(yabai -m query --windows --window | jq -re '.id').restore 2>/dev/null || true
alt - t : yabai -m window --toggle float && yabai -m window --grid 4:4:1:1:2:2
この設定ファイルで何をしているのかというと、yabaiでウインドウを操作するためのコマンドとショートカットキーの組み合わせを一つ一つ設定しています。
例えば下記の設定は、左側のウインドウにフォーカスするためのコマンド(yabai -m window --focus west
)を、alt + h
というショートカットに割り当てています。
※altキーはMacの場合はoptionキーです。
# focus window
alt - h : yabai -m window --focus west
起動
brew services start skhd
無事に起動したらさきほど設定したショートカットが使えるようになっていると思います。
試しにalt + x
でウインドウフォーカスの移動、Shift + alt + x
でウインドウ位置の移動をしてみましょう。
他にも、3つ以上のウインドウを反時計回りに移動させたり、ウインドウサイズを大きくしたり小さくしたりといった操作もショートカットで簡単に行えます。先ほどコピペした設定ファイルを見ながら操作してみましょう。
Übersicht
Übersichtを使用すると自分でカスタマイズしたウィジェットを画面上に表示することができます。今回はsimple-bar
というウィジェットを一緒にインストールしてみようと思います。
インストール
- Übersichtをダウンロード
公式サイトかGitHubからダウンロードしてきてインストールします。 - simple-barをダウンロード
上でダウンロードしたÜbersichtリポジトリ内のウィジェットディレクトリに、simple-barのリポジトリをクローンします。
git clone https://github.com/Jean-Tinland/simple-bar $HOME/Library/Application\ Support/Übersicht/widgets/simple-bar
有効化
設定
→セキュリティとプライバシー
→プライバシー
→アクセシビリティ
から有効化します。
起動
yabaiやskhdと違いÜbersichtはターミナルからではなくアプリアイコンから起動します。Launchpadにあると思うのでクリックして起動します。
無事に起動したらデスクトップ画面上部にステータスバーが表示されます。
バーをクリックしてからcommamnd + ,
で設定が開くので、バーの表示項目や色を変更して遊んでみると楽しいと思います。
かっこいいコマンドたち
自分がよく使っているお気に入りのコマンドを紹介します。どのコマンドもbrewで簡単にインストールして使用できます。
gotop
グラフィカルなアクティビティモニター
ranger
vimっぽく操作できるコンソールファイルマネージャー
unimatrix
映画マトリックスっぽく文字を降らせる
asciiquarium
休憩時間に癒されましょう
ターミナルに雪を降らせるコマンド
そろそろクリスマスなので、、、
ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.1}'
おわりに
今回紹介したような開発環境の見た目をカスタマイズするカテゴリのことを海外では「unixporn」と呼ぶようです。Redditという掲示板サイトでイケてる開発環境がたくさん投稿されているので、興味のある方はぜひそちらも見てみてください。
Discussion