- DDC/CI プロトコルでモニターの入力ソース(DisplayPort、HDMI、USB-C など)をコマンドラインから切り替えるツールで、Windows/macOS/Linux のすべてをサポート
- 名前/インデックスの後ろに
=入力ソースを付けて入力ソースを直接指定可能monitor-input Dell=dp1→ "Dell" を含むモニターをすべて DisplayPort1 に設定monitor-input 0=usbc1→ 最初のモニターを USB-C1 に設定
- 引数なしで実行すると、接続されたすべてのモニター一覧を出力し、各項目に名前/現在の Input Source/Backend フィールドを表示
- 名前の一部または インデックス(数字) で特定のモニターを検索/照会可能
monitor-input Dellは名前に "Dell" を含むモニターをすべて列挙し、monitor-input 2はインデックス 2 のモニターを照会
- 入力ソースに数字を入れることで、非標準の ベンダー固有(vendor-specific) 入力ソースにも対応
monitor-input U2723=15 P3223=17
- カンマ(
,)で 2 つ以上のソースを登録し、現在の状態に応じて順番に切り替える トグル/サイクル機能 をサポートP3223=hdmi1,usbc2→ HDMI1 と USBC2 の間でトグルし、hdmi1,usbc2,dp1のように 3 つ以上の循環も可能
- マルチモニターのトグル機能: 複数のモニターを同時に切り替える際、最初のモニターの現在の入力ソース を基準に残りを合わせ、入力ソースの一貫性を維持
monitor-input U2723=dp1,usbc2 P3223=hdmi1,usbc2で、最初のモニターU2723の入力ソースがDisplayPort1ならUsbC2に変更- 最初のモニターがリストの 2 番目のソースに変わると、以降のモニターもそれぞれのリストの 2 番目のソース に変更される(例:
P3223はUsbC2)
- Windows では
-F winappオプションにより、コンソールウィンドウが表示されない サブシステム版(monitor-inputw.exe) を提供し、エラーはトースト通知で表示 - コマンドライン実行だけでなく、ライブラリ(as library) 形式でも公開されており、他の Rust コードから直接呼び出し可能
8件のコメント
私はDELLモニター2台でMac MiniとWindowsノートPCを一緒に使っています。
Dell 1はMac Miniのみに接続してあり、
Dell 2にはMac MiniとWindowsノートPCの両方を接続してあります。
WindowsにDell Display and Peripheral Managerをインストールし、ホットキー(Ctrl + Space)を登録して、必要なときにDell 2の画面をMacとWindowsで切り替えながら使っています。
ご紹介いただいたツールも便利そうなので、近いうちに一度試してみようと思います!
私はモニター1台で Windows と Mac を行き来して使っているのですが、
DELL U4025QW モニターは入力ソースを切り替えるワンショットキーがなく、メニューから探して押さないといけないので、これを使ってスクリプト化して使っています。
私は Windows は dp1 に挿していて、Mac は usbc1 に挿して使っているので、
Mac では
.zshrcにalias mon='monitor-input 0=dp1'Windows では
notepad $PROFILEを開いて、次のfunction mon { monitor-input 0=usbc1 }を追加こうしておくと、Windows/Mac のシェルで mon と打つだけで画面が切り替わります。
とても満足して使っているので、紹介してみます。
あ、こんなことができるとは知りませんでした。良いTipsありがとうございます。
わあ、私とまったく同じセットアップですね。毎回物理キーを押すのが面倒だったので、ありがたく使わせていただきます…
私はモニター・キーボード・マウスが1組ずつある一方で接続したい機器が3台あるので、Raspberry Piにドングルを挿しておき、ほかの機器にはESP32を付けてWiFiで迂回する方式で使っています。このときキーボードとマウスの入力を切り替えるのに合わせてモニターも一緒に切り替えられるようにしようと苦労したのですが、これを前もって知っていればもっと楽だったかもしれませんね。良い記事をありがとうございます。
私のUbuntu 24.04では動かないですね……しょんぼり……
libudevをインストールする必要があるとは書いてありましたが、それをやってもだめなんですか?$ sudo apt install libudev-dev
パッケージ libudev-dev はすでに最新バージョンです (255.4-1ubuntu8.16)。
$ sudo apt install librust-udev-dev
パッケージ librust-udev-dev はすでに最新バージョンです (0.8.0-1)。
$ monitor-input
Error: No display monitors found for "".
はい、DisplayPort と HDMI の2つを接続しているのですが、認識できないようです。
深掘りするのは面倒だったので、ダメだなと思って終わりにしました。