theme: add Warp terminal theme support (#42)

* theme: add Warp terminal theme support

Add support for Warp terminal theming with proper template and integration.
- Add warp.yaml template with standard theme variables
- Implement apply_warp function with correct 'darker'/'lighter' values
- Integrate with main theme application pipeline via enableWarp config

* warp: improve theme generation and use proper data directory

- Use gen_replace with hash=True for consistent color formatting
- Remove # symbols from template to avoid double hashes
- Replace warp_mode manually after gen_replace instead of adding to colors dict
- Use data_dir for XDG-compliant theme location
This commit is contained in:
Batuhan Edgüer
2025-08-16 19:17:39 +03:00
committed by GitHub
parent 1cd8cae2d9
commit 63e2132830
2 changed files with 37 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
---
name: 'Caelestia Theme'
accent: '{{ $primary }}'
background: '{{ $surface }}'
foreground: '{{ $onSurface }}'
details: {{ $warp_mode }}
cursor: '{{ $secondary }}'
terminal_colors:
normal:
black: '{{ $term0 }}'
red: '{{ $term1 }}'
green: '{{ $term2 }}'
yellow: '{{ $term3 }}'
blue: '{{ $term4 }}'
magenta: '{{ $term5 }}'
cyan: '{{ $term6 }}'
white: '{{ $term7 }}'
bright:
black: '{{ $term8 }}'
red: '{{ $term9 }}'
green: '{{ $term10 }}'
yellow: '{{ $term11 }}'
blue: '{{ $term12 }}'
magenta: '{{ $term13 }}'
cyan: '{{ $term14 }}'
white: '{{ $term15 }}'
+11
View File
@@ -7,6 +7,7 @@ from caelestia.utils.colour import get_dynamic_colours
from caelestia.utils.paths import (
c_state_dir,
config_dir,
data_dir,
templates_dir,
theme_dir,
user_config_path,
@@ -184,6 +185,14 @@ general="Sans Serif,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
write_file(config_dir / f"qt{ver}ct/qt{ver}ct.conf", conf)
def apply_warp(colours: dict[str, str], mode: str) -> None:
warp_mode = "darker" if mode == "dark" else "lighter"
template = gen_replace(colours, templates_dir / "warp.yaml", hash=True)
template = template.replace("{{ $warp_mode }}", warp_mode)
write_file(data_dir / "warp-terminal/themes/caelestia.yaml", template)
def apply_user_templates(colours: dict[str, str]) -> None:
if not user_templates_dir.is_dir():
return
@@ -219,4 +228,6 @@ def apply_colours(colours: dict[str, str], mode: str) -> None:
apply_gtk(colours, mode)
if check("enableQt"):
apply_qt(colours, mode)
if check("enableWarp"):
apply_warp(colours, mode)
apply_user_templates(colours)