package gui import ( "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/theme" ) // GetAttribute gets the gocui color attribute from the string func (gui *Gui) GetAttribute(key string) gocui.Attribute { colorMap := map[string]gocui.Attribute{ "default": gocui.ColorDefault, "black": gocui.ColorBlack, "red": gocui.ColorRed, "green": gocui.ColorGreen, "yellow": gocui.ColorYellow, "blue": gocui.ColorBlue, "magenta": gocui.ColorMagenta, "cyan": gocui.ColorCyan, "white": gocui.ColorWhite, "bold": gocui.AttrBold, "reverse": gocui.AttrReverse, "underline": gocui.AttrUnderline, } value, present := colorMap[key] if present { return value } return gocui.ColorWhite } // GetColor bitwise OR's a list of attributes obtained via the given keys func (gui *Gui) GetColor(keys []string) gocui.Attribute { var attribute gocui.Attribute for _, key := range keys { attribute |= gui.GetAttribute(key) } return attribute } // GetOptionsPanelTextColor gets the color of the options panel text func (gui *Gui) GetOptionsPanelTextColor() gocui.Attribute { userConfig := gui.Config.GetUserConfig() optionsColor := userConfig.GetStringSlice("gui.theme.optionsTextColor") return gui.GetColor(optionsColor) } // SetColorScheme sets the color scheme for the app based on the user config func (gui *Gui) SetColorScheme() error { userConfig := gui.Config.GetUserConfig() theme.UpdateTheme(userConfig) gui.g.FgColor = theme.InactiveBorderColor gui.g.SelFgColor = theme.ActiveBorderColor return nil }