Compare commits
29 commits
v2.2.0.alp
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a3de748347 | |||
| da773f822c | |||
| 9fb90f451e | |||
|
|
afc9e26765 | ||
|
|
0c92a648ce |
||
| 3aaf5fa592 | |||
| ad41163634 | |||
| 721554725d | |||
| 5d8f9926b0 | |||
| 194996ce45 | |||
| 8bbf831de9 | |||
| 12f9894134 | |||
| 0348a77e02 | |||
| cac5b1415d | |||
| a75b4ef134 | |||
| 74086c9fdd | |||
| be28a24b20 | |||
| fa47cd5309 | |||
| b344f71398 | |||
| e51375327b | |||
| 05b8a335c9 | |||
| 31e4b069fe | |||
| feff5deb6a | |||
| f056a4ce16 | |||
| 4c506c9365 | |||
| a251b6fe70 | |||
| bafa677f13 | |||
| abb98aeec2 | |||
| d6ca0d7f29 |
15
Makefile
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
LP ?= /home/nojhan/code/liquidprompt
|
||||||
|
HEIGHT := 450
|
||||||
|
THEME := jolly jolly.theme
|
||||||
|
|
||||||
|
ALL := $(addprefix screenshots/,variant-chevron.png variant-round.png variant-slant.png variant-text.png variant-chevron_colors-cyan-magenta.png variant-chevron_colors-green-red.png variant-chevron_colors-high-contrast.png)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
all: Makefile $(ALL)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(ALL)
|
||||||
|
|
||||||
|
%.png:
|
||||||
|
$(LP)/tools/theme-screenshot.sh $(HEIGHT) $(THEME) $(addprefix presets/,$(addsuffix .conf, $(subst _, ,$(basename $(notdir $@))))) > $@
|
||||||
225
README.md
|
|
@ -1,39 +1,33 @@
|
||||||
DotMatrix — A Liquid Prompt Theme
|
Jolly — A Liquid Prompt Theme
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
DotMatrix is a theme for [Liquid Prompt](https://github.com/nojhan/liquidprompt).
|
Jolly is a theme for [Liquid Prompt](https://github.com/nojhan/liquidprompt).
|
||||||
|
|
||||||
It is an original prompt design, very carefully designed,
|
It is an original prompt design, very carefully designed,
|
||||||
that will completely changes the way you imagine the prompt.
|
that will completely changes the way you imagine the prompt.
|
||||||
|
|
||||||
It is focused on *improving the user experience*,
|
It is focused on *improving the user experience*,
|
||||||
by vastly improving the ability of the user to immediatly spot
|
by vastly improving the ability of the user to immediately spot
|
||||||
what she should do following her system's state changes.
|
what she should do following her system's state changes.
|
||||||
|
|
||||||
Has such, you may find it a little bit disconcerting at first.
|
Has such, you may find it a little bit disconcerting at first.
|
||||||
But we believe that the advantages of this design makes it worth the effort.
|
But we believe that the advantages of this design makes it worth the effort.
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
Preview
|
Preview
|
||||||
-------
|
-------
|
||||||
|
|
||||||
If there is nothing special about the current context, the appearance of
|
Using the (recommended) "chevron" preset:
|
||||||
DotMatrix might be as simple as this:
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A typical display of a slightly complex session would look like this:
|
The Jolly theme also comes as several variants, changing the shape of the segments separators,
|
||||||
|
like the "slant" variant:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The DotMatrix theme also comes as several variants, changing the shape of the segments separators,
|
|
||||||
like the (default) "dotmatrix" pixels:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
or the "slant" variant:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
Design
|
Design
|
||||||
|
|
@ -41,7 +35,7 @@ Design
|
||||||
|
|
||||||
### Rationale
|
### Rationale
|
||||||
|
|
||||||
The DotMatrix theme use a couple of design principles:
|
The Jolly theme use a couple of design principles:
|
||||||
|
|
||||||
* It is accessible to colorblind people, hence it uses:
|
* It is accessible to colorblind people, hence it uses:
|
||||||
* only four colors: dark grey, white, blue and yellow (different color pairs are available as presets for people having blue-yellow colorblindess).
|
* only four colors: dark grey, white, blue and yellow (different color pairs are available as presets for people having blue-yellow colorblindess).
|
||||||
|
|
@ -69,10 +63,10 @@ The prompt itself is designed in three lines:
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
For instance, in the following prompt, you can see that the user is in a Git repository and has some action waiting to be done:
|
For instance, in the following prompt, you can see that the user is in a Git repository and has some action waiting to be done:
|
||||||
- the rightmost blue "≠" indicates that there are some modifications waiting to be commited (hence the directional hint, from a diff to the branch).
|
- the rightmost blue "≠" indicates that there are some modifications waiting to be committed (hence the directional hint, from a diff to the branch).
|
||||||
- the leftmost blue segment indicates that there are some commits that may be pushed to the remote (hence the directional hint, from the branch to the VCS symbol).
|
- the leftmost blue segment indicates that there are some commits that may be pushed to the remote (hence the directional hint, from the branch to the VCS symbol).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The screenshot also shows that the last command ended in an error, hence the red-over-yellow error code.
|
The screenshot also shows that the last command ended in an error, hence the red-over-yellow error code.
|
||||||
|
|
||||||
|
|
@ -82,18 +76,18 @@ for the default login user ("", a figure), on localhost ("", an island), i
|
||||||
|
|
||||||
### Full description
|
### Full description
|
||||||
|
|
||||||
The following diagram shows almost all the possible states of a DotMatrix Liquid Prompt
|
The following diagram shows almost all the possible states of a Jolly Liquid Prompt
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The diagram is available [in a vector format](liquidprompt_dotmatrix_design.svg) (note: you need a browser/viewer configured to use a [nerd-font](https://www.nerdfonts.com) to see it correctly).
|
The diagram is available [in a vector format](liquidprompt_jolly_design.svg) (note: you need a browser/viewer configured to use a [nerd-font](https://www.nerdfonts.com) to see it correctly).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Setup
|
Setup
|
||||||
-----
|
-----
|
||||||
|
|
||||||
To actually use the DotMatrix theme, you need to add a few configuration commands to the script that loads Liquid Prompt.
|
To actually use the Jolly theme, you need to add a few configuration commands to the script that loads Liquid Prompt.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
@ -101,14 +95,14 @@ For example:
|
||||||
# Load Liquid Prompt.
|
# Load Liquid Prompt.
|
||||||
source ~/liquidprompt/liquidprompt
|
source ~/liquidprompt/liquidprompt
|
||||||
# Configure the desired variant (or colors, etc.).
|
# Configure the desired variant (or colors, etc.).
|
||||||
source ~/lp-dotmatrix/presets/variant-chevron.conf
|
source ~/lp-jolly/presets/variant-chevron.conf
|
||||||
# Load the theme.
|
# Load the theme.
|
||||||
source ~/lp-dotmatrix/dotmatrix.theme && lp_theme dotmatrix
|
source ~/lp-jolly/jolly.theme && lp_theme jolly
|
||||||
```
|
```
|
||||||
|
|
||||||
NOTE: The recommended segment markers (the "chevron" variant) uses characters in the private section of unicode
|
NOTE: The recommended segment markers (the "chevron" variant) uses characters in the private section of Unicode
|
||||||
that are defined by the "Nerd-fonts" project.
|
that are defined by the "Nerd-fonts" project.
|
||||||
You will either need a compatible font, or use a variant that does not need them, like "text" and "dotmatrix".
|
You will either need a compatible font, or use a variant that does not need them, like "text" and "jolly".
|
||||||
|
|
||||||
See the [Nerd-fonts Fonts installation docs](https://www.nerdfonts.com) for help on installing this kind of fonts.
|
See the [Nerd-fonts Fonts installation docs](https://www.nerdfonts.com) for help on installing this kind of fonts.
|
||||||
|
|
||||||
|
|
@ -126,25 +120,25 @@ Variants needing a Nerd-fonts font:
|
||||||
|
|
||||||
- "chevron" (the recommended one):
|
- "chevron" (the recommended one):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- "round":
|
- "round":
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- "slant":
|
- "slant":
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Variants available with a regular font:
|
Variants available with a regular font:
|
||||||
|
|
||||||
- "dotmatrix" (the default):
|
- "jolly" (the default):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- "text" (using only common characters):
|
- "text" (using only common characters):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
|
|
@ -152,14 +146,12 @@ Configuration
|
||||||
|
|
||||||
### Liquid Prompt Configuration
|
### Liquid Prompt Configuration
|
||||||
|
|
||||||
The DotMatrix theme honors Liquid Prompt configuration options,
|
The Jolly theme honors Liquid Prompt configuration options,
|
||||||
except for the ones defining colors, specific marks and disabling some features.
|
except for the ones defining colors, specific marks and disabling some features.
|
||||||
|
|
||||||
The following options are honored:
|
The following options are honored:
|
||||||
|
|
||||||
- [`LP_ENABLE_PERM`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_ENABLE_PERM),
|
- [`LP_ENABLE_PERM`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_ENABLE_PERM),
|
||||||
- [`LP_ENABLE_VCS_DIFFSTATS`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_ENABLE_VCS_DIFFSTATS),
|
|
||||||
- [`LP_ENABLE_UNCOMMITED`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_ENABLE_UNCOMMITED),
|
|
||||||
- [`LP_MARK_BATTERY`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_BATTERY),
|
- [`LP_MARK_BATTERY`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_BATTERY),
|
||||||
- [`LP_MARK_LOAD`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_LOAD),
|
- [`LP_MARK_LOAD`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_LOAD),
|
||||||
- [`LP_MARK_TEMP`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_TEMP),
|
- [`LP_MARK_TEMP`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_TEMP),
|
||||||
|
|
@ -182,13 +174,13 @@ Note: the order in which you load the presets may be important.
|
||||||
When changing the colors of the first line, presets needs to be loaded
|
When changing the colors of the first line, presets needs to be loaded
|
||||||
from your shell configuration and not just sourced in the prompt.
|
from your shell configuration and not just sourced in the prompt.
|
||||||
|
|
||||||
A first set is are called "variants" and mainly change the segment joints,
|
A first set is called "variants" and mainly change the segment joints,
|
||||||
but can also impact the icons on some variants:
|
but can also impact the icons on some variants:
|
||||||
|
|
||||||
- `source presets/variant-chevron.conf" (the *recommended*, need a Nerd-fonts font),
|
- `source presets/variant-chevron.conf` (the *recommended*, need a Nerd-fonts font),
|
||||||
- `source presets/variant-slant.conf" (need a Nerd-fonts font),
|
- `source presets/variant-slant.conf` (need a Nerd-fonts font),
|
||||||
- `source presets/variant-round.conf" (need a Nerd-fonts font),
|
- `source presets/variant-round.conf` (need a Nerd-fonts font),
|
||||||
- `source presets/variant-text.conf" (the one that works anywhere).
|
- `source presets/variant-text.conf` (the one that works anywhere).
|
||||||
|
|
||||||
A second set changes the colors:
|
A second set changes the colors:
|
||||||
|
|
||||||
|
|
@ -199,98 +191,93 @@ A second set changes the colors:
|
||||||
|
|
||||||
#### High-level
|
#### High-level
|
||||||
|
|
||||||
**DOTMATRIX_SPACED** *boolean = 1*
|
**JOLLY_SPACED** *boolean = 1*
|
||||||
|
|
||||||
If set to false, this flag will configure a compact prompt,
|
If set to false, this flag will configure a compact prompt,
|
||||||
showing segments without extra spaces around their joints.
|
showing segments without extra spaces around their joints.
|
||||||
|
|
||||||
Example of a spaced prompt:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Example of a compact prompt:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
#### Specific features
|
#### Specific features
|
||||||
|
|
||||||
**DOTMATRIX_VCS_AHEAD_THRESHOLD** *integer = 5*
|
**JOLLY_VCS_AHEAD_THRESHOLD** *integer = 5*
|
||||||
|
|
||||||
Number of unpushed local commits above which the prompt should use the warning color to display the "push" section.
|
Number of unpushed local commits above which the prompt should use the warning color to display the "push" section.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_VCS_BEHIND_THRESHOLD** *integer = 5*
|
**JOLLY_VCS_BEHIND_THRESHOLD** *integer = 5*
|
||||||
|
|
||||||
Number of unpulled remote commits above which the prompt should use the warning color to display the "pull" section.
|
Number of unpulled remote commits above which the prompt should use the warning color to display the "pull" section.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_VCS_DIFF_THRESHOLD** *integer = 300*
|
**JOLLY_VCS_DIFF_THRESHOLD** *integer = 300*
|
||||||
|
|
||||||
Number of modified lines above which the prompt should use the warning color to display the "commit" section.
|
Number of modified lines above which the prompt should use the warning color to display the "commit" section.
|
||||||
|
|
||||||
|
**JOLLY_VCS_REMOTE_ORIGIN** *string* = "🖈"
|
||||||
|
|
||||||
**DOTMATRIX_DETACHED_THRESHOLD** *integer = 3*
|
String used as a shorten VCS remote name, if it is "origin".
|
||||||
|
|
||||||
|
**JOLLY_DETACHED_THRESHOLD** *integer = 3*
|
||||||
|
|
||||||
Number of detached jobs above which the prompt should use the warning color.
|
Number of detached jobs above which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_RUNNING_THRESHOLD** *integer = 3*
|
**JOLLY_RUNNING_THRESHOLD** *integer = 3*
|
||||||
|
|
||||||
Number of running jobs above which the prompt should use the warning color.
|
Number of running jobs above which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_STOPPED_THRESHOLD** *integer = 3*
|
**JOLLY_STOPPED_THRESHOLD** *integer = 3*
|
||||||
|
|
||||||
Number of stopped jobs above which the prompt should use the warning color.
|
Number of stopped jobs above which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_BATTERY_THRESHOLD** *integer = $((LP_BATTERY_THRESHOLD/2))*
|
**JOLLY_BATTERY_THRESHOLD** *integer = $((LP_BATTERY_THRESHOLD/2))*
|
||||||
|
|
||||||
Percentage below which the prompt should use the warning color.
|
Percentage below which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_TEMP_THRESHOLD** *integer = $((LP_TEMP_THRESHOLD*2))*
|
**JOLLY_TEMP_THRESHOLD** *integer = $((LP_TEMP_THRESHOLD*2))*
|
||||||
|
|
||||||
Temperature above which the prompt should use the warning color.
|
Temperature above which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_LOAD_THRESHOLD** *integer = $((_LP_LOAD_THRESHOLD+(_LP_LOAD_CAP-_LP_LOAD_THRESHOLD)/2))*
|
**JOLLY_LOAD_THRESHOLD** *integer = $((_LP_LOAD_THRESHOLD+(_LP_LOAD_CAP-_LP_LOAD_THRESHOLD)/2))*
|
||||||
|
|
||||||
Load percentage above which the prompt should use the warning color.
|
Load percentage above which the prompt should use the warning color.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_ENABLE_HISTORY** *boolean = 1*
|
**JOLLY_ENABLE_HISTORY** *boolean = 1*
|
||||||
|
|
||||||
Enable the history sections displayed on the right side of the middle line.
|
Enable the history sections displayed on the right side of the middle line.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_HISTORY_MOST_BACK** *integer = 100*
|
**JOLLY_HISTORY_MOST_BACK** *integer = 100*
|
||||||
|
|
||||||
Number of the last history events to take into account when looking for the most used command.
|
Number of the last history events to take into account when looking for the most used command.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_HISTORY_LAST_LEN** *integer = $((COLUMNS/4))*
|
**JOLLY_HISTORY_LAST_LEN** *integer = $((COLUMNS/4))*
|
||||||
|
|
||||||
Maximum length of the *last* command used (counting the `DOTMATRIX_HISTORY_LAST_LEN_MARK` length).
|
Maximum length of the *last* command used (counting the `JOLLY_HISTORY_LAST_LEN_MARK` length).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_HISTORY_LAST_LEN_MARK** *integer = "[…]"*
|
**JOLLY_HISTORY_LAST_LEN_MARK** *integer = "[…]"*
|
||||||
|
|
||||||
Mark to display when the last command string is shortened.
|
Mark to display when the last command string is shortened.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_ENABLE_SHELL** *boolean = 0*
|
**JOLLY_ENABLE_SHELL** *boolean = 0*
|
||||||
|
|
||||||
Display the current shell in the top-right section.
|
Display the current shell in the top-right section.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SHELL_ZSH** *string = "z"*
|
**JOLLY_SHELL_ZSH** *string = "z"*
|
||||||
|
|
||||||
The mark indicating a *zsh* shell.
|
The mark indicating a *zsh* shell.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SHELL_BASH** *string = "b"*
|
**JOLLY_SHELL_BASH** *string = "b"*
|
||||||
|
|
||||||
The mark indicating a *bash* shell.
|
The mark indicating a *bash* shell.
|
||||||
|
|
||||||
|
|
@ -299,67 +286,72 @@ The mark indicating a *bash* shell.
|
||||||
|
|
||||||
The following options configure some marks that will be used across all variants of the theme.
|
The following options configure some marks that will be used across all variants of the theme.
|
||||||
|
|
||||||
**DOTMATRIX_DISPLAY_TEXT** *string = "T"*
|
**JOLLY_DISPLAY_TEXT** *string = "T"*
|
||||||
|
|
||||||
The marker used to indicates that the shell is in text mode,
|
The marker used to indicates that the shell is in text mode,
|
||||||
i.e. that does not have a graphical display
|
i.e. that does not have a graphical display
|
||||||
(more rigorously: there is no X11 `DISPLAY` environment variable).
|
(more rigorously: there is no X11 `DISPLAY` environment variable).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_DISPLAY_X11** *string = "X"*
|
**JOLLY_DISPLAY_X11** *string = "X"*
|
||||||
|
|
||||||
The marker used to indicates that the shell does have access to a graphical server
|
The marker used to indicates that the shell does have access to a graphical server
|
||||||
(more rigorously: there is a X11 `DISPLAY` environment variable).
|
(more rigorously: there is a X11 `DISPLAY` environment variable).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_HOST_LOCAL** *string = "⌂"*
|
**JOLLY_HOST_LOCAL** *string = "⌂"*
|
||||||
|
|
||||||
The marker used to indicate that the hostname is `localhost`.
|
The marker used to indicate that the hostname is `localhost`.
|
||||||
|
|
||||||
**DOTMATRIX_USER_LOCAL** *string = "♟"*
|
**JOLLY_USER_LOCAL** *string = "♟"*
|
||||||
|
|
||||||
The marker used to indicate that the user is the same than the login one.
|
The marker used to indicate that the user is the same than the login one.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_MARK_STASH** *string = "✝"*
|
**JOLLY_MARK_STASH** *string = "✝"*
|
||||||
|
|
||||||
The marker used to indicate that the VCS stash is not empty.
|
The marker used to indicate that the VCS stash is not empty.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_MARK_UNTRACKED** *string = "?"*
|
**JOLLY_MARK_UNTRACKED** *string = "?"*
|
||||||
|
|
||||||
The marker used to indicate that there are some files that are untracked
|
The marker used to indicate that there are some files that are untracked
|
||||||
by the VCS in the current repository.
|
by the VCS in the current repository.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_DIFF** *string = "≠"*
|
**JOLLY_DIFF** *string = "≠"*
|
||||||
|
|
||||||
The marker used to indicate that there is some change in the VCS state
|
The marker used to indicate that there is some change in the VCS state
|
||||||
(either changes needed to be committed, or commits needed to be pushed).
|
(either changes needed to be committed, or commits needed to be pushed).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_VCS** *string = "╟┘"*
|
**JOLLY_VCS** *string = "╟┘"*
|
||||||
|
|
||||||
The marker used to indicate that there is a VCS involved in the current directory.
|
The marker used to indicate that there is a VCS involved in the current directory.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_MARK** *string = "■"*
|
**JOLLY_MARK** *string = "⯀"*
|
||||||
|
|
||||||
The actual prompt marker, right where the user type text.
|
The actual prompt marker, right where the user type text.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_ENABLE_GRADIENT_LINE** *boolean = 0*
|
**JOLLY_MARK_SUDO** *string = "⋮"*
|
||||||
|
|
||||||
|
An additional character displayed before the last prompt mark
|
||||||
|
when the user has sudo rights.
|
||||||
|
|
||||||
|
**JOLLY_ENABLE_GRADIENT_LINE** *boolean = 0*
|
||||||
|
|
||||||
If set to 0 (the default), will draw the line of the middle section
|
If set to 0 (the default), will draw the line of the middle section
|
||||||
as a sequence of `DOTMATRIX_LINE` characters,
|
as a sequence of `JOLLY_LINE` characters,
|
||||||
using the `DOTMATRIX_COLOR_LINE` color.
|
using the `JOLLY_COLOR_LINE` color.
|
||||||
|
|
||||||
If set to 1, will draw the same line with a gradient of color
|
If set to 1, will draw the same line with a gradient of color
|
||||||
interpolated from `DOTMATRIX_COLOR_LINE_START`
|
interpolated from `JOLLY_COLOR_LINE_START`
|
||||||
to `DOTMATRIX_COLOR_LINE_END`.
|
to `JOLLY_COLOR_LINE_END`.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_MARK_ERROR** *string = " "*
|
**JOLLY_MARK_ERROR** *string = " "*
|
||||||
|
|
||||||
Icon displayed in front of the last exit error code.
|
Icon displayed in front of the last exit error code.
|
||||||
|
|
||||||
|
|
@ -369,48 +361,48 @@ Icon displayed in front of the last exit error code.
|
||||||
These options are the one used to actually define the theme variants.
|
These options are the one used to actually define the theme variants.
|
||||||
You may overcome them with your own configuration.
|
You may overcome them with your own configuration.
|
||||||
|
|
||||||
**DOTMATRIX_LINE** *string = "━"*
|
**JOLLY_LINE** *string = "━"*
|
||||||
|
|
||||||
The character used to draw the middle line.
|
The character used to draw the middle line.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_PLUG** *string = "▛"*
|
**JOLLY_PLUG** *string = "▛"*
|
||||||
|
|
||||||
The character for joined segments limits.
|
The character for joined segments limits.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SOFT** *string = "╱"*
|
**JOLLY_SOFT** *string = "╱"*
|
||||||
|
|
||||||
The character for "soft" separation (e.g. path elements, branch details, jobs, etc.)
|
The character for "soft" separation (e.g. path elements, branch details, jobs, etc.)
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_MEAN** *string = "▞"*
|
**JOLLY_MEAN** *string = "▞"*
|
||||||
|
|
||||||
The character for "mean" separation
|
The character for "mean" separation
|
||||||
(used when two segments of the same color are joint).
|
(used when two segments of the same color are joint).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_LINK** *array<string> = ("▙" " " "▜")*
|
**JOLLY_LINK** *array<string> = ("▙" " " "▜")*
|
||||||
|
|
||||||
Characters used for showing a small gap.
|
Characters used for showing a small gap.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_OPEN** *array<string> = ("▙" " ▚ " "▜")*
|
**JOLLY_OPEN** *array<string> = ("▙" " ▚ " "▜")*
|
||||||
|
|
||||||
Characters used for showing a large gap.
|
Characters used for showing a large gap.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_DANG** *array<string> = ("▙" " □ " "▜")*
|
**JOLLY_DANG** *array<string> = ("▙" " □ " "▜")*
|
||||||
|
|
||||||
Characters used for showing a very lareg gap (i.e. a dangerous state).
|
Characters used for showing a very lareg gap (i.e. a dangerous state).
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_ENDS** *array<string> = ("▛▞▗ ▝" "▖ ▘▞▟")*
|
**JOLLY_ENDS** *array<string> = ("▛▞▗ ▝" "▖ ▘▞▟")*
|
||||||
|
|
||||||
Characters marking the ends of the right and left parts of the first line.
|
Characters marking the ends of the right and left parts of the first line.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_ITEMS** *array<string> = ("┫" "┃" "┣")*
|
**JOLLY_ITEMS** *array<string> = ("┫" "┃" "┣")*
|
||||||
|
|
||||||
Characters used to separate keywords in the middle line.
|
Characters used to separate keywords in the middle line.
|
||||||
The middle character separates keywords of the same type (e.g. every Software Collection).
|
The middle character separates keywords of the same type (e.g. every Software Collection).
|
||||||
|
|
@ -420,27 +412,27 @@ The middle character separates keywords of the same type (e.g. every Software Co
|
||||||
|
|
||||||
You may overcome the spacing details with these options.
|
You may overcome the spacing details with these options.
|
||||||
|
|
||||||
**DOTMATRIX_SPACE_VOID** *string = " "*
|
**JOLLY_SPACE_VOID** *string = " "*
|
||||||
|
|
||||||
Spacing character around segments joints marker.
|
Spacing character around segments joints marker.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SPACE_PATH** *string = " "*
|
**JOLLY_SPACE_PATH** *string = " "*
|
||||||
|
|
||||||
Spacing character specifically for the "current path" section.
|
Spacing character specifically for the "current path" section.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SPACE_FIELD** *string = ""*
|
**JOLLY_SPACE_FIELD** *string = ""*
|
||||||
|
|
||||||
Spacing character around the content of the segments themselves.
|
Spacing character around the content of the segments themselves.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SPACE_LINE** *string = " "*
|
**JOLLY_SPACE_LINE** *string = " "*
|
||||||
|
|
||||||
Spacing character around the keywords of the middle line.
|
Spacing character around the keywords of the middle line.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_SPACE_FILL** *string = "█"*
|
**JOLLY_SPACE_FILL** *string = "█"*
|
||||||
|
|
||||||
Spacing character for filled sections.
|
Spacing character for filled sections.
|
||||||
You probably don't want to touch this.
|
You probably don't want to touch this.
|
||||||
|
|
@ -449,91 +441,94 @@ You probably don't want to touch this.
|
||||||
#### Colors
|
#### Colors
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_DARK** *array<int> = (252 239 0 0 15 0)*
|
**JOLLY_COLOR_DARK** *array<int> = (252 239 0 0 15 0)*
|
||||||
|
|
||||||
The color of dark segments.
|
The color of dark segments.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_LITE** *array<int> = (239 252 0 0 0 15)*
|
**JOLLY_COLOR_LITE** *array<int> = (239 252 0 0 0 15)*
|
||||||
|
|
||||||
The color of light segments.
|
The color of light segments.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_GLOW** *array<int> = ( 0 252 1 0 0 15)*
|
**JOLLY_COLOR_GLOW** *array<int> = ( 0 252 1 0 0 15)*
|
||||||
|
|
||||||
The color for bright elements.
|
The color for bright elements.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_NOTE** *array<int> = ( 15 33 0 0 15 12)*
|
**JOLLY_COLOR_NOTE** *array<int> = ( 15 33 0 0 15 12)*
|
||||||
|
|
||||||
The color for notable elements.
|
The color for notable elements.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_WARN** *array<int> = (196 220 1 0 0 11)*
|
**JOLLY_COLOR_WARN** *array<int> = (196 220 1 0 0 11)*
|
||||||
|
|
||||||
The color for elements related to a warning.
|
The color for elements related to a warning.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_FAIR** *array<int> = ( 0 244 0 0 0 8)*
|
**JOLLY_COLOR_FAIR** *array<int> = ( 0 244 0 0 0 8)*
|
||||||
|
|
||||||
The color for elements that are not very important.
|
The color for elements that are not very important.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_PATH_SHORT** *array<int> = (252 239 0 0 0 15)*
|
**JOLLY_COLOR_PATH_SHORT** *array<int> = (252 239 0 0 0 15)*
|
||||||
|
|
||||||
The color of the shorten path marker.
|
The color of the shorten path marker.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_PATH_VCS** *array<int> = (252 239 0 1 0 15)*
|
**JOLLY_COLOR_PATH_VCS** *array<int> = (252 239 0 1 0 15)*
|
||||||
|
|
||||||
The color of the VCS repository in the path.
|
The color of the VCS repository in the path.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_PATH_LAST** *array<int> = (15 239 1 0 0 15)*
|
**JOLLY_COLOR_PATH_LAST** *array<int> = (15 239 1 0 0 15)*
|
||||||
|
|
||||||
The color of the current directory.
|
The color of the current directory.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_LINE** *array<int> = (244 -1 0 0 15 -1)*
|
**JOLLY_COLOR_LINE** *array<int> = (244 -1 0 0 15 -1)*
|
||||||
|
|
||||||
The color of the middle line.
|
The color of the middle line.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_MARK** *array<int> = (15 -1 0 0 15 -1)*
|
**JOLLY_COLOR_MARK** *array<int> = (15 -1 0 0 15 -1)*
|
||||||
|
|
||||||
The color of the actual prompt mark.
|
The color of the actual prompt mark.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_SEP_DARK** *array<int> = ( 0 -2 0 0 0 -2)*
|
**JOLLY_COLOR_SEP_DARK** *array<int> = ( 0 -2 0 0 0 -2)*
|
||||||
|
|
||||||
The color for dark separators.
|
The color for dark separators.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_SEP_FAIR** *array<int> = (244 -2 0 0 0 -2)*
|
**JOLLY_COLOR_SEP_FAIR** *array<int> = (244 -2 0 0 0 -2)*
|
||||||
|
|
||||||
The color for fair separators.
|
The color for fair separators.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_SEP_LITE** *array<int> = ( 15 -2 0 0 15 -2)*
|
**JOLLY_COLOR_SEP_LITE** *array<int> = ( 15 -2 0 0 15 -2)*
|
||||||
|
|
||||||
The color for light separators.
|
The color for light separators.
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_LINE_START** *array<int> = (255 -1 1 0 15 -1)*
|
**JOLLY_COLOR_LINE_START** *array<int> = (255 -1 1 0 15 -1)*
|
||||||
|
|
||||||
The color starting the gradient of the line of the middle section.
|
The color starting the gradient of the line of the middle section.
|
||||||
Default is white.
|
Default is white.
|
||||||
|
|
||||||
Valus being linearly interpolated up to `DOTMATRIX_COLOR_LINE_END`,
|
Valus being linearly interpolated up to `JOLLY_COLOR_LINE_END`,
|
||||||
|
|
||||||
it is recommended to stick to aligned ANSI values (i.e. greys)
|
it is recommended to stick to aligned ANSI values (i.e. greys)
|
||||||
|
|
||||||
|
|
||||||
**DOTMATRIX_COLOR_LINE_END** *array<int> = (232 -1 1 0 15 -1)*
|
**JOLLY_COLOR_LINE_END** *array<int> = (232 -1 1 0 15 -1)*
|
||||||
|
|
||||||
The color ending the gradient of the line of the middle section.
|
The color ending the gradient of the line of the middle section.
|
||||||
Default is black.
|
Default is black.
|
||||||
|
|
||||||
Valus being linearly interpolated from `DOTMATRIX_COLOR_LINE_START`,
|
|
||||||
|
Valus being linearly interpolated from `JOLLY_COLOR_LINE_START`,
|
||||||
|
|
||||||
it is recommended to stick to aligned ANSI values (i.e. greys).
|
it is recommended to stick to aligned ANSI values (i.e. greys).
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
261
docs/README.md
Normal file
|
|
@ -0,0 +1,261 @@
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
This article is made of two main sections: generic design principles,
|
||||||
|
and Jolly's design principles.
|
||||||
|
|
||||||
|
The generic design principles were applied during the development of Liquid Prompt.
|
||||||
|
They should remain valid for its default theme as well as for the Jolly theme.
|
||||||
|
However, the folowing section only discuss their implementation within the Jolly theme.
|
||||||
|
|
||||||
|
The Jolly's design principles are more or less specific to the Jolly theme.
|
||||||
|
|
||||||
|
|
||||||
|
## What is a Prompt?
|
||||||
|
|
||||||
|
There are two kind of computer scientists: those who use the command line, and those who are retired.
|
||||||
|
Even developers who embrace highly integrated development interfaces have some kind of terminal available in some panel of their IDE.
|
||||||
|
Like it or not, the shell is a core part of everyday life for most of the people expecting their computer to work for them.
|
||||||
|
|
||||||
|
Now the shell actually has access to a lot of information about the computer.
|
||||||
|
And most of this information is about the current state of the work environment,
|
||||||
|
which is of the highest interest to the user.
|
||||||
|
However, by default the shell only shows very little information unless you ask specifically for it.
|
||||||
|
Furthermore, the only location on the screen available for the permanent display of anything is the "prompt".
|
||||||
|
|
||||||
|
The prompt is this string of characters displayed right in front of the line where you type your commands.
|
||||||
|
In the most common default configuration, it displays only three pieces of information:
|
||||||
|
the user, the hostname, and the path —`user@hostname:path $ `.
|
||||||
|
|
||||||
|
But it can display more! And this is the objective of *prompt systems*.
|
||||||
|
Those "prompts" (to be short) actually add a lot of information to this area of the command line.
|
||||||
|
For example, the most common feature is to display the state of the Git repository the user is in.
|
||||||
|
|
||||||
|
|
||||||
|
## Prompt Features
|
||||||
|
|
||||||
|
This document will refer to feature sets,
|
||||||
|
as a way to group the information in broad categories.
|
||||||
|
|
||||||
|
Feature categories are:
|
||||||
|
|
||||||
|
1. **shell essentials**: features usually found in a classic prompt (path, user, exit codes…), useful in everyday use (jobs, sensors, multiplexer integration…), or generally considered important (themes…).
|
||||||
|
1. **situation**: who is connected, and how.
|
||||||
|
2. **location**: where (which path) the user is.
|
||||||
|
3. **sensor**: states of the system (temperature, load, spaces, etc.).
|
||||||
|
4. **feedback**: information from the last command (error, runtime).
|
||||||
|
5. **warnings**: information conditionning the next command (admin rights).
|
||||||
|
2. **version control**: Git, Mercurial and co.
|
||||||
|
1. **remote**: information related to interaction with a remote repository.
|
||||||
|
2. **local**: information related to the local repository.
|
||||||
|
3. **environments**: dynamic configuration detection (virtual env, shell variables, containers…).
|
||||||
|
4. **toolsets versions**: current version of specific tools (programming languages, build chains, tools…).
|
||||||
|
5. **miscellaneous shell features**: shell-related features considered less important (network, terminal title, hyperlinks…).
|
||||||
|
6. **services**: services running permanently, online or on the machine (music, weather…).
|
||||||
|
|
||||||
|
Theses categories are delineated with the main use of the terminal in mind:
|
||||||
|
|
||||||
|
- Features in the *shell essentials* category is what you will need the most often, whatever you are doing in your terminal.
|
||||||
|
- If you are a programmer, you will pay additional attention to the *version control* and *environments* categories.
|
||||||
|
- If you are a devops, the *dev context* category is also of interest to you.
|
||||||
|
- If you do sysadmin, the *miscellaneous* category may contain some mildly interesting features.
|
||||||
|
- If you need features in the *services* category, you probably misunderstood what a *command line interface* is, or you are looking for a *status bar* (which a prompt system can be).
|
||||||
|
|
||||||
|
|
||||||
|
# Generic Design Principles
|
||||||
|
|
||||||
|
The rationale of a prompt system is that it is actually useful to have an immediate access to the current *state* of the system.
|
||||||
|
Seeing a *state change* right where the user actually looks is a very good *feedback* on their actions.
|
||||||
|
But of course this feedback should not come in the way of how the user works.
|
||||||
|
|
||||||
|
States should be chosen and displayed according to their importance for the user's work.
|
||||||
|
|
||||||
|
More precisely, a good prompt is a prompt which is:
|
||||||
|
|
||||||
|
- **accentuated**: it makes more visible the feedback for more important state changes, while not polluting the visibility of stable/anecdotal states,
|
||||||
|
- **focused**: it targets states that are actually useful to the user *during a work session*,
|
||||||
|
- **seamless**: it does not product friction with the user workflow,
|
||||||
|
- **scoped**: it targets states that can change by themselves or be changed by the user,
|
||||||
|
- **measured**: it embraces the fact that some states change less often than others (and thus avoids being just a collection of states that only rarely change),
|
||||||
|
- **configurable**: be easy to immediately adapt the display of information, if needed.
|
||||||
|
|
||||||
|
|
||||||
|
## Accentuated
|
||||||
|
|
||||||
|
The prompt should be organized in several sections, which importance should
|
||||||
|
be obvious to the user, depending on their location on the screen and/or their styling.
|
||||||
|
|
||||||
|
Section styling should not overflow on neighbor sections.
|
||||||
|
For instance, given that the terminal is organized as a grid of characters,
|
||||||
|
the background of two close (horizontally or vertically) characters will blend.
|
||||||
|
Therefore, one should maintain a certain degree of contrast between sections
|
||||||
|
that are touching each other but have a different semantics.
|
||||||
|
|
||||||
|
> Jolly is organized in four sections, spread on three lines:
|
||||||
|
> 1. The leftmost part of the first line is the first in reading order.
|
||||||
|
> It is thus used for stable and important information.
|
||||||
|
> 2. The third line is holding the actual prompt, where the user types.
|
||||||
|
> It is thus of high importance, and used for the *version control*,
|
||||||
|
> *feedback* and *warning* sections.
|
||||||
|
> 3. The rightmost part of the first line is last in the reading order.
|
||||||
|
> It is thus used to display transient states.
|
||||||
|
> 4. The second line cannot be of background-colored, or it would overflow on
|
||||||
|
> the first and last line. It is thus of low importance and holds the
|
||||||
|
> *environments* and *toolset versions* sections.
|
||||||
|
|
||||||
|
|
||||||
|
## Focused
|
||||||
|
|
||||||
|
Information that changes often and/or that is important regarding the user's main tasks
|
||||||
|
should be easier to see.
|
||||||
|
|
||||||
|
In a regular prompt, most of the text has no background color by default.
|
||||||
|
Any text which has a background color is thus easier to spot.
|
||||||
|
|
||||||
|
Therefore, important information should be displayed in a background-colored segment,
|
||||||
|
while less important information can be displayed in a foreground-colored one.
|
||||||
|
|
||||||
|
Information related to the *situation* and *location* of the user should
|
||||||
|
always be considered important, as they may drastically alter the workflow of the user.
|
||||||
|
|
||||||
|
> In Jolly, the *toolsets versions* and *environment* feature sets are to be
|
||||||
|
> displayed in a foreground-colored section of the prompt,
|
||||||
|
> while the others are in background-colored sections.
|
||||||
|
|
||||||
|
|
||||||
|
## Scoped
|
||||||
|
|
||||||
|
States that are measured and not directly changed by the user should be hidden by default.
|
||||||
|
Counters that can fall down to zero should be hidden by default.
|
||||||
|
|
||||||
|
> In Jolly, *sensors* are hidden by default, while *situation* and *location*
|
||||||
|
> information are always shown, even if set to the default state.
|
||||||
|
> However, the default states are represented in the smallest possible way, like a single icon.
|
||||||
|
|
||||||
|
|
||||||
|
## Measured
|
||||||
|
|
||||||
|
States that are expected to change often during a work sessions should be considered
|
||||||
|
important.
|
||||||
|
States that rarely change or evolve slowly are less important.
|
||||||
|
|
||||||
|
> In Jolly, *sensors* are grouped on the righmost part of the
|
||||||
|
> first line of the prompt.
|
||||||
|
> Information about version control is however close to the actual prompt.
|
||||||
|
|
||||||
|
|
||||||
|
## Configurable
|
||||||
|
|
||||||
|
Each aspect of theming should have a related configuration variable.
|
||||||
|
|
||||||
|
|
||||||
|
## More details
|
||||||
|
|
||||||
|
If you want to know more, check our
|
||||||
|
[opinionated prompt systems comparison](https://github.com/liquidprompt/liquidprompt/wiki/Why)
|
||||||
|
that goes into more details and give examples across various other prompt systems.
|
||||||
|
|
||||||
|
|
||||||
|
# Jolly's Design Principles
|
||||||
|
|
||||||
|
## Stability
|
||||||
|
|
||||||
|
Essential information should ideally be located at the same location on screen,
|
||||||
|
whatever the displayed states.
|
||||||
|
New information being shown after a predictable state change should not
|
||||||
|
change too much the location of information previously displayed.
|
||||||
|
|
||||||
|
> Using four sections allows Jolly to drastically improve the stability of the prompt,
|
||||||
|
> as opposed to a prompt on a single line.
|
||||||
|
> The less stable section is the VCS one, which often changes after each command when the user is working on their repository.
|
||||||
|
> Sections are thus organized from left to right, in decreasing order of stability.
|
||||||
|
> Jolly always displays important segments, even in their default state, so that they are always located where the user expect them to be.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Sectioning
|
||||||
|
|
||||||
|
The prompts having issued the previous commands should be easy to find while the user is scrolling up the terminal.
|
||||||
|
|
||||||
|
> Jolly uses both background-colored sections that are always displayed and a line traversing the whole terminal to separate all command outputs in sections.
|
||||||
|
> The graphical design of the prompt itself is quite rare in classical commands outputs, making it easy to spot.
|
||||||
|
> Finding the command that issued the output is as easy as finding the horizontal line.
|
||||||
|
|
||||||
|
|
||||||
|
## Proximity
|
||||||
|
|
||||||
|
The more important and/or the more frequently updated information should be displayed the closer to where the user is looking: the prompt cursor.
|
||||||
|
Related information should be displayed close to each other, especially if there is some semantic meaning linking them.
|
||||||
|
|
||||||
|
If the information is to be displayed far away, a small segment may be used to recall the user that they should look elswhere.
|
||||||
|
|
||||||
|
> In Jolly, the path (one of the —if not *the*— most important information) usually appears on top of the prompt's cursor location.
|
||||||
|
> Admin privileges is shown on the prompt's mark, right next to the prompt's cursor.
|
||||||
|
> VCS information is also next to the input area.
|
||||||
|
>
|
||||||
|
> The location at the end of the path can display some right-pointing arrows, recalling the user to look at the sensors section, if there are many information displayed there.
|
||||||
|
|
||||||
|
|
||||||
|
## Segments
|
||||||
|
|
||||||
|
To implement the *accentuated* principle, Jolly uses background-colored segments of information.
|
||||||
|
To ease the visual browsing of those segments, it uses the visual separators introduced by the *Powerline* project.
|
||||||
|
|
||||||
|
> While Jolly can theoretically use many of the "powerline" characters as separators, it recommends using the "arrow" one, which fits better the *semantic sequence* principle.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Semantic Sequences
|
||||||
|
|
||||||
|
Segments are ordered in sequences that have a meaning.
|
||||||
|
For instance from the more generic to the more specific, from a natural order of action, or from an architecture hierarchy.
|
||||||
|
|
||||||
|
> The first line of Jolly display the classical how-who-where sequence.
|
||||||
|
> The VCS section displays elements from the more remote to the more local.
|
||||||
|
> Spaced reverse arrows in the VCS sections actually show the direction of the expected action
|
||||||
|
> (e.g. "to be pushed" = local-to-remote = right-to-left).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Semantic Spaces
|
||||||
|
|
||||||
|
Jolly makes use of negative spaces between segments to convey information.
|
||||||
|
This allows for a compact display, and avoid cluttering the screen with icons.
|
||||||
|
|
||||||
|
When displaying something with a space, the direction of the segments are reversed, making them more easy to spot, at no cost.
|
||||||
|
|
||||||
|
It is possible to insert a separator character within a space, to emphasize its importance.
|
||||||
|
|
||||||
|
Spaces are generally used to mean some kind of "disconnected" state.
|
||||||
|
|
||||||
|
> Jolly spaces comes in three levels: simple space (no inserted character), light space (light arrow inserted in the space) and strong space (heavy, colored arrow).
|
||||||
|
> Jolly uses spaces to indicate the type of network connection (there is no "direct" connection), the fact that the user does not have writing rights (they are "disconnected" from the directory), or the fact that a state has diverged between local and remote.
|
||||||
|
|
||||||
|
|
||||||
|
## Semantic Accessibile Colors
|
||||||
|
|
||||||
|
To avoid colorblindness issues, Jolly relies on as few colors as possible, and tries to maximize the contrast between segments.
|
||||||
|
|
||||||
|
The basic display is built of alternating black and white segments, which should be readable on both dark and light terminal backgrounds.
|
||||||
|
|
||||||
|
Important information may be displayed using two other colors: one for information that should be noticed, and one for warnings and errors.
|
||||||
|
|
||||||
|
> Jolly allows the user to select whatever pair of colors fits their colorblindness issues, and comes with several presets.
|
||||||
|
> Its default is set to blue/yellow, following the most classical recommendation to bypass the most common colorblindness issues.
|
||||||
|
> The basic segments use tones of dark and light greys with AAA contrast between them, appearing as black and white on many classical terminal backgrounds.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Semantic Thresholds
|
||||||
|
|
||||||
|
Qantitative measurements (number of something, sensors, etc.) may be displayed in three states, each of which is associated with a semantic color:
|
||||||
|
1. below lower threshold: black or white,
|
||||||
|
2. between lower and higher threshold: *note* color (blue, by default),
|
||||||
|
3. above higher threshold: *warning* color (yellow, by default).
|
||||||
|
|
||||||
|
> For instance, the number of commits to be pushed, or the number of modified lines in the VCS section are all displayed with this semantics.
|
||||||
|
|
||||||
2761
docs/jolly_emblem.svg
Normal file
|
After Width: | Height: | Size: 399 KiB |
|
|
@ -8,9 +8,9 @@
|
||||||
width="793.66663"
|
width="793.66663"
|
||||||
height="725.40625"
|
height="725.40625"
|
||||||
viewBox="0 0 793.66663 725.40628"
|
viewBox="0 0 793.66663 725.40628"
|
||||||
sodipodi:docname="liquidprompt_dotmatrix_design.svg"
|
sodipodi:docname="liquidprompt_jolly_design.svg"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
inkscape:export-filename="/home/nojhan/code/lp-dotmatrix/liquidprompt_dotmatrix_design.png"
|
inkscape:export-filename="liquidprompt_jolly_design.png"
|
||||||
inkscape:export-xdpi="123.86"
|
inkscape:export-xdpi="123.86"
|
||||||
inkscape:export-ydpi="123.86"
|
inkscape:export-ydpi="123.86"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
inkscape:current-layer="g12" /><g
|
inkscape:current-layer="g12" /><g
|
||||||
id="g8"
|
id="g8"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
inkscape:label="liquidprompt_dotmatrix_design"
|
inkscape:label="liquidprompt_jolly_design"
|
||||||
transform="matrix(1.3333333,0,0,-1.3333333,0,1122.5186)"><g
|
transform="matrix(1.3333333,0,0,-1.3333333,0,1122.5186)"><g
|
||||||
id="g10"><g
|
id="g10"><g
|
||||||
id="g12"
|
id="g12"
|
||||||
|
|
@ -487,7 +487,7 @@
|
||||||
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998 43.296001"
|
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998 43.296001"
|
||||||
y="0"
|
y="0"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan362">dotmatrix </tspan></text></g><path
|
id="tspan362">jolly </tspan></text></g><path
|
||||||
d="M 322.6,670.239 H 327.35 V 680.289 H 322.6 Z"
|
d="M 322.6,670.239 H 327.35 V 680.289 H 322.6 Z"
|
||||||
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||||
id="path366" /><g
|
id="path366" /><g
|
||||||
|
|
@ -2276,7 +2276,7 @@
|
||||||
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998 43.296001"
|
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998 43.296001"
|
||||||
y="0"
|
y="0"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan1776">dotmatrix </tspan></text></g><g
|
id="tspan1776">jolly </tspan></text></g><g
|
||||||
id="g1780"><text
|
id="g1780"><text
|
||||||
transform="matrix(1,0,0,-1,269.7,329.089)"
|
transform="matrix(1,0,0,-1,269.7,329.089)"
|
||||||
style="font-variant:normal;font-weight:normal;font-size:8px;font-family:'MesloLGS NF';-inkscape-font-specification:MesloLGS-NF-Regular;writing-mode:lr-tb;fill:#4c4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
style="font-variant:normal;font-weight:normal;font-size:8px;font-family:'MesloLGS NF';-inkscape-font-specification:MesloLGS-NF-Regular;writing-mode:lr-tb;fill:#4c4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
|
@ -2464,7 +2464,7 @@
|
||||||
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998"
|
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998"
|
||||||
y="0"
|
y="0"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan1926">dotmatrix</tspan></text></g><path
|
id="tspan1926">jolly</tspan></text></g><path
|
||||||
d="M 109.1,306.639 H 113.85 V 316.689 H 109.1 Z"
|
d="M 109.1,306.639 H 113.85 V 316.689 H 109.1 Z"
|
||||||
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||||
id="path1930" /><g
|
id="path1930" /><g
|
||||||
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 161 KiB |
1252
dotmatrix.theme
1421
jolly.theme
Normal file
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
26
presets/colors-all-blues.conf
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
da=26
|
||||||
|
li=75
|
||||||
|
fa=27
|
||||||
|
|
||||||
|
# Color arrays defaults: fg bg b u ffg fbg
|
||||||
|
JOLLY_COLOR_DARK=( 153 $da 0 0 15 0)
|
||||||
|
JOLLY_COLOR_LITE=( 21 $li 0 0 0 15)
|
||||||
|
JOLLY_COLOR_GLOW=( 0 $li 0 0 0 15)
|
||||||
|
JOLLY_COLOR_NOTE=( 15 24 1 0 15 4)
|
||||||
|
JOLLY_COLOR_WARN=( 0 135 1 0 9 11)
|
||||||
|
JOLLY_COLOR_FAIR=( 0 $li 1 0 0 8)
|
||||||
|
|
||||||
|
JOLLY_COLOR_PATH_SHORT=( 15 $da 0 0 0 15)
|
||||||
|
JOLLY_COLOR_PATH_VCS=( 15 $da 0 1 0 15)
|
||||||
|
JOLLY_COLOR_PATH_LAST=( 15 $da 1 0 0 15)
|
||||||
|
|
||||||
|
JOLLY_COLOR_LINE=($fa -1 0 0 7 -1)
|
||||||
|
JOLLY_COLOR_LINE_START=($fa -1 1 0 7 -1)
|
||||||
|
JOLLY_COLOR_LINE_END=( $fa -1 1 0 7 -1)
|
||||||
|
|
||||||
|
JOLLY_COLOR_MARK=(15 -1 0 0 15 -1)
|
||||||
|
JOLLY_COLOR_SEP_DARK=( 0 -2 0 0 15 -2)
|
||||||
|
JOLLY_COLOR_SEP_FAIR=( 0 -2 0 0 0 -2)
|
||||||
|
JOLLY_COLOR_SEP_LITE=( $li -2 0 0 15 -2)
|
||||||
|
|
||||||
4
presets/colors-cyan-magenta.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
JOLLY_COLOR_NOTE=( 15 30 0 0 15 2)
|
||||||
|
JOLLY_COLOR_WARN=(231 128 1 0 0 9)
|
||||||
|
|
||||||
4
presets/colors-green-red.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
JOLLY_COLOR_NOTE=( 15 28 0 0 15 2)
|
||||||
|
JOLLY_COLOR_WARN=(220 160 1 0 0 9)
|
||||||
|
|
||||||
25
presets/colors-high-contrast.conf
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
da=238
|
||||||
|
li=254
|
||||||
|
|
||||||
|
# Color arrays defaults: fg bg b u ffg fbg
|
||||||
|
JOLLY_COLOR_DARK=( $li $da 0 0 15 0)
|
||||||
|
JOLLY_COLOR_LITE=( $da $li 0 0 0 15)
|
||||||
|
JOLLY_COLOR_GLOW=( 0 $li 0 0 0 15)
|
||||||
|
JOLLY_COLOR_NOTE=( 0 27 1 1 15 4)
|
||||||
|
JOLLY_COLOR_WARN=( 88 220 1 1 9 11)
|
||||||
|
JOLLY_COLOR_FAIR=( 0 $li 1 0 0 8)
|
||||||
|
|
||||||
|
JOLLY_COLOR_PATH_SHORT=( 15 $da 0 0 0 15)
|
||||||
|
JOLLY_COLOR_PATH_VCS=( 15 $da 0 1 0 15)
|
||||||
|
JOLLY_COLOR_PATH_LAST=( 15 $da 1 0 0 15)
|
||||||
|
|
||||||
|
JOLLY_COLOR_LINE=(247 -1 0 0 7 -1)
|
||||||
|
JOLLY_COLOR_LINE_START=(247 -1 1 0 7 -1)
|
||||||
|
JOLLY_COLOR_LINE_END=( 247 -1 1 0 7 -1)
|
||||||
|
|
||||||
|
JOLLY_COLOR_MARK=(15 -1 0 0 15 -1)
|
||||||
|
JOLLY_COLOR_SEP_DARK=( 15 -2 0 0 15 -2)
|
||||||
|
JOLLY_COLOR_SEP_FAIR=( 0 -2 0 0 0 -2)
|
||||||
|
JOLLY_COLOR_SEP_LITE=( 0 -2 0 0 15 -2)
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
DOTMATRIX_COLOR_NOTE=( 15 30 0 0 15 2)
|
|
||||||
DOTMATRIX_COLOR_WARN=(231 128 1 0 0 9)
|
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
DOTMATRIX_COLOR_NOTE=( 15 28 0 0 15 2)
|
|
||||||
DOTMATRIX_COLOR_WARN=(220 160 1 0 0 9)
|
|
||||||
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
# Color arrays defaults: fg bg b u ffg fbg
|
|
||||||
DOTMATRIX_COLOR_DARK=( 15 0 0 0 15 0)
|
|
||||||
DOTMATRIX_COLOR_LITE=( 0 15 0 0 0 15)
|
|
||||||
DOTMATRIX_COLOR_GLOW=( 0 15 1 0 0 15)
|
|
||||||
DOTMATRIX_COLOR_NOTE=( 15 4 0 0 15 4)
|
|
||||||
DOTMATRIX_COLOR_WARN=( 9 11 1 0 9 11)
|
|
||||||
DOTMATRIX_COLOR_FAIR=( 0 8 0 0 0 8)
|
|
||||||
|
|
||||||
DOTMATRIX_COLOR_PATH_SHORT=( 15 0 0 0 0 15)
|
|
||||||
DOTMATRIX_COLOR_PATH_VCS=( 15 0 0 1 0 15)
|
|
||||||
DOTMATRIX_COLOR_PATH_LAST=( 15 0 1 0 0 15)
|
|
||||||
|
|
||||||
DOTMATRIX_COLOR_LINE=(15 -1 0 0 15 -1)
|
|
||||||
DOTMATRIX_COLOR_LINE_START=(15 -1 1 0 15 -1)
|
|
||||||
DOTMATRIX_COLOR_LINE_END=( 0 -1 1 0 15 -1)
|
|
||||||
|
|
||||||
DOTMATRIX_COLOR_MARK=(15 -1 0 0 15 -1)
|
|
||||||
DOTMATRIX_COLOR_SEP_DARK=( 15 -2 0 0 15 -2)
|
|
||||||
DOTMATRIX_COLOR_SEP_FAIR=( 8 -2 0 0 0 -2)
|
|
||||||
DOTMATRIX_COLOR_SEP_LITE=( 15 -2 0 0 15 -2)
|
|
||||||
|
|
||||||
|
|
@ -1,25 +1,26 @@
|
||||||
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
|
JOLLY_SPACED=${JOLLY_SPACED:-1}
|
||||||
|
|
||||||
# Powerline chevron theme
|
# Powerline chevron theme
|
||||||
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
|
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
|
||||||
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
|
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
|
||||||
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
|
JOLLY_VCS=${JOLLY_VCS:-""}
|
||||||
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
|
JOLLY_MARK=${JOLLY_MARK:-""}
|
||||||
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
|
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"⁘"} # ⁘ 🞙
|
||||||
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
|
JOLLY_LINE=${JOLLY_LINE:-"━"}
|
||||||
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-"╱"}
|
JOLLY_PLUG=${JOLLY_PLUG:-""}
|
||||||
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-""}
|
JOLLY_SOFT=${JOLLY_SOFT:-"╱"}
|
||||||
|
JOLLY_MEAN=${JOLLY_MEAN:-""}
|
||||||
|
|
||||||
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
|
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("" "" "")
|
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("" "" "")
|
||||||
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
|
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "")
|
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "")
|
||||||
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
|
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
|
||||||
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("" "" "")
|
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("" "" "")
|
||||||
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
|
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
|
||||||
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("" "" "")
|
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("" "" "")
|
||||||
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
|
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" "" "")
|
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" "" "")
|
||||||
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
|
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
|
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,26 @@
|
||||||
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
|
JOLLY_SPACED=${JOLLY_SPACED:-1}
|
||||||
|
|
||||||
# Powerline round theme
|
# Powerline round theme
|
||||||
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
|
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
|
||||||
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
|
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
|
||||||
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
|
JOLLY_VCS=${JOLLY_VCS:-""}
|
||||||
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
|
JOLLY_MARK=${JOLLY_MARK:-""}
|
||||||
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
|
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"⚬"} # ⁘ ⚬ 🞙
|
||||||
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
|
JOLLY_LINE=${JOLLY_LINE:-"━"}
|
||||||
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-"╱"}
|
JOLLY_PLUG=${JOLLY_PLUG:-""}
|
||||||
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-""}
|
JOLLY_SOFT=${JOLLY_SOFT:-"╱"}
|
||||||
|
JOLLY_MEAN=${JOLLY_MEAN:-""}
|
||||||
|
|
||||||
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
|
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("█" "" "")
|
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("█" "" "")
|
||||||
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
|
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "█")
|
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "█")
|
||||||
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
|
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
|
||||||
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("█" "" "")
|
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("█" "" "")
|
||||||
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
|
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
|
||||||
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("█" "" "")
|
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("█" "" "")
|
||||||
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
|
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" "" "")
|
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" "" "")
|
||||||
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
|
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
|
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,25 @@
|
||||||
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
|
JOLLY_SPACED=${JOLLY_SPACED:-1}
|
||||||
|
|
||||||
# Powerline slanted theme
|
# Powerline slanted theme
|
||||||
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
|
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
|
||||||
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
|
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
|
||||||
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
|
JOLLY_VCS=${JOLLY_VCS:-""}
|
||||||
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
|
JOLLY_MARK=${JOLLY_MARK:-""}
|
||||||
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
|
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"🞙"} # ⁘ ⚬ 🞙
|
||||||
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
|
JOLLY_LINE=${JOLLY_LINE:-"━"}
|
||||||
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-"╱"}
|
JOLLY_PLUG=${JOLLY_PLUG:-""}
|
||||||
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-""}
|
JOLLY_SOFT=${JOLLY_SOFT:-"╱"}
|
||||||
|
JOLLY_MEAN=${JOLLY_MEAN:-" "}
|
||||||
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
|
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("" "" "")
|
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("" "" " ")
|
||||||
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
|
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "")
|
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "")
|
||||||
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
|
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
|
||||||
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("" "" "")
|
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("" "" " ")
|
||||||
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
|
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
|
||||||
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("" "" "")
|
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("" " " " ")
|
||||||
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
|
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" "/" "")
|
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" " " " ")
|
||||||
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
|
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
|
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,26 @@
|
||||||
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-0}
|
JOLLY_SPACED=${JOLLY_SPACED:-0}
|
||||||
|
|
||||||
# Dotmatrix theme
|
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-"lcl"}
|
||||||
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-"lcl"}
|
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-"me"}
|
||||||
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-"me"}
|
JOLLY_VCS=${JOLLY_VCS:-"VCS"}
|
||||||
DOTMATRIX_VCS=${DOTMATRIX_VCS:-"VCS"}
|
JOLLY_MARK=${JOLLY_MARK:-">"}
|
||||||
DOTMATRIX_MARK=${DOTMATRIX_MARK:-">"}
|
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"!"}
|
||||||
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
|
JOLLY_LINE=${JOLLY_LINE:-"━"}
|
||||||
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-"▌"}
|
JOLLY_PLUG=${JOLLY_PLUG:-"▌"}
|
||||||
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-"╱"}
|
JOLLY_SOFT=${JOLLY_SOFT:-"╱"}
|
||||||
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-"┃"}
|
JOLLY_MEAN=${JOLLY_MEAN:-"┃"}
|
||||||
|
|
||||||
# Separator arrays (left center right)
|
# Separator arrays (left center right)
|
||||||
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
|
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("▌" "<" "▐")
|
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("▌" "<" "▐")
|
||||||
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
|
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
|
||||||
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("▌" ">" "▐")
|
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("▌" ">" "▐")
|
||||||
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
|
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
|
||||||
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("▌" "<<" "▐")
|
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("▌" "<<" "▐")
|
||||||
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
|
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
|
||||||
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("▌" "<<<" "▐")
|
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("▌" "<<<" "▐")
|
||||||
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
|
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("▌" "···" "···▐")
|
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("▌" "···" "···▐")
|
||||||
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
|
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
|
||||||
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("┫" "┃" "┣")
|
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("┫" "┃" "┣")
|
||||||
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
BIN
screenshots/variant-chevron.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
screenshots/variant-chevron_colors-cyan-magenta.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
screenshots/variant-chevron_colors-green-red.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
screenshots/variant-chevron_colors-high-contrast.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
screenshots/variant-round.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
screenshots/variant-slant.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
screenshots/variant-text.png
Normal file
|
After Width: | Height: | Size: 26 KiB |