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
+19 -2
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# seed-labwc-skel: kopiert fehlende labwc/kanshi-Defaults aus /etc/skel.
# Nuetzlich nach Rebase von Kinoite auf den labwc-Zweig, weil /home
# seed-labwc-skel: kopiert fehlende Desktop-Defaults aus /etc/skel.
# Nuetzlich nach Rebase auf den labwc-Zweig, weil /home (/var/home)
# erhalten bleibt und /etc/skel nur bei NEU angelegten Benutzern greift.
# Bestehende Dateien werden NIEMALS ueberschrieben (cp -n).
set -euo pipefail
@@ -12,6 +12,11 @@ TARGETS=(
".config/labwc/rc.xml"
".config/labwc/menu.xml"
".config/kanshi/config.template"
".config/alacritty/alacritty.toml"
".config/alacritty/themes/noctalia.toml"
".config/noctalia/templates.toml"
".config/noctalia/shell.toml"
".config/mimeapps.list"
)
for rel in "${TARGETS[@]}"; do
@@ -31,3 +36,15 @@ if [[ ! -e "${HOME}/.config/kanshi/config" ]]; then
echo "Keine kanshi-Config gefunden. Erzeugen mit:"
echo " kanshi-autoconfig --apply (schreibt ~/.config/kanshi/config)"
fi
# Wallpaper-Grundstock (Dateinamen unbekannt -> Glob statt Liste)
if [[ -d "${SKEL}/Pictures" ]]; then
mkdir -p "${HOME}/Pictures"
for pic in "${SKEL}"/Pictures/*; do
[[ -e "${pic}" ]] || continue
if [[ ! -e "${HOME}/Pictures/$(basename "${pic}")" ]]; then
cp -n "${pic}" "${HOME}/Pictures/"
echo "angelegt: ${HOME}/Pictures/$(basename "${pic}")"
fi
done
fi