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

@@ -74,22 +74,19 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.*
### Product / day-2 ### Product / day-2
- **Battery charge-limit — make the toggle instant** `[blocked:hw]` _(Battery charge-limit instant → shipped 2026-07-10: udev GROUP=users +
Menu/CC write `settings.power.batteryChargeLimit` but need a rebuild. menu live sysfs + oneshot reads live theme-state; V3 confirm on laptop.)_
Instant path: udev group-writable `charge_control_end_threshold` on
system batteries + live `echo` alongside state persist. Decide first
whether a local user may set the charge cap. Cost: medium; hw confirm.
_(Portal/Flatpak IR camera → **#71** docs (a); (b)/(c) still need T14s.)_ _(Portal/Flatpak IR camera → **#71** docs (a); (b)/(c) still need T14s.)_
_(Post-install hardware hints residual → **#73**.)_ _(Post-install hardware hints residual → **#73**.)_
- **Look & Feel submenu** (ROADMAP optional) — night-light, wallpaper _(Look & Feel submenu → already shipped (Theme / wallpaper / night light);
cycle, blur/gaps with Theme; root stays six entries. Product call. 2026-07-10: Reset wallpaper (auto) row; root stays six.)_
- **NVIDIA first-class options** `[big]` `[blocked:hw]` — thin - **NVIDIA first-class options** **deferred past v1** (Bernardo
`nomarchy.hardware.nvidia.*` only with hybrid maintainer + queue. 2026-07-10). Keep #59 commented install guidance; no
Prefer shipped #59 commented guidance until then. `nomarchy.hardware.nvidia.*` until a hybrid maintainer + queue.
### Installer / template ### Installer / template
@@ -109,17 +106,14 @@ _(summer-day/night pair polish + status CSS + preview recapture →
shipped 2026-07-10: JSON SoT, status states, theme-shot previews for shipped 2026-07-10: JSON SoT, status states, theme-shot previews for
executive-slate + neon-glass.)_ executive-slate + neon-glass.)_
- **Identity optional taste retunes** — white / lumon / hackerman / _(Identity taste retunes + hand `btop.theme` for white/vantablack/lumon/
matte-black / miasma hierarchy or status L-steps only (no traffic-light hackerman/matte-black/miasma/neon-glass/boreal/executive-slate →
forced on identity themes). Product call per theme. shipped 2026-07-10.)_
- **Optional identity `btop.theme`** for identity whole-swaps still on
generated btop. Cost: assets; V3.
### v1.0 pointer ### v1.0 pointer
See **VISION**. Remaining PROPOSED: charge-limit instant, Look & Feel, See **VISION**. Open PROPOSED: NVIDIA wrappers deferred past v1; IR
NVIDIA first-class, identity taste / optional btop themes. portal (b)/(c) hardware.
## Decisions `[human]` ## Decisions `[human]`

View File

@@ -8,6 +8,10 @@ the failure as a NOW bug in BACKLOG.md. Machines: the **AMD dev box**
QA machine), the **T14s** (webcam case). QA machine), the **T14s** (webcam case).
## Any machine (dev box is fine) ## Any machine (dev box is fine)
- [ ] **Charge-limit live apply (2026-07-10)** — on a laptop with
`charge_control_end_threshold`: System Battery limit → 80%;
confirm `cat …/charge_control_end_threshold` is 80 without rebuild;
unplug/replug AC, confirm still 80 (oneshot). User in `users` group.
- [ ] **#41 float classes (polkit / pinentry / portal / blueman)** — after - [ ] **#41 float classes (polkit / pinentry / portal / blueman)** — after
rebuild: (1) `pkexec true` or mount a disk → polkit dialog should rebuild: (1) `pkexec true` or mount a disk → polkit dialog should
float+center; if not, note `hyprctl clients` class while open. float+center; if not, note `hyprctl clients` class while open.

View File

@@ -17,6 +17,19 @@ Template:
--- ---
## 2026-07-10 — Product calls: charge live, identity, btop, NVIDIA skip
- **Task:** Bernardo decisions on remaining PROPOSED.
- **Did:** (1) Instant charge-limit: udev GROUP=users on threshold,
menu/powermgmt live sysfs + state, oneshot reads live theme-state +
AC re-apply. (2) Look & Feel already had Theme/wallpaper/night light;
added Reset wallpaper (auto). (3) NVIDIA first-class deferred past v1
(HARDWARE.md). (4) Identity retunes: white L-steps, lumon subtext,
hackerman surface+UI warn/bad, matte-black subtext, miasma bad.
(5) Hand `btop.theme` for 9 identity/whole-swap slugs from palette map.
- **Verified:** **V0** contrast 24×7; **V1** battery-charge-limit VM
(udev restart). **V3** live charge write on real laptop (HARDWARE-QUEUE).
- **Next suggestion:** only #20/#41 blocked, or Decisions.
## 2026-07-10 — Summer pair polish + status CSS + preview recapture ## 2026-07-10 — Summer pair polish + status CSS + preview recapture
- **Task:** finish agent-able PROPOSED theme leftovers. - **Task:** finish agent-able PROPOSED theme leftovers.
- **Did:** summer-day/night — JSON hierarchy (night subtext/muted/overlay - **Did:** summer-day/night — JSON hierarchy (night subtext/muted/overlay

View File

@@ -237,18 +237,19 @@ force-load every GPU driver (avoids multi-driver panics). Proprietary
NVIDIA on the live session is not the product focus; installed systems NVIDIA on the live session is not the product focus; installed systems
use the profile. use the profile.
**Product direction (shipped #59):** when `common-gpu-nvidia` is in **Product direction (shipped #59; first-class wrappers deferred for v1):**
`hardwareProfile`, the installer emits a **commented** `system.nix` block when `common-gpu-nvidia` is in `hardwareProfile`, the installer emits a
with PRIME / power / open-module pointers (same pattern as ROCm / NPU **commented** `system.nix` block with PRIME / power / open-module pointers
comments). A full `nomarchy.hardware.nvidia.*` stack stays optional and (same pattern as ROCm / NPU comments). No `nomarchy.hardware.nvidia.*`
needs a maintainer + hardware-queue coverage. stack for v1 — hybrid PRIME remains wiki/plain NixOS until a maintainer
commits to hardware testing.
## 7. Day-2: “my laptop is mostly fine, make it fully fine” ## 7. Day-2: “my laptop is mostly fine, make it fully fine”
| Goal | How | Rebuild? | | Goal | How | Rebuild? |
|------|-----|----------| |------|-----|----------|
| Power profile (perf/balanced/saver) | System menu / Waybar | No (PPD D-Bus) | | Power profile (perf/balanced/saver) | System menu / Waybar | No (PPD D-Bus) |
| Charge limit 80% | Menu / `settings.power.batteryChargeLimit` | System (sysfs apply is separate backlog) | | Charge limit 80% | Menu / CC — live sysfs + state; boot oneshot re-applies | No rebuild for live; rebuild bakes Nix option |
| Thermald (Intel) | Installer on for Intel laptops; else `power.thermal.enable` | System | | Thermald (Intel) | Installer on for Intel laptops; else `power.thermal.enable` | System |
| Fingerprint enroll | `fprintd-enroll` | No | | Fingerprint enroll | `fprintd-enroll` | No |
| Fingerprint login | `fingerprint.pam = true` | System | | Fingerprint login | `fingerprint.pam = true` | System |

View File

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

View File

@@ -109,9 +109,10 @@
where the hardware exposes charge_control_end_threshold on a where the hardware exposes charge_control_end_threshold on a
system battery (type=Battery under /sys/class/power_supply; system battery (type=Battery under /sys/class/power_supply;
name-agnostic BAT0, CMB0, ). name-agnostic BAT0, CMB0, ).
null leaves charging at the firmware default. Backend-independent null leaves charging at the firmware default (menu writes 100).
(a small systemd unit writes the sysfs knob, re-applied on AC Backend-independent: the menu applies live via sysfs (udev
state changes), so it works under PPD too; needs GROUP=users on the threshold node) and persists settings in
theme-state; a oneshot re-applies on boot and AC replug. Needs
nomarchy.system.power.laptop. nomarchy.system.power.laptop.
''; '';
}; };

View File

@@ -5,13 +5,12 @@
# gate on powerprofilesctl being present, so there's no system→home wiring # gate on powerprofilesctl being present, so there's no system→home wiring
# to keep in sync (the same way the Waybar battery widget auto-hides on # to keep in sync (the same way the Waybar battery widget auto-hides on
# desktops). See the roadmap in README.md. # desktops). See the roadmap in README.md.
{ config, lib, ... }: { config, lib, pkgs, ... }:
let let
cfg = config.nomarchy.system.power; cfg = config.nomarchy.system.power;
ppd = cfg.backend == "ppd"; ppd = cfg.backend == "ppd";
tlp = cfg.backend == "tlp"; tlp = cfg.backend == "tlp";
chargeLimit = cfg.laptop && cfg.batteryChargeLimit != null;
in in
{ {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
@@ -40,36 +39,51 @@ in
# TLP's own knob only applies under TLP — so a tiny oneshot writes # TLP's own knob only applies under TLP — so a tiny oneshot writes
# the threshold directly, independent of the backend. Re-applied on # the threshold directly, independent of the backend. Re-applied on
# AC state changes by the udev rule below (some firmwares reset the # AC state changes by the udev rule below (some firmwares reset the
# threshold when the charger is unplugged). `[ -w ]` skips paths that # threshold when the charger is unplugged).
# don't exist, so this is a clean no-op on hardware without the control. #
systemd.services.nomarchy-battery-charge-limit = lib.mkIf chargeLimit { # Instant menu path (user decision 2026-07-10): the threshold node is
description = "Cap battery charging at ${toString cfg.batteryChargeLimit}%"; # group-writable for `users` so nomarchy-menu can echo live without
# rebuild; this oneshot still owns boot + AC-replug re-apply. Prefer
# live theme-state.json under /home/*/.nomarchy so a menu change
# survives reboot before the next sys-rebuild bakes the Nix option.
systemd.services.nomarchy-battery-charge-limit = lib.mkIf cfg.laptop {
description = "Apply battery charge end threshold from state or config";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.jq pkgs.coreutils ];
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
}; };
script = '' script = ''
# Name-agnostic (BAT0, CMB0, ): same type/scope filter as set -euo pipefail
# nomarchy-battery-notify BACKLOG #60. # Baked generation default (empty = full charge / no cap).
limit=${if cfg.batteryChargeLimit != null then toString cfg.batteryChargeLimit else ""}
# Prefer the newest live state write (menu path, no rebuild yet).
for st in /home/*/.nomarchy/theme-state.json; do
[ -r "$st" ] || continue
v=$(jq -r '.settings.power.batteryChargeLimit // empty' "$st" 2>/dev/null || true)
case "$v" in
""|null|Null) ;;
*[!0-9]*) ;;
*) limit=$v ;;
esac
done
[ -n "$limit" ] || limit=100
# Name-agnostic system batteries (BACKLOG #60).
for d in /sys/class/power_supply/*/; do for d in /sys/class/power_supply/*/; do
[ "$(cat "$d/type" 2>/dev/null)" = Battery ] || continue [ "$(cat "$d/type" 2>/dev/null)" = Battery ] || continue
[ "$(cat "$d/scope" 2>/dev/null || echo System)" = Device ] && continue [ "$(cat "$d/scope" 2>/dev/null || echo System)" = Device ] && continue
thresh="$d/charge_control_end_threshold" thresh="$d/charge_control_end_threshold"
[ -w "$thresh" ] && echo ${toString cfg.batteryChargeLimit} > "$thresh" [ -w "$thresh" ] && echo "$limit" > "$thresh" || true
done done
exit 0 exit 0
''; '';
}; };
# Re-apply the threshold whenever the mains adapter changes state: the # Writable threshold for the logged-in user (menu live apply) + AC
# boot oneshot above runs once, but some firmwares clear the limit when # re-apply of the oneshot. Laptop only; no-op when the attr is absent.
# the charger is unplugged, so it must be re-asserted on the event. services.udev.extraRules = lib.mkIf cfg.laptop ''
# Matched by ATTR{type}=="Mains" (vendor-neutral — the kernel name SUBSYSTEM=="power_supply", ATTR{type}=="Battery", TEST=="charge_control_end_threshold", GROUP="users", MODE="0664"
# AC/AC0/ADP1/ACAD varies); --no-block so the RUN+= returns at once
# (systemd kills long-running udev workers); restart (not try-restart)
# so it re-applies even if the boot run was inactive.
services.udev.extraRules = lib.mkIf chargeLimit ''
SUBSYSTEM=="power_supply", ATTR{type}=="Mains", RUN+="${config.systemd.package}/bin/systemctl --no-block restart nomarchy-battery-charge-limit.service" SUBSYSTEM=="power_supply", ATTR{type}=="Mains", RUN+="${config.systemd.package}/bin/systemctl --no-block restart nomarchy-battery-charge-limit.service"
''; '';
}; };

25
themes/boreal/btop.theme Normal file
View File

@@ -0,0 +1,25 @@
theme[main_bg]="#21272F"
theme[main_fg]="#D3DAE0"
theme[title]="#D3DAE0"
theme[hi_fg]="#B79BE8"
theme[selected_bg]="#404D5C"
theme[selected_fg]="#D3DAE0"
theme[inactive_fg]="#5E6A78"
theme[graph_text]="#97A3B2"
theme[meter_bg]="#303A46"
theme[proc_misc]="#86C7C0"
theme[cpu_box]="#B79BE8"
theme[mem_box]="#A3CF88"
theme[net_box]="#86C7C0"
theme[proc_box]="#303A46"
theme[div_line]="#404D5C"
theme[temp_start]="#A3CF88"
theme[temp_mid]="#E6C384"
theme[temp_end]="#E2818A"
theme[cpu_start]="#A3CF88"
theme[cpu_mid]="#E6C384"
theme[cpu_end]="#E2818A"
theme[free_start]="#A3CF88"
theme[used_start]="#E6C384"
theme[download_start]="#B79BE8"
theme[upload_start]="#86C7C0"

View File

@@ -0,0 +1,25 @@
theme[main_bg]="#191C24"
theme[main_fg]="#D7DDEA"
theme[title]="#D7DDEA"
theme[hi_fg]="#5A8AE6"
theme[selected_bg]="#3E4759"
theme[selected_fg]="#D7DDEA"
theme[inactive_fg]="#5C6578"
theme[graph_text]="#9AA5BB"
theme[meter_bg]="#2A3040"
theme[proc_misc]="#86A9F2"
theme[cpu_box]="#5A8AE6"
theme[mem_box]="#6FAE72"
theme[net_box]="#86A9F2"
theme[proc_box]="#2A3040"
theme[div_line]="#3E4759"
theme[temp_start]="#6FAE72"
theme[temp_mid]="#DBA85A"
theme[temp_end]="#D06B71"
theme[cpu_start]="#6FAE72"
theme[cpu_mid]="#DBA85A"
theme[cpu_end]="#D06B71"
theme[free_start]="#6FAE72"
theme[used_start]="#DBA85A"
theme[download_start]="#5A8AE6"
theme[upload_start]="#86A9F2"

View File

@@ -7,7 +7,7 @@
"colors": { "colors": {
"base": "#0B0C16", "base": "#0B0C16",
"mantle": "#090a13", "mantle": "#090a13",
"surface": "#0B0C16", "surface": "#1a1c2e",
"overlay": "#6a6e95", "overlay": "#6a6e95",
"text": "#ddf7ff", "text": "#ddf7ff",
"subtext": "#85E1FB", "subtext": "#85E1FB",
@@ -15,8 +15,8 @@
"accent": "#82FB9C", "accent": "#82FB9C",
"accentAlt": "#86a7df", "accentAlt": "#86a7df",
"good": "#4fe88f", "good": "#4fe88f",
"warn": "#50f7d4", "warn": "#e8d44f",
"bad": "#50f872" "bad": "#ff5a7a"
}, },
"border": { "border": {
"active": "accent", "active": "accent",

View File

@@ -1,70 +1,25 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#0B0C16" theme[main_bg]="#0B0C16"
# Main text color
theme[main_fg]="#ddf7ff" theme[main_fg]="#ddf7ff"
theme[title]="#ddf7ff"
# Title color for boxes theme[hi_fg]="#82FB9C"
theme[title]="#86a7df"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#7cf8f7"
# Background color of selected item in processes box
theme[selected_bg]="#6a6e95" theme[selected_bg]="#6a6e95"
# Foreground color of selected item in processes box
theme[selected_fg]="#ddf7ff" theme[selected_fg]="#ddf7ff"
# Color of inactive/disabled text
theme[inactive_fg]="#6a6e95" theme[inactive_fg]="#6a6e95"
theme[graph_text]="#85E1FB"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text theme[meter_bg]="#1a1c2e"
theme[proc_misc]="#86a7df" theme[proc_misc]="#86a7df"
theme[cpu_box]="#82FB9C"
# Box outline and divider line color
theme[cpu_box]="#4fe88f"
theme[mem_box]="#4fe88f" theme[mem_box]="#4fe88f"
theme[net_box]="#4fe88f" theme[net_box]="#86a7df"
theme[proc_box]="#4fe88f" theme[proc_box]="#1a1c2e"
theme[div_line]="#6a6e95" theme[div_line]="#6a6e95"
theme[temp_start]="#4fe88f"
# Gradient for all meters and graphs theme[temp_mid]="#e8d44f"
theme[temp_start]="#7cf8f7" theme[temp_end]="#ff5a7a"
theme[temp_mid]="#829dd4" theme[cpu_start]="#4fe88f"
theme[temp_end]="#4fe88f" theme[cpu_mid]="#e8d44f"
theme[cpu_end]="#ff5a7a"
theme[free_start]="#4fe88f"
theme[cpu_start]="#7cf8f7" theme[used_start]="#e8d44f"
theme[cpu_mid]="#829dd4" theme[download_start]="#82FB9C"
theme[cpu_end]="#4fe88f" theme[upload_start]="#86a7df"
theme[free_start]="#829dd4"
theme[free_mid]="#50f7d4"
theme[free_end]="#50f7d4"
theme[cached_start]="#50f7d4"
theme[cached_mid]="#50f7d4"
theme[cached_end]="#50f7d4"
theme[available_start]="#7cf8f7"
theme[available_mid]="#7cf8f7"
theme[available_end]="#7cf8f7"
theme[used_start]="#4fe88f"
theme[used_mid]="#4fe88f"
theme[used_end]="#4fe88f"
theme[download_start]="#50f7d4"
theme[download_mid]="#7cf8f7"
theme[download_end]="#829dd4"
theme[upload_start]="#50f7d4"
theme[upload_mid]="#7cf8f7"
theme[upload_end]="#829dd4"

View File

@@ -10,7 +10,7 @@
"surface": "#1b2d40", "surface": "#1b2d40",
"overlay": "#304860", "overlay": "#304860",
"text": "#d6e2ee", "text": "#d6e2ee",
"subtext": "#d6e2ee", "subtext": "#9bb0c0",
"muted": "#3c556e", "muted": "#3c556e",
"accent": "#f2fcff", "accent": "#f2fcff",
"accentAlt": "#8bc9eb", "accentAlt": "#8bc9eb",

View File

@@ -1,64 +1,25 @@
# Main background, empty for terminal default, need to be empty if you want transparent background theme[main_bg]="#16242d"
theme[main_bg]="" theme[main_fg]="#d6e2ee"
theme_background=false theme[title]="#d6e2ee"
theme[hi_fg]="#f2fcff"
# Main text color theme[selected_bg]="#304860"
theme[main_fg]="#c7d2de" theme[selected_fg]="#d6e2ee"
theme[inactive_fg]="#3c556e"
# Title color for boxes theme[graph_text]="#9bb0c0"
theme[title]="#9fcfe9" theme[meter_bg]="#1b2d40"
theme[proc_misc]="#8bc9eb"
# Highlight color for keyboard shortcuts theme[cpu_box]="#f2fcff"
theme[hi_fg]="#b5deef" theme[mem_box]="#5e95bc"
theme[net_box]="#8bc9eb"
# Background color of selected item in processes box theme[proc_box]="#1b2d40"
theme[selected_bg]="#355066" theme[div_line]="#304860"
theme[temp_start]="#5e95bc"
# Foreground color of selected item in processes box theme[temp_mid]="#6fa4c9"
theme[selected_fg]="#c7d2de" theme[temp_end]="#4d86b0"
theme[cpu_start]="#5e95bc"
# Color of inactive/disabled text theme[cpu_mid]="#6fa4c9"
theme[inactive_fg]="#355066" theme[cpu_end]="#4d86b0"
theme[free_start]="#5e95bc"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text theme[used_start]="#6fa4c9"
theme[proc_misc]="#9fcfe9" theme[download_start]="#f2fcff"
theme[upload_start]="#8bc9eb"
# Box outline and divider line color
theme[cpu_box]="#79abd2"
theme[mem_box]="#79abd2"
theme[net_box]="#79abd2"
theme[proc_box]="#79abd2"
theme[div_line]="#355066"
# Gradient for all meters and graphs
theme[temp_start]="#b5deef"
theme[temp_mid]="#92c7e7"
theme[temp_end]="#79abd2"
theme[cpu_start]="#b5deef"
theme[cpu_mid]="#92c7e7"
theme[cpu_end]="#79abd2"
theme[free_start]="#92c7e7"
theme[free_mid]="#86b6da"
theme[free_end]="#86b6da"
theme[cached_start]="#86b6da"
theme[cached_mid]="#86b6da"
theme[cached_end]="#86b6da"
theme[available_start]="#b5deef"
theme[available_mid]="#b5deef"
theme[available_end]="#b5deef"
theme[used_start]="#79abd2"
theme[used_mid]="#79abd2"
theme[used_end]="#79abd2"
theme[download_start]="#86b6da"
theme[download_mid]="#b5deef"
theme[download_end]="#92c7e7"
theme[upload_start]="#86b6da"
theme[upload_mid]="#b5deef"
theme[upload_end]="#92c7e7"

View File

@@ -10,7 +10,7 @@
"surface": "#333333", "surface": "#333333",
"overlay": "#8a8a8d", "overlay": "#8a8a8d",
"text": "#bebebe", "text": "#bebebe",
"subtext": "#bebebe", "subtext": "#9a9a9d",
"muted": "#8a8a8d", "muted": "#8a8a8d",
"accent": "#e68e0d", "accent": "#e68e0d",
"accentAlt": "#D35F5F", "accentAlt": "#D35F5F",

View File

@@ -1,92 +1,25 @@
# ──────────────────────────────────────────────────────────── theme[main_bg]="#121212"
# Bashtop theme - Nomarchy Matte Black theme[main_fg]="#bebebe"
# by tahayvr theme[title]="#bebebe"
# https://github.com/tahayvr theme[hi_fg]="#e68e0d"
# ──────────────────────────────────────────────────────────── theme[selected_bg]="#8a8a8d"
theme[selected_fg]="#bebebe"
# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255" theme[inactive_fg]="#8a8a8d"
# example for white: "#ffffff", "#ff" or "255 255 255". theme[graph_text]="#9a9a9d"
theme[meter_bg]="#333333"
# All graphs and meters can be gradients theme[proc_misc]="#D35F5F"
# For single color graphs leave "mid" and "end" variable empty. theme[cpu_box]="#e68e0d"
# Use "start" and "end" variables for two color gradient theme[mem_box]="#FFC107"
# Use "start", "mid" and "end" for three color gradient theme[net_box]="#D35F5F"
theme[proc_box]="#333333"
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]=""
# Main text color
theme[main_fg]="#EAEAEA"
# Title color for boxes
theme[title]="#8a8a8d"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#f59e0b"
# Background color of selected item in processes box
theme[selected_bg]="#f59e0b"
# Foreground color of selected item in processes box
theme[selected_fg]="#EAEAEA"
# Color of inactive/disabled text
theme[inactive_fg]="#333333"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#8a8a8d"
# Cpu box outline color
theme[cpu_box]="#8a8a8d"
# Memory/disks box outline color
theme[mem_box]="#8a8a8d"
# Net up/down box outline color
theme[net_box]="#8a8a8d"
# Processes box outline color
theme[proc_box]="#8a8a8d"
# Box divider line and small boxes line color
theme[div_line]="#8a8a8d" theme[div_line]="#8a8a8d"
theme[temp_start]="#FFC107"
# Temperature graph colors theme[temp_mid]="#b91c1c"
theme[temp_start]="#8a8a8d" theme[temp_end]="#D35F5F"
theme[temp_mid]="#f59e0b" theme[cpu_start]="#FFC107"
theme[temp_end]="#b91c1c" theme[cpu_mid]="#b91c1c"
theme[cpu_end]="#D35F5F"
# CPU graph colors theme[free_start]="#FFC107"
theme[cpu_start]="#8a8a8d" theme[used_start]="#b91c1c"
theme[cpu_mid]="#f59e0b" theme[download_start]="#e68e0d"
theme[cpu_end]="#b91c1c" theme[upload_start]="#D35F5F"
# Mem/Disk free meter
theme[free_start]="#8a8a8d"
theme[free_mid]="#f59e0b"
theme[free_end]="#b91c1c"
# Mem/Disk cached meter
theme[cached_start]="#8a8a8d"
theme[cached_mid]="#f59e0b"
theme[cached_end]="#b91c1c"
# Mem/Disk available meter
theme[available_start]="#8a8a8d"
theme[available_mid]="#f59e0b"
theme[available_end]="#b91c1c"
# Mem/Disk used meter
theme[used_start]="#8a8a8d"
theme[used_mid]="#f59e0b"
theme[used_end]="#b91c1c"
# Download graph colors
theme[download_start]="#8a8a8d"
theme[download_mid]="#f59e0b"
theme[download_end]="#b91c1c"
# Upload graph colors
theme[upload_start]="#8a8a8d"
theme[upload_mid]="#f59e0b"
theme[upload_end]="#b91c1c"

View File

@@ -16,7 +16,7 @@
"accentAlt": "#bb7744", "accentAlt": "#bb7744",
"good": "#5f875f", "good": "#5f875f",
"warn": "#b36d43", "warn": "#b36d43",
"bad": "#685742" "bad": "#8b5a4a"
}, },
"border": { "border": {
"active": "accent", "active": "accent",

View File

@@ -1,70 +1,25 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#222222" theme[main_bg]="#222222"
# Main text color
theme[main_fg]="#c2c2b0" theme[main_fg]="#c2c2b0"
theme[title]="#c2c2b0"
# Title color for boxes theme[hi_fg]="#78824b"
theme[title]="#bb7744" theme[selected_bg]="#666666"
theme[selected_fg]="#c2c2b0"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#c9a554"
# Background color of selected item in processes box
theme[selected_bg]="#e4c47a"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000"
# Color of inactive/disabled text
theme[inactive_fg]="#666666" theme[inactive_fg]="#666666"
theme[graph_text]="#d7c483"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text theme[meter_bg]="#2e2e2e"
theme[proc_misc]="#bb7744" theme[proc_misc]="#bb7744"
theme[cpu_box]="#78824b"
# Box outline and divider line color
theme[cpu_box]="#5f875f"
theme[mem_box]="#5f875f" theme[mem_box]="#5f875f"
theme[net_box]="#5f875f" theme[net_box]="#bb7744"
theme[proc_box]="#5f875f" theme[proc_box]="#2e2e2e"
theme[div_line]="#666666" theme[div_line]="#666666"
theme[temp_start]="#5f875f"
# Gradient for all meters and graphs theme[temp_mid]="#b36d43"
theme[temp_start]="#c9a554" theme[temp_end]="#8b5a4a"
theme[temp_mid]="#78824b" theme[cpu_start]="#5f875f"
theme[temp_end]="#5f875f" theme[cpu_mid]="#b36d43"
theme[cpu_end]="#8b5a4a"
theme[free_start]="#5f875f"
theme[cpu_start]="#c9a554" theme[used_start]="#b36d43"
theme[cpu_mid]="#78824b" theme[download_start]="#78824b"
theme[cpu_end]="#5f875f" theme[upload_start]="#bb7744"
theme[free_start]="#78824b"
theme[free_mid]="#b36d43"
theme[free_end]="#b36d43"
theme[cached_start]="#b36d43"
theme[cached_mid]="#b36d43"
theme[cached_end]="#b36d43"
theme[available_start]="#c9a554"
theme[available_mid]="#c9a554"
theme[available_end]="#c9a554"
theme[used_start]="#5f875f"
theme[used_mid]="#5f875f"
theme[used_end]="#5f875f"
theme[download_start]="#b36d43"
theme[download_mid]="#c9a554"
theme[download_end]="#78824b"
theme[upload_start]="#b36d43"
theme[upload_mid]="#c9a554"
theme[upload_end]="#78824b"

View File

@@ -0,0 +1,25 @@
theme[main_bg]="#0B0E14"
theme[main_fg]="#E0E6F0"
theme[title]="#E0E6F0"
theme[hi_fg]="#00F0FF"
theme[selected_bg]="#1E2530"
theme[selected_fg]="#E0E6F0"
theme[inactive_fg]="#4B566B"
theme[graph_text]="#8F9BB3"
theme[meter_bg]="#151A22"
theme[proc_misc]="#B026FF"
theme[cpu_box]="#00F0FF"
theme[mem_box]="#00FFA3"
theme[net_box]="#B026FF"
theme[proc_box]="#151A22"
theme[div_line]="#1E2530"
theme[temp_start]="#00FFA3"
theme[temp_mid]="#FFD000"
theme[temp_end]="#FF003C"
theme[cpu_start]="#00FFA3"
theme[cpu_mid]="#FFD000"
theme[cpu_end]="#FF003C"
theme[free_start]="#00FFA3"
theme[used_start]="#FFD000"
theme[download_start]="#00F0FF"
theme[upload_start]="#B026FF"

View File

@@ -1,70 +1,25 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#0d0d0d" theme[main_bg]="#0d0d0d"
# Main text color
theme[main_fg]="#ffffff" theme[main_fg]="#ffffff"
theme[title]="#ffffff"
# Title color for boxes theme[hi_fg]="#8d8d8d"
theme[title]="#9b9b9b" theme[selected_bg]="#2a2a2a"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#b0b0b0"
# Background color of selected item in processes box
theme[selected_bg]="#333333"
# Foreground color of selected item in processes box
theme[selected_fg]="#ffffff" theme[selected_fg]="#ffffff"
# Color of inactive/disabled text
theme[inactive_fg]="#666666" theme[inactive_fg]="#666666"
theme[graph_text]="#ececec"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text theme[meter_bg]="#1a1a1a"
theme[proc_misc]="#9b9b9b" theme[proc_misc]="#9b9b9b"
theme[cpu_box]="#8d8d8d"
# Box outline and divider line color
theme[cpu_box]="#b6b6b6"
theme[mem_box]="#b6b6b6" theme[mem_box]="#b6b6b6"
theme[net_box]="#b6b6b6" theme[net_box]="#9b9b9b"
theme[proc_box]="#b6b6b6" theme[proc_box]="#1a1a1a"
theme[div_line]="#fdfdfd" theme[div_line]="#2a2a2a"
theme[temp_start]="#b6b6b6"
# Gradient for all meters and graphs theme[temp_mid]="#cecece"
theme[temp_start]="#b0b0b0" theme[temp_end]="#a4a4a4"
theme[temp_mid]="#8d8d8d" theme[cpu_start]="#b6b6b6"
theme[temp_end]="#b6b6b6" theme[cpu_mid]="#cecece"
theme[cpu_end]="#a4a4a4"
theme[free_start]="#b6b6b6"
theme[cpu_start]="#b0b0b0" theme[used_start]="#cecece"
theme[cpu_mid]="#8d8d8d" theme[download_start]="#8d8d8d"
theme[cpu_end]="#b6b6b6" theme[upload_start]="#9b9b9b"
theme[free_start]="#8d8d8d"
theme[free_mid]="#cecece"
theme[free_end]="#cecece"
theme[cached_start]="#cecece"
theme[cached_mid]="#cecece"
theme[cached_end]="#cecece"
theme[available_start]="#b0b0b0"
theme[available_mid]="#b0b0b0"
theme[available_end]="#b0b0b0"
theme[used_start]="#b6b6b6"
theme[used_mid]="#b6b6b6"
theme[used_end]="#b6b6b6"
theme[download_start]="#cecece"
theme[download_mid]="#b0b0b0"
theme[download_end]="#8d8d8d"
theme[upload_start]="#cecece"
theme[upload_mid]="#b0b0b0"
theme[upload_end]="#8d8d8d"

View File

@@ -7,16 +7,16 @@
"colors": { "colors": {
"base": "#ffffff", "base": "#ffffff",
"mantle": "#d9d9d9", "mantle": "#d9d9d9",
"surface": "#ffffff", "surface": "#f0f0f0",
"overlay": "#c0c0c0", "overlay": "#c0c0c0",
"text": "#000000", "text": "#000000",
"subtext": "#000000", "subtext": "#404040",
"muted": "#b5b5b5", "muted": "#b5b5b5",
"accent": "#6e6e6e", "accent": "#6e6e6e",
"accentAlt": "#2e2e2e", "accentAlt": "#2e2e2e",
"good": "#3a3a3a", "good": "#555555",
"warn": "#4a4a4a", "warn": "#777777",
"bad": "#2a2a2a" "bad": "#222222"
}, },
"border": { "border": {
"active": "accent", "active": "accent",

View File

@@ -1,70 +1,25 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#ffffff" theme[main_bg]="#ffffff"
# Main text color
theme[main_fg]="#000000" theme[main_fg]="#000000"
theme[title]="#000000"
# Title color for boxes theme[hi_fg]="#6e6e6e"
theme[title]="#2e2e2e"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#3e3e3e"
# Background color of selected item in processes box
theme[selected_bg]="#c0c0c0" theme[selected_bg]="#c0c0c0"
# Foreground color of selected item in processes box
theme[selected_fg]="#000000" theme[selected_fg]="#000000"
theme[inactive_fg]="#b5b5b5"
# Color of inactive/disabled text theme[graph_text]="#404040"
theme[inactive_fg]="#c0c0c0" theme[meter_bg]="#f0f0f0"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#2e2e2e" theme[proc_misc]="#2e2e2e"
theme[cpu_box]="#6e6e6e"
# Box outline and divider line color theme[mem_box]="#555555"
theme[cpu_box]="#3a3a3a" theme[net_box]="#2e2e2e"
theme[mem_box]="#3a3a3a" theme[proc_box]="#f0f0f0"
theme[net_box]="#3a3a3a"
theme[proc_box]="#3a3a3a"
theme[div_line]="#c0c0c0" theme[div_line]="#c0c0c0"
theme[temp_start]="#555555"
# Gradient for all meters and graphs theme[temp_mid]="#777777"
theme[temp_start]="#3e3e3e" theme[temp_end]="#222222"
theme[temp_mid]="#1a1a1a" theme[cpu_start]="#555555"
theme[temp_end]="#3a3a3a" theme[cpu_mid]="#777777"
theme[cpu_end]="#222222"
theme[free_start]="#555555"
theme[cpu_start]="#3e3e3e" theme[used_start]="#777777"
theme[cpu_mid]="#1a1a1a" theme[download_start]="#6e6e6e"
theme[cpu_end]="#3a3a3a" theme[upload_start]="#2e2e2e"
theme[free_start]="#1a1a1a"
theme[free_mid]="#4a4a4a"
theme[free_end]="#4a4a4a"
theme[cached_start]="#4a4a4a"
theme[cached_mid]="#4a4a4a"
theme[cached_end]="#4a4a4a"
theme[available_start]="#3e3e3e"
theme[available_mid]="#3e3e3e"
theme[available_end]="#3e3e3e"
theme[used_start]="#3a3a3a"
theme[used_mid]="#3a3a3a"
theme[used_end]="#3a3a3a"
theme[download_start]="#4a4a4a"
theme[download_mid]="#3e3e3e"
theme[download_end]="#1a1a1a"
theme[upload_start]="#4a4a4a"
theme[upload_mid]="#3e3e3e"
theme[upload_end]="#1a1a1a"