Repository navigation
Expand file tree
/
Copy paththeme.py
More file actions
108 lines (104 loc) · 3.36 KB
/
Copy paththeme.py
File metadata and controls
108 lines (104 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
"""
Colour palettes for dark / light / auto theme switching.
"""
from datetime import datetime as _dt
DARK = {
# Structure
'BG': (0, 0, 0),
'PANEL_BG': (5, 5, 10),
'WHITE': (255, 255, 255),
'GRAY': (170, 170, 180),
'DIM_GRAY': (100, 100, 110),
'DIM': (80, 80, 95),
'ACCENT': (80, 160, 255),
'ACCENT_DIM': (40, 80, 130),
'DIVIDER': (40, 40, 50),
'BOX_BG': (10, 10, 15),
'BOX_BORDER': (45, 45, 58),
'GEAR_COLOR': (90, 90, 105),
'COLON_DIM': (60, 60, 70),
# Weather
'TEMP_COLOR': (255, 200, 80),
'HUMID_COLOR': (100, 200, 255),
'WIND_COLOR': (150, 220, 150),
'SUN_COLOR': (255, 200, 60),
# Forecast
'FORECAST_BG': (12, 12, 20),
'FORECAST_SEL': (20, 20, 35),
# Ticker
'TICKER_BG': (8, 8, 14),
'TICKER_COLOR': (180, 220, 255),
# Settings inputs
'INPUT_BG': (20, 20, 32),
'INPUT_BORDER': (60, 60, 80),
'INPUT_FOCUS': (80, 140, 220),
# Settings tabs
'TAB_ACTIVE': (30, 30, 50),
'TAB_INACTIVE': (15, 15, 25),
# Selected row / button highlights
'SEL_ROW': (30, 60, 120),
'BTN_SEL': (30, 80, 150),
# WiFi
'WIFI_BAR': (60, 160, 100),
'WIFI_CON': (50, 200, 120),
# Buttons
'BTN_OK': (40, 110, 60),
'BTN_CANCEL': (80, 30, 30),
'BTN_BACK': (30, 30, 50),
'BTN_SCAN': (30, 60, 100),
# Status
'STATUS_OK': (80, 200, 120),
'STATUS_ERR': (220, 80, 80),
}
LIGHT = {
'BG': (238, 240, 248),
'PANEL_BG': (226, 229, 240),
'WHITE': (15, 15, 25),
'GRAY': (82, 86, 108),
'DIM_GRAY': (138, 141, 158),
'DIM': (138, 141, 158),
'ACCENT': (25, 105, 225),
'ACCENT_DIM': (75, 138, 208),
'DIVIDER': (190, 194, 215),
'BOX_BG': (222, 225, 238),
'BOX_BORDER': (175, 179, 205),
'GEAR_COLOR': (122, 126, 148),
'COLON_DIM': (178, 181, 200),
'TEMP_COLOR': (198, 128, 8),
'HUMID_COLOR': (15, 125, 208),
'WIND_COLOR': (45, 140, 60),
'SUN_COLOR': (192, 143, 8),
'FORECAST_BG': (220, 223, 236),
'FORECAST_SEL': (208, 212, 228),
'TICKER_BG': (226, 229, 242),
'TICKER_COLOR': (22, 72, 182),
'INPUT_BG': (215, 218, 232),
'INPUT_BORDER': (162, 166, 192),
'INPUT_FOCUS': (25, 105, 218),
'TAB_ACTIVE': (205, 210, 228),
'TAB_INACTIVE': (223, 227, 242),
'SEL_ROW': (155, 188, 238),
'BTN_SEL': (95, 152, 225),
'WIFI_BAR': (35, 138, 75),
'WIFI_CON': (25, 172, 90),
'BTN_OK': (32, 98, 52),
'BTN_CANCEL': (78, 28, 28),
'BTN_BACK': (195, 198, 215),
'BTN_SCAN': (155, 175, 215),
'STATUS_OK': (35, 158, 85),
'STATUS_ERR': (198, 52, 52),
}
def get_palette(config, now=None):
"""Return the correct palette dict based on config theme + time."""
mode = config.get('theme', 'dark')
if mode == 'light':
return LIGHT
if mode == 'dark':
return DARK
# auto — dark at night, light during day
if now is None:
now = _dt.now()
h = now.hour
ns = config.get('night_start', 23)
ne = config.get('night_end', 7)
return DARK if (h >= ns or h < ne) else LIGHT