summaryrefslogtreecommitdiffstats
path: root/pkg/theme/theme.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/theme/theme.go')
-rw-r--r--pkg/theme/theme.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/pkg/theme/theme.go b/pkg/theme/theme.go
index 3b8e65c8a..218ee4b19 100644
--- a/pkg/theme/theme.go
+++ b/pkg/theme/theme.go
@@ -1,6 +1,8 @@
package theme
import (
+ "encoding/hex"
+
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/config"
@@ -59,8 +61,33 @@ func UpdateTheme(themeConfig config.ThemeConfig) {
}
}
+// getHexColorValues returns the rgb values of a hex color
+func getHexColorValues(v string) (r int32, g int32, b int32, valid bool) {
+ if len(v) == 4 {
+ v = string([]byte{v[0], v[1], v[1], v[2], v[2], v[3], v[3]})
+ } else if len(v) != 7 {
+ return
+ }
+
+ if v[0] != '#' {
+ return
+ }
+
+ rgb, err := hex.DecodeString(v[1:])
+ if err != nil {
+ return
+ }
+
+ return int32(rgb[0]), int32(rgb[1]), int32(rgb[2]), true
+}
+
// GetAttribute gets the gocui color attribute from the string
func GetGocuiAttribute(key string) gocui.Attribute {
+ r, g, b, validHexColor := getHexColorValues(key)
+ if validHexColor {
+ return gocui.NewRGBColor(r, g, b)
+ }
+
colorMap := map[string]gocui.Attribute{
"default": gocui.ColorDefault,
"black": gocui.ColorBlack,