summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-11 22:25:03 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-11 22:25:03 +1000
commitb08858191cf6e3acda33afbd532b743ad6d0f808 (patch)
tree2dfb9b4747383fe8d23458661ee89330dd520f34 /src
parentfeat: theme fuzzel (diff)
downloadcaelestia-cli-b08858191cf6e3acda33afbd532b743ad6d0f808.tar.gz
caelestia-cli-b08858191cf6e3acda33afbd532b743ad6d0f808.tar.bz2
caelestia-cli-b08858191cf6e3acda33afbd532b743ad6d0f808.zip
feat: theme btop
Also change template replacement format
Diffstat (limited to 'src')
-rw-r--r--src/caelestia/data/templates/btop.theme83
-rw-r--r--src/caelestia/data/templates/fuzzel.ini22
-rw-r--r--src/caelestia/data/templates/spicetify.ini32
-rw-r--r--src/caelestia/utils/theme.py11
4 files changed, 119 insertions, 29 deletions
diff --git a/src/caelestia/data/templates/btop.theme b/src/caelestia/data/templates/btop.theme
new file mode 100644
index 0000000..9e63bce
--- /dev/null
+++ b/src/caelestia/data/templates/btop.theme
@@ -0,0 +1,83 @@
+# Main background, empty for terminal default, need to be empty if you want transparent background
+theme[main_bg]={{ $surface }}
+
+# Main text color
+theme[main_fg]={{ $onSurface }}
+
+# Title color for boxes
+theme[title]={{ $onSurface }}
+
+# Highlight color for keyboard shortcuts
+theme[hi_fg]={{ $primary }}
+
+# Background color of selected item in processes box
+theme[selected_bg]={{ $surfaceContainer }}
+
+# Foreground color of selected item in processes box
+theme[selected_fg]={{ $primary }}
+
+# Color of inactive/disabled text
+theme[inactive_fg]={{ $outline }}
+
+# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
+theme[graph_text]={{ $tertiary }}
+
+# Background color of the percentage meters
+theme[meter_bg]={{ $outline }}
+
+# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
+theme[proc_misc]={{ $tertiary }}
+
+# CPU, Memory, Network, Proc box outline colors
+theme[cpu_box]={{ $mauve }}
+theme[mem_box]={{ $green }}
+theme[net_box]={{ $maroon }}
+theme[proc_box]={{ $blue }}
+
+# Box divider line and small boxes line color
+theme[div_line]={{ $outlineVariant }}
+
+# Temperature graph color (Green -> Yellow -> Red)
+theme[temp_start]={{ $green }}
+theme[temp_mid]={{ $yellow }}
+theme[temp_end]={{ $red }}
+
+# CPU graph colors (Teal -> Sapphire -> Lavender)
+theme[cpu_start]={{ $teal }}
+theme[cpu_mid]={{ $sapphire }}
+theme[cpu_end]={{ $lavender }}
+
+# Mem/Disk free meter (Mauve -> Lavender -> Blue)
+theme[free_start]={{ $mauve }}
+theme[free_mid]={{ $lavender }}
+theme[free_end]={{ $blue }}
+
+# Mem/Disk cached meter (Sapphire -> Blue -> Lavender)
+theme[cached_start]={{ $sapphire }}
+theme[cached_mid]={{ $blue }}
+theme[cached_end]={{ $lavender }}
+
+# Mem/Disk available meter (Peach -> Maroon -> Red)
+theme[available_start]={{ $peach }}
+theme[available_mid]={{ $maroon }}
+theme[available_end]={{ $red }}
+
+# Mem/Disk used meter (Green -> Teal -> Sky)
+theme[used_start]={{ $green }}
+theme[used_mid]={{ $teal }}
+theme[used_end]={{ $sky }}
+
+# Download graph colors (Peach -> Maroon -> Red)
+theme[download_start]={{ $peach }}
+theme[download_mid]={{ $maroon }}
+theme[download_end]={{ $red }}
+
+# Upload graph colors (Green -> Teal -> Sky)
+theme[upload_start]={{ $green }}
+theme[upload_mid]={{ $teal }}
+theme[upload_end]={{ $sky }}
+
+# Process box color gradient for threads, mem and cpu usage (Sapphire -> Lavender -> Mauve)
+theme[process_start]={{ $sapphire }}
+theme[process_mid]={{ $lavender }}
+theme[process_end]={{ $mauve }}
diff --git a/src/caelestia/data/templates/fuzzel.ini b/src/caelestia/data/templates/fuzzel.ini
index d4eaafe..d61f208 100644
--- a/src/caelestia/data/templates/fuzzel.ini
+++ b/src/caelestia/data/templates/fuzzel.ini
@@ -28,14 +28,14 @@ radius=10
width=2
[colors]
-background=$surfacedd
-text=$onSurfacedd
-prompt=$primaryff
-placeholder=$outlineff
-input=$onSurfaceff
-match=$tertiaryff
-selection=$primary87
-selection-text=$onSurfaceff
-selection-match=$tertiaryff
-counter=$outlineff
-border=$primary77
+background={{ $surface }}dd
+text={{ $onSurface }}dd
+prompt={{ $primary }}ff
+placeholder={{ $outline }}ff
+input={{ $onSurface }}ff
+match={{ $tertiary }}ff
+selection={{ $primary }}87
+selection-text={{ $onSurface }}ff
+selection-match={{ $tertiary }}ff
+counter={{ $outline }}ff
+border={{ $primary }}77
diff --git a/src/caelestia/data/templates/spicetify.ini b/src/caelestia/data/templates/spicetify.ini
index 839f30d..976a0c9 100644
--- a/src/caelestia/data/templates/spicetify.ini
+++ b/src/caelestia/data/templates/spicetify.ini
@@ -1,17 +1,17 @@
[caelestia]
-text = $text ; Main text colour
-subtext = $subtext0 ; Subtext colour
-main = $base ; Panel backgrounds
-highlight = $primary ; Doesn't seem to do anything
-misc = $primary ; Doesn't seem to do anything
-notification = $overlay0 ; Notifications probably
-notification-error = $error ; Error notifications probably
-shadow = $mantle ; Shadow for covers, context menu, also affects playlist/artist banners
-card = $surface0 ; Context menu and tooltips
-player = $base ; Doesn't seem to do anything
-sidebar = $mantle ; Background
-main-elevated = $surface0 ; Higher layers than main, e.g. search bar
-selected-row = $text ; Selections, hover, other coloured text and slider background
-button = $primary ; Slider and text buttons
-button-active = $primary ; Background buttons
-button-disabled = $overlay0 ; Disabled buttons
+text = {{ $text }} ; Main text colour
+subtext = {{ $subtext0 }} ; Subtext colour
+main = {{ $base }} ; Panel backgrounds
+highlight = {{ $primary }} ; Doesn't seem to do anything
+misc = {{ $primary }} ; Doesn't seem to do anything
+notification = {{ $overlay0 }} ; Notifications probably
+notification-error = {{ $error }} ; Error notifications probably
+shadow = {{ $mantle }} ; Shadow for covers, context menu, also affects playlist/artist banners
+card = {{ $surface0 }} ; Context menu and tooltips
+player = {{ $base }} ; Doesn't seem to do anything
+sidebar = {{ $mantle }} ; Background
+main-elevated = {{ $surface0 }} ; Higher layers than main, e.g. search bar
+selected-row = {{ $text }} ; Selections, hover, other coloured text and slider background
+button = {{ $primary }} ; Slider and text buttons
+button-active = {{ $primary }} ; Background buttons
+button-disabled = {{ $overlay0 }} ; Disabled buttons
diff --git a/src/caelestia/utils/theme.py b/src/caelestia/utils/theme.py
index c4e9899..7f29637 100644
--- a/src/caelestia/utils/theme.py
+++ b/src/caelestia/utils/theme.py
@@ -19,10 +19,10 @@ def gen_scss(colours: dict[str, str]) -> str:
return scss
-def gen_replace(colours: dict[str, str], template: Path) -> str:
+def gen_replace(colours: dict[str, str], template: Path, hash: bool = False) -> str:
template = template.read_text()
for name, colour in colours.items():
- template = template.replace(f"${name}", colour)
+ template = template.replace(f"{{{{ ${name} }}}}", f"#{colour}" if hash else colour)
return template
@@ -107,9 +107,16 @@ def apply_fuzzel(colours: dict[str, str]) -> None:
try_write(config_dir / "fuzzel/fuzzel.ini", template)
+def apply_btop(colours: dict[str, str]) -> None:
+ template = gen_replace(colours, templates_dir / "btop.theme", hash=True)
+ try_write(config_dir / "btop/themes/caelestia.theme", template)
+ subprocess.run(["killall", "-USR2", "btop"])
+
+
def apply_colours(colours: dict[str, str]) -> None:
apply_terms(gen_sequences(colours))
apply_hypr(gen_conf(colours))
apply_discord(gen_scss(colours))
apply_spicetify(colours)
apply_fuzzel(colours)
+ apply_btop(colours)