diff --git a/config/config.go b/config/config.go index d7c7941..17b3e07 100644 --- a/config/config.go +++ b/config/config.go @@ -1,13 +1,12 @@ package config import ( - "gitlab.com/liamg/raft/terminal" yaml "gopkg.in/yaml.v2" ) type Config struct { DebugMode bool `yaml:"debug"` - ColourScheme terminal.ColourScheme + ColourScheme ColourScheme Rendering RenderingConfig `yaml:"rendering"` Slomo bool `yaml:"slomo"` } @@ -18,7 +17,7 @@ type RenderingConfig struct { var DefaultConfig = Config{ DebugMode: false, - ColourScheme: terminal.DefaultColourScheme, + ColourScheme: DefaultColourScheme, } func Parse(data []byte) (*Config, error) { @@ -26,3 +25,81 @@ func Parse(data []byte) (*Config, error) { err := yaml.Unmarshal(data, &c) return &c, err } + +type ColourScheme struct { + Cursor [3]float32 + DefaultFg [3]float32 + BlackFg [3]float32 + RedFg [3]float32 + GreenFg [3]float32 + YellowFg [3]float32 + BlueFg [3]float32 + MagentaFg [3]float32 + CyanFg [3]float32 + LightGreyFg [3]float32 + DarkGreyFg [3]float32 + LightRedFg [3]float32 + LightGreenFg [3]float32 + LightYellowFg [3]float32 + LightBlueFg [3]float32 + LightMagentaFg [3]float32 + LightCyanFg [3]float32 + WhiteFg [3]float32 + DefaultBg [3]float32 + BlackBg [3]float32 + RedBg [3]float32 + GreenBg [3]float32 + YellowBg [3]float32 + BlueBg [3]float32 + MagentaBg [3]float32 + CyanBg [3]float32 + LightGreyBg [3]float32 + DarkGreyBg [3]float32 + LightRedBg [3]float32 + LightGreenBg [3]float32 + LightYellowBg [3]float32 + LightBlueBg [3]float32 + LightMagentaBg [3]float32 + LightCyanBg [3]float32 + WhiteBg [3]float32 +} + +var DefaultColourScheme = ColourScheme{ + Cursor: [3]float32{0.8, 0.8, 0.8}, + //fg + DefaultFg: [3]float32{1, 1, 1}, + BlackFg: [3]float32{0, 0, 0}, + RedFg: [3]float32{1, 0, 0}, + GreenFg: [3]float32{0, 1, 0}, + YellowFg: [3]float32{1, 1, 0}, + BlueFg: [3]float32{0, 0, 1}, + MagentaFg: [3]float32{1, 0, 1}, + CyanFg: [3]float32{0, 1, 1}, + LightGreyFg: [3]float32{0.7, 0.7, 0.7}, + DarkGreyFg: [3]float32{0.3, 0.3, 0.3}, + LightRedFg: [3]float32{1, 0.5, 0.5}, + LightGreenFg: [3]float32{0.5, 1, 0.5}, + LightYellowFg: [3]float32{1, 1, 0.5}, + LightBlueFg: [3]float32{0.5, 0.5, 1}, + LightMagentaFg: [3]float32{1, 0.5, 1}, + LightCyanFg: [3]float32{0.5, 1, 1}, + WhiteFg: [3]float32{1, 1, 1}, + // bg + DefaultBg: [3]float32{0.1, 0.1, 0.1}, + BlackBg: [3]float32{0, 0, 0}, + RedBg: [3]float32{1, 0, 0}, + GreenBg: [3]float32{0, 1, 0}, + YellowBg: [3]float32{1, 1, 0}, + BlueBg: [3]float32{0, 0, 1}, + MagentaBg: [3]float32{1, 0, 1}, + CyanBg: [3]float32{0, 1, 1}, + LightGreyBg: [3]float32{0.7, 0.7, 0.7}, + DarkGreyBg: [3]float32{0.3, 0.3, 0.3}, + LightRedBg: [3]float32{1, 0.5, 0.5}, + LightGreenBg: [3]float32{0.5, 1, 0.5}, + LightYellowBg: [3]float32{1, 1, 0.5}, + LightBlueBg: [3]float32{0.5, 0.5, 1}, + LightMagentaBg: [3]float32{1, 0.5, 1}, + LightCyanBg: [3]float32{0.5, 1, 1}, + WhiteBg: [3]float32{1, 1, 1}, +} diff --git a/main.go b/main.go index 3e12563..90bfc37 100644 --- a/main.go +++ b/main.go @@ -88,7 +88,7 @@ func main() { } logger.Infof("Creating terminal...") - terminal := terminal.New(pty, logger, conf.ColourScheme) + terminal := terminal.New(pty, logger, conf) g := gui.New(conf, terminal, logger) if err := g.Render(); err != nil { diff --git a/terminal/cell.go b/terminal/cell.go index 8a7ec8e..b155a00 100644 --- a/terminal/cell.go +++ b/terminal/cell.go @@ -19,8 +19,8 @@ type CellAttributes struct { func (terminal *Terminal) NewCell() Cell { return Cell{ attr: CellAttributes{ - FgColour: terminal.colourScheme.DefaultFg, - BgColour: terminal.colourScheme.DefaultBg, + FgColour: terminal.config.ColourScheme.DefaultFg, + BgColour: terminal.config.ColourScheme.DefaultBg, }, } } diff --git a/terminal/colours.go b/terminal/colours.go deleted file mode 100644 index 3263ee1..0000000 --- a/terminal/colours.go +++ /dev/null @@ -1,79 +0,0 @@ -package terminal - -type ColourScheme struct { - Cursor [3]float32 - DefaultFg [3]float32 - BlackFg [3]float32 - RedFg [3]float32 - GreenFg [3]float32 - YellowFg [3]float32 - BlueFg [3]float32 - MagentaFg [3]float32 - CyanFg [3]float32 - LightGreyFg [3]float32 - DarkGreyFg [3]float32 - LightRedFg [3]float32 - LightGreenFg [3]float32 - LightYellowFg [3]float32 - LightBlueFg [3]float32 - LightMagentaFg [3]float32 - LightCyanFg [3]float32 - WhiteFg [3]float32 - DefaultBg [3]float32 - BlackBg [3]float32 - RedBg [3]float32 - GreenBg [3]float32 - YellowBg [3]float32 - BlueBg [3]float32 - MagentaBg [3]float32 - CyanBg [3]float32 - LightGreyBg [3]float32 - DarkGreyBg [3]float32 - LightRedBg [3]float32 - LightGreenBg [3]float32 - LightYellowBg [3]float32 - LightBlueBg [3]float32 - LightMagentaBg [3]float32 - LightCyanBg [3]float32 - WhiteBg [3]float32 -} - -var DefaultColourScheme = ColourScheme{ - Cursor: [3]float32{0.8, 0.8, 0.8}, - //fg - DefaultFg: [3]float32{1, 1, 1}, - BlackFg: [3]float32{0, 0, 0}, - RedFg: [3]float32{1, 0, 0}, - GreenFg: [3]float32{0, 1, 0}, - YellowFg: [3]float32{1, 1, 0}, - BlueFg: [3]float32{0, 0, 1}, - MagentaFg: [3]float32{1, 0, 1}, - CyanFg: [3]float32{0, 1, 1}, - LightGreyFg: [3]float32{0.7, 0.7, 0.7}, - DarkGreyFg: [3]float32{0.3, 0.3, 0.3}, - LightRedFg: [3]float32{1, 0.5, 0.5}, - LightGreenFg: [3]float32{0.5, 1, 0.5}, - LightYellowFg: [3]float32{1, 1, 0.5}, - LightBlueFg: [3]float32{0.5, 0.5, 1}, - LightMagentaFg: [3]float32{1, 0.5, 1}, - LightCyanFg: [3]float32{0.5, 1, 1}, - WhiteFg: [3]float32{1, 1, 1}, - // bg - DefaultBg: [3]float32{0.1, 0.1, 0.1}, - BlackBg: [3]float32{0, 0, 0}, - RedBg: [3]float32{1, 0, 0}, - GreenBg: [3]float32{0, 1, 0}, - YellowBg: [3]float32{1, 1, 0}, - BlueBg: [3]float32{0, 0, 1}, - MagentaBg: [3]float32{1, 0, 1}, - CyanBg: [3]float32{0, 1, 1}, - LightGreyBg: [3]float32{0.7, 0.7, 0.7}, - DarkGreyBg: [3]float32{0.3, 0.3, 0.3}, - LightRedBg: [3]float32{1, 0.5, 0.5}, - LightGreenBg: [3]float32{0.5, 1, 0.5}, - LightYellowBg: [3]float32{1, 1, 0.5}, - LightBlueBg: [3]float32{0.5, 0.5, 1}, - LightMagentaBg: [3]float32{1, 0.5, 1}, - LightCyanBg: [3]float32{0.5, 1, 1}, - WhiteBg: [3]float32{1, 1, 1}, -} diff --git a/terminal/sgr.go b/terminal/sgr.go index f48d702..250c242 100644 --- a/terminal/sgr.go +++ b/terminal/sgr.go @@ -14,8 +14,8 @@ func sgrSequenceHandler(params []string, intermediate string, terminal *Terminal case "00", "0", "": attr := terminal.buffer.CursorAttr() *attr = buffer.CellAttributes{ - FgColour: terminal.colourScheme.DefaultFg, - BgColour: terminal.colourScheme.DefaultBg, + FgColour: terminal.config.ColourScheme.DefaultFg, + BgColour: terminal.config.ColourScheme.DefaultBg, } case "1", "01": terminal.buffer.CursorAttr().Bold = true @@ -42,73 +42,73 @@ func sgrSequenceHandler(params []string, intermediate string, terminal *Terminal case "28": terminal.buffer.CursorAttr().Hidden = false case "39": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.DefaultFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.DefaultFg case "30": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.BlackFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.BlackFg case "31": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.RedFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.RedFg case "32": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.GreenFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.GreenFg case "33": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.YellowFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.YellowFg case "34": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.BlueFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.BlueFg case "35": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.MagentaFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.MagentaFg case "36": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.CyanFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.CyanFg case "37": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.WhiteFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.WhiteFg case "90": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.DarkGreyFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.DarkGreyFg case "91": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightRedFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightRedFg case "92": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightGreenFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightGreenFg case "93": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightYellowFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightYellowFg case "94": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightBlueFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightBlueFg case "95": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightMagentaFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightMagentaFg case "96": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.LightCyanFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.LightCyanFg case "97": - terminal.buffer.CursorAttr().FgColour = terminal.colourScheme.WhiteFg + terminal.buffer.CursorAttr().FgColour = terminal.config.ColourScheme.WhiteFg case "49": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.DefaultBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.DefaultBg case "40": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.BlackBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.BlackBg case "41": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.RedBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.RedBg case "42": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.GreenBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.GreenBg case "43": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.YellowBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.YellowBg case "44": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.BlueBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.BlueBg case "45": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.MagentaBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.MagentaBg case "46": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.CyanBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.CyanBg case "47": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.WhiteBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.WhiteBg case "100": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.DarkGreyBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.DarkGreyBg case "101": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightRedBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightRedBg case "102": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightGreenBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightGreenBg case "103": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightYellowBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightYellowBg case "104": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightBlueBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightBlueBg case "105": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightMagentaBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightMagentaBg case "106": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.LightCyanBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.LightCyanBg case "107": - terminal.buffer.CursorAttr().BgColour = terminal.colourScheme.WhiteBg + terminal.buffer.CursorAttr().BgColour = terminal.config.ColourScheme.WhiteBg default: return fmt.Errorf("Unknown SGR control sequence: (ESC[%s%sm)", param, intermediate) } diff --git a/terminal/terminal.go b/terminal/terminal.go index 2b9d92c..df7237d 100644 --- a/terminal/terminal.go +++ b/terminal/terminal.go @@ -49,8 +49,8 @@ func New(pty *os.File, logger *zap.SugaredLogger, config config.Config) *Termina return &Terminal{ buffer: buffer.NewBuffer(0, 0, buffer.CellAttributes{ - FgColour: colourScheme.DefaultFg, - BgColour: colourScheme.DefaultBg, + FgColour: config.ColourScheme.DefaultFg, + BgColour: config.ColourScheme.DefaultBg, }), pty: pty, logger: logger,