Documentation
¶
Index ¶
- Constants
- Variables
- func ConfigDir() string
- func ConfigPath() string
- func EnsureConfigDir() error
- func EnsureThemesDir() error
- func Save(c *Config) error
- func ThemeNames() []string
- func ThemesDir() string
- func ValidateTheme(name string) bool
- type Config
- func (c *Config) ClearDefaultFilter()
- func (c *Config) DeleteFilter(name string) error
- func (c *Config) DeleteProfile(name string) error
- func (c *Config) GetActiveProfile() (string, ConnectionConfig)
- func (c *Config) GetDefaultFilter() (SavedFilter, bool)
- func (c *Config) GetProfile(name string) (ConnectionConfig, bool)
- func (c *Config) GetSavedFilter(name string) (SavedFilter, bool)
- func (c *Config) GetSavedFilters() []SavedFilter
- func (c *Config) ListProfiles() []string
- func (c *Config) ProfileExists(name string) bool
- func (c *Config) Save() error
- func (c *Config) SaveFilter(filter SavedFilter)
- func (c *Config) SaveProfile(name string, cfg ConnectionConfig)
- func (c *Config) SetActiveProfile(name string) error
- func (c *Config) SetDefaultFilter(name string) error
- func (c *Config) ShouldCheckUpdates() bool
- type ConnectionConfig
- type JigThemeAdapter
- func (a *JigThemeAdapter) Accent() tcell.Color
- func (a *JigThemeAdapter) AccentDim() tcell.Color
- func (a *JigThemeAdapter) Bg() tcell.Color
- func (a *JigThemeAdapter) BgDark() tcell.Color
- func (a *JigThemeAdapter) BgLight() tcell.Color
- func (a *JigThemeAdapter) Border() tcell.Color
- func (a *JigThemeAdapter) BorderFocus() tcell.Color
- func (a *JigThemeAdapter) Crumb() tcell.Color
- func (a *JigThemeAdapter) Error() tcell.Color
- func (a *JigThemeAdapter) Fg() tcell.Color
- func (a *JigThemeAdapter) FgDim() tcell.Color
- func (a *JigThemeAdapter) FgMuted() tcell.Color
- func (a *JigThemeAdapter) Header() tcell.Color
- func (a *JigThemeAdapter) Highlight() tcell.Color
- func (a *JigThemeAdapter) Info() tcell.Color
- func (a *JigThemeAdapter) Key() tcell.Color
- func (a *JigThemeAdapter) Menu() tcell.Color
- func (a *JigThemeAdapter) PanelBorder() tcell.Color
- func (a *JigThemeAdapter) PanelTitle() tcell.Color
- func (a *JigThemeAdapter) Success() tcell.Color
- func (a *JigThemeAdapter) TableHeader() tcell.Color
- func (a *JigThemeAdapter) Warning() tcell.Color
- type ParsedColors
- type ParsedTheme
- type SavedFilter
- type TLSConfig
- type Theme
- type ThemeColors
Constants ¶
const DefaultTheme = "tokyonight-night"
DefaultTheme is the theme used when no config exists.
Variables ¶
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 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 ThemeNames ¶
func ThemeNames() []string
ThemeNames returns a sorted list of available built-in theme names.
func ValidateTheme ¶
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 (*Config) ClearDefaultFilter ¶
func (c *Config) ClearDefaultFilter()
ClearDefaultFilter clears the default filter.
func (*Config) DeleteFilter ¶
DeleteFilter removes a saved filter by name.
func (*Config) DeleteProfile ¶
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 ¶
ListProfiles returns a sorted list of profile names.
func (*Config) ProfileExists ¶
ProfileExists checks if a profile with the given name exists.
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 ¶
SetActiveProfile sets the active profile by name. Returns error if profile doesn't exist.
func (*Config) SetDefaultFilter ¶
SetDefaultFilter sets a filter as the default, clearing any previous default.
func (*Config) ShouldCheckUpdates ¶ added in v0.0.6
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) AccentDim ¶
func (a *JigThemeAdapter) AccentDim() tcell.Color
func (*JigThemeAdapter) BgDark ¶
func (a *JigThemeAdapter) BgDark() tcell.Color
func (*JigThemeAdapter) BgLight ¶
func (a *JigThemeAdapter) BgLight() tcell.Color
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) 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) 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.