Files
2026-07-11 07:25:15 -05:00

55 lines
2.0 KiB
Python
Executable File

#!/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()