refactor: dedupe theme values and app helpers

This commit is contained in:
2026-03-28 14:57:39 +00:00
parent a8b07b0c30
commit 447d7f1dd7
18 changed files with 302 additions and 269 deletions

View File

@@ -3,17 +3,5 @@
use ../common.nu *
def main [hostname?: string, ...rest: string] {
let host = if ($hostname | is-empty) {
try { scutil --get LocalHostName | str trim } catch { hostname -s | str trim }
} else { $hostname }
print_info $"Building configuration for ($host)"
nix build $".#darwinConfigurations.($host).system" --show-trace ...$rest
if ("./result" | path exists) {
rm ./result
}
print_success "Build completed successfully"
build-config "darwin" $hostname ...$rest
}

View File

@@ -1,21 +0,0 @@
#!/usr/bin/env nu
use ../common.nu *
def main [...inputs: string] {
if ($inputs | is-empty) {
print_info "Updating all flake inputs"
nix flake update
} else {
print_info $"Updating flake inputs: ($inputs | str join ', ')"
nix flake update ...$inputs
}
print_info "Regenerating flake.nix"
nix run .#write-flake
print_info "Formatting"
alejandra .
print_success "Flake updated"
}

View File

@@ -2,18 +2,8 @@
use ./common.nu *
def get-hostname [] {
if $nu.os-info.name == "macos" {
try { ^scutil --get LocalHostName | str trim } catch { ^hostname -s | str trim }
} else {
^hostname | str trim
}
}
def main [hostname?: string, ...rest: string] {
let host = if ($hostname | is-empty) {
get-hostname
} else { $hostname }
let host = resolve-host $hostname
print_info $"Applying configuration for ($host)"

View File

@@ -15,3 +15,58 @@ export def print_error [msg: string] {
export def print_warning [msg: string] {
print $"(ansi yellow)[WARN](ansi reset) ($msg)"
}
export def get-hostname [] {
if $nu.os-info.name == "macos" {
try { ^scutil --get LocalHostName | str trim } catch { ^hostname -s | str trim }
} else {
^hostname | str trim
}
}
export def resolve-host [hostname?: string] {
if ($hostname | is-empty) {
get-hostname
} else {
$hostname
}
}
export def cleanup-result-link [] {
if ("./result" | path exists) {
rm ./result
}
}
export def build-config [kind: string, hostname?: string, ...rest: string] {
let host = resolve-host $hostname
print_info $"Building configuration for ($host)"
if $kind == "darwin" {
nix build $".#darwinConfigurations.($host).system" --show-trace ...$rest
} else {
nix build $".#nixosConfigurations.($host).config.system.build.toplevel" --show-trace ...$rest
}
cleanup-result-link
print_success "Build completed successfully"
}
export def update-flake [inputs: list<string>] {
if ($inputs | is-empty) {
print_info "Updating all flake inputs"
nix flake update
} else {
print_info $"Updating flake inputs: ($inputs | str join ', ')"
nix flake update ...$inputs
}
print_info "Regenerating flake.nix"
nix run .#write-flake
print_info "Formatting"
alejandra .
print_success "Flake updated"
}

7
apps/update Executable file
View File

@@ -0,0 +1,7 @@
#!/usr/bin/env nu
use ./common.nu *
def main [...inputs: string] {
update-flake $inputs
}

View File

@@ -3,17 +3,5 @@
use ../common.nu *
def main [hostname?: string, ...rest: string] {
let host = if ($hostname | is-empty) {
hostname | str trim
} else { $hostname }
print_info $"Building configuration for ($host)"
nix build $".#nixosConfigurations.($host).config.system.build.toplevel" --show-trace ...$rest
if ("./result" | path exists) {
rm ./result
}
print_success "Build completed successfully"
build-config "nixos" $hostname ...$rest
}

View File

@@ -1,21 +0,0 @@
#!/usr/bin/env nu
use ../common.nu *
def main [...inputs: string] {
if ($inputs | is-empty) {
print_info "Updating all flake inputs"
nix flake update
} else {
print_info $"Updating flake inputs: ($inputs | str join ', ')"
nix flake update ...$inputs
}
print_info "Regenerating flake.nix"
nix run .#write-flake
print_info "Formatting"
alejandra .
print_success "Flake updated"
}

View File

@@ -8,7 +8,7 @@ with lib; let
cfg = config.local.dock;
inherit (pkgs) dockutil stdenv;
local = import ../_lib/local.nix;
userHome = local.mkHome local.hosts.chidi.system;
userHome = "/Users/${local.user.name}";
in {
options = {
local.dock = {

46
modules/_lib/theme.nix Normal file
View File

@@ -0,0 +1,46 @@
{
rosePineDawn = {
slug = "rose-pine-dawn";
displayName = "Rosé Pine Dawn";
ghosttyName = "Rose Pine Dawn";
hex = {
love = "#b4637a";
gold = "#ea9d34";
rose = "#d7827e";
pine = "#286983";
foam = "#56949f";
iris = "#907aa9";
leaf = "#6d8f89";
text = "#575279";
subtle = "#797593";
muted = "#9893a5";
highlightHigh = "#cecacd";
highlightMed = "#dfdad9";
highlightLow = "#f4ede8";
overlay = "#f2e9e1";
surface = "#fffaf3";
base = "#faf4ed";
};
rgb = {
love = "180 99 122";
gold = "234 157 52";
rose = "215 130 126";
pine = "40 105 131";
foam = "86 148 159";
iris = "144 122 169";
leaf = "109 143 137";
text = "87 82 121";
subtle = "121 117 147";
muted = "152 147 165";
highlightHigh = "206 202 205";
highlightMed = "223 218 217";
highlightLow = "244 237 232";
overlay = "242 233 225";
surface = "255 250 243";
base = "250 244 237";
black = "0 0 0";
};
};
}

View File

@@ -26,8 +26,8 @@
'')}/bin/${name}";
meta.description = descriptions.${name};
};
platformAppNames = ["build" "rollback" "update"];
sharedAppNames = ["apply"];
platformAppNames = ["build" "rollback"];
sharedAppNames = ["apply" "update"];
in {
apps =
pkgs.lib.genAttrs platformAppNames mkPlatformApp

View File

@@ -1,6 +1,6 @@
{inputs, ...}: let
local = import ./_lib/local.nix;
userHome = local.mkHome local.hosts.chidi.system;
userHome = "/Users/${local.user.name}";
in {
den.aspects.darwin-system.darwin = {pkgs, ...}: {
imports = [

View File

@@ -1,5 +1,6 @@
{...}: let
local = import ./_lib/local.nix;
palette = (import ./_lib/theme.nix).rosePineDawn.hex;
in {
den.aspects.dev-tools.homeManager = {
pkgs,
@@ -145,76 +146,76 @@ in {
programs.jjui = {
enable = true;
settings.ui.colors = {
text = {fg = "#575279";};
dimmed = {fg = "#9893a5";};
text = {fg = palette.text;};
dimmed = {fg = palette.muted;};
selected = {
bg = "#f2e9e1";
fg = "#575279";
bg = palette.overlay;
fg = palette.text;
bold = true;
};
border = {fg = "#9893a5";};
border = {fg = palette.muted;};
title = {
fg = "#907aa9";
fg = palette.iris;
bold = true;
};
shortcut = {
fg = "#286983";
fg = palette.pine;
bold = true;
};
matched = {
fg = "#ea9d34";
fg = palette.gold;
bold = true;
};
"revisions selected" = {
bg = "#f2e9e1";
fg = "#575279";
bg = palette.overlay;
fg = palette.text;
bold = true;
};
"status" = {bg = "#f2e9e1";};
"status" = {bg = palette.overlay;};
"status title" = {
bg = "#907aa9";
fg = "#faf4ed";
bg = palette.iris;
fg = palette.base;
bold = true;
};
"status shortcut" = {fg = "#286983";};
"status dimmed" = {fg = "#9893a5";};
"menu" = {bg = "#faf4ed";};
"status shortcut" = {fg = palette.pine;};
"status dimmed" = {fg = palette.muted;};
"menu" = {bg = palette.base;};
"menu selected" = {
bg = "#f2e9e1";
fg = "#575279";
bg = palette.overlay;
fg = palette.text;
bold = true;
};
"menu border" = {fg = "#9893a5";};
"menu border" = {fg = palette.muted;};
"menu title" = {
fg = "#907aa9";
fg = palette.iris;
bold = true;
};
"menu shortcut" = {fg = "#286983";};
"menu shortcut" = {fg = palette.pine;};
"menu matched" = {
fg = "#ea9d34";
fg = palette.gold;
bold = true;
};
"preview border" = {fg = "#9893a5";};
"help" = {bg = "#faf4ed";};
"help border" = {fg = "#9893a5";};
"preview border" = {fg = palette.muted;};
"help" = {bg = palette.base;};
"help border" = {fg = palette.muted;};
"help title" = {
fg = "#907aa9";
fg = palette.iris;
bold = true;
};
"confirmation" = {bg = "#faf4ed";};
"confirmation border" = {fg = "#9893a5";};
"confirmation" = {bg = palette.base;};
"confirmation border" = {fg = palette.muted;};
"confirmation selected" = {
bg = "#f2e9e1";
fg = "#575279";
bg = palette.overlay;
fg = palette.text;
bold = true;
};
"confirmation dimmed" = {fg = "#9893a5";};
"confirmation dimmed" = {fg = palette.muted;};
source_marker = {
fg = "#56949f";
fg = palette.foam;
bold = true;
};
target_marker = {
fg = "#d7827e";
fg = palette.rose;
bold = true;
};
};

View File

@@ -1,6 +1,6 @@
{inputs, ...}: let
local = import ./_lib/local.nix;
userHome = local.mkHome local.hosts.michael.system;
userHome = "/home/${local.user.name}";
in {
den.aspects.nixos-system.nixos = {pkgs, ...}: {
imports = [inputs.home-manager.nixosModules.home-manager];

View File

@@ -10,7 +10,7 @@ in {
# Configure Darwin SOPS defaults
den.default.darwin = {
sops.age.keyFile = "${local.mkHome local.hosts.chidi.system}/.config/sops/age/keys.txt";
sops.age.keyFile = "/Users/${local.user.name}/.config/sops/age/keys.txt";
sops.age.sshKeyPaths = [];
sops.gnupg.sshKeyPaths = [];
};

View File

@@ -1,4 +1,9 @@
{...}: {
{...}: let
local = import ./_lib/local.nix;
theme = (import ./_lib/theme.nix).rosePineDawn;
palette = theme.hex;
pineAnsi = builtins.replaceStrings [" "] [";"] theme.rgb.pine;
in {
den.aspects.shell.homeManager = {
lib,
pkgs,
@@ -32,7 +37,7 @@
extraEnv =
''
$env.LS_COLORS = (${pkgs.vivid}/bin/vivid generate rose-pine-dawn)
$env.LS_COLORS = (${pkgs.vivid}/bin/vivid generate ${theme.slug})
''
+ lib.optionalString pkgs.stdenv.isDarwin ''
# Nushell on Darwin doesn't source /etc/zprofile or path_helper,
@@ -43,22 +48,22 @@
extraConfig = ''
# --- Rosé Pine Dawn Theme ---
let theme = {
love: "#b4637a"
gold: "#ea9d34"
rose: "#d7827e"
pine: "#286983"
foam: "#56949f"
iris: "#907aa9"
leaf: "#6d8f89"
text: "#575279"
subtle: "#797593"
muted: "#9893a5"
highlight_high: "#cecacd"
highlight_med: "#dfdad9"
highlight_low: "#f4ede8"
overlay: "#f2e9e1"
surface: "#fffaf3"
base: "#faf4ed"
love: "${palette.love}"
gold: "${palette.gold}"
rose: "${palette.rose}"
pine: "${palette.pine}"
foam: "${palette.foam}"
iris: "${palette.iris}"
leaf: "${palette.leaf}"
text: "${palette.text}"
subtle: "${palette.subtle}"
muted: "${palette.muted}"
highlight_high: "${palette.highlightHigh}"
highlight_med: "${palette.highlightMed}"
highlight_low: "${palette.highlightLow}"
overlay: "${palette.overlay}"
surface: "${palette.surface}"
base: "${palette.base}"
}
let scheme = {
@@ -231,7 +236,7 @@
# Vi mode indicators Starship handles the character (green/red for
# success/error), nushell adds a dot for normal mode.
$env.PROMPT_INDICATOR_VI_INSERT = "· "
$env.PROMPT_INDICATOR_VI_NORMAL = "\e[1;38;2;40;105;131m·\e[0m "
$env.PROMPT_INDICATOR_VI_NORMAL = "\e[1;38;2;${pineAnsi}m·\e[0m "
'';
};
@@ -268,9 +273,7 @@
git_state = {
disabled = true;
};
custom.scm = let
local = import ./_lib/local.nix;
in {
custom.scm = {
when = "jj-starship detect";
shell = ["jj-starship" "--strip-bookmark-prefix" "${local.user.name}/" "--truncate-name" "20" "--bookmarks-display-limit" "1"];
format = "$output ";

View File

@@ -1,27 +1,17 @@
{...}: {
den.aspects.ssh-client.homeManager = {
config,
pkgs,
...
}: let
homeDir = "${
if pkgs.stdenv.hostPlatform.isDarwin
then "/Users"
else "/home"
}/${config.home.username}";
in {
den.aspects.ssh-client.homeManager = {config, ...}: {
programs.ssh = {
enable = true;
enableDefaultConfig = false;
includes = [
"${homeDir}/.ssh/config_external"
"${config.home.homeDirectory}/.ssh/config_external"
];
matchBlocks = {
"*" = {};
"github.com" = {
identitiesOnly = true;
identityFile = [
"${homeDir}/.ssh/id_ed25519"
"${config.home.homeDirectory}/.ssh/id_ed25519"
];
};
};

View File

@@ -1,4 +1,7 @@
{...}: {
{...}: let
theme = (import ./_lib/theme.nix).rosePineDawn;
palette = theme.hex;
in {
den.aspects.terminal.darwin = {pkgs, ...}: {
fonts.packages = [
pkgs.nerd-fonts.iosevka
@@ -40,17 +43,17 @@
--preview-window='border-rounded' --prompt=' ' --marker=' ' --pointer=' '
--separator='' --scrollbar='' --layout='reverse'
--color=bg+:#f2e9e1,bg:#faf4ed,spinner:#ea9d34,hl:#d7827e
--color=fg:#797593,header:#286983,info:#56949f,pointer:#907aa9
--color=marker:#b4637a,fg+:#575279,prompt:#797593,hl+:#d7827e
--color=selected-bg:#f2e9e1
--color=border:#dfdad9,label:#575279
--color=bg+:${palette.overlay},bg:${palette.base},spinner:${palette.gold},hl:${palette.rose}
--color=fg:${palette.subtle},header:${palette.pine},info:${palette.foam},pointer:${palette.iris}
--color=marker:${palette.love},fg+:${palette.text},prompt:${palette.subtle},hl+:${palette.rose}
--color=selected-bg:${palette.overlay}
--color=border:${palette.highlightMed},label:${palette.text}
'';
};
xdg.configFile."ghostty/config".text = ''
command = ${pkgs.nushell}/bin/nu
theme = Rose Pine Dawn
theme = ${theme.ghosttyName}
window-padding-x = 12
window-padding-y = 3
window-padding-balance = true
@@ -69,7 +72,7 @@
"glow/glow.yml".text =
lib.concatStringsSep "\n" [
"# style name or JSON path (default \"auto\")"
"style: \"${config.xdg.configHome}/glow/rose-pine-dawn.json\""
"style: \"${config.xdg.configHome}/glow/${theme.slug}.json\""
"# mouse support (TUI-mode only)"
"mouse: false"
"# use pager to display markdown"
@@ -80,17 +83,17 @@
"all: false"
""
];
"glow/rose-pine-dawn.json".source = ./_terminal/rose-pine-dawn-glow.json;
"glow/${theme.slug}.json".source = ./_terminal/rose-pine-dawn-glow.json;
};
programs.bat = {
enable = true;
config = {
theme = "Rosé Pine Dawn";
theme = theme.displayName;
pager = "ov";
};
themes = {
"Rosé Pine Dawn" = {
"${theme.displayName}" = {
src =
pkgs.fetchFromGitHub {
owner = "rose-pine";
@@ -98,7 +101,7 @@
rev = "23bb25b9c421cdc9ea89ff3ad3825840cd19d65d";
hash = "sha256-GUFdv5V5OZ2PG+gfsbiohMT23LWsrZda34ReHBr2Xy0=";
};
file = "dist/rose-pine-dawn.tmTheme";
file = "dist/${theme.slug}.tmTheme";
};
};
};

View File

@@ -1,4 +1,8 @@
{...}: {
{...}: let
theme = (import ./_lib/theme.nix).rosePineDawn;
palette = theme.hex;
rgb = theme.rgb;
in {
den.aspects.zellij.homeManager = {pkgs, ...}: {
programs.zellij.enable = true;
@@ -8,125 +12,125 @@
pane_frames false
show_release_notes false
show_startup_tips false
theme "rose-pine-dawn"
theme "${theme.slug}"
themes {
rose-pine-dawn {
${theme.slug} {
text_unselected {
base 87 82 121
background 244 237 232
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightLow}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
text_selected {
base 87 82 121
background 223 218 217
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightMed}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
ribbon_selected {
base 244 237 232
background 40 105 131
emphasis_0 234 157 52
emphasis_1 215 130 126
emphasis_2 144 122 169
emphasis_3 86 148 159
base ${rgb.highlightLow}
background ${rgb.pine}
emphasis_0 ${rgb.gold}
emphasis_1 ${rgb.rose}
emphasis_2 ${rgb.iris}
emphasis_3 ${rgb.foam}
}
ribbon_unselected {
base 250 244 237
background 87 82 121
emphasis_0 234 157 52
emphasis_1 215 130 126
emphasis_2 144 122 169
emphasis_3 86 148 159
base ${rgb.base}
background ${rgb.text}
emphasis_0 ${rgb.gold}
emphasis_1 ${rgb.rose}
emphasis_2 ${rgb.iris}
emphasis_3 ${rgb.foam}
}
table_title {
base 40 105 131
background 0 0 0
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.pine}
background ${rgb.black}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
table_cell_selected {
base 87 82 121
background 223 218 217
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightMed}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
table_cell_unselected {
base 87 82 121
background 244 237 232
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightLow}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
list_selected {
base 87 82 121
background 223 218 217
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightMed}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
list_unselected {
base 87 82 121
background 244 237 232
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 40 105 131
emphasis_3 144 122 169
base ${rgb.text}
background ${rgb.highlightLow}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.pine}
emphasis_3 ${rgb.iris}
}
frame_selected {
base 40 105 131
background 0 0 0
emphasis_0 215 130 126
emphasis_1 86 148 159
emphasis_2 144 122 169
emphasis_3 0 0 0
base ${rgb.pine}
background ${rgb.black}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.foam}
emphasis_2 ${rgb.iris}
emphasis_3 ${rgb.black}
}
frame_highlight {
base 215 130 126
background 0 0 0
emphasis_0 215 130 126
emphasis_1 215 130 126
emphasis_2 215 130 126
emphasis_3 215 130 126
base ${rgb.rose}
background ${rgb.black}
emphasis_0 ${rgb.rose}
emphasis_1 ${rgb.rose}
emphasis_2 ${rgb.rose}
emphasis_3 ${rgb.rose}
}
exit_code_success {
base 40 105 131
background 0 0 0
emphasis_0 86 148 159
emphasis_1 244 237 232
emphasis_2 144 122 169
emphasis_3 40 105 131
base ${rgb.pine}
background ${rgb.black}
emphasis_0 ${rgb.foam}
emphasis_1 ${rgb.highlightLow}
emphasis_2 ${rgb.iris}
emphasis_3 ${rgb.pine}
}
exit_code_error {
base 180 99 122
background 0 0 0
emphasis_0 234 157 52
emphasis_1 0 0 0
emphasis_2 0 0 0
emphasis_3 0 0 0
base ${rgb.love}
background ${rgb.black}
emphasis_0 ${rgb.gold}
emphasis_1 ${rgb.black}
emphasis_2 ${rgb.black}
emphasis_3 ${rgb.black}
}
multiplayer_user_colors {
player_1 144 122 169
player_2 40 105 131
player_3 215 130 126
player_4 234 157 52
player_5 86 148 159
player_6 180 99 122
player_7 0 0 0
player_8 0 0 0
player_9 0 0 0
player_10 0 0 0
player_1 ${rgb.iris}
player_2 ${rgb.pine}
player_3 ${rgb.rose}
player_4 ${rgb.gold}
player_5 ${rgb.foam}
player_6 ${rgb.love}
player_7 ${rgb.black}
player_8 ${rgb.black}
player_9 ${rgb.black}
player_10 ${rgb.black}
}
}
}
@@ -143,26 +147,26 @@
plugin location="file:${pkgs.zjstatus}/bin/zjstatus.wasm" {
hide_frame_for_single_pane "true"
format_left "{mode}#[fg=#286983,bg=#faf4ed,bold] {session}#[bg=#faf4ed] {tabs}"
format_left "{mode}#[fg=${palette.pine},bg=${palette.base},bold] {session}#[bg=${palette.base}] {tabs}"
format_right "{datetime}"
format_space "#[bg=#faf4ed]"
format_space "#[bg=${palette.base}]"
mode_normal "#[fg=#faf4ed,bg=#286983] "
mode_locked "#[fg=#faf4ed,bg=#ea9d34] L "
mode_tab "#[fg=#faf4ed,bg=#6d8f89] T "
mode_pane "#[fg=#faf4ed,bg=#907aa9] P "
mode_session "#[fg=#faf4ed,bg=#56949f] S "
mode_resize "#[fg=#faf4ed,bg=#ea9d34] R "
mode_move "#[fg=#faf4ed,bg=#d7827e] M "
mode_search "#[fg=#faf4ed,bg=#b4637a] S "
mode_normal "#[fg=${palette.base},bg=${palette.pine}] "
mode_locked "#[fg=${palette.base},bg=${palette.gold}] L "
mode_tab "#[fg=${palette.base},bg=${palette.leaf}] T "
mode_pane "#[fg=${palette.base},bg=${palette.iris}] P "
mode_session "#[fg=${palette.base},bg=${palette.foam}] S "
mode_resize "#[fg=${palette.base},bg=${palette.gold}] R "
mode_move "#[fg=${palette.base},bg=${palette.rose}] M "
mode_search "#[fg=${palette.base},bg=${palette.love}] S "
tab_normal "#[fg=#9893a5,bg=#faf4ed] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}"
tab_active "#[fg=#faf4ed,bg=#286983,bold,underline] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}"
tab_normal "#[fg=${palette.muted},bg=${palette.base}] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}"
tab_active "#[fg=${palette.base},bg=${palette.pine},bold,underline] {index} {name} {fullscreen_indicator}{sync_indicator}{floating_indicator}"
tab_fullscreen_indicator "󰊓 "
tab_sync_indicator "󰓦 "
tab_floating_indicator "󰉈 "
datetime "#[fg=#575279,bg=#faf4ed] {format} "
datetime "#[fg=${palette.text},bg=${palette.base}] {format} "
datetime_format "%A, %d %b %Y %H:%M"
datetime_timezone "Europe/Berlin"
}