Documentation - Introduction, installation, main configuration
This commit is contained in:
parent
fe7ab5772a
commit
abac27c0dd
1 changed files with 116 additions and 0 deletions
116
README.md
Normal file
116
README.md
Normal file
|
@ -0,0 +1,116 @@
|
|||
GPrompt - useless gimmicky prompt for Bash on Linux
|
||||
====================================================
|
||||
|
||||
GPrompt (short for GadgetoPrompt) is a gimmicky Bash prompt generator
|
||||
that displays sort-of-useful information. It only works on Linux because
|
||||
that's what I use. It adapts to the terminal's width, showing or hiding
|
||||
information depending on the conditions.
|
||||
|
||||
## Features
|
||||
|
||||
GPrompt prompts may consist in one or two lines. The top line is separated
|
||||
in three areas (left, midddle and right), while the second line (the "input"
|
||||
line, where the cursor is) only has a single, left-aligned area. Each area
|
||||
may be configured to display information from one of the generators. In
|
||||
addition, the script may be configured to generate a terminal title and/or
|
||||
terminal icon title.
|
||||
|
||||
## Installing GPrompt
|
||||
|
||||
GPrompt may be installed either at the system level or on a per-user basis.
|
||||
|
||||
### User installation
|
||||
|
||||
* Copy the script and associated themes to your home directory.
|
||||
|
||||
mkdir -p ~/.local/share/gprompt/themes
|
||||
cp gprompt.pl ~/.local/share/gprompt
|
||||
cp themes/* ~/.local/share/gprompt/themes
|
||||
|
||||
* Add the following line to your `~/.bashrc`:
|
||||
|
||||
`export PROMPT_COMMAND='eval "$($HOME/.local/share/gprompt/gprompt.pl $?)"'`
|
||||
|
||||
### System-wide installation
|
||||
|
||||
* In the case of a system-wide installation, the script and associated themes
|
||||
must be copied to some shared location, e.g.
|
||||
|
||||
mkdir -p /usr/share/gprompt/themes
|
||||
cp -R gprompt.pl themes/ /usr/share/gprompt
|
||||
|
||||
* Users may then use GPrompt by adding the following line to their `~/.bashrc`
|
||||
files (it could also be added to `/etc/skel/.bashrc`) :
|
||||
|
||||
`export PROMPT_COMMAND='eval "$(/usr/share/gprompt/gprompt.pl $?)"'`
|
||||
|
||||
## Configuration
|
||||
|
||||
GPrompt comes with a minimal (...-ish, this is a gadget after all)
|
||||
configuration that will work out of the box. However, it can be customised
|
||||
using both a system-wide configuration file and a per-user configuration file.
|
||||
Values set in a configuration files override values that were previously
|
||||
loaded, so it is possible to have a system-wide configuration that replaces
|
||||
most of the defaults and a per-user configuration that only overrides a few of
|
||||
the system-wide options. In addition, if the option is enabled from the
|
||||
configuration files, it is possible to override settings using environment
|
||||
variables.
|
||||
|
||||
The GPrompt configuration is a Perl hash reference, so the general syntax of
|
||||
the file goes something like this:
|
||||
|
||||
{
|
||||
'some_key' => 'some_value' ,
|
||||
'other_key' => [ 'list entry 1' , 'list entry 2' ] ,
|
||||
}
|
||||
|
||||
In order to override a configuration entry using an environment variable,
|
||||
the variable must be named `GPROMPT_` followed by the uppercase name of
|
||||
the configuration entry. If the configuration expects a list for the
|
||||
value in question, the value of the environment variable will be split using
|
||||
the comma character. If a table is expected, keys and values are expected
|
||||
to be separated by a colon.
|
||||
|
||||
export GPROMPT_LAYOUT_RIGHT=git,load
|
||||
export GPROMPT_LAYOUT_THEME_OVERRIDES=bg_left:230,bg_right:230
|
||||
|
||||
### Main configuration
|
||||
|
||||
The following variables control the configuration itself:
|
||||
|
||||
* `cfg_warn_files` indicates that the script should emit warnings when a file
|
||||
(configuration or theme) cannot be loaded due to some error (`0` or `1`,
|
||||
default `1`).
|
||||
* `cfg_from_env` disables or enables configuration overrides from environment
|
||||
variables (`0` or `1`, default `0`).
|
||||
* `cfg_sys_themes` must list system-wide directories which may contain GPrompt
|
||||
themes (list; default `/usr/share/gprompt/themes`).
|
||||
* `cfg_user_themes` lists directories relative to the user's home which may
|
||||
contain GPrompt themes (list; default `.local/share/gprompt/themes` and
|
||||
`.gprompt-themes`).
|
||||
|
||||
The `layout_*` variables control the prompt's layout and general appearance:
|
||||
|
||||
* `layout_theme` is the name of the theme to use. The default theme will be used
|
||||
if it contains an empty string.
|
||||
* `layout_theme_overrides` may contain local overrides to the theme's contents
|
||||
(table, empty by default).
|
||||
* `layout_left`, `layout_middle`, `layout_right` and `layout_input` configure
|
||||
the generators that will provide the contents of the top left, top center,
|
||||
top right and bottom left sections of the prompt. All 4 variables are lists
|
||||
of generator names; by default, the top bar is empty (the script does not
|
||||
render it) and the input prompt only uses the `userhost` and `cwd` generators,
|
||||
emulating a rather basic `\u@\h:\w` prompt.
|
||||
* `layout_input_always` determines whether the input line should be rendered
|
||||
even if no generators are specified (`0` or `1`, default `0`).
|
||||
|
||||
The `term_*` variables control the prompt's ability to change the terminal's
|
||||
title and/or icon title:
|
||||
|
||||
* `term_set_title` controls whether the title or icon title of the terminal
|
||||
should be changed. Possible values are `0` (no update), `1` (title), `2`
|
||||
(icon title), and `3` (both). By default, only the title is updated.
|
||||
* `term_generators` contains the list of generators that will produce the title
|
||||
string (unicode characters in the generators' output will be removed).
|
||||
* `term_separator` is a string that will be inserted between the various parts
|
||||
of the string.
|
Loading…
Reference in a new issue