🎛️

macのアプリスイッチャーを全ディスプレイに表示する方法とdefaultsコマンド

2024/12/16に公開

マルチディスプレイ環境のアプリスイッチャーの戸惑い

最近モバイルディスプレイを手に入れ、デュアルディスプレイ環境で楽しく作業している。楽しいが、「これはどうするんだ」という困惑が発生することもある。

⌘Tabでアプリを切り替えようとする。そうすると、しばしば、いま見ていないディスプレイに表示される。不便。


アプリスイッチャーが使っていないディスプレイに表示される

環境

以下の環境で確認した。

  • Mac: MacbookPro 2021 (Apple M1 Pro)
  • macOS: Sequoia 15.2

こうすると接続中のディスプレイすべてに表示される

こうするとアプリスイッチャーがすべてのディスプレイに表示される。便利。

% defaults write com.apple.Dock appswitcher-all-displays -bool true # 設定を変更する
% killall Dock # Dockを再起動する

アプリスイッチャーはDockの機能の一部だったのか、というのが分かって興味深い。

どうりで表示されるディスプレイがあちこちフラフラするはずだ。アプリスイッチャーが表示されているディスプレイ は、実は Dockが表示されているディスプレイ だったのだ。

先人に感謝したい。
https://romly.com/blog/app_switcher_for_all_displays/

気軽に書いたが、defaults writeコマンドは設定を変更するコマンドであるため、リスクを認識のうえ、自己責任で。

defaults コマンドとは

macOSではコマンドラインからシステム設定やアプリ設定を確認・変更することができる。それがdefaultsコマンドだ。

https://rcmdnk.com/blog/2015/03/22/computer-mac/

現在の設定をすべて見るには defaults read コマンドを使う。

% defaults read | less

普段、システム設定のGUIで操作している項目が並んでいる。

この出力をファイルに保存し、システム設定アプリで何か設定を変更してからもう一度同じコマンドを実行、diffを取ってみるとよい。いま変更した設定が見える。

たとえばマウスの軌跡の速さを変更した場合、こうなる。

*** /tmp/defaults-read.txt      2024-12-16 13:59:11.372334098 +0900
--- /tmp/defaults-read-2.txt    2024-12-16 13:59:55.363013393 +0900
***************
*** 244,250 ****
          "com.apple.gms.availability.useCasesWhoseAssetsAreOutOfStorage" = {length = 42, bytes = 0x62706c69 73743030 a0080000 00000000 ... 00000000 00000009 };
          "com.apple.gms.availability.useCasesWhoseAssetsNotReady" = {length = 1600, bytes = 0x62706c69 73743030 af102801 02030405 ... 00000000 000005ce };
          "com.apple.keyboard.fnState" = 1;
!         "com.apple.mouse.scaling" = "0.5";
          "com.apple.sound.beep.flash" = 0;
          "com.apple.springing.delay" = "0.5";
          "com.apple.springing.enabled" = 1;
--- 244,250 ----
          "com.apple.gms.availability.useCasesWhoseAssetsAreOutOfStorage" = {length = 42, bytes = 0x62706c69 73743030 a0080000 00000000 ... 00000000 00000009 };
          "com.apple.gms.availability.useCasesWhoseAssetsNotReady" = {length = 1600, bytes = 0x62706c69 73743030 af102801 02030405 ... 00000000 000005ce };
          "com.apple.keyboard.fnState" = 1;
!         "com.apple.mouse.scaling" = "0.6875";
          "com.apple.sound.beep.flash" = 0;
          "com.apple.springing.delay" = "0.5";
          "com.apple.springing.enabled" = 1;

1つしか変更していないのに、これ以外にもたくさん変更点が出てくるが、操作のたびに内部的にあれこれ変更されている模様。

開発体験を向上させることに余念がない

アプリスイッチャーの表示されるディスプレイが思たんと違う。そのくらい、と思うような細かいことだが、頭のリソースは有限で、こういう些末事で消費させないのが気持ちよくコードを書くために大事だと思っている。すきま時間に少しずつ整備していきたいものだ。

Discussion