
このユーティリティは、USBデバイスの接続/切断イベントを監視し、DDC/CIを介して入力を監視します。これにより、単純なUSBスイッチが本格的なKVMソリューションになります。USBスイッチの1つのボタンを押し、すべてのモニターが別の入力に接続します。
アプリはモニターを「1つの方法」のみを切り替え、他のコンピューターで実行して必要に応じて「逆の方法」を切り替えるためにモニターを切り替えるだけであるため、これらのモニターに接続できるすべてのコンピューターにインストールされることになっています。
アプリは、MacOS、Windows、Linuxで機能する必要があります。
display_switch homebrewでインストールできます: brew install haimgel/tools/display_switch構成はすべてのプラットフォームでかなり似ています:
MACOSで:構成ファイルは%APPDATA%display-switchdisplay-switch.ini ~/Library/Preferences/display-switch.iniで$XDG_CONFIG_HOME/display-switch/display-switch.ini ~/.config/display-switch/display-switch.ini
構成ファイル設定:
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device 、監視するusbデバイス(hexのベンダーID /デバイスID)であり、 on_usb_connectは、このデバイスが接続されているときに、切り替える入力をモニターするかです。サポートされている値は、 Hdmi1 、 Hdmi2 、 DisplayPort1 、 DisplayPort2 、 Dvi1 、 Dvi2 、 Vga1です。モニターにUSB-Cポートがある場合、通常はDisplayPort2として報告されます。入力は、「生の」小数または16進数として指定することもできます: on_usb_connect = 0x10
オプションのon_usb_disconnect設定により、USBデバイスが切断されると、反対方向に切り替えることができます。好ましい方法は、このアプリを両方のコンピューターにインストールすることであることに注意してください。 「アウェイ」を切り替えることに問題があります。他のコンピューターがモニターを眠らせた場合、すぐに元の入力に戻ります。
display-switch 、モニターあたりの構成をサポートします。1つ以上のモニター固有の構成セクションを追加して、モニター固有の入力を設定します。例えば:
on_usb_connect = " DisplayPort2 "
on_usb_disconnect = " Hdmi1 "
[monitor1]
monitor_id = " len "
on_usb_connect = " DisplayPort1 "
[monitor2]
monitor_id = " dell "
on_usb_connect = " hdmi2 " monitor_idモニターIDと一致するケースに依存しないサブストリングを指定します。たとえば、「Len」はLEN P27u-10 S/N 1144206897モニターIDと一致します。複数のセクションにマッチがある場合、最初のセクションが使用されます。 on_usb_connectおよびon_usb_disconnect 、定義されている場合、グローバルデフォルトよりも優先されます。
Windowsのヒント:モニターはHKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumDISPLAY{MODEL_ID}{CONNECTION_ID}レジストリで変更できます。 DeviceDesc値を編集し、最後のセミコロンの後に名前を変更します。これは、すべて「ジェネリックPNPモニター」である場合に特に役立ちます。
display-switch接続またはUSBデバイスの切断時に外部コマンドを実行することをサポートします。この構成は、グローバル(構成されたUSBデバイスが接続または切断されるたびに実行される)またはモニターごと(特定のモニターが切り替えられている場合にのみ実行)にすることができます。
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " DisplayPort2 "
on_usb_connect_execute = " echo connected "
on_usb_disconnect_execute = " echo disconnected "
[monitor1]
monitor_id = " foobar "
on_usb_connect_execute = " echo usb connected, monitor 'foobar' being switched "
on_usb_disconnect_execute = " 'c:\program files\my app.exe' --parameter "注:
display-switchを開始したのと同じユーザーとして実行されます。Windows上のUSBデバイスIDのIDを見つけるには:
HIDVID_046D&PID_C52B&MI_00に似た値が表示されます(正確な値は異なります) - USBデバイスIDはベンダーIDと製品IDの組み合わせです。たとえば、この場合、 046D:C52BになりますMACOSでUSBデバイスIDのIDを見つけるには、端末を開いて以下を実行します。
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bコマンド出力では、強調表示された行は、どのUSB IDが最も関連性があるかを示します。
USBデバイスの完全なリストについては:
system_profiler SPUSBDataType
重要:display-switch.iniの形式はvendorid:productidです。 Vendoridは、 system_profiler出力で2番目に射撃されます
追加のパッケージが必要で、インストール: sudo apt install libxi-dev xorg-dev
Linux上のUSBデバイスのIDを見つけるには、Linuxディストリビューションにパッケージが必要なlsusb最初にインストールします。 (Debian、Ubuntu、およびRedhatで、パッケージ名はusbutilsです。)次に、端末で、以下を実行します。
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
DIFF出力は、どのUSB IDが最も関連性があるかを示します。
/Users/USERNAME/Library/Logs/display-switch/display-switch.logに書き込まれます%LOCALAPPDATA%display-switchdisplay-switch.logに書き込まれます$XDG_DATA_HOME/display-switch/display-switch.logまたは~/.local/share/display-switch/display-switch.logに書き込まれます。 Rustをインストールしてから、 cargo build --release
Xcodeをインストールし、Rustをインストールしてから、 cargo build --release
Rustをインストールしてから、 cargo build --release
targetrelease (前のステップで構築された場所)からdisplay_switch.exe %APPDATA%MicrosoftWindowsStart MenuProgramsStartupにコピーします。
# Get your INI file in order! (see above)
cp target/release/display_switch /usr/local/bin/
cp dev.haim.display-switch.daemon.plist ~ /Library/LaunchAgents/
launchctl load ~ /Library/LaunchAgents/dev.haim.display-switch.daemon.plistコピービルド実行可能ファイル:
cp target/release/display_switch /usr/local/bin/ i2cグループのユーザー向けにI2Cデバイスへの読み取り/書き込みアクセスを有効にします。ルートとして実行:
groupadd i2c
echo ' KERNEL=="i2c-[0-9]*", GROUP="i2c" ' >> /etc/udev/rules.d/10-local_i2c_group.rules
udevadm control --reload-rules && udevadm trigger次に、ユーザーをI2Cグループに追加します。
sudo usermod -aG i2c $(whoami)
コンテンツを備えたユーザーディレクトリ( /home/$USER/.config/systemd/user/display-switch.service $user /.config/systemd/user/display-switch.service.service)にSystemDユニットファイルを作成します
[Unit]
Description=Display switch via USB switch
[Service]
ExecStart=/usr/local/bin/display_switch
Type=simple
StandardOutput=journal
Restart=always
[Install]
WantedBy=default.target
/home/$USER/.config/display-switch/display-switch.iniで構成ファイルを作成します。次に、サービスを有効にします
systemctl --user daemon-reload
systemctl --user enable display-switch.service
systemctl --user start display-switch.service