-
Notifications
You must be signed in to change notification settings - Fork 247
Colors
Alexandre Bury edited this page Jul 1, 2016
·
2 revisions
Cursive has a flexible coloring module, to allow easy customization while keeping a unified look.
To achieve this, a theme will define a palette of colors to be used through the entire application. These colors are:
-
background
: used to color the application background (around views). Defaults to blue. -
shadow
: used to color shadow around views. Defaults to black. -
view
: used to color the background for views. Defaults to white. -
primary
: used to print primary text. Defaults to black. -
secondary
: used to print secondary text. Defaults to blue. -
tertiary
: used to print tertiary text. Defaults to white. -
title_primary
: used to print primary titles. Defaults to red. -
title_secondary
: used to print secondary titles. Defaults to yellow. -
highlight
: used to highlight selected items. Defaults to red. -
highlight_inactive
: used to highlight selected but inactive items. Defaults to blue.
These colors are then used in pairs (foreground and background) to define some color styles:
-
Background
: style used to print the application background.- Its background color is
background
. - Its foreground color is unimportant as no characters are ever printed in the background.
- Its background color is
-
Shadow
: style used to print shadows behind views.- Its background color is
shadow
. - Here again, the foreground color is unimportant.
- Its background color is
-
Primary
: style used to print primary text.- Its background color is
view
. - Its foreground color is
primary
.
- Its background color is
-
Secondary
: style used to print secondary text.- Its background color is
view
. - Its foreground color is
secondary
.
- Its background color is
-
Tertiary
: style used to print tertiary text.- Its background color is
view
. - Its foreground color is
tertiary
.
- Its background color is
-
TitlePrimary
: style used to print titles.- Its background color is
view
. - Its foreground color is
title_primary
.
- Its background color is
-
TitleSecondary
: style used to print secondary titles.- Its background color is
view
. - Its foreground color is
title_secondary
.
- Its background color is
-
Highlight
: style used to print selected items.- Its background color is
highlight
. - Its foreground color is
view
.
- Its background color is
-
HighlightInactive
: style used to print selected, but inactive items.- Its background color is
highlight_inactive
. - Its foreground color is
view
.
- Its background color is
Users then simply select the color style they want to use for each part of the application, and the corresponding colors from the theme are applied.
- The color palette is read from the configuration file (or the default one is used).
- At this point, colors are downcasted to the best compatible one.
- This mean stick to 8 colors on TTY
- Ideally, this also means trying true colors, or sticking to 256 colors.
- At this point, colors are downcasted to the best compatible one.
- When text is printed on the screen, the printer is given a color role.
- ncurses only needs this color pair, as it saves a mapping to colors internally
- termion wants the foreground/background color everytime.
- solution: have the termion wrapper save its own map of roles to color pairs?