diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 1efec80..f132c32 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -74,22 +74,19 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* ### Product / day-2 -- **Battery charge-limit — make the toggle instant** `[blocked:hw]` - Menu/CC write `settings.power.batteryChargeLimit` but need a rebuild. - 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. +_(Battery charge-limit instant → shipped 2026-07-10: udev GROUP=users + + menu live sysfs + oneshot reads live theme-state; V3 confirm on laptop.)_ _(Portal/Flatpak IR camera → **#71** docs (a); (b)/(c) still need T14s.)_ _(Post-install hardware hints residual → **#73**.)_ -- **Look & Feel submenu** (ROADMAP optional) — night-light, wallpaper - cycle, blur/gaps with Theme; root stays six entries. Product call. +_(Look & Feel submenu → already shipped (Theme / wallpaper / night light); + 2026-07-10: Reset wallpaper (auto) row; root stays six.)_ -- **NVIDIA first-class options** `[big]` `[blocked:hw]` — thin - `nomarchy.hardware.nvidia.*` only with hybrid maintainer + queue. - Prefer shipped #59 commented guidance until then. +- **NVIDIA first-class options** — **deferred past v1** (Bernardo + 2026-07-10). Keep #59 commented install guidance; no + `nomarchy.hardware.nvidia.*` until a hybrid maintainer + queue. ### 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 executive-slate + neon-glass.)_ -- **Identity optional taste retunes** — white / lumon / hackerman / - matte-black / miasma hierarchy or status L-steps only (no traffic-light - forced on identity themes). Product call per theme. - -- **Optional identity `btop.theme`** for identity whole-swaps still on - generated btop. Cost: assets; V3. +_(Identity taste retunes + hand `btop.theme` for white/vantablack/lumon/ + hackerman/matte-black/miasma/neon-glass/boreal/executive-slate → + shipped 2026-07-10.)_ ### v1.0 pointer -See **VISION**. Remaining PROPOSED: charge-limit instant, Look & Feel, -NVIDIA first-class, identity taste / optional btop themes. +See **VISION**. Open PROPOSED: NVIDIA wrappers deferred past v1; IR +portal (b)/(c) hardware. ## Decisions `[human]` diff --git a/agent/HARDWARE-QUEUE.md b/agent/HARDWARE-QUEUE.md index 4c22bc6..c9d03c7 100644 --- a/agent/HARDWARE-QUEUE.md +++ b/agent/HARDWARE-QUEUE.md @@ -8,6 +8,10 @@ the failure as a NOW bug in BACKLOG.md. Machines: the **AMD dev box** QA machine), the **T14s** (webcam case). ## 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 rebuild: (1) `pkexec true` or mount a disk → polkit dialog should float+center; if not, note `hyprctl clients` class while open. diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 2826755..720a934 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -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 - **Task:** finish agent-able PROPOSED theme leftovers. - **Did:** summer-day/night — JSON hierarchy (night subtext/muted/overlay diff --git a/docs/HARDWARE.md b/docs/HARDWARE.md index 3ce5c40..8b74edc 100644 --- a/docs/HARDWARE.md +++ b/docs/HARDWARE.md @@ -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 use the profile. -**Product direction (shipped #59):** when `common-gpu-nvidia` is in -`hardwareProfile`, the installer emits a **commented** `system.nix` block -with PRIME / power / open-module pointers (same pattern as ROCm / NPU -comments). A full `nomarchy.hardware.nvidia.*` stack stays optional and -needs a maintainer + hardware-queue coverage. +**Product direction (shipped #59; first-class wrappers deferred for v1):** +when `common-gpu-nvidia` is in `hardwareProfile`, the installer emits a +**commented** `system.nix` block with PRIME / power / open-module pointers +(same pattern as ROCm / NPU comments). No `nomarchy.hardware.nvidia.*` +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” | Goal | How | Rebuild? | |------|-----|----------| | 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 | | Fingerprint enroll | `fprintd-enroll` | No | | Fingerprint login | `fingerprint.pam = true` | System | diff --git a/modules/home/rofi.nix b/modules/home/rofi.nix index f783594..67078e3 100644 --- a/modules/home/rofi.nix +++ b/modules/home/rofi.nix @@ -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 ;; diff --git a/modules/nixos/options.nix b/modules/nixos/options.nix index fe3066f..28d5810 100644 --- a/modules/nixos/options.nix +++ b/modules/nixos/options.nix @@ -109,9 +109,10 @@ where the hardware exposes charge_control_end_threshold on a system battery (type=Battery under /sys/class/power_supply; name-agnostic — BAT0, CMB0, …). - null leaves charging at the firmware default. Backend-independent - (a small systemd unit writes the sysfs knob, re-applied on AC - state changes), so it works under PPD too; needs + null leaves charging at the firmware default (menu writes 100). + Backend-independent: the menu applies live via sysfs (udev + 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. ''; }; diff --git a/modules/nixos/power.nix b/modules/nixos/power.nix index 9fcd1e7..1164d40 100644 --- a/modules/nixos/power.nix +++ b/modules/nixos/power.nix @@ -5,13 +5,12 @@ # 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 # desktops). See the roadmap in README.md. -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.nomarchy.system.power; ppd = cfg.backend == "ppd"; tlp = cfg.backend == "tlp"; - chargeLimit = cfg.laptop && cfg.batteryChargeLimit != null; in { config = lib.mkIf cfg.enable { @@ -40,36 +39,51 @@ in # TLP's own knob only applies under TLP — so a tiny oneshot writes # the threshold directly, independent of the backend. Re-applied on # AC state changes by the udev rule below (some firmwares reset the - # threshold when the charger is unplugged). `[ -w ]` skips paths that - # don't exist, so this is a clean no-op on hardware without the control. - systemd.services.nomarchy-battery-charge-limit = lib.mkIf chargeLimit { - description = "Cap battery charging at ${toString cfg.batteryChargeLimit}%"; + # threshold when the charger is unplugged). + # + # Instant menu path (user decision 2026-07-10): the threshold node is + # 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" ]; + path = [ pkgs.jq pkgs.coreutils ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; }; script = '' - # Name-agnostic (BAT0, CMB0, …): same type/scope filter as - # nomarchy-battery-notify — BACKLOG #60. + set -euo pipefail + # 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 [ "$(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 ${toString cfg.batteryChargeLimit} > "$thresh" + [ -w "$thresh" ] && echo "$limit" > "$thresh" || true done exit 0 ''; }; - # Re-apply the threshold whenever the mains adapter changes state: the - # boot oneshot above runs once, but some firmwares clear the limit when - # the charger is unplugged, so it must be re-asserted on the event. - # Matched by ATTR{type}=="Mains" (vendor-neutral — the kernel name - # 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 '' + # Writable threshold for the logged-in user (menu live apply) + AC + # re-apply of the oneshot. Laptop only; no-op when the attr is absent. + services.udev.extraRules = lib.mkIf cfg.laptop '' + SUBSYSTEM=="power_supply", ATTR{type}=="Battery", TEST=="charge_control_end_threshold", GROUP="users", MODE="0664" SUBSYSTEM=="power_supply", ATTR{type}=="Mains", RUN+="${config.systemd.package}/bin/systemctl --no-block restart nomarchy-battery-charge-limit.service" ''; }; diff --git a/themes/boreal/btop.theme b/themes/boreal/btop.theme new file mode 100644 index 0000000..783c9d3 --- /dev/null +++ b/themes/boreal/btop.theme @@ -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" diff --git a/themes/executive-slate/btop.theme b/themes/executive-slate/btop.theme new file mode 100644 index 0000000..8f26523 --- /dev/null +++ b/themes/executive-slate/btop.theme @@ -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" diff --git a/themes/hackerman.json b/themes/hackerman.json index 3a7a73a..1e49ab2 100644 --- a/themes/hackerman.json +++ b/themes/hackerman.json @@ -7,7 +7,7 @@ "colors": { "base": "#0B0C16", "mantle": "#090a13", - "surface": "#0B0C16", + "surface": "#1a1c2e", "overlay": "#6a6e95", "text": "#ddf7ff", "subtext": "#85E1FB", @@ -15,8 +15,8 @@ "accent": "#82FB9C", "accentAlt": "#86a7df", "good": "#4fe88f", - "warn": "#50f7d4", - "bad": "#50f872" + "warn": "#e8d44f", + "bad": "#ff5a7a" }, "border": { "active": "accent", diff --git a/themes/hackerman/btop.theme b/themes/hackerman/btop.theme index 7609189..0aea3f8 100644 --- a/themes/hackerman/btop.theme +++ b/themes/hackerman/btop.theme @@ -1,70 +1,25 @@ -# Main background, empty for terminal default, need to be empty if you want transparent background theme[main_bg]="#0B0C16" - -# Main text color theme[main_fg]="#ddf7ff" - -# Title color for boxes -theme[title]="#86a7df" - -# Highlight color for keyboard shortcuts -theme[hi_fg]="#7cf8f7" - -# Background color of selected item in processes box +theme[title]="#ddf7ff" +theme[hi_fg]="#82FB9C" theme[selected_bg]="#6a6e95" - -# Foreground color of selected item in processes box theme[selected_fg]="#ddf7ff" - -# Color of inactive/disabled text theme[inactive_fg]="#6a6e95" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[graph_text]="#85E1FB" +theme[meter_bg]="#1a1c2e" theme[proc_misc]="#86a7df" - -# Box outline and divider line color -theme[cpu_box]="#4fe88f" +theme[cpu_box]="#82FB9C" theme[mem_box]="#4fe88f" -theme[net_box]="#4fe88f" -theme[proc_box]="#4fe88f" +theme[net_box]="#86a7df" +theme[proc_box]="#1a1c2e" theme[div_line]="#6a6e95" - -# Gradient for all meters and graphs -theme[temp_start]="#7cf8f7" -theme[temp_mid]="#829dd4" -theme[temp_end]="#4fe88f" - - -theme[cpu_start]="#7cf8f7" -theme[cpu_mid]="#829dd4" -theme[cpu_end]="#4fe88f" - - -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" \ No newline at end of file +theme[temp_start]="#4fe88f" +theme[temp_mid]="#e8d44f" +theme[temp_end]="#ff5a7a" +theme[cpu_start]="#4fe88f" +theme[cpu_mid]="#e8d44f" +theme[cpu_end]="#ff5a7a" +theme[free_start]="#4fe88f" +theme[used_start]="#e8d44f" +theme[download_start]="#82FB9C" +theme[upload_start]="#86a7df" diff --git a/themes/lumon.json b/themes/lumon.json index 3feb7f4..33ce990 100644 --- a/themes/lumon.json +++ b/themes/lumon.json @@ -10,7 +10,7 @@ "surface": "#1b2d40", "overlay": "#304860", "text": "#d6e2ee", - "subtext": "#d6e2ee", + "subtext": "#9bb0c0", "muted": "#3c556e", "accent": "#f2fcff", "accentAlt": "#8bc9eb", diff --git a/themes/lumon/btop.theme b/themes/lumon/btop.theme index d9d0572..4f8f3f7 100644 --- a/themes/lumon/btop.theme +++ b/themes/lumon/btop.theme @@ -1,64 +1,25 @@ -# Main background, empty for terminal default, need to be empty if you want transparent background -theme[main_bg]="" -theme_background=false - -# Main text color -theme[main_fg]="#c7d2de" - -# Title color for boxes -theme[title]="#9fcfe9" - -# Highlight color for keyboard shortcuts -theme[hi_fg]="#b5deef" - -# Background color of selected item in processes box -theme[selected_bg]="#355066" - -# Foreground color of selected item in processes box -theme[selected_fg]="#c7d2de" - -# Color of inactive/disabled text -theme[inactive_fg]="#355066" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text -theme[proc_misc]="#9fcfe9" - -# 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" +theme[main_bg]="#16242d" +theme[main_fg]="#d6e2ee" +theme[title]="#d6e2ee" +theme[hi_fg]="#f2fcff" +theme[selected_bg]="#304860" +theme[selected_fg]="#d6e2ee" +theme[inactive_fg]="#3c556e" +theme[graph_text]="#9bb0c0" +theme[meter_bg]="#1b2d40" +theme[proc_misc]="#8bc9eb" +theme[cpu_box]="#f2fcff" +theme[mem_box]="#5e95bc" +theme[net_box]="#8bc9eb" +theme[proc_box]="#1b2d40" +theme[div_line]="#304860" +theme[temp_start]="#5e95bc" +theme[temp_mid]="#6fa4c9" +theme[temp_end]="#4d86b0" +theme[cpu_start]="#5e95bc" +theme[cpu_mid]="#6fa4c9" +theme[cpu_end]="#4d86b0" +theme[free_start]="#5e95bc" +theme[used_start]="#6fa4c9" +theme[download_start]="#f2fcff" +theme[upload_start]="#8bc9eb" diff --git a/themes/matte-black.json b/themes/matte-black.json index f02f385..a831a14 100644 --- a/themes/matte-black.json +++ b/themes/matte-black.json @@ -10,7 +10,7 @@ "surface": "#333333", "overlay": "#8a8a8d", "text": "#bebebe", - "subtext": "#bebebe", + "subtext": "#9a9a9d", "muted": "#8a8a8d", "accent": "#e68e0d", "accentAlt": "#D35F5F", diff --git a/themes/matte-black/btop.theme b/themes/matte-black/btop.theme index 472154c..e37ebb4 100644 --- a/themes/matte-black/btop.theme +++ b/themes/matte-black/btop.theme @@ -1,92 +1,25 @@ -# ──────────────────────────────────────────────────────────── -# Bashtop theme - Nomarchy Matte Black -# by tahayvr -# https://github.com/tahayvr -# ──────────────────────────────────────────────────────────── - -# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255" -# example for white: "#ffffff", "#ff" or "255 255 255". - -# All graphs and meters can be gradients -# For single color graphs leave "mid" and "end" variable empty. -# Use "start" and "end" variables for two color gradient -# Use "start", "mid" and "end" for three color gradient - -# 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[main_bg]="#121212" +theme[main_fg]="#bebebe" +theme[title]="#bebebe" +theme[hi_fg]="#e68e0d" +theme[selected_bg]="#8a8a8d" +theme[selected_fg]="#bebebe" +theme[inactive_fg]="#8a8a8d" +theme[graph_text]="#9a9a9d" +theme[meter_bg]="#333333" +theme[proc_misc]="#D35F5F" +theme[cpu_box]="#e68e0d" +theme[mem_box]="#FFC107" +theme[net_box]="#D35F5F" +theme[proc_box]="#333333" theme[div_line]="#8a8a8d" - -# Temperature graph colors -theme[temp_start]="#8a8a8d" -theme[temp_mid]="#f59e0b" -theme[temp_end]="#b91c1c" - -# CPU graph colors -theme[cpu_start]="#8a8a8d" -theme[cpu_mid]="#f59e0b" -theme[cpu_end]="#b91c1c" - -# 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" +theme[temp_start]="#FFC107" +theme[temp_mid]="#b91c1c" +theme[temp_end]="#D35F5F" +theme[cpu_start]="#FFC107" +theme[cpu_mid]="#b91c1c" +theme[cpu_end]="#D35F5F" +theme[free_start]="#FFC107" +theme[used_start]="#b91c1c" +theme[download_start]="#e68e0d" +theme[upload_start]="#D35F5F" diff --git a/themes/miasma.json b/themes/miasma.json index 6aaea20..ef6fe6e 100644 --- a/themes/miasma.json +++ b/themes/miasma.json @@ -16,7 +16,7 @@ "accentAlt": "#bb7744", "good": "#5f875f", "warn": "#b36d43", - "bad": "#685742" + "bad": "#8b5a4a" }, "border": { "active": "accent", diff --git a/themes/miasma/btop.theme b/themes/miasma/btop.theme index 4db76eb..b20f081 100644 --- a/themes/miasma/btop.theme +++ b/themes/miasma/btop.theme @@ -1,70 +1,25 @@ -# Main background, empty for terminal default, need to be empty if you want transparent background theme[main_bg]="#222222" - -# Main text color theme[main_fg]="#c2c2b0" - -# Title color for boxes -theme[title]="#bb7744" - -# 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[title]="#c2c2b0" +theme[hi_fg]="#78824b" +theme[selected_bg]="#666666" +theme[selected_fg]="#c2c2b0" theme[inactive_fg]="#666666" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[graph_text]="#d7c483" +theme[meter_bg]="#2e2e2e" theme[proc_misc]="#bb7744" - -# Box outline and divider line color -theme[cpu_box]="#5f875f" +theme[cpu_box]="#78824b" theme[mem_box]="#5f875f" -theme[net_box]="#5f875f" -theme[proc_box]="#5f875f" +theme[net_box]="#bb7744" +theme[proc_box]="#2e2e2e" theme[div_line]="#666666" - -# Gradient for all meters and graphs -theme[temp_start]="#c9a554" -theme[temp_mid]="#78824b" -theme[temp_end]="#5f875f" - - -theme[cpu_start]="#c9a554" -theme[cpu_mid]="#78824b" -theme[cpu_end]="#5f875f" - - -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" +theme[temp_start]="#5f875f" +theme[temp_mid]="#b36d43" +theme[temp_end]="#8b5a4a" +theme[cpu_start]="#5f875f" +theme[cpu_mid]="#b36d43" +theme[cpu_end]="#8b5a4a" +theme[free_start]="#5f875f" +theme[used_start]="#b36d43" +theme[download_start]="#78824b" +theme[upload_start]="#bb7744" diff --git a/themes/neon-glass/btop.theme b/themes/neon-glass/btop.theme new file mode 100644 index 0000000..d793318 --- /dev/null +++ b/themes/neon-glass/btop.theme @@ -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" diff --git a/themes/vantablack/btop.theme b/themes/vantablack/btop.theme index f3fa29d..fc0b803 100644 --- a/themes/vantablack/btop.theme +++ b/themes/vantablack/btop.theme @@ -1,70 +1,25 @@ -# Main background, empty for terminal default, need to be empty if you want transparent background theme[main_bg]="#0d0d0d" - -# Main text color theme[main_fg]="#ffffff" - -# Title color for boxes -theme[title]="#9b9b9b" - -# 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[title]="#ffffff" +theme[hi_fg]="#8d8d8d" +theme[selected_bg]="#2a2a2a" theme[selected_fg]="#ffffff" - -# Color of inactive/disabled text theme[inactive_fg]="#666666" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[graph_text]="#ececec" +theme[meter_bg]="#1a1a1a" theme[proc_misc]="#9b9b9b" - -# Box outline and divider line color -theme[cpu_box]="#b6b6b6" +theme[cpu_box]="#8d8d8d" theme[mem_box]="#b6b6b6" -theme[net_box]="#b6b6b6" -theme[proc_box]="#b6b6b6" -theme[div_line]="#fdfdfd" - -# Gradient for all meters and graphs -theme[temp_start]="#b0b0b0" -theme[temp_mid]="#8d8d8d" -theme[temp_end]="#b6b6b6" - - -theme[cpu_start]="#b0b0b0" -theme[cpu_mid]="#8d8d8d" -theme[cpu_end]="#b6b6b6" - - -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" \ No newline at end of file +theme[net_box]="#9b9b9b" +theme[proc_box]="#1a1a1a" +theme[div_line]="#2a2a2a" +theme[temp_start]="#b6b6b6" +theme[temp_mid]="#cecece" +theme[temp_end]="#a4a4a4" +theme[cpu_start]="#b6b6b6" +theme[cpu_mid]="#cecece" +theme[cpu_end]="#a4a4a4" +theme[free_start]="#b6b6b6" +theme[used_start]="#cecece" +theme[download_start]="#8d8d8d" +theme[upload_start]="#9b9b9b" diff --git a/themes/white.json b/themes/white.json index d2c81a0..df92e72 100644 --- a/themes/white.json +++ b/themes/white.json @@ -7,16 +7,16 @@ "colors": { "base": "#ffffff", "mantle": "#d9d9d9", - "surface": "#ffffff", + "surface": "#f0f0f0", "overlay": "#c0c0c0", "text": "#000000", - "subtext": "#000000", + "subtext": "#404040", "muted": "#b5b5b5", "accent": "#6e6e6e", "accentAlt": "#2e2e2e", - "good": "#3a3a3a", - "warn": "#4a4a4a", - "bad": "#2a2a2a" + "good": "#555555", + "warn": "#777777", + "bad": "#222222" }, "border": { "active": "accent", diff --git a/themes/white/btop.theme b/themes/white/btop.theme index 244253a..3c439be 100644 --- a/themes/white/btop.theme +++ b/themes/white/btop.theme @@ -1,70 +1,25 @@ -# Main background, empty for terminal default, need to be empty if you want transparent background theme[main_bg]="#ffffff" - -# Main text color theme[main_fg]="#000000" - -# Title color for boxes -theme[title]="#2e2e2e" - -# Highlight color for keyboard shortcuts -theme[hi_fg]="#3e3e3e" - -# Background color of selected item in processes box +theme[title]="#000000" +theme[hi_fg]="#6e6e6e" theme[selected_bg]="#c0c0c0" - -# Foreground color of selected item in processes box theme[selected_fg]="#000000" - -# Color of inactive/disabled text -theme[inactive_fg]="#c0c0c0" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[inactive_fg]="#b5b5b5" +theme[graph_text]="#404040" +theme[meter_bg]="#f0f0f0" theme[proc_misc]="#2e2e2e" - -# Box outline and divider line color -theme[cpu_box]="#3a3a3a" -theme[mem_box]="#3a3a3a" -theme[net_box]="#3a3a3a" -theme[proc_box]="#3a3a3a" +theme[cpu_box]="#6e6e6e" +theme[mem_box]="#555555" +theme[net_box]="#2e2e2e" +theme[proc_box]="#f0f0f0" theme[div_line]="#c0c0c0" - -# Gradient for all meters and graphs -theme[temp_start]="#3e3e3e" -theme[temp_mid]="#1a1a1a" -theme[temp_end]="#3a3a3a" - - -theme[cpu_start]="#3e3e3e" -theme[cpu_mid]="#1a1a1a" -theme[cpu_end]="#3a3a3a" - - -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" \ No newline at end of file +theme[temp_start]="#555555" +theme[temp_mid]="#777777" +theme[temp_end]="#222222" +theme[cpu_start]="#555555" +theme[cpu_mid]="#777777" +theme[cpu_end]="#222222" +theme[free_start]="#555555" +theme[used_start]="#777777" +theme[download_start]="#6e6e6e" +theme[upload_start]="#2e2e2e"