{"id":13811184,"url":"https://github.com/zthxxx/jovial","last_synced_at":"2025-05-15T17:06:16.020Z","repository":{"id":37580321,"uuid":"128562344","full_name":"zthxxx/jovial","owner":"zthxxx","description":"Jovial - A lovely zsh theme with responsive-design, it's pretty fast, keep simple but useful","archived":false,"fork":false,"pushed_at":"2025-04-24T04:58:10.000Z","size":3978,"stargazers_count":502,"open_issues_count":8,"forks_count":60,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-24T05:29:32.175Z","etag":null,"topics":["jovial","oh-my-zsh","theme","zsh","zsh-theme","zshtheme"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zthxxx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2018-04-07T19:44:51.000Z","updated_at":"2025-04-24T04:58:15.000Z","dependencies_parsed_at":"2024-11-15T13:44:19.093Z","dependency_job_id":"88db6ccf-20c7-47d5-801e-1d3f1b812100","html_url":"https://github.com/zthxxx/jovial","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zthxxx%2Fjovial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zthxxx%2Fjovial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zthxxx%2Fjovial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zthxxx%2Fjovial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zthxxx","download_url":"https://codeload.github.com/zthxxx/jovial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254384988,"owners_count":22062422,"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":["jovial","oh-my-zsh","theme","zsh","zsh-theme","zshtheme"],"created_at":"2024-08-04T03:00:41.065Z","updated_at":"2025-05-15T17:06:11.010Z","avatar_url":"https://github.com/zthxxx.png","language":"Shell","funding_links":[],"categories":["Themes","Uncategorized","HarmonyOS","Shell"],"sub_categories":["ZSH on Windows","Uncategorized","Windows Manager","Zinit (née zplugin)"],"readme":"\u003ch1 align=\"center\"\u003eJovial\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-macOS-greenlight?logo=Apple\u0026logoColor=ffffff\" alt=\"Platform macOS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-WSL-greenlight?logo=windows\u0026logoColor=ffffff\" alt=\"Platform WSL\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-Debian-greenlight?logo=Debian\u0026logoColor=ffffff\" alt=\"Platform Debian\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-Ubuntu-greenlight?logo=Ubuntu\u0026logoColor=ffffff\" alt=\"Platform Ubuntu\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-CentOS-greenlight?logo=CentOS\u0026logoColor=ffffff\" alt=\"Platform CentOS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/-Arch Linux-greenlight?logo=Arch Linux\u0026logoColor=ffffff\" alt=\"Platform Arch Linux\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA lovely zsh theme with responsive-design, it's pretty fast, keep simple but useful\u003c/strong\u003e\n\u003c/p\u003e\n\n## Glance\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial.png\" alt=\"jovial\" width=\"720\"\u003e\n\u003c/p\u003e\n\nThat's for people **who don't want make trouble out of nothing in zsh, and just look for a handy theme**.\n\nSo we make everything easy to use, even if you're new to zsh.\n\nFirst, **quick install** is convenient with only a simple one-line command:\n\n```bash\ncurl -sSL https://github.com/zthxxx/jovial/raw/master/installer.sh | sudo -E bash -s ${USER:=`whoami`}\n```\n\n\u003e for more install details see the **[Install section](#install)**; (manually install or without oh-my-zsh is okay)\n\u003e\n\u003e\n\u003e custom colors/symbols is easy, see **[Customization section](#customization)**;\n\n\u003cbr /\u003e\n\n## TOC\n\n\u003cp align=\"center\"\u003e\n  \u003cspan\u003e\u003cstrong\u003e　·　\u003c/strong\u003e\u003c/span\u003e\n  \u003ca href=\"#features--preview\"\u003e\u003cstrong\u003eFeatures\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e　/　\u003c/span\u003e\n  \u003ca href=\"#plugins-integration\"\u003e\u003cstrong\u003ePlugins\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e　/　\u003c/span\u003e\n  \u003ca href=\"#install\"\u003e\u003cstrong\u003eInstall\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e　/　\u003c/span\u003e\n  \u003ca href=\"#customization\"\u003e\u003cstrong\u003eCustomization\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e　/　\u003c/span\u003e\n  \u003ca href=\"#benchmark\"\u003e\u003cstrong\u003eBenchmark\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e　/　\u003c/span\u003e\n  \u003ca href=\"#migration\"\u003e\u003cstrong\u003eMigration\u003c/strong\u003e\u003c/a\u003e\n  \u003cspan\u003e\u003cstrong\u003e　·　\u003c/strong\u003e\u003c/span\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n## Features \u0026 Preview\n\n### whole ability\n\nAs mentioned above, **jovial** theme has many useful abilities, its full display likes:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-full-prompts.png\" alt=\"jovial-full-prompts\" width=\"900\"\u003e\n\u003c/p\u003e\n\n\nThe description of each parts:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-description.png\" alt=\"jovial-description\" style=\"width: 100%; max-width: 1000px\"\u003e\n\u003c/p\u003e\n\n\n\n### responsive design\n\nEach parts of prompt is **\"responsive\"** with terminal windows width, so you can safely use it in narrow terminal.\n\n\u003c!-- ./docs/jovial-responsive-desigin.mp4 --\u003e\n\u003cdiv\u003e\u003cvideo controls muted autoplay loop src=\"https://user-images.githubusercontent.com/15135943/148246834-08ecbbfc-6d0e-4c25-96b5-3638b32a4a28.mp4\"\u003e\u003c/video\u003e\u003c/div\u003e\n\n\n\n### git actions state\n\nIn addition to the basic git state (branch / tag / hash, dirty or clean),\n\nthere are also some prompts to hint that you are in **merge** / **rebase** / **cherry-pick** now with conflict or not.\n\nNote that all git state will be **update in asynchronous**, so that this theme is **pretty fast** even in a huge git repo.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-git-actions.png\" alt=\"jovial-git-actions\" width=\"860\"\u003e\n\u003c/p\u003e\n\n\n### development env detecting\n\nIt will detect to show your development programming language and version in current working directory, such as:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-develop-env-detect.png\" alt=\"jovial-develop-env-detect\" width=\"740\"\u003e\n\u003c/p\u003e\n\n\n### show execute elapsed\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-exec-elapsed.png\" alt=\"jovial-exec-elapsed\" width=\"600\"\u003e\n\u003c/p\u003e\n\n\n## Plugins Integration\n\n\u003e These integrated plugins below will be auto setup by the install script, you can see the `install.zsh-plugins` function in [installer.sh](https://github.com/zthxxx/jovial/blob/master/installer.sh)\n\n- **[jovial](https://github.com/zthxxx/jovial/blob/master/jovial.plugin.zsh)**: jovial plugin defined some utils functions and alias, you can see in [jovial.plugin.zsh](https://github.com/zthxxx/jovial/blob/master/jovial.plugin.zsh)\n- **[git](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git)**: some short alias for commonly used command\n- **[autojump](https://github.com/wting/autojump)**: make you can use `j \u003ckeyword\u003e` to jump to the full path folder\n- **[bgnotify](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/bgnotify)**: background notifications for long running commands\n- **[zsh-history-enquirer](https://github.com/zthxxx/zsh-history-enquirer)**: widget for history searching, enhance `Ctrl+R`\n- **[zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions)**: shell auto-completion\n- **[zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting)**: user input syntax highlighting\n\n\u003cbr /\u003e\n\n## Install\n\nJust run the simple one-line install command:\n\n```bash\ncurl -sSL https://github.com/zthxxx/jovial/raw/master/installer.sh | sudo -E bash -s ${USER:=`whoami`}\n```\n\n\u003e **Note**: The install script is designed to be **\"Idempotent\"**, so you can safely execute it multiple times.\n\n\n\u003e **Tips**: you may want to use some **http proxy**, just export proxy variables before run install command,\n\u003e\n\u003e 　　like: `export all_proxy=http://127.0.0.1:1086`\n\u003e\n\u003e 　　(it's equal to `export http_proxy=http://127.0.0.1:1086 http_proxys=http://127.0.0.1:1086`)\n\n\nHere are what the install command and script do:\n\n- Explain the command:\n  - **`sudo`**: make sure script run with access for install packages and change default login shell\n  - **`-E`**: passthrough env variables while use sudo, for receive like `http_proxy`\n  - **`-s $USER`**: pass the params to script, which is the real target user for install\n\n- The script do these steps:\n  - if **`zsh`** or **`oh-my-zsh`** not found, will install them\n  - change default login shell to **`zsh`**\n  - download the **jovial** theme/plugin files in **oh-my-zsh** custom folder\n  - install [**integrated plugins**](#plugins-integration) via local package manager\n  - auto **rewrite** `ZSH_THEME` and `plugins` variables in user's **`.zshrc`**\n\n\n\u003cbr /\u003e\n\n\n### install with [Antigen](https://github.com/zsh-users/antigen)\n\n[Antigen](https://github.com/zsh-users/antigen) is a _**theme/plugin manager for zsh**_ that uses simple **declarative configuration**.\n\nWith Antigen, installing Jovial **without sudo permission** is easy. \n\nJust download antigen and **copy** the example below into your **`~/.zshrc`**,\nreload zsh, and Antigen will automatically download everything only during initialization.\n\nDownload antigen:\n\n```bash\nmkdir -p ~/.antigen \u0026\u0026 curl -SL https://github.com/zsh-users/antigen/raw/develop/bin/antigen.zsh -o ~/.antigen/antigen.zsh\n```\n\nExample for **`~/.zshrc`** with antigen:\n\n\u003e You can manually copy this below into your `~/.zshrc` file, or using command to download and append:\n\u003e\n\u003e `curl -SL https://github.com/zthxxx/jovial/raw/master/antigen.zshrc \u003e\u003e ~/.zshrc`\n\n\n```zsh\n# ~/.zshrc\n\n# [Antigen](https://github.com/zsh-users/antigen), \n# a theme/plugin manager for zsh that uses simple declarative configuration.\n\n# Load Antigen\nsource ~/.antigen/antigen.zsh\n\n# Basic recommended for antigen\nantigen use oh-my-zsh\nantigen bundle git\nantigen bundle autojump\nantigen bundle colored-man-pages\nantigen bundle zsh-users/zsh-completions\nantigen bundle zsh-users/zsh-autosuggestions\nantigen bundle zsh-users/zsh-syntax-highlighting\n\n# Load the Jovial theme and plugins\nantigen theme zthxxx/jovial\nantigen bundle zthxxx/jovial\nantigen bundle zthxxx/zsh-history-enquirer\n\n\n# Any other plugins needs set before `antigen apply`\n\n# After all, tell Antigen that you're done, then antigen will start\nantigen apply\n\n```\n\n\nThen reload zsh to load antigen with Jovial theme:\n\n```bash\nexec zsh -il\n```\n\n\nNote that you also need to manually install other plugin bin files like:\n\n```bash\nsudo apt install -y autojump terminal-notifier source-highlight\n```\n\n\n### install with Fig\n\n[Fig](https://fig.io) adds apps, shortcuts, and autocomplete to your existing terminal.\n\nInstall `jovial` theme in just one click.\n\n\u003ca href=\"https://fig.io/plugins/other/jovial_zthxxx\" target=\"_blank\"\u003e\u003cimg src=\"https://fig.io/badges/install-with-fig.svg\" /\u003e\u003c/a\u003e\n\n\n### manually install without oh-my-zsh\n\nFirst, you need download the [jovial.zsh-theme](https://github.com/zthxxx/jovial/blob/master/jovial.zsh-theme) file manually. For example, use `curl` will like:\n\n```bash\ncurl -sSL \"https://github.com/zthxxx/jovial/raw/master/jovial.zsh-theme\" -o ~/.config/jovial.zsh-theme\n```\n\nThen, add these zsh setting code in your `~/.zshrc` and load theme file:\n\n```zsh\n# ~/.zshrc\n\nsource ~/.config/jovial.zsh-theme\n```\n\nFinally, don't forget to change the default login shell to `zsh`, maybe you can use `chsh` command:\n\n```zsh\nsudo chsh -s `command -v zsh` $USER\n```\n\n### upgrade\n\n\n#### use antigen\n\nWith used antigen, it's simple for update `jovial` theme by use `antigen update`:\n\n```bash\nantigen update zthxxx/jovial\n```\n\nBut note that it's ONLY update the `jovial` theme, without any other plugins,\n\nto update other plugins, you need to use `antigen update` command on other plugin name again.\n\n#### use install script\n\nDue to the install script is designed to be **\"Idempotent\"**, if you want to upgrade the jovial theme, run the install command again.\n\nIf you want to upgrade manually without the install command, just download and override `jovial.zsh-theme` file again.\n\nChangelogs you can see in [CHANGELOG.md](./CHANGELOG.md), and current version you used can be see by run `echo ${JOVIAL_VERSION}`.\n\n\u003e NOTE: pay attention to the [tips of Migration / BreakingChange](#migration)\n\n\u003cbr /\u003e\n\n## Customization\n\nAll the elements / symbols / colors can be easily customized by override theme variables in `~/.zshrc`\n\nThses variables designed for customization:\n- [`JOVIAL_SYMBOL`](#symbols)\n- [`JOVIAL_PALETTE`](#colors)\n- [`JOVIAL_PROMPT_ORDER`](#order-of-parts)\n- [`JOVIAL_PROMPT_PRIORITY`](#priority-of-parts)\n- [`JOVIAL_AFFIXES`](#affixes)\n- [`JOVIAL_EXEC_THRESHOLD_SECONDS`](#execute-elapsed)\n- [`JOVIAL_DEV_ENV_DETECT_FUNCS`](#detect-development-env)\n\n\nYou can find them default values in [jovial.zsh-theme](https://github.com/zthxxx/jovial/blob/master/jovial.zsh-theme) (`~/.oh-my-zsh/custom/themes/jovial.zsh-theme`)\n\n### symbols\n\nAll the default symbols defined list that:\n\n```zsh\nJOVIAL_SYMBOL=(\n    corner.top    '╭─'\n    corner.bottom '╰─'\n\n    git.dirty '✘✘✘'\n    git.clean '✔'\n\n    arrow '─➤'\n    arrow.git-clean '(๑˃̵ᴗ˂̵)و'\n    arrow.git-dirty '(ﾉ˚Д˚)ﾉ'\n)\n```\n\nYou can override symbols by assign the variable with key in `JOVIAL_SYMBOL`, such as arrows:\n\n```zsh\n# ~/.zshrc\n\nJOVIAL_SYMBOL[arrow]='-\u003e'\nJOVIAL_SYMBOL[arrow.git-clean]='-\u003e'\nJOVIAL_SYMBOL[arrow.git-dirty]='-\u003e'\n```\n\n\n### colors\n\nOverride keys in `JOVIAL_PALETTE` like `JOVIAL_SYMBOL` above,\n\nAll the default symbols defined list that:\n\n```zsh\n# jovial theme colors mapping\n# use `sheet:color` plugin function to see color table\n# https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html#Visual-effects\nJOVIAL_PALETTE=(\n    # hostname\n    host '%F{157}'\n\n    # common user name\n    user '%F{253}'\n\n    # only root user\n    root '%B%F{203}'\n\n    # current work dir path\n    path '%B%F{228}%}'\n\n    # git status info (dirty or clean / rebase / merge / cherry-pick)\n    git '%F{159}'\n\n    # virtual env activate prompt for python\n    venv '%F{159}'\n\n    # current time when prompt render, pin at end-of-line\n    time '%F{254}'\n\n    # elapsed time of last command executed\n    elapsed '%F{222}'\n\n    # exit code of last command\n    exit.mark '%F{246}'\n    exit.code '%B%F{203}'\n\n    # 'conj.': short for 'conjunction', like as, at, in, on, using\n    conj. '%F{102}'\n\n    # shell typing area pointer\n    typing '%F{252}'\n\n    # for other common case text color\n    normal '%F{252}'\n\n    success '%F{040}'\n    error '%F{203}'\n)\n```\n\n**🧐 Feeling mess with those variables and numbers?**\n\nWell, `%B` is set font to **bold** style,\n\nand `%F{xxx}` / `%K{xxx}` is color sheet of **font** / **background**.\n\nSuch as `%F{015}` is set font color to \"white\", and  `%F{123}` is set font color close to \"cyan\"\n\nQuickref:\n\n```text\n%F{xxx}    =\u003e foreground color (text color)\n%K{xxx}    =\u003e background color (color-block)\n%B         =\u003e **bold**\n%U         =\u003e underline\n```\n\n\n**🤓 So, where is the color sheet?**\n\nYou can run `sheet:color` function which in [jovial.plugin.zsh](https://github.com/zthxxx/jovial/blob/master/jovial.plugin.zsh) to display color sheet in your terminal,\n\nit will looks like:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"color sheet\" src=\"https://user-images.githubusercontent.com/15135943/143198898-2cf1225c-47e4-4860-95db-2dc29ad1436e.png\" width=\"800\"\u003e\n\u003c/p\u003e\n\n\n### order of parts\n\nPrompt parts dispaly order can be config with `JOVIAL_PROMPT_ORDER`, items means from left to right of jovial theme at the first line.\n\nDefaults are:\n\n```zsh\nJOVIAL_PROMPT_ORDER=( host user path dev-env git-info )\n```\n\n### priority of parts\n\nIn the `responsive design`, prompt parts can be set priority list with `JOVIAL_PROMPT_PRIORITY`,\n\nitems means priority from high to low, for decide whether to still keep dispaly while terminal width is no enough;\n\nDefaults are:\n\n```zsh\nJOVIAL_PROMPT_PRIORITY=(\n    path\n    git-info\n    user\n    host\n    dev-env\n)\n```\n\n\u003e The highest priority element will always keep dispaly;\n\u003e\n\u003e `current-time` will always auto detect rest spaces, it's lowest priority\n\nYou can change order of them to obtain different effects of responsive design.\n\nIf you want to disable some part, just remove it from the priority list.\n\n### affixes\n\nPrefixes and suffixes of jovial prompt part, override them same as above.\n\nDefaults are:\n\n```zsh\nJOVIAL_AFFIXES=(\n    host.prefix            '${JOVIAL_PALETTE[normal]}['\n    # hostname/username use `Prompt-Expansion` syntax in default\n    # but you can override it with simple constant string\n    hostname               '${(%):-%m}'\n    host.suffix            '${JOVIAL_PALETTE[normal]}] ${JOVIAL_PALETTE[conj.]}as'\n\n    user.prefix            ' '\n    username               '${(%):-%n}'\n    user.suffix            ' ${JOVIAL_PALETTE[conj.]}in'\n\n    path.prefix            ' '\n    current-dir            '%~'\n    path.suffix            ''\n\n    dev-env.prefix         ' '\n    dev-env.suffix         ''\n\n    git-info.prefix        ' ${JOVIAL_PALETTE[conj.]}on ${JOVIAL_PALETTE[normal]}('\n    git-info.suffix        '${JOVIAL_PALETTE[normal]})'\n\n    venv.prefix            '${JOVIAL_PALETTE[normal]}('\n    venv.suffix            '${JOVIAL_PALETTE[normal]}) '\n\n    exec-elapsed.prefix    ' ${JOVIAL_PALETTE[elapsed]}~'\n    exec-elapsed.suffix    ' '\n\n    exit-code.prefix       ' ${JOVIAL_PALETTE[exit.mark]}exit:'\n    exit-code.suffix       ' '\n\n    current-time.prefix    ' '\n    current-time.suffix    ' '\n)\n```\n\nNote that all `JOVIAL_AFFIXES` variable values wrapped in `${...}` will be subject to `shell Prompt-Expansion` once at first load as `zsh prompt`,\n\nso keep **Single Quotes** which you want override value in your `.zshrc` file,\n\n```\n# ~/.zshrc\nJOVIAL_AFFIXES[user.suffix]=' ${JOVIAL_PALETTE[conj.]}in'\n```\n\nand you can use **Double Quotes** in your terminal to see effect immediately for adjust theme.\n\n```\n# in terminal\n$ JOVIAL_AFFIXES[user.suffix]=\" ${JOVIAL_PALETTE[conj.]}in\"\n```\n\n\n### execute elapsed\n\nDefault is:\n\n```zsh\nJOVIAL_EXEC_THRESHOLD_SECONDS=4\n```\n\nThis threshold is seconds for last command execute elapsed time, will pin the info if the threshold is reached,\n\nset to `-1` if you want to disable display time.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/jovial-exec-elapsed.png\" alt=\"jovial-exec-elapsed\" width=\"600\"\u003e\n\u003c/p\u003e\n\n### detect development env\n\nEach item in `JOVIAL_DEV_ENV_DETECT_FUNCS` is name of function to detect development env,\n\nyou can append some custom functions for other programming language (such as Erlang), like this:\n\n```zsh\n# ~/.zshrc\n\nJOVIAL_DEV_ENV_DETECT_FUNCS+=( your-function-name )\n```\n\nOr disable it by set empty list:\n\n```zsh\n# ~/.zshrc\n\nJOVIAL_DEV_ENV_DETECT_FUNCS=()\n```\n\n\n### Font Recommended\n\n(no need to install any specify fonts, these usually come with the OS)\n\n- `Monaco` in iTerm2\n- `Menlo` in VSCode\n- `JetBrains Mono` in JetBrains IDEs\n\nJust the most common monospaced fonts, no need any special font.\n\n\u003e NOTE: also remember to set font line-height to 1.0\n\n\u003cbr /\u003e\n\n## Benchmark\n\nBy asynchronous update git status, it's so fast in render and interaction.\n\nAverage: jovial theme only takes **4ms** per render.\n\nRun jovial theme 10 times in [benchmark.zsh](./dev/benchmark.zsh), you can get like this:\n\n```zsh\n$ zsh -il dev/benchmark.zsh\n\n( for i in {1..10}; do; theme.render; done; )  0.01s user 0.02s system 95% cpu 0.039 total\n```\n\n\u003cbr /\u003e\n\n\n## Changelog\n\nsee in [CHANGELOG.md](./CHANGELOG.md)\n\n\u003cbr /\u003e\n\n## Migration\n\n\u003e run `echo ${JOVIAL_VERSION}` in terminal to see what version you used now.\n\n### from v1 to v2\n\nThere are some breaking changes for customization,\n\nsome customized variables and functions renamed:\n\n- variable `JOVIAL_ARROW` =\u003e `JOVIAL_SYMBOL[arrow]`\n- function `_jov_type_tip_pointer` =\u003e `@jov.typing-pointer`,\n- and now, arrows could replace with variables `JOVIAL_SYMBOL[arrow.git-clean]` and `JOVIAL_SYMBOL[arrow.git-dirty]`\n- some keys in ` JOVIAL_PROMPT_PRIORITY` renamed, `git_info` =\u003e `git-info`, `dev_env` =\u003e `dev-env`\n\n\u003cbr /\u003e\n\n## Author\n\n**jovial** © [zthxxx](https://github.com/zthxxx), Released under the **[MIT](./LICENSE)** License.\n\n\u003e Blog [@zthxxx](https://blog.zthxxx.me) · GitHub [@zthxxx](https://github.com/zthxxx)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzthxxx%2Fjovial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzthxxx%2Fjovial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzthxxx%2Fjovial/lists"}