95 lines
2.4 KiB
Markdown
95 lines
2.4 KiB
Markdown
# Internal KVM Switch
|
|
|
|
FastAPI dashboard and polling service for Alienware-only KVM switching.
|
|
|
|
## Trigger Logic
|
|
|
|
The app targets Alienware AW3423DWF for switching and uses Samsung as trigger-only.
|
|
|
|
Monitor filtering:
|
|
|
|
- Alienware target monitor: description contains `AW3423DWF`
|
|
- Samsung trigger monitor: Samsung-only descriptions (`SAM...` / `SAMSUNG`)
|
|
- Other non-Alienware DDC monitors are ignored for trigger selection
|
|
|
|
Configure only one value per machine:
|
|
|
|
- this device Alienware target port: `DP1`, `DP2`, or `HDMI`
|
|
- optional auxiliary trigger monitor: selected in UI; if not set, auto-detection is used
|
|
|
|
Samsung trigger input codes (for diagnostics only):
|
|
|
|
- `DP1` -> `15`
|
|
- `DP2` -> `19` (or `16` on some setups)
|
|
- `HDMI` -> `17`
|
|
|
|
- If the auxiliary external monitor is present, the app checks Alienware current input and enforces the configured `device_port` via `monitorcontrol`.
|
|
|
|
Retry behavior:
|
|
|
|
- Only attempts switching while the Samsung screen is connected
|
|
- After each switch attempt, waits `5` seconds and rechecks
|
|
- Tries at most `3` times per Samsung-connected session
|
|
- After success, it will not try again until the Samsung screen disconnects and reconnects
|
|
|
|
## Run
|
|
|
|
```powershell
|
|
uv run kvm-switch
|
|
```
|
|
|
|
The dashboard is served at `http://localhost:4000`.
|
|
|
|
## Test
|
|
|
|
```powershell
|
|
uv run pytest -q
|
|
```
|
|
|
|
## Diagnostic Script
|
|
|
|
Use this to inspect connected DDC/CI monitors and current input values:
|
|
|
|
```powershell
|
|
uv run monitorcontrol_main.py
|
|
```
|
|
|
|
## Autostart
|
|
|
|
### Recommended: one-command installer
|
|
|
|
From the project folder, run:
|
|
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File .\install_autostart.ps1
|
|
```
|
|
|
|
This creates or updates a Startup shortcut for the current Windows user and points it to this folder's `start_kvm_switch_background.vbs`.
|
|
No hardcoded `C:\Users\...` path is required, so it works across tower/laptop deployments.
|
|
|
|
### Manual option: Startup folder
|
|
|
|
1. Press `Win + R`
|
|
2. Run `shell:startup`
|
|
3. Create a shortcut to this repo's `start_kvm_switch_background.vbs`
|
|
|
|
The launcher resolves its own folder dynamically, so the project can live in different user directories.
|
|
|
|
### Cleaner option: Task Scheduler
|
|
|
|
Use Task Scheduler if you want it to start automatically at logon with better control.
|
|
|
|
Program/script:
|
|
|
|
```text
|
|
wscript.exe
|
|
```
|
|
|
|
Arguments:
|
|
|
|
```text
|
|
"<full-path-to-project>\\start_kvm_switch_background.vbs"
|
|
```
|
|
|
|
Set the trigger to `At log on`. Optional: enable `Hidden` in task settings.
|