add documentation on color schemes

This commit is contained in:
Boris Faure 2020-11-22 12:26:14 +01:00
parent d94bc64230
commit 81943d470f
Signed by: borisfaure
GPG Key ID: 35C0410516166BE8
3 changed files with 172 additions and 7 deletions

111
COLORSCHEMES.md Normal file
View File

@ -0,0 +1,111 @@
# Color Schemes in Terminology
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.
# Configuration file
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.
## Organisation of the file
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`.
## `Main`
This section has only one field `version` with a default of `1`.
In case the format has to change, this value will change.
## `Metadata`
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 itself
* `name` is the name of the color scheme. It is expected to be the same as the
file name without the `.ini` extension
* `author`: who made this color scheme
* `website`
* `license`: the short code of an opensource-approved license as listed on
https://spdx.org/licenses/
## `Colors`
This section describes colors used in the UI. The fields are:
* `bg`: the background color of the terminal
* `main`: 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 the `main` color.
* `end_sel`: on selections, the color of the handles used to expand or shrink
the area of the selection
* `tab_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 number
* `tab_title_2`: the outline color of the active tab title. The foreground
used is `Normal.def` and the shadow is `bg`.
## `Normal`, `Bright`, `Faint`, `BrightFaint`
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 color
* `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` and `white` are
self-explanatory
* `inverse_fg` and `inverse_fg` are the colors used when espace codes are used
to reverse background and foreground. Sometimes used to display selections
by the terminal applications
# How to add a new color scheme
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 > FooBar_with_faint.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 > FooBar_with_faint.ini`
Now that we are happy with the content of `FooBar_with_faint.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.eet FooBar_with_faint.ini`
Now you should be able to select your color scheme in Terminology!

View File

@ -46,6 +46,25 @@ Note: to make terminology work with input methods in general you need:
``` ```
Themes
------
Apart from the ones shipped with Terminology, themes can be stored in
`~/.config/terminology/themes/` .
Documentation on themes is written in [THEMES.md](THEMES.md).
Color Schemes
-------------
Terminology ships with some common color schemes.
To know how to modify or add some new color schemes, please read
[COLORSCHEMES.md](COLORSCHEMES.md).
Mouse controls Mouse controls
-------------- --------------
@ -111,12 +130,6 @@ Default key controls
Themes
------
Apart from the ones shipped with Terminology, themes can be stored in
`~/.config/terminology/themes/` .
Companion tools Companion tools
--------------- ---------------

View File

@ -1,13 +1,54 @@
# Themes in Terminology
This document describes how Terminology interacts with themes and what needs This document describes how Terminology interacts with themes and what needs
to be handled by themes. to be handled by themes.
See `ChangeLog.theme` on changes related to themes. See `ChangeLog.theme` on changes related to themes.
# Color classes
Windows contain group `terminology/base`. Based on the chosen color scheme, Terminology sets the following color classes
on all the following edje groups:
* `BG`: the background color of the terminal
* `FG`: the default foreground color
* `CURSOR`: the color of the cursor
* `GLOW`: the color in the UI to ouline elements
* `HIGHLIGHT`: the color used as main color when an elemeent is highlighted
* `GLOW_TXT`: text colors with some glow
* `GLOW_TXT_HIGHLIGHT`: text with glow that is highlighted
* `END_SELECTION`: on selections, the color of the handles used to expand or shrink
the area of the selection
* `TAB_MISSED`: the number of tabs where a bell has rung, tabs that need
attention
* `TAB_MISSED_OVER`: same but when the mouse is over that number
* `TAB_TITLE`: the colors of the active tab title
* `BG_SENDFILE` is the background color when there is a sendfile action. See
`man tysend`. It is set to `#404040`.
The following table explains how color classes are set from color scheme
values:
| Color Class | Object color | Outline color | Shadow color |
| -------------------- | ---------------- | ---------------- | ------------- |
| `BG` | `Colors.bg` | `Colors.bg` | `Colors.bg` |
| `FG` | `Normal.def` | `Normal.def` | `Normal.def` |
| `CURSOR` | `Colors.main` | `Colors.main` | `Colors.main` |
| `GLOW` | `Colors.main` | `Colors.main` | `Colors.main` |
| `GLOW_TXT_HIGHLIGHT` | `Colors.hl` | `Colors.main` | `Colors.main` |
| `END_SELECTION` | `Colors.end_sel` | `Colors.end_sel` | `Colors.end_sel` |
| `TAB_MISSED` | `Colors.tab_missed_1` | `Colors.tab_missed_2` | `Colors.tab_missed_3` |
| `TAB_MISSED_OVER` | `Colors.tab_missed_1` | `Colors.tab_missed_2` | `Colors.tab_missed_3` |
| `TAB_TITLE` | `Normal.def` | `Colors.tab_title_2` | `Colors.bg` |
| `BG_SENDFILE` | `#404040` | `#404040` | `#404040` |
Let's dive into the edje groups that Terminology uses.
# `terminology/base` # `terminology/base`
Windows contain group `terminology/base`.
Contains what is global to a window. Contains what is global to a window.
## Swallowed parts ## Swallowed parts