Class: Shellfie::ThemeRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/shellfie/theme_registry.rb

Constant Summary collapse

WINDOW_THEMES =
{
  "macos" => Themes::MacOS,
  "ubuntu" => Themes::Ubuntu,
  "windows" => Themes::WindowsTerminal
}.freeze
COLOR_SCHEMES =
{
  "dracula" => {
    background: "#282a36",
    foreground: "#f8f8f2",
    black: "#21222c",
    red: "#ff5555",
    green: "#50fa7b",
    yellow: "#f1fa8c",
    blue: "#6272a4",
    magenta: "#ff79c6",
    cyan: "#8be9fd",
    white: "#f8f8f2",
    bright_black: "#6272a4",
    bright_red: "#ff6e6e",
    bright_green: "#69ff94",
    bright_yellow: "#ffffa5",
    bright_blue: "#d6acff",
    bright_magenta: "#ff92df",
    bright_cyan: "#a4ffff",
    bright_white: "#ffffff"
  },
  "one_dark" => {
    background: "#282c34",
    foreground: "#abb2bf",
    red: "#e06c75",
    green: "#98c379",
    yellow: "#e5c07b",
    blue: "#61afef",
    magenta: "#c678dd",
    cyan: "#56b6c2",
    white: "#abb2bf"
  },
  "solarized_dark" => {
    background: "#002b36",
    foreground: "#839496",
    red: "#dc322f",
    green: "#859900",
    yellow: "#b58900",
    blue: "#268bd2",
    magenta: "#d33682",
    cyan: "#2aa198",
    white: "#eee8d5"
  },
  "catppuccin_mocha" => {
    background: "#1e1e2e",
    foreground: "#cdd6f4",
    red: "#f38ba8",
    green: "#a6e3a1",
    yellow: "#f9e2af",
    blue: "#89b4fa",
    magenta: "#cba6f7",
    cyan: "#94e2d5",
    white: "#bac2de"
  }
}.freeze

Class Method Summary collapse

Class Method Details

.available_color_schemesObject



108
109
110
# File 'lib/shellfie/theme_registry.rb', line 108

def available_color_schemes
  COLOR_SCHEMES.keys.sort
end

.available_themesObject



104
105
106
# File 'lib/shellfie/theme_registry.rb', line 104

def available_themes
  (WINDOW_THEMES.keys + ["custom"]).sort
end

.build(config) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/shellfie/theme_registry.rb', line 76

def build(config)
  base_name = config.theme == "custom" ? (config.window_theme || "macos") : (config.window_theme || config.theme)
  base_theme = fetch_window_theme(base_name).new
  colors = color_scheme(config.color_scheme).merge(config.colors)

  theme = Themes::Configured.new(
    base_theme,
    name: config.theme,
    colors: colors,
    window_decoration: config.window_decoration,
    font: font_overrides(config)
  )
  theme_data = ThemeData.from_theme(theme, name: config.theme)
  config.headless ? HeadlessThemeRegistry.build(theme_data) : theme_data
end

.valid_color_scheme?(name) ⇒ Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/shellfie/theme_registry.rb', line 100

def valid_color_scheme?(name)
  name.nil? || COLOR_SCHEMES.key?(name)
end

.valid_theme?(name) ⇒ Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/shellfie/theme_registry.rb', line 92

def valid_theme?(name)
  name == "custom" || WINDOW_THEMES.key?(name)
end

.valid_window_theme?(name) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/shellfie/theme_registry.rb', line 96

def valid_window_theme?(name)
  WINDOW_THEMES.key?(name)
end