
Cet utilitaire regarde pour les événements / déconnectez les événements de connexion USB et commandant les entrées du moniteur via DDC / CI. Cela transforme un simple interrupteur USB en une solution KVM à part entière: appuyez sur un bouton de votre commutateur USB et tous vos moniteurs se connectent à une entrée différente.
Il est censé être installé sur tous les ordinateurs qui pourraient être connectés à ces moniteurs, car l'application change uniquement les moniteurs "dans un sens" et s'appuie sur lui-même en cours d'exécution sur les autres ordinateurs pour le changer "dans l'autre sens" si nécessaire.
L'application doit fonctionner sur macOS, Windows et Linux.
display_switch peut être installé avec Homebrew: brew install haimgel/tools/display_switchLa configuration est assez similaire sur toutes les plates-formes:
Sur macOS: le fichier de configuration est attendu dans ~/Library/Preferences/display-switch.ini sur Windows: le fichier de configuration est attendu dans %APPDATA%display-switchdisplay-switch.ini sur Linux: le fichier de configuration est attendu dans $XDG_CONFIG_HOME/display-switch/display-switch.ini ou ~/.config/display-switch/display-switch.ini
Paramètres du fichier de configuration:
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device est quel périphérique USB à surveiller (ID du fournisseur / ID de périphérique en hexadécimal), et on_usb_connect est la saisie du moniteur à basculer, lorsque ce périphérique est connecté. Les valeurs prises en charge sont Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 . Si votre moniteur dispose d'un port USB-C, il est généralement signalé comme DisplayPort2 . L'entrée peut également être spécifiée en tant que valeur décimale ou hexadécimale "brute": on_usb_connect = 0x10
Les paramètres optionnels on_usb_disconnect permet de changer dans l'autre sens lorsque le périphérique USB est déconnecté. Notez que la manière préférée est d'installer cette application sur les deux ordinateurs. Le changement de "loin" est problématique: si l'autre ordinateur a endormi les moniteurs, ils reviendront immédiatement à l'entrée d'origine.
display-switch prend en charge la configuration par monitor: ajoutez une ou plusieurs sections de configuration spécifiques au moniteur pour définir les entrées spécifiques au moniteur. Par exemple:
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 spécifie une sous-chaîne insensible à la casse pour correspondre à l'ID de moniteur. Par exemple, «Len» correspondrait à LEN P27u-10 S/N 1144206897 ID de moniteur. Si plus d'une section a un match, une première sera utilisée. on_usb_connect et on_usb_disconnect , si défini, ont priorité sur les défauts globaux.
Conseils pour Windows : les moniteurs peuvent être renommés dans le registre à HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumDISPLAY{MODEL_ID}{CONNECTION_ID} . Modifiez la valeur DeviceDesc et modifiez le nom après le dernier point-virgule. Ceci est particulièrement utile au cas où ils ne sont tous que du "moniteur PNP générique".
display-switch prend en charge l'exécution de commandes externes lors de la connexion ou de la déconnexion des périphériques USB. Cette configuration peut être globale (s'exécute à chaque fois qu'un périphérique USB configuré est connecté ou déconnecté) ou par monitor (fonctionne uniquement lorsqu'un moniteur donné est commuté):
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 "Notes:
display-switch .Pour localiser l'ID de votre ID de périphérique USB sur Windows:
HIDVID_046D&PID_C52B&MI_00 (les valeurs exactes diffèrent) - L'ID de périphérique USB est une combinaison de l' ID du fournisseur et de l' ID du produit - par exemple, dans ce cas, ce serait 046D:C52B Pour localiser l'ID de votre ID de périphérique USB sur macOS, ouvrez un terminal et exécutez ce qui suit:
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bDans la sortie de commande, les lignes en surbrillance vous montrent quels IDS USB sont les plus pertinents.
Pour une liste complète des appareils USB:
system_profiler SPUSBDataType
IMPORTANT : Le format pour votre écran d'affichage.ini est vendorid: productId. Vendorid est contesté deuxième de la sortie system_profiler
Nécessite des packages supplémentaires, installer via: sudo apt install libxi-dev xorg-dev
Pour localiser l'ID de votre périphérique USB sur Linux, installez d'abord lsusb , pour lequel votre distribution Linux devrait avoir un package. (Sur Debian, Ubuntu et Redhat, le nom du package est usbutils .) Ensuite, dans un terminal, exécutez ce qui suit:
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
La sortie DIFF montrera quels IDS USB sont les plus pertinents.
/Users/USERNAME/Library/Logs/display-switch/display-switch.log%LOCALAPPDATA%display-switchdisplay-switch.log$XDG_DATA_HOME/display-switch/display-switch.log ou ~/.local/share/display-switch/display-switch.log Installez la rouille, puis faites cargo build --release
Installez Xcode, installez la rouille, puis faites cargo build --release
Installez la rouille, puis faites cargo build --release
Copiez display_switch.exe à partir de targetrelease (où il a été construit à l'étape précédente) vers %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.plistCopie Exécutable construit:
cp target/release/display_switch /usr/local/bin/ Activez l'accès à lire / écrire aux appareils I2C pour les utilisateurs du groupe i2c . Fonctionner comme racine:
groupadd i2c
echo ' KERNEL=="i2c-[0-9]*", GROUP="i2c" ' >> /etc/udev/rules.d/10-local_i2c_group.rules
udevadm control --reload-rules && udevadm triggerPuis ajoutez votre utilisateur au groupe I2C:
sudo usermod -aG i2c $(whoami)
Créez un fichier d'unité Systemd dans votre répertoire utilisateur ( /home/$USER/.config/systemd/user/display-switch.service ) avec le contenu
[Unit]
Description=Display switch via USB switch
[Service]
ExecStart=/usr/local/bin/display_switch
Type=simple
StandardOutput=journal
Restart=always
[Install]
WantedBy=default.target
Créez le fichier config sur /home/$USER/.config/display-switch/display-switch.ini . Puis activez le service avec
systemctl --user daemon-reload
systemctl --user enable display-switch.service
systemctl --user start display-switch.service