{"id":13592828,"url":"https://github.com/nojhan/lp-jolly","last_synced_at":"2025-10-29T19:30:27.179Z","repository":{"id":139819408,"uuid":"546872072","full_name":"nojhan/lp-jolly","owner":"nojhan","description":"A carefully designed theme for Liquid Prompt, that will change the way you think about your prompt.","archived":false,"fork":false,"pushed_at":"2025-01-11T20:39:21.000Z","size":855,"stargazers_count":9,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-02T04:24:36.833Z","etag":null,"topics":["bash","liquidprompt","liquidprompt-theme","prompt","prompt-toolkit","prompt-tuning","shell","zsh"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nojhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-06T19:39:20.000Z","updated_at":"2025-01-11T20:39:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"d6b6faa0-06e1-416f-ad28-ae31e139081a","html_url":"https://github.com/nojhan/lp-jolly","commit_stats":null,"previous_names":["nojhan/lp-jolly"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nojhan%2Flp-jolly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nojhan%2Flp-jolly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nojhan%2Flp-jolly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nojhan%2Flp-jolly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nojhan","download_url":"https://codeload.github.com/nojhan/lp-jolly/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238874405,"owners_count":19545184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","liquidprompt","liquidprompt-theme","prompt","prompt-toolkit","prompt-tuning","shell","zsh"],"created_at":"2024-08-01T16:01:13.679Z","updated_at":"2025-10-29T19:30:21.676Z","avatar_url":"https://github.com/nojhan.png","language":"Makefile","funding_links":[],"categories":["Makefile"],"sub_categories":[],"readme":"Jolly — A Liquid Prompt Theme\n=================================\n\nJolly is a theme for [Liquid Prompt](https://github.com/nojhan/liquidprompt).\n\nIt is an original prompt design, very carefully designed,\nthat will completely changes the way you imagine the prompt.\n\nIt is focused on *improving the user experience*,\nby vastly improving the ability of the user to immediately spot\nwhat she should do following her system's state changes.\n\nHas such, you may find it a little bit disconcerting at first.\nBut we believe that the advantages of this design makes it worth the effort.\n\n\n![A ship with black sails, three of which are printed with the symbols \"~\", \"$\", and \"\u003e\"; 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)\n\n\nPreview\n-------\n\nUsing the (recommended) \"chevron\" preset:\n\n![](screenshots/variant-chevron.png)\n\nThe Jolly theme also comes as several variants, changing the shape of the segments separators,\nlike the \"slant\" variant:\n\n![](screenshots/variant-slant.png)\n\n\nDesign\n------\n\n### Rationale\n\nThe Jolly theme use a couple of design principles:\n\n* It is accessible to colorblind people, hence it uses:\n    * only four colors: dark grey, white, blue and yellow (different color pairs are available as presets for people having blue-yellow colorblindess).\n    * At least a text item for each segment,\n    * or a blank space between segments.\n* The blue colors means that the user is probably expected to perform some task.\n* The yellow color carries an error or something of concern.\n* Segments for \"default\" state are joined with graphical symbols that reads from right to left,\n  in a way that makes sense.\n* It uses three ways to carry information about the state of the system:\n    * Important states are denoted by text.\n    * Ancillary states can be shown with a single character/icon.\n    * States appearing from a user action can be shown by \"detaching\" two segments usually joined.\n      By default, this added space is shown as having a right-to-left direction.\n\nThe prompt itself is designed in three lines:\n\n- The first line shows the state of the shell itself (type of graphical server, remote connection, user, host, path, etc.) on the left,\n  and optional sensors states on the right (temperature, jobs, time, etc.).\n- The second line displays whatever keywords have a meaning in the context (virtual environments, software collections, etc.).\n- The third line indicates the relationships toward extern services (internet, VCS) and immediate status (runtime, error code).\n  This is also where the actual prompt is.\n\n\n### Example\n\nFor instance, in the following prompt, you can see that the user is in a Git repository and has some action waiting to be done:\n- the rightmost blue \"≠\" indicates that there are some modifications waiting to be committed (hence the directional hint, from a diff to the branch).\n- 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).\n\n![](screenshots/variant-chevron.png)\n\nThe screenshot also shows that the last command ended in an error, hence the red-over-yellow error code.\n\nThe upper section shows a classical state of the prompt: a shell within a graphical server (\"X\"),\nfor the default login user (\"\", a figure), on localhost (\"\", an island), in the liquidprompt directory, which is underlined because it is also a VCS repository.\n\n\n### Full description\n\nThe following diagram shows almost all the possible states of a Jolly Liquid Prompt\n\n![](liquidprompt_jolly_design.png)\n\nThe 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).\n\n\n\nSetup\n-----\n\nTo actually use the Jolly theme, you need to add a few configuration commands to the script that loads Liquid Prompt.\nFor example:\n\n```sh\n\n   # Load Liquid Prompt.\n   source ~/liquidprompt/liquidprompt\n   # Configure the desired variant (or colors, etc.).\n   source ~/lp-jolly/presets/variant-chevron.conf\n   # Load the theme.\n   source ~/lp-jolly/jolly.theme \u0026\u0026 lp_theme jolly\n```\n\nNOTE: The recommended segment markers (the \"chevron\" variant) uses characters in the private section of Unicode\nthat are defined by the \"Nerd-fonts\" project.\nYou will either need a compatible font, or use a variant that does not need them, like \"text\" and \"jolly\".\n\nSee the [Nerd-fonts Fonts installation docs](https://www.nerdfonts.com) for help on installing this kind of fonts.\n\n\nPresets\n--------\n\nThe `presets` directory contains configurations changing several variables at once.\nIt contains configuration files for changing the color pair (e.g. green/red instead of blue/yellow)\nand the segments shape (see below).\n\n### Variants\n\nVariants needing a Nerd-fonts font:\n\n- \"chevron\" (the recommended one):\n\n![](screenshots/varint-chevron.png)\n\n- \"round\":\n\n![](screenshots/variant-round.png)\n\n- \"slant\":\n\n![](screenshots/variant-slant.png)\n\nVariants available with a regular font:\n\n- \"jolly\" (the default):\n\n![](screenshots/variant-dots.png)\n\n- \"text\" (using only common characters):\n\n![](screenshots/variant-text.png)\n\n\nConfiguration\n-------------\n\n### Liquid Prompt Configuration\n\nThe Jolly theme honors Liquid Prompt configuration options,\nexcept for the ones defining colors, specific marks and disabling some features.\n\nThe following options are honored:\n\n- [`LP_ENABLE_PERM`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_ENABLE_PERM),\n- [`LP_MARK_BATTERY`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_BATTERY),\n- [`LP_MARK_LOAD`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_LOAD),\n- [`LP_MARK_TEMP`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_MARK_TEMP),\n- [`LP_PS1_PREFIX`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_PS1_PREFIX).\n\nThe following options are **not honored**:\n\n- every ``LP_COLOR_\\*`` options.\n- all the others ``LP_MARK_\\*`` options not listed in the above section.\n- [`LP_USER_ALWAYS`](https://liquidprompt.readthedocs.io/en/stable/config.html#LP_USER_ALWAYS) (at least a user icon is always displayed).\n\n\n### Theme Configuration\n\n#### Presets\n\nSome example configurations are provided in the `/presets/` directory.\n\nNote: the order in which you load the presets may be important.\nWhen changing the colors of the first line, presets needs to be loaded\nfrom your shell configuration and not just sourced in the prompt.\n\nA first set is called \"variants\" and mainly change the segment joints,\nbut can also impact the icons on some variants:\n\n- `source presets/variant-chevron.conf` (the *recommended*, need a Nerd-fonts font),\n- `source presets/variant-slant.conf` (need a Nerd-fonts font),\n- `source presets/variant-round.conf` (need a Nerd-fonts font),\n- `source presets/variant-text.conf` (the one that works anywhere).\n\nA second set changes the colors:\n\n- `source presets/colors_green-red.conf` (warning in red, notes in green),\n- `source presets/colors_cyan-magenta.conf` (warning in magenta, notes in cyan),\n- `source presets/colors_high-contrast.conf` (segments are very white and very black instead of slightly grayish),\n\n\n#### High-level\n\n**JOLLY_SPACED** *boolean = 1*\n\nIf set to false, this flag will configure a compact prompt,\nshowing segments without extra spaces around their joints.\n\n\n#### Specific features\n\n**JOLLY_VCS_AHEAD_THRESHOLD** *integer = 5*\n\nNumber of unpushed local commits above which the prompt should use the warning color to display the \"push\" section.\n\n\n**JOLLY_VCS_BEHIND_THRESHOLD** *integer = 5*\n\nNumber of unpulled remote commits above which the prompt should use the warning color to display the \"pull\" section.\n\n\n**JOLLY_VCS_DIFF_THRESHOLD** *integer = 300*\n\nNumber of modified lines above which the prompt should use the warning color to display the \"commit\" section.\n\n**JOLLY_VCS_REMOTE_ORIGIN** *string* = \"🖈\"\n\nString used as a shorten VCS remote name, if it is \"origin\".\n\n**JOLLY_DETACHED_THRESHOLD** *integer = 3*\n\nNumber of detached jobs above which the prompt should use the warning color.\n\n\n**JOLLY_RUNNING_THRESHOLD** *integer = 3*\n\nNumber of running jobs above which the prompt should use the warning color.\n\n\n**JOLLY_STOPPED_THRESHOLD** *integer = 3*\n\nNumber of stopped jobs above which the prompt should use the warning color.\n\n\n**JOLLY_BATTERY_THRESHOLD** *integer = $((LP_BATTERY_THRESHOLD/2))*\n\nPercentage below which the prompt should use the warning color.\n\n\n**JOLLY_TEMP_THRESHOLD** *integer = $((LP_TEMP_THRESHOLD*2))*\n\nTemperature above which the prompt should use the warning color.\n\n\n**JOLLY_LOAD_THRESHOLD** *integer = $((_LP_LOAD_THRESHOLD+(_LP_LOAD_CAP-_LP_LOAD_THRESHOLD)/2))*\n\nLoad percentage above which the prompt should use the warning color.\n\n\n**JOLLY_ENABLE_HISTORY** *boolean = 1*\n\nEnable the history sections displayed on the right side of the middle line.\n\n\n**JOLLY_HISTORY_MOST_BACK** *integer = 100*\n\nNumber of the last history events to take into account when looking for the most used command.\n\n\n**JOLLY_HISTORY_LAST_LEN** *integer = $((COLUMNS/4))*\n\nMaximum length of the *last* command used (counting the `JOLLY_HISTORY_LAST_LEN_MARK` length).\n\n\n**JOLLY_HISTORY_LAST_LEN_MARK** *integer = \"[…]\"*\n\nMark to display when the last command string is shortened.\n\n\n**JOLLY_ENABLE_SHELL** *boolean = 0*\n\nDisplay the current shell in the top-right section.\n\n\n**JOLLY_SHELL_ZSH** *string = \"z\"*\n\nThe mark indicating a *zsh* shell.\n\n\n**JOLLY_SHELL_BASH** *string = \"b\"*\n\nThe mark indicating a *bash* shell.\n\n\n#### Generic Markers\n\nThe following options configure some marks that will be used across all variants of the theme.\n\n**JOLLY_DISPLAY_TEXT** *string = \"T\"*\n\nThe marker used to indicates that the shell is in text mode,\ni.e. that does not have a graphical display\n(more rigorously: there is no X11 `DISPLAY` environment variable).\n\n\n**JOLLY_DISPLAY_X11** *string = \"X\"*\n\nThe marker used to indicates that the shell does have access to a graphical server\n(more rigorously: there is a X11 `DISPLAY` environment variable).\n\n\n**JOLLY_HOST_LOCAL** *string = \"⌂\"*\n\nThe marker used to indicate that the hostname is `localhost`.\n\n**JOLLY_USER_LOCAL** *string = \"♟\"*\n\nThe marker used to indicate that the user is the same than the login one.\n\n\n**JOLLY_MARK_STASH** *string = \"✝\"*\n\nThe marker used to indicate that the VCS stash is not empty.\n\n\n**JOLLY_MARK_UNTRACKED** *string = \"?\"*\n\nThe marker used to indicate that there are some files that are untracked\nby the VCS in the current repository.\n\n\n**JOLLY_DIFF** *string = \"≠\"*\n\nThe marker used to indicate that there is some change in the VCS state\n(either changes needed to be committed, or commits needed to be pushed).\n\n\n**JOLLY_VCS** *string = \"╟┘\"*\n\nThe marker used to indicate that there is a VCS involved in the current directory.\n\n\n**JOLLY_MARK** *string = \"⯀\"*\n\nThe actual prompt marker, right where the user type text.\n\n\n**JOLLY_MARK_SUDO** *string = \"⋮\"*\n\nAn additional character displayed before the last prompt mark\nwhen the user has sudo rights.\n\n**JOLLY_ENABLE_GRADIENT_LINE** *boolean = 0*\n\nIf set to 0 (the default),  will draw the line of the middle section\nas a sequence of `JOLLY_LINE` characters,\nusing the `JOLLY_COLOR_LINE` color.\n\nIf set to 1, will draw the same line with a gradient of color\ninterpolated from `JOLLY_COLOR_LINE_START`\nto `JOLLY_COLOR_LINE_END`.\n\n\n**JOLLY_MARK_ERROR** *string = \" \"*\n\nIcon displayed in front of the last exit error code.\n\n\n#### Variant Markers\n\nThese options are the one used to actually define the theme variants.\nYou may overcome them with your own configuration.\n\n**JOLLY_LINE** *string = \"━\"*\n\nThe character used to draw the middle line.\n\n\n**JOLLY_PLUG** *string = \"▛\"*\n\nThe character for joined segments limits.\n\n\n**JOLLY_SOFT** *string = \"╱\"*\n\nThe character for \"soft\" separation (e.g. path elements, branch details, jobs, etc.)\n\n\n**JOLLY_MEAN** *string = \"▞\"*\n\nThe character for \"mean\" separation\n(used when two segments of the same color are joint).\n\n\n**JOLLY_LINK** *array\u003cstring\u003e = (\"▙\" \" \"   \"▜\")*\n\nCharacters used for showing a small gap.\n\n\n**JOLLY_OPEN** *array\u003cstring\u003e = (\"▙\" \" ▚ \" \"▜\")*\n\nCharacters used for showing a large gap.\n\n\n**JOLLY_DANG** *array\u003cstring\u003e = (\"▙\" \" □ \" \"▜\")*\n\nCharacters used for showing a very lareg gap (i.e. a dangerous state).\n\n\n**JOLLY_ENDS** *array\u003cstring\u003e = (\"▛▞▗ ▝\" \"▖ ▘▞▟\")*\n\nCharacters marking the ends of the right and left parts of the first line.\n\n\n**JOLLY_ITEMS** *array\u003cstring\u003e = (\"┫\" \"┃\" \"┣\")*\n\nCharacters used to separate keywords in the middle line.\nThe middle character separates keywords of the same type (e.g. every Software Collection).\n\n\n#### Spacing\n\nYou may overcome the spacing details with these options.\n\n**JOLLY_SPACE_VOID** *string = \" \"*\n\nSpacing character around segments joints marker.\n\n\n**JOLLY_SPACE_PATH** *string = \" \"*\n\nSpacing character specifically for the \"current path\" section.\n\n\n**JOLLY_SPACE_FIELD** *string = \"\"*\n\nSpacing character around the content of the segments themselves.\n\n\n**JOLLY_SPACE_LINE** *string = \" \"*\n\nSpacing character around the keywords of the middle line.\n\n\n**JOLLY_SPACE_FILL** *string = \"█\"*\n\nSpacing character for filled sections.\nYou probably don't want to touch this.\n\n\n#### Colors\n\n\n**JOLLY_COLOR_DARK** *array\u003cint\u003e = (252 239 0 0  15   0)*\n\nThe color of dark segments.\n\n\n**JOLLY_COLOR_LITE** *array\u003cint\u003e = (239 252 0 0   0  15)*\n\nThe color of light segments.\n\n\n**JOLLY_COLOR_GLOW** *array\u003cint\u003e = (  0 252 1 0   0  15)*\n\nThe color for bright elements.\n\n\n**JOLLY_COLOR_NOTE** *array\u003cint\u003e = ( 15  33 0 0  15  12)*\n\nThe color for notable elements.\n\n\n**JOLLY_COLOR_WARN** *array\u003cint\u003e = (196 220 1 0   0  11)*\n\nThe color for elements related to a warning.\n\n\n**JOLLY_COLOR_FAIR** *array\u003cint\u003e = (  0 244 0 0   0   8)*\n\nThe color for elements that are not very important.\n\n\n**JOLLY_COLOR_PATH_SHORT** *array\u003cint\u003e = (252 239 0 0   0  15)*\n\nThe color of the shorten path marker.\n\n\n**JOLLY_COLOR_PATH_VCS** *array\u003cint\u003e = (252 239 0 1   0  15)*\n\nThe color of the VCS repository in the path.\n\n\n**JOLLY_COLOR_PATH_LAST** *array\u003cint\u003e = (15 239 1 0   0  15)*\n\nThe color of the current directory.\n\n\n**JOLLY_COLOR_LINE** *array\u003cint\u003e = (244 -1 0 0 15 -1)*\n\nThe color of the middle line.\n\n\n**JOLLY_COLOR_MARK** *array\u003cint\u003e = (15 -1 0 0 15 -1)*\n\nThe color of the actual prompt mark.\n\n\n**JOLLY_COLOR_SEP_DARK** *array\u003cint\u003e = (  0 -2 0 0  0 -2)*\n\nThe color for dark separators.\n\n\n**JOLLY_COLOR_SEP_FAIR** *array\u003cint\u003e = (244 -2 0 0  0 -2)*\n\nThe color for fair separators.\n\n\n**JOLLY_COLOR_SEP_LITE** *array\u003cint\u003e = ( 15 -2 0 0 15 -2)*\n\nThe color for light separators.\n\n\n**JOLLY_COLOR_LINE_START** *array\u003cint\u003e = (255 -1 1 0 15 -1)*\n\nThe color starting the gradient of the line of the middle section.\nDefault is white.\n\nValus being linearly interpolated up to `JOLLY_COLOR_LINE_END`,\n\nit is recommended to stick to aligned ANSI values (i.e. greys)\n\n\n**JOLLY_COLOR_LINE_END** *array\u003cint\u003e = (232 -1 1 0 15 -1)*\n\nThe color ending the gradient of the line of the middle section.\nDefault is black.\n\n\nValus being linearly interpolated from `JOLLY_COLOR_LINE_START`,\n\nit is recommended to stick to aligned ANSI values (i.e. greys).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnojhan%2Flp-jolly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnojhan%2Flp-jolly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnojhan%2Flp-jolly/lists"}