Files
claude_settings/plans/eager-cooking-knuth.md

1.9 KiB

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)

# 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)

# 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)

# 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, 2, 0, 1
  • 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)