Dooit Theme
Dooit now supports a concept of themes which makes it much easier for all components of the config share a common color format Here's the definition of the Theme
class:
Each theme consists of these colors:
Colors
Background Colors
background1
: The darkest background color.background2
: A slightly lighter background color.background3
: The lightest background color in the theme.
Foreground Colors
foreground1
: The darkest foreground color.foreground2
: A slightly lighter foreground color.foreground3
: The lightest foreground color in the theme.
Accent Colors
primary
: The primary accent colorsecondary
: The secondary accent color
Other Colors
red
orange
yellow
green
blue
purple
magenta
cyan
Usage
You can access the current colorscheme by using theme
var from api.vars
py
from dooit.ui.api import DooitAPI, subscribe
from dooit.ui.api.events import Startup
@subscribe(Startup)
def setup(api: DooitAPI, _):
theme = api.vars.theme
# red = theme.red
# cyan = theme.cyan
# so on ......
How to change themes?
Import the theme you would like to set and then add it to the api
py
from dooit.ui.api import DooitAPI, subscribe
from dooit.ui.api.events import Startup
from dooit_extras.themes import Gruvbox
@subscribe(Startup)
def layout_setup(api: DooitAPI, _):
api.css.set_theme(Gruvbox)
Creating your own colorscheme
If you want to create your own colorscheme, you can use the DooitThemeBase
and overrride the colors
py
from dooit.api.theme import DooitThemeBase
class Nord(DooitThemeBase):
_name = "dooit-nord"
background1: str = "#2E3440" # Darkest
background2: str = "#3B4252" # Lighter
background3: str = "#434C5E" # Lightest
# foreground colors
foreground1: str = "#D8DEE9" # Darkest
foreground2: str = "#E5E9F0" # Lighter
foreground3: str = "#ECEFF4" # Lightest
# other colors
red: str = "#BF616A"
orange: str = "#D08770"
yellow: str = "#EBCB8B"
green: str = "#A3BE8C"
blue: str = "#81a1c1"
purple: str = "#B48EAD"
magenta: str = "#B48EAD"
cyan: str = "#8fbcbb"
# accent colors
primary: str = cyan
secondary: str = blue