fixed initial problems
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user