1
0
mirror of https://gitlab.com/ceda_ei/wish synced 2025-12-03 20:40:08 +01:00

5 Commits

Author SHA1 Message Date
11ad2e081f Update image link in README 2020-01-17 03:38:04 +05:30
1db62a7be8 Update README 2020-01-17 03:30:13 +05:30
e05f37b5b9 Merge branch 'config-file' of ceda/Wish into master
Wish is now configured by a config file (although WISH_PLUGINS and
WISH_RIGHT_PLUGINS are still used as a fallback if no config file is
found. This way old setups won't break). Config file allows for higher
customization and re-use of plugins and is easier to maintain for
users. Add gINIe parser to Wish. Parse a gINIe config file for wish
config. Wrappers around plugins are created to allow re-use with
multiple configs and themes.
2019-12-31 13:41:47 +05:30
c53939cdfe Subtract length of powerline symbols from prompt length max length. 2019-12-31 11:25:55 +05:30
48ff98764d [Feature] Allow WISH_VCS_DEFAULT to be empty 2019-12-29 22:26:08 +05:30
3 changed files with 81 additions and 8 deletions

View File

@@ -12,13 +12,86 @@ A customizable bash prompt.
+ `cd ~/.config/` + `cd ~/.config/`
+ `git clone https://gitlab.com/ceda_ei/wish.git` + `git clone https://gitlab.com/ceda_ei/wish.git`
+ Add the following lines to ~/.bashrc + `cp wish/config.default.gie wish/config.gie`
# Customization
Customization of wish is done using a gINIe file (format specific to wish)
which is an extended INI config file. The default location for config file is
`~/.config/wish/config.gie`. The default config file is automatically copied
over. The location can be customized using `WISH_CONFIG_FILE` variable.
Multiple config files can be supplied as an array to `WISH_CONFIG_FILE`.
Comments start with a `#` or `;` and always exist on a line of their own.
Key value pairs are in the form of `key = value`. Keys cannot have whitespaces
or `=` in them. Values can have any character as part of them. Surrounding
spaces in values are stripped away. To keep surrounding spaces as a part of
the value. Although, keys are case-sensitive in gINIe, wish treats them case-
insensitively.
Block names are enclosed in `[]` (e.g. `[core]`). Block names are case
sensitive. All key value pairs after a block starts and before the next block
begins are considered a part of that block. All key value pairs must be in a
block.
Available Blocks:
+ `core`: Core block configures Wish itself. Available keys are:
- `auto_newline`: Automatically add a newline if last line of output
doesn't end in newline. (0 to disable, 1 to enable)
- `theme`: Wish theme.
- `powerline`: Enable / Disable powerline. (0 to disable, 1 to enable)
+ `plugin`: Adds a plugin to the section the block is added to. All config for
that plugin goes there. Check wiki for details on available keys for
plugins. The key "name" defines the plugin to use. Plugin blocks
outside a section are ignored.
Section names are enclosed in `||` (e.g. `|left|`). All blocks after a section
starts and before the next section begins are considered a part of that
section. Blocks don't necessarily need to be in a section.
Available sections are `left`, `right` for left prompt and right prompt
respectively.
Sample config file
```bash
WISH_PLUGINS=(exit_code_smiley bg_jobs date path newline vcs)
WISH_THEME=plain
source ~/.config/wish/wish.sh
``` ```
[core]
auto_newline = 1
powerline = 1
theme = rgb_gradient
|left|
[plugin]
name = path_powerline
max_perc = 50
[plugin]
name = python_venv
[plugin]
name = newline
[plugin]
name = custom_text
text = ' λ '
[plugin]
name = space
|right|
[plugin]
name = date
format = %a %b %H:%M
[plugin]
name = hostname
```
which results in the following prompt
![](https://i.imgur.com/mhM83iL.png)
# Wiki # Wiki

View File

@@ -24,7 +24,7 @@ function wish_path_lensum() {
function wish_path_powerline_shrink() { function wish_path_powerline_shrink() {
local IFS='/' local IFS='/'
local path=( $1 ) local path=( $1 )
local max=$2 local max=$(( $2 - 3 * ${#path[@]} ))
for ((i=0; i <$((${#path[@]} - 1)); i++)); do for ((i=0; i <$((${#path[@]} - 1)); i++)); do
path[$i]=${path[$i]:0:1} path[$i]=${path[$i]:0:1}
if [[ $(wish_path_lensum ${path[@]}) -lt $max ]]; then if [[ $(wish_path_lensum ${path[@]}) -lt $max ]]; then

View File

@@ -10,7 +10,7 @@ function wish_vcs_set_colors() {
WISH_VCS_FG=${WISH_VCS_FG:-$WISH_DEFAULT_FG} WISH_VCS_FG=${WISH_VCS_FG:-$WISH_DEFAULT_FG}
WISH_VCS_BG=${WISH_VCS_BG:-$WISH_DEFAULT_BG} WISH_VCS_BG=${WISH_VCS_BG:-$WISH_DEFAULT_BG}
WISH_VCS_GIT_SYMBOL=${WISH_VCS_GIT:-} WISH_VCS_GIT_SYMBOL=${WISH_VCS_GIT:-}
WISH_VCS_DEFAULT=${WISH_VCS_DEFAULT:-$} [[ -v WISH_VCS_DEFAULT ]] || WISH_VCS_DEFAULT="$"
WISH_VCS_GIT_UNTRACKED_SYMBOL=${WISH_VCS_GIT_UNTRACKED_SYMBOL:-} WISH_VCS_GIT_UNTRACKED_SYMBOL=${WISH_VCS_GIT_UNTRACKED_SYMBOL:-}
} }
@@ -32,7 +32,7 @@ function wish_vcs_main() {
fi fi
wish_append $WISH_VCS_BG $WISH_VCS_FG "$git" wish_append $WISH_VCS_BG $WISH_VCS_FG "$git"
else else
wish_append $WISH_VCS_BG $WISH_VCS_FG " $WISH_VCS_DEFAULT " wish_append $WISH_VCS_BG $WISH_VCS_FG "$WISH_VCS_DEFAULT"
fi fi
} }