Terminology uses color schemes to define the usual colors used by terminal applications, and a bit more: color schemes can also have an impact on the theme used.
The colorschemes are stored in EET format for speed up and ease of development. This format being a bit cumbersome to edit, color schemes can be edit in an easy INI format described below.
One can have a look at data/color_schemes/Default.ini
for an example.
The INI format is made of sections, where the name appears in square brackets
([
and ]
), that contain keys. Every key has a name and a value, delimited
by an equals sign (=
).
Those value have 3 types:
- integers, mostly used to describe versions,
- strings, surrounded by double quotes (
"
) or not, - colors, described as hex color codes, with or without alpha channels, like
#00ffcc
or#00ff00aa
.
Semicolons (;
) at the beginning of the line indicate a comment.
The color scheme file contains the following sections that are mandatory:
Main
, Metadata
, Colors
, Normal
, Bright
, Faint
and BrightFaint
.
This section has only one field version
with a default of 1
.
In case the format has to change, this value will change.
This describes everything that is related to the color scheme but is not actually a color! The fields are the following:
version
: an integer, this is the version of the color scheme itselfname
is the name of the color scheme. It is expected to be the same as the file name without the.ini
extensionauthor
: who made this color schemewebsite
license
: the short code of an opensource-approved license as listed on https://spdx.org/licenses/
This section describes colors used in the UI. The fields are:
bg
: the background color of the terminalmain
: this color is used as the main color for cursor and various effects on the terminal, like change of border on focus …hl
: a color used for an object or text when being highlighted. Usually surrounded by themain
color.end_sel
: on selections, the color of the handles used to expand or shrink the area of the selectiontab_missed_1
,tab_missed_2
,tab_missed_3
: the main color, the outline color and the shadow color of the number of tabs where a bell has rung, tabs that need attention.tab_missed_over_1
,tab_missed_over_2
,tab_missed_over_3
: same as before but when the mouse is over that numbertab_title_2
: the outline color of the active tab title. The foreground used isNormal.def
and the shadow isbg
.
All those sections offer the same set of colors.
Normal
are the base colors. Bright
are a brighter version of the Normal
colors, while Faint
are a dimer version of the Normal
colors. Finally,
BrightFaint
are a dimer version of the Bright
colors.
They all have those fields:
def
: the default foreground colorblack
,red
,green
,yellow
,blue
,magenta
,cyan
andwhite
are self-explanatoryinverse_fg
andinverse_fg
are the colors used when espace codes are used to reverse background and foreground. Sometimes used to display selections by the terminal applications
First, one has to write a color scheme file as described above. Let's say we
are creating the color scheme FooBar
stored in file FooBar.ini
.
The Faint
and BrightFaint
version can be generated by using the
gen_faint.py
script stored in data/color_schemes/
as seen below:
gen_faint.py FooBar.ini
What this script does is to pick the colors from Normal
and Bright
and
merge them with the background color (Colors.bg
) in a 70/30 proportion. This
proportion is configurable, like this for a 80/20 proportion:
gen_faint.py FooBar.ini 80
Now that we are happy with the content of FooBar.ini
, we can call
the script add_color_scheme.sh
stored in data/color_schemes/
as seen
below:
add_color_scheme.sh eet ~/.config/terminology/colorschemes/FooBar.eet FooBar.ini
Now you should be able to select your color scheme in Terminology!