はじめに
Macでの画面切り替え、皆さんはどうしていますか?複数タブやページを開いてるときに、画面分割を早くしたいときってありますよね。
マウスやTrackpadで操作するのも良いですが、キーボードを使えばそれを爆速にすることが可能です。今回はその設定方法を紹介したいと思います。
目次
yabaiがヤバイらしい?
yabai という window マネージャーがあるということで、実際に試してみることにしました。yabai は自分がやりたい画面操作などを、yabai が用意しているコマンドを用いて、設定できます。また、同じ開発者が開発している skhd という hotkey demon と組み合わせることで、よりフレキシブルにカスタマイズできるのが利点です。
両者ともに Mac に Homebrew さえ入っていれば、コマンドを叩くことで簡単にインストールできます。
yabaiとskhdのセットアップ方法
実際にセットアップする方法になります。ものの数分で終わります。
まずは下のコマンドで yabai を install します。
$ brew install koekeishiya/formulae/yabai
次に skhd を install します。
$ brew install koekeishiya/formulae/skhd
次に、yabai と skhd を動かすためのスクリプトファイルを作って、.config配下に配置していきます。
まずは ホームディレクトリの .config ファイルに移動して
$ cd ~/.config
yabai と skhd のファイルを用意してあげます。
$ mkdir yabai skhd
その後に .config/yabai 配下(または .config/skhd ディレクトリの配下)に移動して
$ touch yabairc (または touch skhdrc)
セッティングを記述するファイルを用意します。
作成したファイルにコマンドをセッティングする
上の項目で作成した yabairc と skhdrc に自分がセットしたいコマンドを記述していきます。
こちらは開発者の dotfile にも yabairc と skhdrc の設定があったので参考になるかと思います。
以下は筆者が設定している項目になります。ぜひ参考にして見てください。
また、筆者はUSキーボードを使用しているので、USキーボードで操作しやすいようにカスタマイズしています。
JISキーボードの場合だと操作しにくい場合もあるので、その際は自由にカスタマイズいただければと思います。
# global settings
yabai -m config mouse_follows_focus on
yabai -m config focus_follows_mouse autoraise
yabai -m config window_placement second_child
yabai -m config window_topmost on
yabai -m config window_shadow off
yabai -m config window_opacity off
yabai -m config window_opacity_duration 0.0
yabai -m config active_window_opacity 0.0
yabai -m config normal_window_opacity 0.0
yabai -m config window_border off
yabai -m config window_border_width 3
yabai -m config active_window_border_color 0xFF88C0D0
yabai -m config normal_window_border_color off
yabai -m config insert_feedback_color
yabai -m config split_ratio 0.50
yabai -m config auto_balance on
yabai -m config mouse_modifier ctrl
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
yabai -m config window_border_blur off
# general space settings
yabai -m config layout bsp
yabai -m config top_padding 01
yabai -m config bottom_padding 01
yabai -m config left_padding 01
yabai -m config right_padding 01
yabai -m config window_gap 0.5
# Rules
yabai -m rule --add app="^System Settings$" manage=off
yabai -m rule --add app="^Music$" manage=off
yabai -m rule --add app="^Docker$" manage=off
yabai -m rule --add app="^iTerm2$" manage=off
yabai には window が float している状態(Macで window を開いたときのデフォルトの状態)の ON/OFF を切り替えられるコマンドがあるので、筆者はそれを用いて、画面調整されたくない window は切り替えたりしています。
また、Music や System Settings などは常時 float のほうが使い勝手が良かったりするので、#Rules の部分に manage を off にするように設定しています。
# Launch Applications
shift + cmd - 0x01: osascript -e 'tell application "Slack" to run' \
-e 'tell application "System Events"' \
-e 'if visible of application process "Slack" is true then' \
-e 'set visible of application process "Slack" to false' \
-e 'else' \
-e 'set visible of application process "Slack" to true' \
-e 'end if' \
-e 'end tell'
shift + cmd - 0x02: osascript -e 'tell application "Docker" to run' \
-e 'tell application "System Events"' \
-e 'if visible of application process "Slack" is true then' \
-e 'set visible of application process "Slack" to false' \
-e 'else' \
-e 'set visible of application process "Slack" to true' \
-e 'end if' \
-e 'end tell'
# Focus Window
alt - h: yabai -m window --focus west || yabai -m display --focus west
alt - l: yabai -m window --focus east || yabai -m display --focus east
alt - k: yabai -m window --focus south || yabai -m display --focus south
alt - j: yabai -m window --focus north || yabai -m display --focus north
alt - n: yabai -m window --focus next || yabai -m display --focus next
alt - p: yabai -m window --focus prev || yabai -m display --focus prev
# Move Window between Displays
alt - left: yabai -m window --display prev \
&& yabai -m display --focus prev
alt - right: yabai -m window --display next \
&& yabai -m display --focus next
# Move Window in Same Display
alt + cmd - left: yabai -m window --swap west
alt + cmd - right: yabai -m window --swap east
alt + cmd - up: yabai -m window --swap north
alt + cmd - down: yabai -m window --swap south
ctrl + shift - left: yabai -m window --resize left:-50:0 || yabai -m window --resize right:-50:0
ctrl + shift - right: yabai -m window --resize right:50:0 || yabai -m window --resize left:50:0
ctrl + shift - down: yabai -m window --resize bottom:0:20 || yabai -m window --resize top:0:20
ctrl + shift - up: yabai -m window --resize top:0:-20 || yabai -m window --resize bottom:0:-20
# Focus Display(alt + 左右矢印でも focus を switch できるよう設定してます)
alt - 0x2B: yabai -m display --focus prev \
&& yabai -m display --focus stack.prev
alt - 0x2F: yabai -m display --focus next \
&& yabai -m display --focus stack.next
# Toggle FullScreen
alt - z: yabai -m window --toggle zoom-fullscreen
# Mirror
alt - y: yabai -m space --mirror y-axis
alt - x: yabai -m space --mirror x-axis
# Rotate & Split & Balance & Toggle
alt - r: yabai -m space --rotate 90
alt - s: yabai -m window --toggle split
alt - b: yabai -m space --balance
alt - f: yabai -m window --toggle float; \
yabai -m window --grid 4:4:1:1:2:2
skhd には option + z で選択した window の全拡大、 option + command + → などで画面を入れ替えるなどのショートカットキーを設定しています。モニターを使用している場合などは、 option + ← などで window の移動ができるようにしています。
色々好みがあると思いますので、カスタマイズしてみるといいかもしれません。
yabaiとskhdを有効化する
これでファイルは作成できましたが、設定ファイルを有効化させる必要があります。
以下のコマンドを叩いて、設定を有効化させます。
$ chmod +x ~/.config/yabai/yabairc
または
$ chmod +x ~/.config/skhd/skhdrc
また、下の画像のように Mac の System Settings の Privacy & Security の Accessibility の skhd と yabai にもチェックを入れて有効化する必要がありますので、お忘れなく。
これで設定は以上になります。
補足
筆者は上をすべてセッティングしたのですが、それでも yabaiがうまく機能しない問題にあたりました。
その際に、Mission Control の Displays has separate Spaces を ON にして再起動し直すと、うまく動いたので、動かない方は試してみてください。
yabai と skhd を再起動する際は、
$ brew services restart yabai(またはskhd)
でできます。
追記: 現在は以下のコマンドに変わっているようです。(2024/6/2時点)
$ yabai --stop-service(停止)
$ yabai --start-service(開始)
この記事がきっかけで、日々の作業効率が少しでもUPしたら幸いです。
少しでもお役に立ちましたら、いいねお願いします!