config

package
v0.0.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultTheme = "tokyonight-night"

DefaultTheme is the theme used when no config exists.

Variables

View Source
var BuiltinThemes = map[string]*Theme{

	"tokyonight-night": {
		Name: "TokyoNight Night",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#1a1b26",
			BgLight:     "#24283b",
			BgDark:      "#16161e",
			Fg:          "#c0caf5",
			FgDim:       "#565f89",
			Border:      "#15161e",
			Highlight:   "#283457",
			Accent:      "#7aa2f7",
			AccentDim:   "#bb9af7",
			Running:     "#e0af68",
			Completed:   "#9ece6a",
			Failed:      "#f7768e",
			Canceled:    "#ff9e64",
			Terminated:  "#bb9af7",
			TimedOut:    "#f7768e",
			Header:      "#16161e",
			Menu:        "#1a1b26",
			TableHeader: "#7aa2f7",
			Key:         "#bb9af7",
			Crumb:       "#7aa2f7",
			PanelBorder: "#283457",
			PanelTitle:  "#7aa2f7",
		},
	},
	"tokyonight-storm": {
		Name: "TokyoNight Storm",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#24283b",
			BgLight:     "#292e42",
			BgDark:      "#1f2335",
			Fg:          "#c0caf5",
			FgDim:       "#565f89",
			Border:      "#1d202f",
			Highlight:   "#292e42",
			Accent:      "#7aa2f7",
			AccentDim:   "#bb9af7",
			Running:     "#e0af68",
			Completed:   "#9ece6a",
			Failed:      "#f7768e",
			Canceled:    "#ff9e64",
			Terminated:  "#bb9af7",
			TimedOut:    "#f7768e",
			Header:      "#1f2335",
			Menu:        "#24283b",
			TableHeader: "#7aa2f7",
			Key:         "#bb9af7",
			Crumb:       "#7aa2f7",
			PanelBorder: "#292e42",
			PanelTitle:  "#7aa2f7",
		},
	},
	"tokyonight-moon": {
		Name: "TokyoNight Moon",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#222436",
			BgLight:     "#2f334d",
			BgDark:      "#1e2030",
			Fg:          "#c8d3f5",
			FgDim:       "#636da6",
			Border:      "#1b1d2b",
			Highlight:   "#2f334d",
			Accent:      "#82aaff",
			AccentDim:   "#c099ff",
			Running:     "#ffc777",
			Completed:   "#c3e88d",
			Failed:      "#ff757f",
			Canceled:    "#ff966c",
			Terminated:  "#c099ff",
			TimedOut:    "#ff757f",
			Header:      "#1e2030",
			Menu:        "#222436",
			TableHeader: "#82aaff",
			Key:         "#c099ff",
			Crumb:       "#82aaff",
			PanelBorder: "#2f334d",
			PanelTitle:  "#82aaff",
		},
	},
	"tokyonight-day": {
		Name: "TokyoNight Day",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#e1e2e7",
			BgLight:     "#d0d5e3",
			BgDark:      "#b4b5b9",
			Fg:          "#3760bf",
			FgDim:       "#848cb5",
			Border:      "#b4b5b9",
			Highlight:   "#b7c1e3",
			Accent:      "#2e7de9",
			AccentDim:   "#9854f1",
			Running:     "#8c6c3e",
			Completed:   "#587539",
			Failed:      "#f52a65",
			Canceled:    "#b15c00",
			Terminated:  "#7847bd",
			TimedOut:    "#f52a65",
			Header:      "#d0d5e3",
			Menu:        "#e1e2e7",
			TableHeader: "#2e7de9",
			Key:         "#9854f1",
			Crumb:       "#2e7de9",
			PanelBorder: "#b4b5b9",
			PanelTitle:  "#2e7de9",
		},
	},

	"catppuccin-mocha": {
		Name: "Catppuccin Mocha",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#1e1e2e",
			BgLight:     "#313244",
			BgDark:      "#181825",
			Fg:          "#cdd6f4",
			FgDim:       "#6c7086",
			Border:      "#45475a",
			Highlight:   "#585b70",
			Accent:      "#f5c2e7",
			AccentDim:   "#cba6f7",
			Running:     "#f9e2af",
			Completed:   "#a6e3a1",
			Failed:      "#f38ba8",
			Canceled:    "#fab387",
			Terminated:  "#cba6f7",
			TimedOut:    "#f38ba8",
			Header:      "#181825",
			Menu:        "#1e1e2e",
			TableHeader: "#f5c2e7",
			Key:         "#cba6f7",
			Crumb:       "#f5c2e7",
			PanelBorder: "#585b70",
			PanelTitle:  "#f5c2e7",
		},
	},
	"catppuccin-macchiato": {
		Name: "Catppuccin Macchiato",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#24273a",
			BgLight:     "#363a4f",
			BgDark:      "#1e2030",
			Fg:          "#cad3f5",
			FgDim:       "#6e738d",
			Border:      "#494d64",
			Highlight:   "#5b6078",
			Accent:      "#f5bde6",
			AccentDim:   "#c6a0f6",
			Running:     "#eed49f",
			Completed:   "#a6da95",
			Failed:      "#ed8796",
			Canceled:    "#f5a97f",
			Terminated:  "#c6a0f6",
			TimedOut:    "#ed8796",
			Header:      "#1e2030",
			Menu:        "#24273a",
			TableHeader: "#f5bde6",
			Key:         "#c6a0f6",
			Crumb:       "#f5bde6",
			PanelBorder: "#5b6078",
			PanelTitle:  "#f5bde6",
		},
	},
	"catppuccin-frappe": {
		Name: "Catppuccin Frappé",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#303446",
			BgLight:     "#414559",
			BgDark:      "#292c3c",
			Fg:          "#c6d0f5",
			FgDim:       "#737994",
			Border:      "#51576d",
			Highlight:   "#626880",
			Accent:      "#f4b8e4",
			AccentDim:   "#ca9ee6",
			Running:     "#e5c890",
			Completed:   "#a6d189",
			Failed:      "#e78284",
			Canceled:    "#ef9f76",
			Terminated:  "#ca9ee6",
			TimedOut:    "#e78284",
			Header:      "#292c3c",
			Menu:        "#303446",
			TableHeader: "#f4b8e4",
			Key:         "#ca9ee6",
			Crumb:       "#f4b8e4",
			PanelBorder: "#626880",
			PanelTitle:  "#f4b8e4",
		},
	},
	"catppuccin-latte": {
		Name: "Catppuccin Latte",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#eff1f5",
			BgLight:     "#ccd0da",
			BgDark:      "#e6e9ef",
			Fg:          "#4c4f69",
			FgDim:       "#6c6f85",
			Border:      "#bcc0cc",
			Highlight:   "#acb0be",
			Accent:      "#ea76cb",
			AccentDim:   "#8839ef",
			Running:     "#df8e1d",
			Completed:   "#40a02b",
			Failed:      "#d20f39",
			Canceled:    "#fe640b",
			Terminated:  "#8839ef",
			TimedOut:    "#d20f39",
			Header:      "#e6e9ef",
			Menu:        "#eff1f5",
			TableHeader: "#ea76cb",
			Key:         "#8839ef",
			Crumb:       "#ea76cb",
			PanelBorder: "#acb0be",
			PanelTitle:  "#ea76cb",
		},
	},

	"dracula": {
		Name: "Dracula",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#282a36",
			BgLight:     "#44475a",
			BgDark:      "#21222c",
			Fg:          "#f8f8f2",
			FgDim:       "#6272a4",
			Border:      "#44475a",
			Highlight:   "#44475a",
			Accent:      "#ff79c6",
			AccentDim:   "#bd93f9",
			Running:     "#f1fa8c",
			Completed:   "#50fa7b",
			Failed:      "#ff5555",
			Canceled:    "#ffb86c",
			Terminated:  "#bd93f9",
			TimedOut:    "#ff5555",
			Header:      "#21222c",
			Menu:        "#282a36",
			TableHeader: "#ff79c6",
			Key:         "#bd93f9",
			Crumb:       "#ff79c6",
			PanelBorder: "#6272a4",
			PanelTitle:  "#ff79c6",
		},
	},
	"dracula-light": {
		Name: "Dracula Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#fffbeb",
			BgLight:     "#cfcfde",
			BgDark:      "#f5f5f0",
			Fg:          "#1f1f1f",
			FgDim:       "#6c664b",
			Border:      "#cfcfde",
			Highlight:   "#cfcfde",
			Accent:      "#a3144d",
			AccentDim:   "#644ac9",
			Running:     "#846e15",
			Completed:   "#14710a",
			Failed:      "#cb3a2a",
			Canceled:    "#a34d14",
			Terminated:  "#644ac9",
			TimedOut:    "#cb3a2a",
			Header:      "#f5f5f0",
			Menu:        "#fffbeb",
			TableHeader: "#a3144d",
			Key:         "#644ac9",
			Crumb:       "#a3144d",
			PanelBorder: "#6c664b",
			PanelTitle:  "#a3144d",
		},
	},

	"nord": {
		Name: "Nord",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#2e3440",
			BgLight:     "#3b4252",
			BgDark:      "#242933",
			Fg:          "#d8dee9",
			FgDim:       "#4c566a",
			Border:      "#4c566a",
			Highlight:   "#434c5e",
			Accent:      "#88c0d0",
			AccentDim:   "#81a1c1",
			Running:     "#ebcb8b",
			Completed:   "#a3be8c",
			Failed:      "#bf616a",
			Canceled:    "#d08770",
			Terminated:  "#b48ead",
			TimedOut:    "#bf616a",
			Header:      "#242933",
			Menu:        "#2e3440",
			TableHeader: "#88c0d0",
			Key:         "#81a1c1",
			Crumb:       "#88c0d0",
			PanelBorder: "#434c5e",
			PanelTitle:  "#88c0d0",
		},
	},

	"gruvbox-dark": {
		Name: "Gruvbox Dark",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#282828",
			BgLight:     "#3c3836",
			BgDark:      "#1d2021",
			Fg:          "#ebdbb2",
			FgDim:       "#928374",
			Border:      "#504945",
			Highlight:   "#504945",
			Accent:      "#fe8019",
			AccentDim:   "#d3869b",
			Running:     "#fabd2f",
			Completed:   "#b8bb26",
			Failed:      "#fb4934",
			Canceled:    "#fe8019",
			Terminated:  "#d3869b",
			TimedOut:    "#fb4934",
			Header:      "#1d2021",
			Menu:        "#282828",
			TableHeader: "#fe8019",
			Key:         "#d3869b",
			Crumb:       "#fe8019",
			PanelBorder: "#504945",
			PanelTitle:  "#fe8019",
		},
	},
	"gruvbox-light": {
		Name: "Gruvbox Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#fbf1c7",
			BgLight:     "#ebdbb2",
			BgDark:      "#f2e5bc",
			Fg:          "#3c3836",
			FgDim:       "#928374",
			Border:      "#d5c4a1",
			Highlight:   "#d5c4a1",
			Accent:      "#af3a03",
			AccentDim:   "#8f3f71",
			Running:     "#b57614",
			Completed:   "#79740e",
			Failed:      "#9d0006",
			Canceled:    "#af3a03",
			Terminated:  "#8f3f71",
			TimedOut:    "#9d0006",
			Header:      "#f2e5bc",
			Menu:        "#fbf1c7",
			TableHeader: "#af3a03",
			Key:         "#8f3f71",
			Crumb:       "#af3a03",
			PanelBorder: "#bdae93",
			PanelTitle:  "#af3a03",
		},
	},

	"onedark": {
		Name: "One Dark",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#282c34",
			BgLight:     "#3e4451",
			BgDark:      "#21252b",
			Fg:          "#abb2bf",
			FgDim:       "#5c6370",
			Border:      "#3e4451",
			Highlight:   "#3e4451",
			Accent:      "#61afef",
			AccentDim:   "#c678dd",
			Running:     "#e5c07b",
			Completed:   "#98c379",
			Failed:      "#e06c75",
			Canceled:    "#d19a66",
			Terminated:  "#c678dd",
			TimedOut:    "#e06c75",
			Header:      "#21252b",
			Menu:        "#282c34",
			TableHeader: "#61afef",
			Key:         "#c678dd",
			Crumb:       "#61afef",
			PanelBorder: "#3e4451",
			PanelTitle:  "#61afef",
		},
	},
	"onelight": {
		Name: "One Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#fafafa",
			BgLight:     "#eaeaeb",
			BgDark:      "#f0f0f0",
			Fg:          "#383a42",
			FgDim:       "#a0a1a7",
			Border:      "#d3d3d4",
			Highlight:   "#e5e5e6",
			Accent:      "#4078f2",
			AccentDim:   "#a626a4",
			Running:     "#c18401",
			Completed:   "#50a14f",
			Failed:      "#e45649",
			Canceled:    "#986801",
			Terminated:  "#a626a4",
			TimedOut:    "#e45649",
			Header:      "#f0f0f0",
			Menu:        "#fafafa",
			TableHeader: "#4078f2",
			Key:         "#a626a4",
			Crumb:       "#4078f2",
			PanelBorder: "#c8c8c8",
			PanelTitle:  "#4078f2",
		},
	},

	"solarized-dark": {
		Name: "Solarized Dark",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#002b36",
			BgLight:     "#073642",
			BgDark:      "#001e26",
			Fg:          "#839496",
			FgDim:       "#586e75",
			Border:      "#073642",
			Highlight:   "#073642",
			Accent:      "#268bd2",
			AccentDim:   "#6c71c4",
			Running:     "#b58900",
			Completed:   "#859900",
			Failed:      "#dc322f",
			Canceled:    "#cb4b16",
			Terminated:  "#d33682",
			TimedOut:    "#dc322f",
			Header:      "#001e26",
			Menu:        "#002b36",
			TableHeader: "#268bd2",
			Key:         "#6c71c4",
			Crumb:       "#268bd2",
			PanelBorder: "#586e75",
			PanelTitle:  "#268bd2",
		},
	},
	"solarized-light": {
		Name: "Solarized Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#fdf6e3",
			BgLight:     "#eee8d5",
			BgDark:      "#f5efdc",
			Fg:          "#657b83",
			FgDim:       "#93a1a1",
			Border:      "#eee8d5",
			Highlight:   "#eee8d5",
			Accent:      "#268bd2",
			AccentDim:   "#6c71c4",
			Running:     "#b58900",
			Completed:   "#859900",
			Failed:      "#dc322f",
			Canceled:    "#cb4b16",
			Terminated:  "#d33682",
			TimedOut:    "#dc322f",
			Header:      "#f5efdc",
			Menu:        "#fdf6e3",
			TableHeader: "#268bd2",
			Key:         "#6c71c4",
			Crumb:       "#268bd2",
			PanelBorder: "#93a1a1",
			PanelTitle:  "#268bd2",
		},
	},

	"rosepine": {
		Name: "Rosé Pine",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#191724",
			BgLight:     "#26233a",
			BgDark:      "#1f1d2e",
			Fg:          "#e0def4",
			FgDim:       "#6e6a86",
			Border:      "#26233a",
			Highlight:   "#403d52",
			Accent:      "#ebbcba",
			AccentDim:   "#c4a7e7",
			Running:     "#f6c177",
			Completed:   "#9ccfd8",
			Failed:      "#eb6f92",
			Canceled:    "#f6c177",
			Terminated:  "#c4a7e7",
			TimedOut:    "#eb6f92",
			Header:      "#1f1d2e",
			Menu:        "#191724",
			TableHeader: "#ebbcba",
			Key:         "#c4a7e7",
			Crumb:       "#ebbcba",
			PanelBorder: "#403d52",
			PanelTitle:  "#ebbcba",
		},
	},
	"rosepine-moon": {
		Name: "Rosé Pine Moon",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#232136",
			BgLight:     "#2a273f",
			BgDark:      "#393552",
			Fg:          "#e0def4",
			FgDim:       "#6e6a86",
			Border:      "#2a273f",
			Highlight:   "#44415a",
			Accent:      "#ea9a97",
			AccentDim:   "#c4a7e7",
			Running:     "#f6c177",
			Completed:   "#9ccfd8",
			Failed:      "#eb6f92",
			Canceled:    "#f6c177",
			Terminated:  "#c4a7e7",
			TimedOut:    "#eb6f92",
			Header:      "#393552",
			Menu:        "#232136",
			TableHeader: "#ea9a97",
			Key:         "#c4a7e7",
			Crumb:       "#ea9a97",
			PanelBorder: "#44415a",
			PanelTitle:  "#ea9a97",
		},
	},
	"rosepine-dawn": {
		Name: "Rosé Pine Dawn",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#faf4ed",
			BgLight:     "#f2e9e1",
			BgDark:      "#fffaf3",
			Fg:          "#575279",
			FgDim:       "#9893a5",
			Border:      "#dfdad9",
			Highlight:   "#f2e9e1",
			Accent:      "#d7827e",
			AccentDim:   "#907aa9",
			Running:     "#ea9d34",
			Completed:   "#56949f",
			Failed:      "#b4637a",
			Canceled:    "#ea9d34",
			Terminated:  "#907aa9",
			TimedOut:    "#b4637a",
			Header:      "#fffaf3",
			Menu:        "#faf4ed",
			TableHeader: "#d7827e",
			Key:         "#907aa9",
			Crumb:       "#d7827e",
			PanelBorder: "#cecacd",
			PanelTitle:  "#d7827e",
		},
	},

	"kanagawa": {
		Name: "Kanagawa",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#1f1f28",
			BgLight:     "#2a2a37",
			BgDark:      "#16161d",
			Fg:          "#dcd7ba",
			FgDim:       "#727169",
			Border:      "#54546d",
			Highlight:   "#2d4f67",
			Accent:      "#7e9cd8",
			AccentDim:   "#957fb8",
			Running:     "#e6c384",
			Completed:   "#98bb6c",
			Failed:      "#ff5d62",
			Canceled:    "#ffa066",
			Terminated:  "#957fb8",
			TimedOut:    "#ff5d62",
			Header:      "#16161d",
			Menu:        "#1f1f28",
			TableHeader: "#7e9cd8",
			Key:         "#957fb8",
			Crumb:       "#7e9cd8",
			PanelBorder: "#54546d",
			PanelTitle:  "#7e9cd8",
		},
	},

	"everforest-dark": {
		Name: "Everforest Dark",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#2d353b",
			BgLight:     "#3d484d",
			BgDark:      "#232a2e",
			Fg:          "#d3c6aa",
			FgDim:       "#859289",
			Border:      "#475258",
			Highlight:   "#475258",
			Accent:      "#a7c080",
			AccentDim:   "#d699b6",
			Running:     "#dbbc7f",
			Completed:   "#a7c080",
			Failed:      "#e67e80",
			Canceled:    "#e69875",
			Terminated:  "#d699b6",
			TimedOut:    "#e67e80",
			Header:      "#232a2e",
			Menu:        "#2d353b",
			TableHeader: "#a7c080",
			Key:         "#d699b6",
			Crumb:       "#a7c080",
			PanelBorder: "#475258",
			PanelTitle:  "#a7c080",
		},
	},
	"everforest-light": {
		Name: "Everforest Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#fdf6e3",
			BgLight:     "#efebd4",
			BgDark:      "#f4f0d9",
			Fg:          "#5c6a72",
			FgDim:       "#939f91",
			Border:      "#e1ddc9",
			Highlight:   "#e1ddc9",
			Accent:      "#8da101",
			AccentDim:   "#df69ba",
			Running:     "#dfa000",
			Completed:   "#8da101",
			Failed:      "#f85552",
			Canceled:    "#f57d26",
			Terminated:  "#df69ba",
			TimedOut:    "#f85552",
			Header:      "#f4f0d9",
			Menu:        "#fdf6e3",
			TableHeader: "#8da101",
			Key:         "#df69ba",
			Crumb:       "#8da101",
			PanelBorder: "#d8d3ba",
			PanelTitle:  "#8da101",
		},
	},

	"monokai": {
		Name: "Monokai Pro",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#2d2a2e",
			BgLight:     "#403e41",
			BgDark:      "#221f22",
			Fg:          "#fcfcfa",
			FgDim:       "#727072",
			Border:      "#5b595c",
			Highlight:   "#5b595c",
			Accent:      "#78dce8",
			AccentDim:   "#ab9df2",
			Running:     "#ffd866",
			Completed:   "#a9dc76",
			Failed:      "#ff6188",
			Canceled:    "#fc9867",
			Terminated:  "#ab9df2",
			TimedOut:    "#ff6188",
			Header:      "#221f22",
			Menu:        "#2d2a2e",
			TableHeader: "#78dce8",
			Key:         "#ab9df2",
			Crumb:       "#78dce8",
			PanelBorder: "#5b595c",
			PanelTitle:  "#78dce8",
		},
	},

	"github-dark": {
		Name: "GitHub Dark",
		Type: "dark",
		Colors: ThemeColors{
			Bg:          "#0d1117",
			BgLight:     "#161b22",
			BgDark:      "#010409",
			Fg:          "#c9d1d9",
			FgDim:       "#8b949e",
			Border:      "#30363d",
			Highlight:   "#21262d",
			Accent:      "#58a6ff",
			AccentDim:   "#a371f7",
			Running:     "#d29922",
			Completed:   "#3fb950",
			Failed:      "#f85149",
			Canceled:    "#db6d28",
			Terminated:  "#a371f7",
			TimedOut:    "#f85149",
			Header:      "#010409",
			Menu:        "#0d1117",
			TableHeader: "#58a6ff",
			Key:         "#a371f7",
			Crumb:       "#58a6ff",
			PanelBorder: "#30363d",
			PanelTitle:  "#58a6ff",
		},
	},
	"github-light": {
		Name: "GitHub Light",
		Type: "light",
		Colors: ThemeColors{
			Bg:          "#ffffff",
			BgLight:     "#f6f8fa",
			BgDark:      "#f0f0f0",
			Fg:          "#24292f",
			FgDim:       "#57606a",
			Border:      "#d0d7de",
			Highlight:   "#f6f8fa",
			Accent:      "#0969da",
			AccentDim:   "#8250df",
			Running:     "#9a6700",
			Completed:   "#1a7f37",
			Failed:      "#cf222e",
			Canceled:    "#bc4c00",
			Terminated:  "#8250df",
			TimedOut:    "#cf222e",
			Header:      "#f0f0f0",
			Menu:        "#ffffff",
			TableHeader: "#0969da",
			Key:         "#8250df",
			Crumb:       "#0969da",
			PanelBorder: "#d0d7de",
			PanelTitle:  "#0969da",
		},
	},
}

BuiltinThemes contains all predefined themes.

Functions

func ConfigDir

func ConfigDir() string

ConfigDir returns the configuration directory path following XDG spec. Priority: $XDG_CONFIG_HOME/tempo > ~/.config/tempo > ~/.tempo

func ConfigPath

func ConfigPath() string

ConfigPath returns the full path to the config file.

func EnsureConfigDir

func EnsureConfigDir() error

EnsureConfigDir creates the config directory if it doesn't exist.

func EnsureThemesDir

func EnsureThemesDir() error

EnsureThemesDir creates the themes directory if it doesn't exist.

func Save

func Save(c *Config) error

Save writes the config to disk (standalone function).

func ThemeNames

func ThemeNames() []string

ThemeNames returns a sorted list of available built-in theme names.

func ThemesDir

func ThemesDir() string

ThemesDir returns the directory for custom themes.

func ValidateTheme

func ValidateTheme(name string) bool

ValidateTheme checks if a theme name is valid.

Types

type Config

type Config struct {
	Theme         string                      `yaml:"theme"`
	ActiveProfile string                      `yaml:"active_profile,omitempty"`
	Profiles      map[string]ConnectionConfig `yaml:"profiles,omitempty"`
	SavedFilters  []SavedFilter               `yaml:"saved_filters,omitempty"`
	CheckUpdates  *bool                       `yaml:"check_updates,omitempty"`
}

Config represents the application configuration.

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns a config with default values.

func Load

func Load() (*Config, error)

Load reads the config file from disk. Returns default config if file doesn't exist.

func (*Config) ClearDefaultFilter

func (c *Config) ClearDefaultFilter()

ClearDefaultFilter clears the default filter.

func (*Config) DeleteFilter

func (c *Config) DeleteFilter(name string) error

DeleteFilter removes a saved filter by name.

func (*Config) DeleteProfile

func (c *Config) DeleteProfile(name string) error

DeleteProfile deletes a profile by name. Returns error if trying to delete the active profile or if profile doesn't exist.

func (*Config) GetActiveProfile

func (c *Config) GetActiveProfile() (string, ConnectionConfig)

GetActiveProfile returns the active profile name and its configuration.

func (*Config) GetDefaultFilter

func (c *Config) GetDefaultFilter() (SavedFilter, bool)

GetDefaultFilter returns the default filter if one is set.

func (*Config) GetProfile

func (c *Config) GetProfile(name string) (ConnectionConfig, bool)

GetProfile returns a profile by name.

func (*Config) GetSavedFilter

func (c *Config) GetSavedFilter(name string) (SavedFilter, bool)

GetSavedFilter returns a saved filter by name.

func (*Config) GetSavedFilters

func (c *Config) GetSavedFilters() []SavedFilter

GetSavedFilters returns all saved filters.

func (*Config) ListProfiles

func (c *Config) ListProfiles() []string

ListProfiles returns a sorted list of profile names.

func (*Config) ProfileExists

func (c *Config) ProfileExists(name string) bool

ProfileExists checks if a profile with the given name exists.

func (*Config) Save

func (c *Config) Save() error

Save writes the config to disk.

func (*Config) SaveFilter

func (c *Config) SaveFilter(filter SavedFilter)

SaveFilter adds or updates a saved filter.

func (*Config) SaveProfile

func (c *Config) SaveProfile(name string, cfg ConnectionConfig)

SaveProfile saves or updates a profile.

func (*Config) SetActiveProfile

func (c *Config) SetActiveProfile(name string) error

SetActiveProfile sets the active profile by name. Returns error if profile doesn't exist.

func (*Config) SetDefaultFilter

func (c *Config) SetDefaultFilter(name string) error

SetDefaultFilter sets a filter as the default, clearing any previous default.

func (*Config) ShouldCheckUpdates added in v0.0.6

func (c *Config) ShouldCheckUpdates() bool

ShouldCheckUpdates returns whether update checking is enabled. Defaults to true if not explicitly set.

type ConnectionConfig

type ConnectionConfig struct {
	Address   string    `yaml:"address"`
	Namespace string    `yaml:"namespace"`
	TLS       TLSConfig `yaml:"tls,omitempty"`
}

ConnectionConfig holds Temporal connection settings.

func FromTemporalConfig

func FromTemporalConfig(address, namespace, tlsCert, tlsKey, tlsCA, tlsServerName string, tlsSkipVerify bool) ConnectionConfig

FromTemporalConfig creates a ConnectionConfig from temporal-style flat fields.

func (ConnectionConfig) ToTemporalConfig

func (c ConnectionConfig) ToTemporalConfig() (address, namespace, tlsCert, tlsKey, tlsCA, tlsServerName string, tlsSkipVerify bool)

ToTemporalConfig converts config.ConnectionConfig to temporal-compatible format. Returns address, namespace, and TLS fields as separate values.

type JigThemeAdapter

type JigThemeAdapter struct {
	// contains filtered or unexported fields
}

JigThemeAdapter adapts tempo's ParsedTheme to jig's Theme interface.

func NewJigThemeAdapter

func NewJigThemeAdapter(parsed *ParsedTheme) *JigThemeAdapter

NewJigThemeAdapter creates a new adapter for a parsed theme.

func (*JigThemeAdapter) Accent

func (a *JigThemeAdapter) Accent() tcell.Color

Accent colors

func (*JigThemeAdapter) AccentDim

func (a *JigThemeAdapter) AccentDim() tcell.Color

func (*JigThemeAdapter) Bg

func (a *JigThemeAdapter) Bg() tcell.Color

Base colors

func (*JigThemeAdapter) BgDark

func (a *JigThemeAdapter) BgDark() tcell.Color

func (*JigThemeAdapter) BgLight

func (a *JigThemeAdapter) BgLight() tcell.Color

func (*JigThemeAdapter) Border

func (a *JigThemeAdapter) Border() tcell.Color

Border colors

func (*JigThemeAdapter) BorderFocus

func (a *JigThemeAdapter) BorderFocus() tcell.Color

func (*JigThemeAdapter) Crumb

func (a *JigThemeAdapter) Crumb() tcell.Color

func (*JigThemeAdapter) Error

func (a *JigThemeAdapter) Error() tcell.Color

func (*JigThemeAdapter) Fg

func (a *JigThemeAdapter) Fg() tcell.Color

func (*JigThemeAdapter) FgDim

func (a *JigThemeAdapter) FgDim() tcell.Color

func (*JigThemeAdapter) FgMuted

func (a *JigThemeAdapter) FgMuted() tcell.Color

func (*JigThemeAdapter) Header

func (a *JigThemeAdapter) Header() tcell.Color

UI element colors

func (*JigThemeAdapter) Highlight

func (a *JigThemeAdapter) Highlight() tcell.Color

func (*JigThemeAdapter) Info

func (a *JigThemeAdapter) Info() tcell.Color

func (*JigThemeAdapter) Key

func (a *JigThemeAdapter) Key() tcell.Color

func (*JigThemeAdapter) Menu

func (a *JigThemeAdapter) Menu() tcell.Color

func (*JigThemeAdapter) PanelBorder

func (a *JigThemeAdapter) PanelBorder() tcell.Color

func (*JigThemeAdapter) PanelTitle

func (a *JigThemeAdapter) PanelTitle() tcell.Color

func (*JigThemeAdapter) Success

func (a *JigThemeAdapter) Success() tcell.Color

Semantic colors

func (*JigThemeAdapter) TableHeader

func (a *JigThemeAdapter) TableHeader() tcell.Color

func (*JigThemeAdapter) Warning

func (a *JigThemeAdapter) Warning() tcell.Color

type ParsedColors

type ParsedColors struct {
	Bg        tcell.Color
	BgLight   tcell.Color
	BgDark    tcell.Color
	Fg        tcell.Color
	FgDim     tcell.Color
	Border    tcell.Color
	Highlight tcell.Color

	Accent    tcell.Color
	AccentDim tcell.Color

	Running    tcell.Color
	Completed  tcell.Color
	Failed     tcell.Color
	Canceled   tcell.Color
	Terminated tcell.Color
	TimedOut   tcell.Color

	Header      tcell.Color
	Menu        tcell.Color
	TableHeader tcell.Color
	Key         tcell.Color
	Crumb       tcell.Color
	PanelBorder tcell.Color
	PanelTitle  tcell.Color
}

ParsedColors holds parsed tcell.Color values ready for use.

type ParsedTheme

type ParsedTheme struct {
	Key    string // Theme identifier (e.g., "tokyonight-night")
	Name   string // Display name (e.g., "TokyoNight Night")
	Type   string // "dark" or "light"
	Colors ParsedColors
	Tags   ThemeColors // Keep original hex for tview tags
}

ParsedTheme combines theme metadata with parsed colors.

func LoadTheme

func LoadTheme(name string) (*ParsedTheme, error)

LoadTheme loads a theme by name or path. If name matches a built-in theme, returns that. Otherwise, attempts to load from custom themes directory or absolute path.

type SavedFilter

type SavedFilter struct {
	Name      string `yaml:"name"`
	Query     string `yaml:"query"`
	IsDefault bool   `yaml:"is_default,omitempty"`
}

SavedFilter represents a saved visibility query.

type TLSConfig

type TLSConfig struct {
	Cert       string `yaml:"cert,omitempty"`
	Key        string `yaml:"key,omitempty"`
	CA         string `yaml:"ca,omitempty"`
	ServerName string `yaml:"server_name,omitempty"`
	SkipVerify bool   `yaml:"skip_verify,omitempty"`
}

TLSConfig holds TLS connection settings.

type Theme

type Theme struct {
	Name   string      `yaml:"name"`
	Type   string      `yaml:"type"` // "dark" or "light"
	Colors ThemeColors `yaml:"colors"`
}

Theme represents a color theme definition.

func (*Theme) Parse

func (t *Theme) Parse() (*ParsedTheme, error)

Parse converts a Theme to a ParsedTheme with tcell.Color values.

type ThemeColors

type ThemeColors struct {
	// Base colors
	Bg        string `yaml:"bg"`
	BgLight   string `yaml:"bg_light"`
	BgDark    string `yaml:"bg_dark"`
	Fg        string `yaml:"fg"`
	FgDim     string `yaml:"fg_dim"`
	Border    string `yaml:"border"`
	Highlight string `yaml:"highlight"`

	// Accent colors
	Accent    string `yaml:"accent"`
	AccentDim string `yaml:"accent_dim"`

	// Status colors
	Running    string `yaml:"running"`
	Completed  string `yaml:"completed"`
	Failed     string `yaml:"failed"`
	Canceled   string `yaml:"canceled"`
	Terminated string `yaml:"terminated"`
	TimedOut   string `yaml:"timed_out"`

	// UI element colors
	Header      string `yaml:"header"`
	Menu        string `yaml:"menu"`
	TableHeader string `yaml:"table_header"`
	Key         string `yaml:"key"`
	Crumb       string `yaml:"crumb"`
	PanelBorder string `yaml:"panel_border"`
	PanelTitle  string `yaml:"panel_title"`
}

ThemeColors holds all color values for a theme as hex strings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL