
Эта утилита наблюдает за USB Device Connect/Declonce Events и переключает входы через DDC/CI. Это превращает простой USB-переключатель в полноценное решение KVM: нажмите одну кнопку на вашем USB-коммутаторе, и все ваши мониторы подключаются к другому входу.
Предполагается, что он будет установлен на всех компьютерах, которые могут быть подключены к этим мониторам, поскольку приложение только переключает «с одним способом» и полагается на себя, работая на других компьютерах, чтобы переключить его «наоборот» по мере необходимости.
Приложение должно функционировать на MacOS, Windows и Linux.
display_switch может быть установлен с HomeBrew: brew install haimgel/tools/display_switchКонфигурация довольно похожа на всех платформах:
В MacOS: файл конфигурации ожидается в ~/Library/Preferences/display-switch.ini в Windows: Файл конфигурации ожидается в %APPDATA%display-switchdisplay-switch.ini на linux: файл конфигурации ожидается в $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), и on_usb_connect - к тому, к какому вводу мониторинга, когда это устройство подключено. Поддерживаемыми значениями являются Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 . Если у вашего монитора есть порт USB-C, он обычно сообщается как DisplayPort2 . Ввод также может быть указан как «необработанное» десятичное или шестнадцатеричное значение: on_usb_connect = 0x10
Необязательные настройки on_usb_disconnect позволяют переключаться в другом направлении, когда USB -устройство отключено. Обратите внимание, что предпочтительным способом является установка этого приложения на обоих компьютерах. Переключение «прочь» проблематично: если другой компьютер засылал мониторы, они сразу же переключатся обратно на исходный вход.
display-switch поддерживает конфигурацию для монитора: добавьте один или несколько разделов конфигурации, специфичных для монитора, для установки входов, специфичных для монитора. Например:
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 указывает нечувствительную к случаю подстроки, чтобы соответствовать идентификатору монитора. Например, «Лен» будет соответствовать LEN P27u-10 S/N 1144206897 ID MONITOR. Если более одного секции имеет матч, будет использоваться первый. 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 .Чтобы найти идентификатор вашего USB -устройства в Windows:
HIDVID_046D&PID_C52B&MI_00 (точные значения будут отличаться) - идентификатор USB -устройства является комбинацией идентификатора поставщика и идентификатора продукта - например, в этом случае это будет 046D:C52B Чтобы найти идентификатор вашего USB -устройства на MacOS, откройте терминал и запустите следующее:
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bНа выводе команды выделенные строки показывают, какие USB -идентификаторы наиболее актуальны.
Для полного списка USB -устройств:
system_profiler SPUSBDataType
ВАЖНО : Формат для вашего дисплея-switch.ini-это поставщик: ProductId. Продавца распределяется вторым в выходе system_profiler
Требуются дополнительные пакеты, установите через: sudo apt install libxi-dev xorg-dev
Чтобы найти идентификатор вашего USB -устройства на Linux, сначала установите lsusb , для которого должен иметь пакет. (На Debian, Ubuntu и Redhat название пакета - usbutils .) Затем в терминале запустите следующее:
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
Выход DIFF покажет, какие идентификаторы USB являются наиболее актуальными.
/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 Установите ржавчину, затем сделайте cargo build --release
Установите Xcode, установите ржавчину, затем сделайте cargo build --release
Установите ржавчину, затем сделайте cargo build --release
Скопируйте display_switch.exe из targetrelease (где он был встроен на предыдущем шаге) до %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)
Создайте файл модуля SystemD в вашем каталоге пользователя ( /home/$USER/.config/systemd/user/display-switch.service ) с содержанием
[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