feat: live charge limit, identity retunes, btop assets (product calls)
All checks were successful
Check / eval (push) Successful in 3m0s

- Charge limit: udev GROUP=users on threshold; menu applies sysfs live
  and persists state; boot/AC oneshot prefers live theme-state.json.
- Look & Feel: Reset wallpaper (auto); Theme/next/night light already there.
- NVIDIA first-class wrappers deferred past v1 (keep #59 comments).
- Identity taste: white, lumon, hackerman, matte-black, miasma.
- Hand btop.theme for identity + boreal/executive-slate/neon-glass.

Verified: V0 contrast; V1 battery-charge-limit VM. V3 live sysfs on laptop.
This commit is contained in:
Bernardo Magri
2026-07-10 12:12:13 +01:00
parent 099d214529
commit eb951569cf
21 changed files with 306 additions and 474 deletions

View File

@@ -314,9 +314,18 @@ let
fi
back
} | rofi -dmenu -show-icons -p "Power profile: ''${curp:-n/a}, limit: ''${curc:-default}") || exit 0
# Persist in-flake + apply live to sysfs (udev makes the node
# group-writable for users Bernardo 2026-07-10).
set_limit() {
nomarchy-theme-sync --quiet set settings.power.batteryChargeLimit "$1" --no-switch
notify-send "Battery limit" "$2 applies on the next rebuild."
n="$1"; [ "$n" = null ] && n=100
for d in /sys/class/power_supply/*/; do
[ "$(cat "$d/type" 2>/dev/null)" = Battery ] || continue
[ "$(cat "$d/scope" 2>/dev/null || echo System)" = Device ] && continue
thresh="$d/charge_control_end_threshold"
[ -w "$thresh" ] && echo "$n" > "$thresh" 2>/dev/null || true
done
notify-send "Battery limit" "$2 applied now."
}
case "$choice" in
"$BACK") exec "$0" ;;
@@ -530,12 +539,13 @@ ${themeRows}
esac ;;
lookfeel)
# Look & Feel appearance grouped (item 19): the theme picker,
# wallpaper cycling, night light. The root stays six rows; the
# SUPER+T / SUPER+SHIFT+T direct binds still hit the leaves.
# Look & Feel appearance: Theme, wallpapers, night light.
# Root stays six entries (Apps / Look & Feel / Tools / System /
# Power / Keybindings). SUPER+T / SUPER+SHIFT+T still hit leaves.
choice=$( {
row "Theme${menuHint "theme"}" preferences-desktop-theme
row "Next wallpaper${hintForAction "exec, nomarchy-theme-sync bg next"}" preferences-desktop-wallpaper
row "Reset wallpaper (auto)" preferences-desktop-wallpaper
if systemctl --user is-active --quiet hyprsunset.service 2>/dev/null
then row "Night light (on)" weather-clear-night
else row "Night light (off)" weather-clear-night
@@ -545,7 +555,8 @@ ${themeRows}
case "$choice" in
"$BACK") exec "$0" ;;
*Theme*) exec "$0" theme ;;
*wallpaper*) exec nomarchy-theme-sync bg next ;;
*"Next wallpaper"*) exec nomarchy-theme-sync bg next ;;
*"Reset wallpaper"*) exec nomarchy-theme-sync bg auto ;;
*"Night light"*) exec "$0" nightlight ;;
esac ;;
@@ -903,10 +914,8 @@ ${themeRows}
# Battery charge-limit preset picker the rofi-System counterpart of
# the control-center's toggle (Bernardo: he wanted this in the menu,
# not buried in the gum TUI). Writes the baked NixOS option
# settings.power.batteryChargeLimit via theme-sync (--no-switch), so
# it lands on the next sys-rebuild the sysfs oneshot in power.nix
# owns applying it (boot + AC-replug). Self-gated in System; guard
# here too in case it's invoked directly.
# Persist + live sysfs apply (same as powermgmt). Boot/AC re-apply
# stays with the oneshot in power.nix.
has_charge_threshold \
|| { notify-send "Battery limit" "No charge-threshold control on this machine."; exit 0; }
cur=$(nomarchy-theme-sync get settings.power.batteryChargeLimit 2>/dev/null)
@@ -920,7 +929,14 @@ ${themeRows}
} | rofi -dmenu -show-icons -p "Battery limit (now: ''${cur:-default})") || exit 0
set_limit() {
nomarchy-theme-sync --quiet set settings.power.batteryChargeLimit "$1" --no-switch
notify-send "Battery limit" "$2 applies on the next rebuild."
n="$1"; [ "$n" = null ] && n=100
for d in /sys/class/power_supply/*/; do
[ "$(cat "$d/type" 2>/dev/null)" = Battery ] || continue
[ "$(cat "$d/scope" 2>/dev/null || echo System)" = Device ] && continue
thresh="$d/charge_control_end_threshold"
[ -w "$thresh" ] && echo "$n" > "$thresh" 2>/dev/null || true
done
notify-send "Battery limit" "$2 applied now."
}
case "$sel" in
"$BACK") exec "$0" system ;;