Skip to content
アルパカ プレス | IT・AI・ゲーム・動画制作ブログ ロゴ
Go back

Macからディスプレイの入力切り替えをワンクリックで!dispsel+Automatorで自動化する方法

1台のディスプレイに複数台のPCを接続していると、入力切り替えが意外と面倒です。

私はBenQのモニターに

  • Mac mini
  • Windows PC
  • ノートPC

の3台を接続しています。

これまではディスプレイ本体のボタンを押して、

「メニュー → 入力切替 → HDMI1」

のように切り替えていました。

そこで、Macから直接入力切り替えを実行できるようにしてみました。

結果として、デスクトップ上のボタンをクリックするだけで入力切替ができるようになり、かなり快適になりました。

私のデスク環境

デスク環境

上段のBenQディスプレイを3台のPCで共有しています。

  • DP : Mac mini
  • HDMI1 : ノートPC
  • HDMI2 : Windows PC

普段はMac miniをメインで使っており、下段のモバイルディスプレイをメインで、上段のディスプレイをサブで使っています。ただ、仕事中はノートPCへ切り替えることも多く、入力切替操作がそこそこ頻繁に発生していました。ボタン操作が煩わしいのと、ボタンがそのうち壊れるんじゃないかという心配で、夜しか眠れない状態でした。

dispselで入力切替を実行する

BenQのモニターはDDC/CIに対応していました。

DDC/CIとは?

PCからディスプレイを制御するための規格です。 DDC/CIに対応しているモニターなら、明るさ調整や入力切り替えをソフトウェアから実行できます。

メーカー純正ツールがないか探したものの見つからず、調べているうちに以下の記事を見つけました。

dayflowerさんのブログ:
https://dayflower.hatenablog.com/entry/2025/12/30/221141

dispselを使うと、コマンドラインからディスプレイの入力切替ができます。

dispselのインストール

dispselはHomebrewでインストールできます。

brew install dayflower/tap/dispsel

Homebrewが未インストールの場合は、先にHomebrew公式サイトからインストールしてください。

インストール後、以下のコマンドでバージョンが表示されれば成功です。

dispsel --version

なお、動作にはmacOS 13.0以降が必要です。

コマンドで入力切り替え

例えばDPへ切り替える場合は以下のようになります。

  1. まずdispsel listで接続しているディスプレイの情報を取得 今回はDisplay #2の入力切り替えをします。
% dispsel list
[Display #1]
  uuid:            XXXXXXXX-XXXX-XXXX-XXXX-111111111111
  manufacturer id: HSJ
  product name:    U13NA
  serial number:   
  connection:      DP -> DP
  current input:   unknown (0x00)

[Display #2]
  uuid:            XXXXXXXX-XXXX-XXXX-XXXX-222222222222
  manufacturer id: BNQ
  product name:    BenQ EL2870U
  serial number:   XXXXXXXXXXX
  connection:      DP -> DP
  current input:   displayport1 (0x0f)
  1. コマンドで切り替え DPに切り替える場合
dispsel switch dp -d 'uuid=XXXXXXXX-XXXX-XXXX-XXXX-222222222222'

HDMI1やHDMI2の場合は、dpの部分をhdmi1もしくはhdmi2のようにします。

Automatorでボタン化する

毎回ターミナルから実行するのは面倒なので、Automatorでアプリ化しました。

デスクトップには以下の3つのボタンを配置しています。

デスクトップ

  • DP
  • HDMI1
  • HDMI2

クリックするだけで切り替えられます。

DP

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
dispsel switch dp -d 'uuid=XXXXXXXX-XXXX-XXXX-XXXX-222222222222'

HDMI1

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
dispsel switch hdmi1 -d 'uuid=XXXXXXXX-XXXX-XXXX-XXXX-222222222222'

HDMI2

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
dispsel switch hdmi2 -d 'uuid=XXXXXXXX-XXXX-XXXX-XXXX-222222222222'

Automatorの作り方

  1. アプリからAutomatorを開きます。
  2. 新規書類を選択します
  3. ワークフローを選択します。 automator_1
  4. シェルスクリプトを実行を右ウィンドウにドラッグ&ドロップして、先ほどのコマンドを記述します。 automator_2
  5. 念の為に右上の実行ボタンをクリックして、正常に実行できるか確認して保存です。

あとは、作成されたアイコンをダブルクリックすればいつでも入力切り替えが可能!

問題発生。DP切替後に画面が映らない

便利になったと思ったのですが、ここで問題が発生しました。

DPに切り替えた際、Mac miniの画面が正常に表示されないことがありました。

色々試した結果、

「リフレッシュレートを変更すると正常表示される」

ことが判明しました。

displayplacerで自動復旧する

そこで displayplacer を利用しました。

displayplacer のGitHubリポジトリ:
https://github.com/jakehilborn/displayplacer

DPへ切り替えた後、

50Hz → 60Hz

と変更することで、正常表示されるようになりました。

DP切り替えの最終的なスクリプトは以下です。

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin
dispsel switch dp -d 'uuid=XXXXXXXX-XXXX-XXXX-XXXX-222222222222'
displayplacer "id:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX res:2304x1440 hz:60 color_depth:8 enabled:true scaling:on origin:(0,0) degree:0" "id:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX res:2560x1440 hz:50 color_depth:8 enabled:true scaling:on origin:(-124,-1440) degree:0"
sleep 1
displayplacer "id:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX res:2304x1440 hz:60 color_depth:8 enabled:true scaling:on origin:(0,0) degree:0" "id:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX res:2560x1440 hz:60 color_depth:8 enabled:true scaling:on origin:(-124,-1440) degree:0"

まとめ

dispselとAutomatorを使うことで、ディスプレイの入力切替をワンクリック化できました。

私の場合はdisplayplacerも併用していますが、入力切替のストレスは大きく減りました。

ディスプレイの物理ボタンを頻繁に押す必要もなくなり、普段の作業がかなり快適になっています。

なお、本記事の内容を試したことによる機器トラブル等については責任を負えません。自己責任で実施してください。


関連記事