fixed initial problems

This commit is contained in:
humocs-man
2026-09-27 18:48:10 +02:00
parent 824e27c133
commit 80b378fd06
18 changed files with 224 additions and 19 deletions
+40 -7
View File
@@ -85,9 +85,11 @@ def render(outputs):
lines = [
MARKER,
f"# generiert am {datetime.now().isoformat(timespec='seconds')}",
"# Quelle: wlr-randr (live). Feintuning: wdisplays oder Hand-Edit",
"# (Hand-Edit: Marker-Zeile loeschen, dann fasst --apply-if-managed",
"# diese Datei nicht mehr an.)",
"# Quelle: wlr-randr (live). Feintuning: wdisplays oder Modus direkt",
"# in dieser Datei anpassen - bei unveraendertem Output-Set bleibt",
"# die Datei (inkl. deiner Modus-Tweaks) bei jedem Login erhalten.",
"# Neu generiert wird nur bei geaendertem Output-Set (Docking) oder",
"# per --apply. Marker-Zeile loeschen = ganz hand-gepflegt.",
"",
]
externals = [o for o in outputs if not o["internal"]]
@@ -146,13 +148,28 @@ def apply(text):
print(f"Geschrieben: {CONFIG_PATH}")
def config_output_names(path: Path):
"""Output-Namen aus einer bestehenden kanshi-Config (ohne '*' Fallback)."""
names = set()
try:
for line in path.read_text().splitlines():
parts = line.strip().split()
if len(parts) >= 2 and parts[0] == "output" and parts[1] != "*":
names.add(parts[1].strip("'\""))
except OSError:
pass
return names
def main(argv):
outputs = detect_outputs()
if not outputs:
print("WARN: keine Outputs erkannt - schreibe Fallback-Config", file=sys.stderr)
print("WARN: keine Outputs erkannt", file=sys.stderr)
text = render(outputs)
# Default ohne Schreib-Flag: nur anzeigen, nichts schreiben (sicher).
if "--print" in argv or ("--apply" not in argv and "--apply-if-managed" not in argv):
if not outputs:
print("# (Fallback-Anteil, da keine Outputs erkannt)", file=sys.stderr)
print(text)
if outputs:
print(
@@ -160,9 +177,25 @@ def main(argv):
file=sys.stderr,
)
return 0
if "--apply-if-managed" in argv and not is_managed(CONFIG_PATH):
print(f"{CONFIG_PATH} ist hand-gepflegt - lasse sie unangetastet.")
return 0
if "--apply-if-managed" in argv:
if not CONFIG_PATH.exists():
apply(text) # Erst-Login: anlegen
return 0
if not is_managed(CONFIG_PATH):
print(f"{CONFIG_PATH} ist hand-gepflegt - lasse sie unangetastet.")
return 0
if not outputs:
# Erkennung fehlgeschlagen -> niemals eine gute Config clobbern.
print("WARN: Erkennung fehlgeschlagen - lasse verwaltete Config unangetastet.",
file=sys.stderr)
return 0
if {o["name"] for o in outputs} == config_output_names(CONFIG_PATH):
# Gleiches Output-Set (z.B. jeden Boot dieselbe VM-Anzeige):
# Modus-Tweaks des Users bleiben erhalten, kein Rewrite.
print(f"Outputs unveraendert ({', '.join(sorted(config_output_names(CONFIG_PATH)))})"
" - behalte Config (inkl. Modus-Tweaks) bei.")
return 0
# Output-Set geaendert (angedockt/abgedockt): neu generieren.
apply(text)
return 0