feat(assets): NexusOS asset + theme rebrand
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
NexusOS battery-icon recolorizer.
|
||||
|
||||
xfce4-power-manager draws the panel battery from the icon theme's
|
||||
`battery-*-charging-symbolic` icons. Papirus-Dark (which NexusOS
|
||||
inherits from) paints the charging bolt/fill in its own material green
|
||||
(#4caf50). This script copies every charging battery symbolic icon into
|
||||
the NexusOS theme with that green swapped for brand_green (#8cc63f), so
|
||||
the charging indicator matches the rest of the NexusOS accent.
|
||||
|
||||
Only the green is touched — the gray battery body (#dfdfdf) is left
|
||||
alone (it already reads fine on the dark panel). Symlinked aliases
|
||||
(good/low/medium/caution/empty-charging) are resolved and written as
|
||||
real recolored files so every requested name overrides Papirus.
|
||||
|
||||
Run: python3 build_battery.py
|
||||
Then: gtk-update-icon-cache -f -t ../NexusOS-icons
|
||||
xfce4-panel -r # reload panel to pick up new icons
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent
|
||||
OUT = ROOT.parent / "NexusOS-icons" / "scalable" / "status"
|
||||
SRC = Path("/usr/share/icons/Papirus-Dark/symbolic/status")
|
||||
|
||||
PAPIRUS_GREEN = "#4caf50"
|
||||
NEXUS_GREEN = "#8cc63f" # brand_green
|
||||
|
||||
|
||||
def main() -> None:
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
# Every charging battery symbolic icon (charged-100 has no green, so
|
||||
# the replace is a harmless no-op there; we copy it too for a
|
||||
# consistent battery set under the NexusOS theme).
|
||||
sources = sorted(SRC.glob("battery-*charg*-symbolic.svg"))
|
||||
written = 0
|
||||
for src in sources:
|
||||
# read_text follows symlinks, so alias names get the real content
|
||||
content = src.read_text()
|
||||
if PAPIRUS_GREEN not in content:
|
||||
# charged/full icons with no green — skip; let them fall
|
||||
# through to Papirus unchanged.
|
||||
continue
|
||||
recolored = content.replace(PAPIRUS_GREEN, NEXUS_GREEN)
|
||||
(OUT / src.name).write_text(recolored)
|
||||
written += 1
|
||||
print(f"Recolored {written} charging battery icons "
|
||||
f"({PAPIRUS_GREEN} -> {NEXUS_GREEN}) into {OUT}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user