
Dieses Dienstprogramm wächst nach Ereignissen an Verbindung/Trennung von USB -Geräten an und schaltet die Überwachung der Eingänge über DDC/CI. Dies verwandelt einen einfachen USB-Schalter in eine vollwertige KVM-Lösung: Drücken Sie einen Taste auf Ihrem USB-Schalter und alle Ihre Monitore stellen eine Verbindung zu einer anderen Eingabe her.
Es soll auf allen Computern installiert werden, die mit diesen Monitoren verbunden werden könnten, da die App nur "in einem Weg" überwacht und sich auf sich selbst auf den anderen Computern verwandelt, um sie nach Bedarf "auf die andere Weise" zu wechseln.
Die App sollte auf MacOS, Windows und Linux funktionieren.
display_switch kann mit homebrew installiert werden: brew install haimgel/tools/display_switchDie Konfiguration ist auf allen Plattformen ziemlich ähnlich:
Auf macOS: Die Konfigurationsdatei wird in ~/Library/Preferences/display-switch.ini unter Windows erwartet: Die Konfigurationsdatei wird in %APPDATA%display-switchdisplay-switch.ini auf Linux erwartet: Die Konfigurationsdatei wird in $XDG_CONFIG_HOME/display-switch/display-switch.ini ~/.config/display-switch/display-switch.ini
Konfigurationsdateieinstellungen:
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device ist ein USB -Gerät (Anbieter -ID / Geräte -ID in Hex) und on_usb_connect ist, welcher Eingang auf den Wechsel zu diesem Gerät überwacht wird, wenn dieses Gerät angeschlossen ist. Unterstützte Werte sind Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 . Wenn Ihr Monitor über einen USB-C-Anschluss verfügt, wird er normalerweise als DisplayPort2 gemeldet. Eingabe kann auch als "rohe" Dezimal- oder Hexadezimalwert angegeben werden: on_usb_connect = 0x10
Die optionalen Einstellungen on_usb_disconnect ermöglichen es, in die andere Richtung zu wechseln, wenn das USB -Gerät getrennt ist. Beachten Sie, dass die bevorzugte Möglichkeit besteht, diese App auf beiden Computern zu installieren. Das Schalten "weg" ist problematisch: Wenn der andere Computer die Monitore in den Schlaf gebracht hat, wechselt sie sofort wieder auf die ursprüngliche Eingabe.
display-switch unterstützt die Konfiguration pro Monitor: Fügen Sie einen oder mehrere monitorspezifische Konfigurationsabschnitte hinzu, um monitorspezifische Eingänge festzulegen. Zum Beispiel:
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 gibt ein von Fall unempfindliches Substring an, das mit der Monitor-ID übereinstimmt. Zum Beispiel würde 'Len' LEN P27u-10 S/N 1144206897 Monitor ID übereinstimmen. Wenn mehr als ein Abschnitt eine Übereinstimmung hat, wird ein erster verwendet. on_usb_connect und on_usb_disconnect , falls definiert, haben Sie Vorrang vor globalen Standardeinstellungen.
Tipps für Windows : Monitore können in der Registrierung unter HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumDISPLAY{MODEL_ID}{CONNECTION_ID} umbenannt werden. Bearbeiten Sie den DeviceDesc -Wert und ändern Sie den Namen nach dem letzten Semikolon. Dies ist besonders hilfreich, falls sie alle nur "generischer PNP -Monitor" sind.
display-switch unterstützt das Ausführen externer Befehle bei der Verbindung oder Trennung von USB-Geräten. Diese Konfiguration kann global sein (jedes Mal, wenn ein konfiguriertes USB-Gerät angeschlossen oder getrennt wird) oder pro Monitor (läuft nur, wenn ein bestimmter Monitor geschaltet wird):
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 "Anmerkungen:
display-switch gestartet wurde.So finden Sie die ID Ihrer USB -Geräte -ID unter Windows:
HIDVID_046D&PID_C52B&MI_00 ähnelt (die genauen Werte werden unterscheiden) - Die USB -Geräte -ID ist eine Kombination aus der Lieferanten -ID und der Produkt -ID - in diesem Fall wäre sie beispielsweise 046D:C52B Öffnen Sie ein Terminal und führen Sie Folgendes aus:
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bIn der Befehlsausgabe zeigen die hervorgehobenen Zeilen Ihnen, welche USB -IDs am relevantesten sind.
Für eine vollständige Liste von USB -Geräten:
system_profiler SPUSBDataType
Wichtig : Das Format für Ihren Display-Switch.ini ist vendorid: productId. Die Anbieter wird in der Ausgabe system_profiler den zweiten Platz belegt
Benötigt zusätzliche Pakete, installieren Sie über: sudo apt install libxi-dev xorg-dev
Um die ID Ihres USB -Geräts unter Linux zu finden, installieren Sie zuerst lsusb , für die Ihre Linux -Distribution über ein Paket verfügen sollte. (Auf Debian, Ubuntu und Redhat ist der Paketname usbutils .) Dann führen Sie in einem Terminal Folgendes aus:
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
Die Diff -Ausgabe zeigt, welche USB -IDs am relevantesten sind.
/Users/USERNAME/Library/Logs/display-switch/display-switch.log geschrieben%LOCALAPPDATA%display-switchdisplay-switch.log geschrieben$XDG_DATA_HOME/display-switch/display-switch.log oder ~/.local/share/display-switch/display-switch.log geschrieben. Rost installieren, dann cargo build --release durchführen
Installieren Sie Xcode, cargo build --release
Rost installieren, dann cargo build --release durchführen
Kopieren Sie display_switch.exe aus targetrelease (wo es im vorherigen Schritt integriert wurde) zu %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.plistKopieren Sie erstellte ausführbare Datei:
cp target/release/display_switch /usr/local/bin/ Aktivieren Sie Lese-/Schreibzugriff auf I2C -Geräte für Benutzer in i2c -Gruppe. Laufen Sie als Root:
groupadd i2c
echo ' KERNEL=="i2c-[0-9]*", GROUP="i2c" ' >> /etc/udev/rules.d/10-local_i2c_group.rules
udevadm control --reload-rules && udevadm triggerFügen Sie dann Ihren Benutzer zur i2c -Gruppe hinzu:
sudo usermod -aG i2c $(whoami)
Erstellen Sie eine Systemd-Einheitsdatei in Ihrem Benutzerverzeichnis ( /home/$USER/.config/systemd/user/display-switch.service ) mit Inhalten
[Unit]
Description=Display switch via USB switch
[Service]
ExecStart=/usr/local/bin/display_switch
Type=simple
StandardOutput=journal
Restart=always
[Install]
WantedBy=default.target
Erstellen Sie die Konfigurationsdatei unter /home/$USER/.config/display-switch/display-switch.ini . Dann aktivieren Sie den Service mit
systemctl --user daemon-reload
systemctl --user enable display-switch.service
systemctl --user start display-switch.service