8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macの画面切り替えを yabai と skhd で爆速にしたい

Last updated at Posted at 2023-02-11

はじめに

Macでの画面切り替え、皆さんはどうしていますか?複数タブやページを開いてるときに、画面分割を早くしたいときってありますよね。
マウスやTrackpadで操作するのも良いですが、キーボードを使えばそれを爆速にすることが可能です。今回はその設定方法を紹介したいと思います。

目次

  1. yabaiがヤバイらしい?
  2. yabaiとskhdのセットアップ方法
  3. yabaiとskhdを有効化する
  4. 補足
  5. 参考文献

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 の設定があったので参考になるかと思います。

開発者のyabairc

開発者のskhdrc

以下は筆者が設定している項目になります。ぜひ参考にして見てください。
また、筆者はUSキーボードを使用しているので、USキーボードで操作しやすいようにカスタマイズしています。
JISキーボードの場合だと操作しにくい場合もあるので、その際は自由にカスタマイズいただければと思います。

yabairc
# 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 にするように設定しています。

skhdrc

# 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 にもチェックを入れて有効化する必要がありますので、お忘れなく。

Screenshot 2023-02-11 at 15.30.58.png

これで設定は以上になります。

補足

筆者は上をすべてセッティングしたのですが、それでも yabaiがうまく機能しない問題にあたりました。
その際に、Mission Control の Displays has separate Spaces を ON にして再起動し直すと、うまく動いたので、動かない方は試してみてください。
image.png

yabai と skhd を再起動する際は、

$ brew services restart yabai(またはskhd) 

でできます。

追記: 現在は以下のコマンドに変わっているようです。(2024/6/2時点)

$ yabai --stop-service(停止)
$ yabai --start-service(開始)

この記事がきっかけで、日々の作業効率が少しでもUPしたら幸いです。

少しでもお役に立ちましたら、いいね:thumbsup:お願いします!

参考文献

8
7
0

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
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?