feat(theme): add catppuccin themes with transparency and 256-color support
Add a theme package providing all four catppuccin flavors (mocha, frappe, macchiato, latte) mapped to the xterm-256 palette. Themes are selected with -theme or the CTOP_THEME environment variable; -i inverts the flavor. Background slots use the terminal's native color for transparency (opt out with -solid / CTOP_SOLID), and termbox is switched to Output256 so colors render correctly. Replace hardcoded colors in the compact and single views with ctheme portrait slots.
This commit is contained in:
@@ -1,61 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"github.com/bcicen/ctop/theme"
|
||||
|
||||
ui "github.com/gizak/termui"
|
||||
)
|
||||
|
||||
/*
|
||||
Valid colors:
|
||||
ui.ColorDefault
|
||||
ui.ColorBlack
|
||||
ui.ColorRed
|
||||
ui.ColorGreen
|
||||
ui.ColorYellow
|
||||
ui.ColorBlue
|
||||
ui.ColorMagenta
|
||||
ui.ColorCyan
|
||||
ui.ColorWhite
|
||||
*/
|
||||
var ColorMap map[string]ui.Attribute
|
||||
|
||||
var ColorMap = map[string]ui.Attribute{
|
||||
"fg": ui.ColorWhite,
|
||||
"bg": ui.ColorDefault,
|
||||
"block.bg": ui.ColorDefault,
|
||||
"border.bg": ui.ColorDefault,
|
||||
"border.fg": ui.ColorWhite,
|
||||
"label.bg": ui.ColorDefault,
|
||||
"label.fg": ui.ColorGreen,
|
||||
"menu.text.fg": ui.ColorWhite,
|
||||
"menu.text.bg": ui.ColorDefault,
|
||||
"menu.border.fg": ui.ColorCyan,
|
||||
"menu.label.fg": ui.ColorGreen,
|
||||
"header.fg": ui.ColorBlack,
|
||||
"header.bg": ui.ColorWhite,
|
||||
"gauge.bar.bg": ui.ColorGreen,
|
||||
"gauge.percent.fg": ui.ColorWhite,
|
||||
"linechart.axes.fg": ui.ColorDefault,
|
||||
"linechart.line.fg": ui.ColorGreen,
|
||||
"mbarchart.bar.bg": ui.ColorGreen,
|
||||
"mbarchart.num.fg": ui.ColorWhite,
|
||||
"mbarchart.text.fg": ui.ColorWhite,
|
||||
"par.text.fg": ui.ColorWhite,
|
||||
"par.text.bg": ui.ColorDefault,
|
||||
"par.text.hi": ui.ColorBlack,
|
||||
"sparkline.line.fg": ui.ColorGreen,
|
||||
"sparkline.title.fg": ui.ColorWhite,
|
||||
"status.ok": ui.ColorGreen,
|
||||
"status.warn": ui.ColorYellow,
|
||||
"status.danger": ui.ColorRed,
|
||||
// SetColorMap installs the color scheme for the currently selected theme
|
||||
func SetColorMap() {
|
||||
ColorMap = theme.BuildColorMap()
|
||||
}
|
||||
|
||||
// InvertColorMap switches to the inverse (light/dark) flavor
|
||||
func InvertColorMap() {
|
||||
re := regexp.MustCompile(".*.fg")
|
||||
for k := range ColorMap {
|
||||
if re.FindAllString(k, 1) != nil {
|
||||
ColorMap[k] = ui.ColorBlack
|
||||
}
|
||||
if theme.Current() == theme.Latte {
|
||||
theme.Set(theme.Mocha)
|
||||
} else {
|
||||
theme.Set(theme.Latte)
|
||||
}
|
||||
ColorMap["par.text.hi"] = ui.ColorWhite
|
||||
}
|
||||
SetColorMap()
|
||||
}
|
||||
Reference in New Issue
Block a user