Rolling Documentation: Opportunistisches Host-Scanning hinzugefügt
This commit is contained in:
69
plans/eager-cooking-knuth.md
Normal file
69
plans/eager-cooking-knuth.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Plan: RDP Client Monitor-Auswahl verbessern
|
||||
|
||||
## Problem
|
||||
|
||||
Bei "2 Monitors" werden falsche Monitore ausgewählt (Links + Laptop statt Links + Mitte).
|
||||
|
||||
**Ursache**: Die Funktion `_get_best_monitor_selection()` sortiert Monitore nur nach X-Position. Bei gleicher X-Position (Laptop und Mittlerer Monitor sind beide bei X=1920) gewinnt die niedrigere Monitor-ID.
|
||||
|
||||
**Aktuelles Layout**:
|
||||
```
|
||||
Monitor [3]: X=0, Y=0 <- Links
|
||||
Monitor [2]: X=1920, Y=0 <- Mitte oben
|
||||
Monitor [0]: X=1920, Y=1080 <- Laptop (Primary, unten)
|
||||
Monitor [1]: X=3840, Y=0 <- Rechts
|
||||
```
|
||||
|
||||
## Loesung
|
||||
|
||||
Sortierung verbessern: Bei gleicher X-Position den Monitor mit niedrigerer Y-Position bevorzugen (Monitore oben vor Monitoren unten).
|
||||
|
||||
## Aenderungen
|
||||
|
||||
**Datei**: `rdp_client.py`
|
||||
|
||||
### 1. Y-Position parsen (Zeile ~410)
|
||||
|
||||
```python
|
||||
# Aktuell:
|
||||
x_pos = int(pos_part.split('+')[1])
|
||||
monitor_info = (monitor_id, x_pos, is_primary)
|
||||
|
||||
# Neu:
|
||||
pos_coords = pos_part.split('+')[1:] # ['1920', '1080']
|
||||
x_pos = int(pos_coords[0])
|
||||
y_pos = int(pos_coords[1]) if len(pos_coords) > 1 else 0
|
||||
monitor_info = (monitor_id, x_pos, y_pos, is_primary)
|
||||
```
|
||||
|
||||
### 2. Sortierung anpassen (Zeile ~417)
|
||||
|
||||
```python
|
||||
# Aktuell:
|
||||
monitors.sort(key=lambda x: x[1])
|
||||
|
||||
# Neu: Primaer nach X, sekundaer nach Y
|
||||
monitors.sort(key=lambda m: (m[1], m[2]))
|
||||
```
|
||||
|
||||
### 3. Log-Ausgabe anpassen (Zeile ~421)
|
||||
|
||||
```python
|
||||
# Aktuell:
|
||||
self.logger.info(f"Monitor layout detected: {[(m[0], m[1], 'primary' if m[2] else 'secondary') for m in monitors]}")
|
||||
|
||||
# Neu:
|
||||
self.logger.info(f"Monitor layout detected: {[(m[0], m[1], m[2], 'primary' if m[3] else 'secondary') for m in monitors]}")
|
||||
```
|
||||
|
||||
## Erwartetes Ergebnis
|
||||
|
||||
Nach der Aenderung bei "2 Monitors":
|
||||
- Sortierung: [3](X=0), [2](X=1920,Y=0), [0](X=1920,Y=1080), [1](X=3840)
|
||||
- Auswahl: "3,2" = Linker + Mittlerer Monitor
|
||||
|
||||
## Verifikation
|
||||
|
||||
1. `xfreerdp /monitor-list` ausfuehren, um Monitor-Layout zu pruefen
|
||||
2. RDP-Verbindung mit "2 Monitors" testen
|
||||
3. Log-Datei pruefen (`~/.config/rdp-client/rdp_client.log`)
|
||||
Reference in New Issue
Block a user