Compare commits

...
Sign in to create a new pull request.

11 commits

Author SHA1 Message Date
a3de748347 fix(hostname): handle background color when failed 2025-01-11 20:50:14 +01:00
da773f822c feat(env): display env name before contents
Remove container duplicate.
2025-01-11 20:49:33 +01:00
9fb90f451e fix(hostname): was sometimes showing the username 2025-01-11 20:32:10 +01:00
steelman
afc9e26765 fix: change scope of _lp_jolly_make_env_inline_right
Make it visible outside of _lp_dotmatrix_make_env,
as its left counterpart.
2025-01-07 16:53:25 +01:00
Ludovic Rousseau
0c92a648ce
Some patches for README.md (#4)
doc(README): fix typos and deprecated features

- LP_ENABLE_VCS_DIFFSTATS no more exist and is not documented.
- Remove LP_ENABLE_UNCOMMITED.
2025-01-07 16:47:52 +01:00
3aaf5fa592 doc: more screenshots in design 2024-04-01 14:32:13 +02:00
ad41163634 doc: link to LP + screenshot 2024-04-01 14:23:39 +02:00
721554725d refactor: better emblem 2024-04-01 14:18:08 +02:00
5d8f9926b0 doc: add Jolly's emblem 2024-04-01 12:11:29 +02:00
194996ce45 refactor!: rename theme as "jolly"
BREAKING CHANGE: all configuration variables are renamed as `JOLLY_*` instead of `DOTMATRIX_*`.
2024-04-01 11:04:43 +02:00
8bbf831de9 doc(design): more on design.
- Move design sketches in /docs/
2024-03-23 13:25:40 +01:00
17 changed files with 4509 additions and 1650 deletions

View file

@ -1,6 +1,6 @@
LP ?= /home/nojhan/code/liquidprompt
HEIGHT := 450
THEME := dotmatrix dotmatrix.theme
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)

184
README.md
View file

@ -1,19 +1,22 @@
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,
that will completely changes the way you imagine the prompt.
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.
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.
![A ship with black sails, three of which are printed with the symbols "~", "$", and ">"; going out of a circling boat wheel with sun rays in her back; and navigating a blue wave with froth going over a banner that reads "Liquid Prompt". A large black flag is attached to the front shroud, showing a skull and two crossed bones, on top of a legend reading "jolly roger".](docs/jolly_emblem.svg)
Preview
-------
@ -21,7 +24,7 @@ Using the (recommended) "chevron" preset:
![](screenshots/variant-chevron.png)
The DotMatrix theme also comes as several variants, changing the shape of the segments separators,
The Jolly theme also comes as several variants, changing the shape of the segments separators,
like the "slant" variant:
![](screenshots/variant-slant.png)
@ -32,7 +35,7 @@ Design
### 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:
* only four colors: dark grey, white, blue and yellow (different color pairs are available as presets for people having blue-yellow colorblindess).
@ -60,7 +63,7 @@ The prompt itself is designed in three lines:
### 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:
- 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).
![](screenshots/variant-chevron.png)
@ -73,18 +76,18 @@ for the default login user ("", a figure), on localhost ("", an island), i
### 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
![](liquidprompt_dotmatrix_design.png)
![](liquidprompt_jolly_design.png)
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
-----
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:
```sh
@ -92,14 +95,14 @@ For example:
# Load Liquid Prompt.
source ~/liquidprompt/liquidprompt
# Configure the desired variant (or colors, etc.).
source ~/lp-dotmatrix/presets/variant-chevron.conf
source ~/lp-jolly/presets/variant-chevron.conf
# 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.
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.
@ -129,7 +132,7 @@ Variants needing a Nerd-fonts font:
Variants available with a regular font:
- "dotmatrix" (the default):
- "jolly" (the default):
![](screenshots/variant-dots.png)
@ -143,14 +146,12 @@ 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.
The following options are honored:
- [`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_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),
@ -173,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
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:
- `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-round.conf" (need a Nerd-fonts font),
- `source presets/variant-text.conf" (the one that works anywhere).
- `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-round.conf` (need a Nerd-fonts font),
- `source presets/variant-text.conf` (the one that works anywhere).
A second set changes the colors:
@ -190,7 +191,7 @@ A second set changes the colors:
#### High-level
**DOTMATRIX_SPACED** *boolean = 1*
**JOLLY_SPACED** *boolean = 1*
If set to false, this flag will configure a compact prompt,
showing segments without extra spaces around their joints.
@ -198,85 +199,85 @@ showing segments without extra spaces around their joints.
#### 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.
**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.
**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.
**DOTMATRIX_VCS_REMOTE_ORIGIN** *string* = "🖈"
**JOLLY_VCS_REMOTE_ORIGIN** *string* = "🖈"
String used as a shorten VCS remote name, if it is "origin".
**DOTMATRIX_DETACHED_THRESHOLD** *integer = 3*
**JOLLY_DETACHED_THRESHOLD** *integer = 3*
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.
**DOTMATRIX_STOPPED_THRESHOLD** *integer = 3*
**JOLLY_STOPPED_THRESHOLD** *integer = 3*
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.
**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.
**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.
**DOTMATRIX_ENABLE_HISTORY** *boolean = 1*
**JOLLY_ENABLE_HISTORY** *boolean = 1*
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.
**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.
**DOTMATRIX_ENABLE_SHELL** *boolean = 0*
**JOLLY_ENABLE_SHELL** *boolean = 0*
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.
**DOTMATRIX_SHELL_BASH** *string = "b"*
**JOLLY_SHELL_BASH** *string = "b"*
The mark indicating a *bash* shell.
@ -285,72 +286,72 @@ The mark indicating a *bash* shell.
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,
i.e. that does not have a graphical display
(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
(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`.
**DOTMATRIX_USER_LOCAL** *string = "♟"*
**JOLLY_USER_LOCAL** *string = "♟"*
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.
**DOTMATRIX_MARK_UNTRACKED** *string = "?"*
**JOLLY_MARK_UNTRACKED** *string = "?"*
The marker used to indicate that there are some files that are untracked
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
(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.
**DOTMATRIX_MARK** *string = "⯀"*
**JOLLY_MARK** *string = "⯀"*
The actual prompt marker, right where the user type text.
**DOTMATRIX_MARK_SUDO** *string = "⋮"*
**JOLLY_MARK_SUDO** *string = "⋮"*
An additional character displayed before the last prompt mark
when the user has sudo rights.
**DOTMATRIX_ENABLE_GRADIENT_LINE** *boolean = 0*
**JOLLY_ENABLE_GRADIENT_LINE** *boolean = 0*
If set to 0 (the default), will draw the line of the middle section
as a sequence of `DOTMATRIX_LINE` characters,
using the `DOTMATRIX_COLOR_LINE` color.
as a sequence of `JOLLY_LINE` characters,
using the `JOLLY_COLOR_LINE` color.
If set to 1, will draw the same line with a gradient of color
interpolated from `DOTMATRIX_COLOR_LINE_START`
to `DOTMATRIX_COLOR_LINE_END`.
interpolated from `JOLLY_COLOR_LINE_START`
to `JOLLY_COLOR_LINE_END`.
**DOTMATRIX_MARK_ERROR** *string = " "*
**JOLLY_MARK_ERROR** *string = " "*
Icon displayed in front of the last exit error code.
@ -360,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.
You may overcome them with your own configuration.
**DOTMATRIX_LINE** *string = "━"*
**JOLLY_LINE** *string = "━"*
The character used to draw the middle line.
**DOTMATRIX_PLUG** *string = "▛"*
**JOLLY_PLUG** *string = "▛"*
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.)
**DOTMATRIX_MEAN** *string = "▞"*
**JOLLY_MEAN** *string = "▞"*
The character for "mean" separation
(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.
**DOTMATRIX_OPEN** *array<string> = ("▙" " ▚ " "▜")*
**JOLLY_OPEN** *array<string> = ("▙" " ▚ " "▜")*
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).
**DOTMATRIX_ENDS** *array<string> = ("▛▞▗ ▝" "▖ ▘▞▟")*
**JOLLY_ENDS** *array<string> = ("▛▞▗ ▝" "▖ ▘▞▟")*
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.
The middle character separates keywords of the same type (e.g. every Software Collection).
@ -411,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.
**DOTMATRIX_SPACE_VOID** *string = " "*
**JOLLY_SPACE_VOID** *string = " "*
Spacing character around segments joints marker.
**DOTMATRIX_SPACE_PATH** *string = " "*
**JOLLY_SPACE_PATH** *string = " "*
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.
**DOTMATRIX_SPACE_LINE** *string = " "*
**JOLLY_SPACE_LINE** *string = " "*
Spacing character around the keywords of the middle line.
**DOTMATRIX_SPACE_FILL** *string = "█"*
**JOLLY_SPACE_FILL** *string = "█"*
Spacing character for filled sections.
You probably don't want to touch this.
@ -440,91 +441,94 @@ You probably don't want to touch this.
#### 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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
**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.
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)
**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.
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).

View file

@ -1,8 +1,6 @@
# Introduction
This article is made of two main sections: generic design principles,
and Jolly's design principles.
@ -15,8 +13,8 @@ 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.
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.
@ -29,7 +27,7 @@ The prompt is this string of characters displayed right in front of the line whe
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.
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.
@ -89,7 +87,7 @@ be obvious to the user, depending on their location on the screen and/or their s
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 character will blend.
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.
@ -125,9 +123,6 @@ always be considered important, as they may drastically alter the workflow of th
> while the others are in background-colored sections.
## Seamless
## Scoped
States that are measured and not directly changed by the user should be hidden by default.
@ -135,6 +130,7 @@ 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
@ -150,23 +146,116 @@ States that rarely change or evolve slowly are less important.
## Configurable
Each aspect of theming should have a related configurable variable.
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
## Proximity
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.
![](../screenshots/variant-chevron.png)
## Sectioning
## Accessibility
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.
![](../screenshots/variant-round.png)
## Semantic Spaces
## 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).
![](../screenshots/git_commits.png)
## 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.
![](../screenshots/variant-chevron_colors-cyan-magenta.png)
## 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 399 KiB

View file

@ -8,9 +8,9 @@
width="793.66663"
height="725.40625"
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: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-ydpi="123.86"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
@ -41,7 +41,7 @@
inkscape:current-layer="g12" /><g
id="g8"
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
id="g10"><g
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"
y="0"
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"
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
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"
y="0"
sodipodi:role="line"
id="tspan1776">dotmatrix </tspan></text></g><g
id="tspan1776">jolly </tspan></text></g><g
id="g1780"><text
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"
@ -2464,7 +2464,7 @@
x="0 4.8000002 9.6000004 14.4 19.200001 24 28.799999 33.695999 38.495998"
y="0"
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"
style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path1930" /><g

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Before After
Before After

File diff suppressed because it is too large Load diff

1421
jolly.theme Normal file

File diff suppressed because it is too large Load diff

View file

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Before After
Before After

View file

@ -4,23 +4,23 @@ li=75
fa=27
# Color arrays defaults: fg bg b u ffg fbg
DOTMATRIX_COLOR_DARK=( 153 $da 0 0 15 0)
DOTMATRIX_COLOR_LITE=( 21 $li 0 0 0 15)
DOTMATRIX_COLOR_GLOW=( 0 $li 0 0 0 15)
DOTMATRIX_COLOR_NOTE=( 15 24 1 0 15 4)
DOTMATRIX_COLOR_WARN=( 0 135 1 0 9 11)
DOTMATRIX_COLOR_FAIR=( 0 $li 1 0 0 8)
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)
DOTMATRIX_COLOR_PATH_SHORT=( 15 $da 0 0 0 15)
DOTMATRIX_COLOR_PATH_VCS=( 15 $da 0 1 0 15)
DOTMATRIX_COLOR_PATH_LAST=( 15 $da 1 0 0 15)
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)
DOTMATRIX_COLOR_LINE=($fa -1 0 0 7 -1)
DOTMATRIX_COLOR_LINE_START=($fa -1 1 0 7 -1)
DOTMATRIX_COLOR_LINE_END=( $fa -1 1 0 7 -1)
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)
DOTMATRIX_COLOR_MARK=(15 -1 0 0 15 -1)
DOTMATRIX_COLOR_SEP_DARK=( 0 -2 0 0 15 -2)
DOTMATRIX_COLOR_SEP_FAIR=( 0 -2 0 0 0 -2)
DOTMATRIX_COLOR_SEP_LITE=( $li -2 0 0 15 -2)
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)

View file

@ -1,4 +1,4 @@
DOTMATRIX_COLOR_NOTE=( 15 30 0 0 15 2)
DOTMATRIX_COLOR_WARN=(231 128 1 0 0 9)
JOLLY_COLOR_NOTE=( 15 30 0 0 15 2)
JOLLY_COLOR_WARN=(231 128 1 0 0 9)

View file

@ -1,4 +1,4 @@
DOTMATRIX_COLOR_NOTE=( 15 28 0 0 15 2)
DOTMATRIX_COLOR_WARN=(220 160 1 0 0 9)
JOLLY_COLOR_NOTE=( 15 28 0 0 15 2)
JOLLY_COLOR_WARN=(220 160 1 0 0 9)

View file

@ -3,23 +3,23 @@ da=238
li=254
# Color arrays defaults: fg bg b u ffg fbg
DOTMATRIX_COLOR_DARK=( $li $da 0 0 15 0)
DOTMATRIX_COLOR_LITE=( $da $li 0 0 0 15)
DOTMATRIX_COLOR_GLOW=( 0 $li 0 0 0 15)
DOTMATRIX_COLOR_NOTE=( 0 27 1 1 15 4)
DOTMATRIX_COLOR_WARN=( 88 220 1 1 9 11)
DOTMATRIX_COLOR_FAIR=( 0 $li 1 0 0 8)
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)
DOTMATRIX_COLOR_PATH_SHORT=( 15 $da 0 0 0 15)
DOTMATRIX_COLOR_PATH_VCS=( 15 $da 0 1 0 15)
DOTMATRIX_COLOR_PATH_LAST=( 15 $da 1 0 0 15)
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)
DOTMATRIX_COLOR_LINE=(247 -1 0 0 7 -1)
DOTMATRIX_COLOR_LINE_START=(247 -1 1 0 7 -1)
DOTMATRIX_COLOR_LINE_END=( 247 -1 1 0 7 -1)
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)
DOTMATRIX_COLOR_MARK=(15 -1 0 0 15 -1)
DOTMATRIX_COLOR_SEP_DARK=( 15 -2 0 0 15 -2)
DOTMATRIX_COLOR_SEP_FAIR=( 0 -2 0 0 0 -2)
DOTMATRIX_COLOR_SEP_LITE=( 0 -2 0 0 15 -2)
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)

View file

@ -1,26 +1,26 @@
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
JOLLY_SPACED=${JOLLY_SPACED:-1}
# Powerline chevron theme
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
DOTMATRIX_MARK_SUDO=${DOTMATRIX_MARK_SUDO:-"⁘"} # ⁘ 🞙
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-""}
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-""}
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
JOLLY_VCS=${JOLLY_VCS:-""}
JOLLY_MARK=${JOLLY_MARK:-""}
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"⁘"} # ⁘ 🞙
JOLLY_LINE=${JOLLY_LINE:-"━"}
JOLLY_PLUG=${JOLLY_PLUG:-""}
JOLLY_SOFT=${JOLLY_SOFT:-""}
JOLLY_MEAN=${JOLLY_MEAN:-""}
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("" "" "")
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "")
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("" "" "")
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("" "" "")
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" "" "")
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("" "" "")
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "")
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("" "" "")
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("" "" "")
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" "" "")
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")

View file

@ -1,26 +1,26 @@
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
JOLLY_SPACED=${JOLLY_SPACED:-1}
# Powerline round theme
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
DOTMATRIX_MARK_SUDO=${DOTMATRIX_MARK_SUDO:-"⚬"} # ⁘ ⚬ 🞙
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-""}
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-""}
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
JOLLY_VCS=${JOLLY_VCS:-""}
JOLLY_MARK=${JOLLY_MARK:-""}
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"⚬"} # ⁘ ⚬ 🞙
JOLLY_LINE=${JOLLY_LINE:-"━"}
JOLLY_PLUG=${JOLLY_PLUG:-""}
JOLLY_SOFT=${JOLLY_SOFT:-""}
JOLLY_MEAN=${JOLLY_MEAN:-""}
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("█" "" "")
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "█")
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("█" "" "")
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("█" "" "")
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" "" "")
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("█" "" "")
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "█")
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("█" "" "")
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("█" "" "")
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" "" "")
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")

View file

@ -1,25 +1,25 @@
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-1}
JOLLY_SPACED=${JOLLY_SPACED:-1}
# Powerline slanted theme
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-""}
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-""}
DOTMATRIX_VCS=${DOTMATRIX_VCS:-""}
DOTMATRIX_MARK=${DOTMATRIX_MARK:-""}
DOTMATRIX_MARK_SUDO=${DOTMATRIX_MARK_SUDO:-"🞙"} # ⁘ ⚬ 🞙
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-""}
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-""}
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-" "}
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("" "" " ")
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("" "" "")
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("" "" " ")
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("" " " " ")
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("" " " " ")
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("" "┃" "")
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-""}
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-""}
JOLLY_VCS=${JOLLY_VCS:-""}
JOLLY_MARK=${JOLLY_MARK:-""}
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"🞙"} # ⁘ ⚬ 🞙
JOLLY_LINE=${JOLLY_LINE:-"━"}
JOLLY_PLUG=${JOLLY_PLUG:-""}
JOLLY_SOFT=${JOLLY_SOFT:-""}
JOLLY_MEAN=${JOLLY_MEAN:-" "}
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("" "" " ")
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("" "" "")
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("" "" " ")
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("" " " " ")
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("" " " " ")
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("" "┃" "")

View file

@ -1,27 +1,26 @@
DOTMATRIX_SPACED=${DOTMATRIX_SPACED:-0}
JOLLY_SPACED=${JOLLY_SPACED:-0}
# Dotmatrix theme
DOTMATRIX_HOST_LOCAL=${DOTMATRIX_HOST_LOCAL:-"lcl"}
DOTMATRIX_USER_LOCAL=${DOTMATRIX_USER_LOCAL:-"me"}
DOTMATRIX_VCS=${DOTMATRIX_VCS:-"VCS"}
DOTMATRIX_MARK=${DOTMATRIX_MARK:-">"}
DOTMATRIX_MARK_SUDO=${DOTMATRIX_MARK_SUDO:-"!"}
DOTMATRIX_LINE=${DOTMATRIX_LINE:-"━"}
DOTMATRIX_PLUG=${DOTMATRIX_PLUG:-"▌"}
DOTMATRIX_SOFT=${DOTMATRIX_SOFT:-""}
DOTMATRIX_MEAN=${DOTMATRIX_MEAN:-"┃"}
JOLLY_HOST_LOCAL=${JOLLY_HOST_LOCAL:-"lcl"}
JOLLY_USER_LOCAL=${JOLLY_USER_LOCAL:-"me"}
JOLLY_VCS=${JOLLY_VCS:-"VCS"}
JOLLY_MARK=${JOLLY_MARK:-">"}
JOLLY_MARK_SUDO=${JOLLY_MARK_SUDO:-"!"}
JOLLY_LINE=${JOLLY_LINE:-"━"}
JOLLY_PLUG=${JOLLY_PLUG:-"▌"}
JOLLY_SOFT=${JOLLY_SOFT:-""}
JOLLY_MEAN=${JOLLY_MEAN:-"┃"}
# Separator arrays (left center right)
DOTMATRIX_LINK=( ${DOTMATRIX_LINK[@]+"${DOTMATRIX_LINK[@]}"} )
[[ ${#DOTMATRIX_LINK[@]} == 0 ]] && DOTMATRIX_LINK=("▌" "<" "▐")
DOTMATRIX_LINK_R=( ${DOTMATRIX_LINK_R[@]+"${DOTMATRIX_LINK_R[@]}"} )
[[ ${#DOTMATRIX_LINK_R[@]} == 0 ]] && DOTMATRIX_LINK_R=("▌" ">" "▐")
DOTMATRIX_OPEN=( ${DOTMATRIX_OPEN[@]+"${DOTMATRIX_OPEN[@]}"} )
[[ ${#DOTMATRIX_OPEN[@]} == 0 ]] && DOTMATRIX_OPEN=("▌" "<<" "▐")
DOTMATRIX_DANG=( ${DOTMATRIX_DANG[@]+"${DOTMATRIX_DANG[@]}"} )
[[ ${#DOTMATRIX_DANG[@]} == 0 ]] && DOTMATRIX_DANG=("▌" "<<<" "▐")
DOTMATRIX_ENDS=( ${DOTMATRIX_ENDS[@]+"${DOTMATRIX_ENDS[@]}"} )
[[ ${#DOTMATRIX_ENDS[@]} == 0 ]] && DOTMATRIX_ENDS=("▌" "···" "···▐")
DOTMATRIX_ITEMS=( ${DOTMATRIX_ITEMS[@]+"${DOTMATRIX_ITEMS[@]}"} )
[[ ${#DOTMATRIX_ITEMS[@]} == 0 ]] && DOTMATRIX_ITEMS=("┫" "┃" "┣")
JOLLY_LINK=( ${JOLLY_LINK[@]+"${JOLLY_LINK[@]}"} )
[[ ${#JOLLY_LINK[@]} == 0 ]] && JOLLY_LINK=("▌" "<" "▐")
JOLLY_LINK_R=( ${JOLLY_LINK_R[@]+"${JOLLY_LINK_R[@]}"} )
[[ ${#JOLLY_LINK_R[@]} == 0 ]] && JOLLY_LINK_R=("▌" ">" "▐")
JOLLY_OPEN=( ${JOLLY_OPEN[@]+"${JOLLY_OPEN[@]}"} )
[[ ${#JOLLY_OPEN[@]} == 0 ]] && JOLLY_OPEN=("▌" "<<" "▐")
JOLLY_DANG=( ${JOLLY_DANG[@]+"${JOLLY_DANG[@]}"} )
[[ ${#JOLLY_DANG[@]} == 0 ]] && JOLLY_DANG=("▌" "<<<" "▐")
JOLLY_ENDS=( ${JOLLY_ENDS[@]+"${JOLLY_ENDS[@]}"} )
[[ ${#JOLLY_ENDS[@]} == 0 ]] && JOLLY_ENDS=("▌" "···" "···▐")
JOLLY_ITEMS=( ${JOLLY_ITEMS[@]+"${JOLLY_ITEMS[@]}"} )
[[ ${#JOLLY_ITEMS[@]} == 0 ]] && JOLLY_ITEMS=("┫" "┃" "┣")