
Utilitas ini mengawasi perangkat USB Connect/Disconnect Acara dan beralih input monitor melalui DDC/CI. Ini mengubah sakelar USB sederhana menjadi solusi KVM penuh: Tekan satu tombol pada sakelar USB Anda dan semua monitor Anda terhubung ke input yang berbeda.
Seharusnya diinstal pada semua komputer yang dapat dihubungkan ke monitor ini, karena aplikasi hanya beralih monitor "satu arah" dan bergantung pada dirinya sendiri di komputer lain untuk beralih "cara lain" sesuai kebutuhan.
Aplikasi harus berfungsi pada macOS, Windows, dan Linux.
display_switch dapat diinstal dengan homebrew: brew install haimgel/tools/display_switchKonfigurasinya sangat mirip di semua platform:
Pada macOS: File konfigurasi diharapkan di ~/Library/Preferences/display-switch.ini pada windows: File konfigurasi diharapkan di %APPDATA%display-switchdisplay-switch.ini di linux: file konfigurasi diharapkan dalam $XDG_CONFIG_HOME/display-switch/display-switch.ini ~/.config/display-switch/display-switch.ini
Pengaturan File Konfigurasi:
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device adalah perangkat USB mana yang harus ditonton (ID Vendor / ID Perangkat dalam Hex), dan on_usb_connect adalah input monitor mana yang akan diaktifkan, ketika perangkat ini terhubung. Nilai yang didukung adalah Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 . Jika monitor Anda memiliki port USB-C, biasanya dilaporkan sebagai DisplayPort2 . Input juga dapat ditentukan sebagai nilai desimal "mentah" atau heksadesimal: on_usb_connect = 0x10
Pengaturan on_usb_disconnect opsional memungkinkan untuk beralih ke arah lain ketika perangkat USB terputus. Perhatikan bahwa cara yang disukai adalah menginstal aplikasi ini di kedua komputer. Beralih "Away" bermasalah: jika komputer lain telah membuat monitor tidur, mereka akan segera beralih kembali ke input asli.
display-switch mendukung konfigurasi per monitor: Tambahkan satu atau lebih bagian konfigurasi spesifik monitor untuk mengatur input spesifik monitor. Misalnya:
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 Menentukan substring case-tidak sensitif untuk mencocokkan terhadap ID monitor. Misalnya, 'Len' akan cocok dengan ID Monitor LEN P27u-10 S/N 1144206897 . Jika lebih dari satu bagian memiliki kecocokan, yang pertama akan digunakan. on_usb_connect dan on_usb_disconnect , jika didefinisikan, diutamakan daripada default global.
Kiat untuk Windows : Monitor dapat diganti namanya dalam registri di HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumDISPLAY{MODEL_ID}{CONNECTION_ID} . Edit nilai DeviceDesc dan ubah nama setelah titik koma terakhir. Ini sangat membantu jika mereka semua hanya "monitor PNP generik".
display-switch mendukung menjalankan perintah eksternal setelah koneksi atau pemutusan perangkat USB. Konfigurasi ini dapat bersifat global (berjalan setiap kali perangkat USB yang dikonfigurasi terhubung atau terputus) atau per-monitor (hanya berjalan ketika monitor yang diberikan sedang dialihkan):
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 "Catatan:
display-switch .Untuk menemukan ID ID perangkat USB Anda di Windows:
HIDVID_046D&PID_C52B&MI_00 (nilai yang tepat akan berbeda) - ID perangkat USB adalah kombinasi dari ID vendor dan ID produk - misalnya, dalam hal ini akan menjadi 046D:C52B Untuk menemukan ID ID perangkat USB Anda di MacOS, buka terminal dan jalankan yang berikut:
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bDalam output perintah, baris yang disorot menunjukkan kepada Anda ID USB mana yang paling relevan.
Untuk daftar lengkap perangkat USB:
system_profiler SPUSBDataType
PENTING : Format untuk display-switch.ini Anda adalah Vendorid: ProductID. Vendorid disingkirkan kedua di output system_profiler
Membutuhkan paket tambahan, instal melalui: sudo apt install libxi-dev xorg-dev
Untuk menemukan ID perangkat USB Anda di Linux, pertama instal lsusb , yang harus dimiliki oleh distro Linux Anda. (Di Debian, Ubuntu dan Redhat, nama paketnya adalah usbutils .) Kemudian, di terminal, jalankan berikut:
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
Output diff akan menunjukkan ID USB mana yang paling relevan.
/Users/USERNAME/Library/Logs/display-switch/display-switch.log%LOCALAPPDATA%display-switchdisplay-switch.log$XDG_DATA_HOME/display-switch/display-switch.log atau ~/.local/share/display-switch/display-switch.log Pasang karat, lalu lakukan cargo build --release
Instal Xcode, pasang karat, lalu lakukan cargo build --release
Pasang karat, lalu lakukan cargo build --release
Salin display_switch.exe dari targetrelease (di mana ia dibangun pada langkah sebelumnya) ke %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.plistSalin Buatan Dibangun Dieksekusi:
cp target/release/display_switch /usr/local/bin/ Aktifkan akses baca/tulis ke perangkat I2C untuk pengguna di grup i2c . Jalankan sebagai root:
groupadd i2c
echo ' KERNEL=="i2c-[0-9]*", GROUP="i2c" ' >> /etc/udev/rules.d/10-local_i2c_group.rules
udevadm control --reload-rules && udevadm triggerKemudian tambahkan pengguna Anda ke grup I2C:
sudo usermod -aG i2c $(whoami)
Buat file unit SystemD di direktori pengguna Anda ( /home/$USER/.config/systemd/user/display-switch.service ) dengan konten
[Unit]
Description=Display switch via USB switch
[Service]
ExecStart=/usr/local/bin/display_switch
Type=simple
StandardOutput=journal
Restart=always
[Install]
WantedBy=default.target
Buat file konfigurasi di /home/$USER/.config/display-switch/display-switch.ini . Kemudian aktifkan layanan dengan
systemctl --user daemon-reload
systemctl --user enable display-switch.service
systemctl --user start display-switch.service