Compare commits

...

738 Commits

Author SHA1 Message Date
Xarus
55b88e1b25 Fixe orphan process commection by init 2025-02-20 16:55:57 +01:00
vladislav doster
8fa10f43a0 fix(parser.zsh): _p9k_parse_buffer docstring typo (#2820)
- `pupulates` => `populates`
2025-01-29 05:28:19 -08:00
Roman Perepelitsa
05b11d8b92 Merge branch 'tspearconquest-master' 2025-01-23 19:32:42 +01:00
Thomas D. Spear
eb487f836a Fix word splitting issues in README.md
Signed-off-by: Thomas D. Spear <thomas.spear@wcgclinical.com>
2025-01-23 12:22:24 -06:00
Thomas D. Spear
f3b05b4448 Fix word splitting issues in README.md
Signed-off-by: Thomas D. Spear <thomas.spear@wcgclinical.com>
2025-01-22 16:30:02 -06:00
Seyed Sajjad (Sina) Tak Tehrani
3e2053a934 fix(prompt): add support for AWS_SSO_PROFILE in AWS segment initialization (#2813)
- Updated `_p9k_prompt_aws_init` to include `AWS_SSO_PROFILE` in the condition for activating the AWS segment.
- Ensures compatibility with AWS SSO profiles in addition to other AWS environment variables.
2025-01-06 03:24:25 -08:00
Roman Perepelitsa
c85cd0f028 docs: reformat font instructions for ghostty and copy them over to README.md (#2809) 2024-12-29 10:39:03 +01:00
Roman Perepelitsa
33fff66cc6 Merge branch 'cesarwbr-patch-1' 2024-12-29 10:36:14 +01:00
Cesar William Alvarenga
c187964ad3 Update font.md with the font configuration for Ghostty terminal 2024-12-28 22:29:05 -08:00
Roman Perepelitsa
ef83e13c22 docs: expand on what setting ZSH_THEME involves 2024-11-15 07:10:47 +01:00
Mad Scientist
f2f0149974 Update README.md (#2788) 2024-11-10 00:49:37 -08:00
Roman Perepelitsa
8a331b8210 copy warp font instructions to font.md 2024-10-28 11:32:25 +01:00
Roman Perepelitsa
ed07f45e39 Merge branch 'qzcl-maintainer-master' 2024-10-28 11:31:08 +01:00
Roman Perepelitsa
5bddd1e731 Merge branch 'master' of https://github.com/qzcl-maintainer/powerlevel10k into qzcl-maintainer-master 2024-10-28 11:30:58 +01:00
Roman Perepelitsa
5e26473457 support cpu_arch on linux (#2776) 2024-10-28 10:26:23 +01:00
Éric NICOLAS
67a365b9db Let mise-configured ancestors be anchors (#2782) 2024-10-25 05:26:44 -03:00
QZCL Maintainer
3483f230a7 Updated README.md to include instructions to enable MesloLGS Terminal Font 2024-10-14 16:18:29 -06:00
Filipe
0996a94118 Support aws-sso-cli on AWS prompt element (#2769)
Adds support for `aws-sso-cli` tool in AWS prompt element.

https://github.com/synfinatic/aws-sso-cli

Docs: https://synfinatic.github.io/aws-sso-cli/v1.17.0/commands/#managed-variables
2024-10-04 00:24:49 -07:00
Roman Perepelitsa
c64a133616 Merge commit '140a6ade4e9d7431df697de4dfff04b353e219e2' 2024-10-03 11:16:46 +02:00
Roman Perepelitsa
140a6ade4e Squashed 'gitstatus/' changes from 62177e89..44504a24
44504a24 make: remove -Wall
8795883c Specify cmake generator in build file (#441)
3e08476b docs: the project is on life support
12e6a689 Add support to build e2k arch. (#432)
a952c3f6 bump version to v1.5.5

git-subtree-dir: gitstatus
git-subtree-split: 44504a24b1b999a4f56ff74c75b8215bdcadee1f
2024-10-03 11:16:46 +02:00
Roman Perepelitsa
087405df78 minor cleanup (#2758) 2024-09-17 14:10:20 +02:00
Roman Perepelitsa
f31d01dbb1 Merge branch 'daphnediane-feature/almalinux' 2024-09-17 14:08:32 +02:00
Daphne Pfister
edf38f964e Add AlmaLinux icon 2024-09-17 00:47:40 -04:00
Roman Perepelitsa
d71edb83f9 docs: fix font instructions for deepin terminal and copy them over to font.md (#2752) 2024-09-05 12:37:49 +02:00
Roman Perepelitsa
00f74aaf75 Merge branch 'fr0ster-master' 2024-09-05 12:31:28 +02:00
Oleksii Kyslytsia
c30068c1f1 docs: Add instructions for setting MesloLGS NF font in Deepin Terminal 2024-09-05 13:22:34 +03:00
Roman Perepelitsa
a42e374e25 add cmdline_url to <OSC>133;C when KITTY_SHELL_INTEGRATION is defined 2024-08-21 09:02:25 +02:00
Roman Perepelitsa
119e4039ef force shell integration when running under vscode integrated terminal with shell integration enabled 2024-08-17 09:34:01 +02:00
Roman Perepelitsa
2b7da93df0 docs: fixup for #2718 2024-07-01 08:34:13 +02:00
Roman Perepelitsa
821b25dc32 Merge branch 'eliwss0-patch-1' 2024-07-01 08:31:50 +02:00
Eli Weiss
4a2ef610ef Add instructions on setting Conemu font
Add instructions on setting font to MesloLGS NF in Conemu
2024-06-30 10:01:00 -04:00
Roman Perepelitsa
df8ed16343 wizard: prefer POWERLEVEL9K_MODE=nerdfont-v3 over nerdfont-complete"
The preference for nerdfont-complete was necessitated by a bug
in Windows Terminal that has since been fixed.

This reverts commit b474978b2e.

  wizard: prefer POWERLEVEL9K_MODE=nerdfont-complete over nerdfont-v3

See the reverted commit for details on the Windows Terminal bug.
2024-06-28 08:09:20 +02:00
Roman Perepelitsa
bde5ca4c2a docs: the project is on life support 2024-05-21 20:26:39 +02:00
Elan Ruusamäe
16e5848426 Doc: Use shorter readme link (#2671)
Since it links to readme on default branch (permalink), can just omit that all making links shorter.
2024-05-07 02:39:44 -07:00
Roman Perepelitsa
3395c828b2 docs: mention that vscode terminal does not respect foreground colors chosen by the user by default 2024-05-06 08:37:53 +02:00
Roman Perepelitsa
b28d68f44b allow ~/.timewarrior to be a symbolic link (#2603) 2024-04-25 12:13:02 +02:00
Roman Perepelitsa
01e3f0b4ba bump version 2024-04-23 08:11:49 +02:00
Roman Perepelitsa
808ba80ab0 fail more gracefully on timewarrior v3.0.1 (#2648) 2024-04-23 08:11:19 +02:00
Alejandro Armas
178fcda348 Update README.md Fix Typo (#2637)
Removes the extra ')' in the yazi segment meaning
2024-04-08 23:12:31 -07:00
Alexander Blum
bcef7cafdf fixes taskwarrior init data for taskwarrior v3 (#2635) 2024-04-07 17:58:13 +02:00
Roman Perepelitsa
aeff1153d4 handle unquoted prompt when parsing pyenv.cfg 2024-04-05 20:54:21 +02:00
Roman Perepelitsa
7c2ce29c3f Merge branch 'hodeinavarro-hodei-pyenv-prompt-2628' 2024-04-05 20:42:43 +02:00
Hodei Navarro
d6a0fed1d9 Ease regex pattern when reading pyenv.cfg prompt value
This commit provides support for virtualenv-like pyenv.cfg configuration files, where the `prompt` value is a plain text rather than a quoted string.
Before the commit, `prompt = My custom prompt` would not match the regex, returning a fallback of the $VIRTUAL_ENV directory name.
After the commit, both venv-like `prompt = 'My custom prompt'` and virtualenv-like `prompt = My custom prompt` are supported.

Closes #2628
2024-04-05 20:01:09 +02:00
Mohammad Al Zouabi
da9b03777c remove duplicate POWERLEVEL9K_DIR_SHOW_WRITABLE from p10k-lean-8colors.zsh (#2610) 2024-03-19 01:13:16 -07:00
Roman Perepelitsa
45627c528b Squashed 'gitstatus/' changes from 215063d4..62177e89
62177e89 build: drop -Werror

git-subtree-dir: gitstatus
git-subtree-split: 62177e89b2b04baf242cd1526cc2661041dda0fb
2024-03-18 16:53:55 +01:00
Roman Perepelitsa
3fe8706d24 Merge commit '45627c528b4e3d8949a1e5c72ee3fe7cac516d8d' 2024-03-18 16:53:55 +01:00
Roman Perepelitsa
a7f13e420e bump version 2024-03-18 16:21:57 +01:00
Roman Perepelitsa
55c8f74c38 Revert "remove DISABLE_UPDATE_PROMPT=true from instant prompt"
This reverts commit 07a971d310.
2024-03-18 16:21:24 +01:00
Roman Perepelitsa
50794faba4 Revert "add p10k-deactivate-instant-prompt"
This reverts commit 93d074a82b.
2024-03-18 16:21:07 +01:00
Roman Perepelitsa
a3f7dabcae cleanup 2024-03-18 15:46:27 +01:00
Roman Perepelitsa
93d074a82b add p10k-deactivate-instant-prompt
Function p10k-deactivate-instant-prompt is defined when and only when
instant prompt is active. Invoking it erases and deactivates instant
prompt.
2024-03-18 15:46:05 +01:00
Roman Perepelitsa
07a971d310 remove DISABLE_UPDATE_PROMPT=true from instant prompt
If this breaks your shell, it means you are using an old version of
oh-my-zsh, which predates this commit:

fe0dd8226d

You need to upgrade oh-my-zsh by running the following command:

    omz update
2024-03-18 15:46:05 +01:00
Roman Perepelitsa
6836bfe2da fix heads in the wizard (#2605)
fixed on the phone, hence the dumb diff
2024-03-16 16:03:55 +01:00
Roman Perepelitsa
0fdca5b1e6 always offer the flat heads option in the wizard (#2600) 2024-03-16 13:40:56 +01:00
Roman Perepelitsa
d39e426835 docs: mention sessions in the font instructions for MobaXterm (#2599) 2024-03-12 08:07:40 +01:00
Roman Perepelitsa
0cc19ac2ed use nf-md-redhat as the RHEL logo when on nerdfont-v3 (#2583) 2024-02-23 06:03:55 +01:00
Roman Perepelitsa
b973805f01 cleanup and bump version (#2576) 2024-02-18 17:18:59 +01:00
Roman Perepelitsa
b379cf6225 Merge branch 'cybershoe-2575-raspberry-pi-os-logo' 2024-02-18 17:17:22 +01:00
Adam Schumacher
bb16e366c3 Undelete ubuntu. I shouldn't code this tired. 2024-02-17 22:17:50 -05:00
Adam Schumacher
31d99b694c Fix in wizard.zsh 2024-02-17 22:15:53 -05:00
Adam Schumacher
bfbc65e63d whitespace 2024-02-17 21:38:10 -05:00
Adam Schumacher
12e0592ac8 Still keep debian 2024-02-17 21:29:14 -05:00
Adam Schumacher
9e3418d319 Detect rpi os based on apt source 2024-02-17 21:26:53 -05:00
Roman Perepelitsa
17cd9e354a when looking for .fvm/flutter_sdk, require that the last segment is a symlink rather than .fvm (#2573) 2024-02-15 15:32:29 +01:00
Roman Perepelitsa
8e2a22d80b cleanup and bump version (#2572) 2024-02-12 10:45:18 +01:00
Roman Perepelitsa
5ef7487648 Merge branch 'weirdgiraffe-master' 2024-02-12 10:41:16 +01:00
weirdgiraffe
f880e18769 update readme 2024-02-12 10:31:47 +01:00
weirdgiraffe
665257d059 add themes support 2024-02-12 10:31:47 +01:00
weirdgiraffe
67cedd3edc add visual expansion to wizard 2024-02-12 10:31:47 +01:00
weirdgiraffe
eb8f96f808 add prompt segment for yazi levels 2024-02-12 10:31:44 +01:00
weirdgiraffe
1aa91f0069 add icon for yazi level 2024-02-12 10:30:38 +01:00
Roman Perepelitsa
5bba4b849b skip batteries with "Unknown" status (#2562) 2024-02-06 09:56:26 +01:00
Roman Perepelitsa
ce7c242337 bump versions 2024-02-03 12:14:58 +01:00
Ulices
34ee1c6bbb fix: use correct sourcehut repository url (#2556)
sourcehut.org is the website of the organization but
sr.ht is the website were the repositories are hosted.
2024-02-03 03:13:23 -08:00
Roman Perepelitsa
62341054d8 set the default value of LINUX_NEON_ICON to a glyph that exists in the recommended font (#2553) 2024-02-01 06:44:39 +01:00
Roman Perepelitsa
be39c4ea5a Merge branch 'And9815-master' 2024-02-01 06:39:18 +01:00
Andrea
adc238fa1d neon support 2024-01-31 23:49:13 +01:00
Andrea
6f4520cc13 add neon support 2024-01-31 23:43:11 +01:00
Roman Perepelitsa
307bce24d1 docs: fix a link to zsh-theme-powerlevel10k archlinux package 2024-01-26 09:24:27 +01:00
Roman Perepelitsa
35833ea15f docs: document per_directory_history segment (#2384) 2024-01-26 07:58:05 +01:00
Roman Perepelitsa
bd0fa8a08f docs: fix a link 2024-01-23 08:53:43 +01:00
Roman Perepelitsa
a6fa4e4304 faq: [oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found 2024-01-23 08:52:57 +01:00
Roman Perepelitsa
ab6a863e23 docs: mention truecolor 2024-01-22 18:28:28 +01:00
Roman Perepelitsa
8fefef2285 rewrite the handling of custom prompt in virtualenv (#2540) 2024-01-20 10:30:56 +01:00
Roman Perepelitsa
ecf91710c0 Merge branch 'mickolka-feature/virtualenv-custom-prompt' 2024-01-20 09:38:33 +01:00
Roman Perepelitsa
d774adcb85 Merge branch 'feature/virtualenv-custom-prompt' of https://github.com/mickolka/powerlevel10k into mickolka-feature/virtualenv-custom-prompt 2024-01-20 09:38:20 +01:00
Roman Perepelitsa
30ba16ecd8 font: update alacritty instructions (#2539)
Alacritty has switched from yaml to toml for its config file.
2024-01-20 09:19:22 +01:00
Mikalai Rahachou
4d7925c983 Add parsing of pyvenv.cfg 2024-01-19 16:31:44 +01:00
Roman Perepelitsa
c180a5e040 font: fix foot instructions (#2536) 2024-01-16 08:22:08 +01:00
Roman Perepelitsa
75724ec65e Merge branch 'LlemonDuck-patch-1' 2024-01-16 08:18:23 +01:00
Rhea
9be438f862 add foot font instructions
This adds instructions to the README for users of [foot](https://codeberg.org/dnkl/foot) to enable the MesloLGS Nerd Font as the default in their terminal.
2024-01-15 16:16:32 -05:00
Roman Perepelitsa
cda24b72b7 bump version 2024-01-15 17:18:10 +01:00
Roman Perepelitsa
f5d5abfe1f fix a silly bug introduced in the last commit (#2534) 2024-01-15 17:17:14 +01:00
Roman Perepelitsa
651033c3df work around a bug in laravel that results in colorized output (#2534) 2024-01-15 15:11:55 +01:00
Roman Perepelitsa
d804048efc fix a bug in DCS detection within instant prompt output (#2518) 2024-01-05 05:27:33 +01:00
Roman Perepelitsa
cc6ed4be41 add cdk to POWERLEVEL9K_AWS_SHOW_ON_COMMAND (#1104) 2023-12-16 08:36:29 +01:00
Roman Perepelitsa
dec881651c Squashed 'gitstatus/' changes from 38d35b959..215063d47
215063d47 update libgit2 ref (#414)

git-subtree-dir: gitstatus
git-subtree-split: 215063d4703b944f66cc7cc92543205586a35485
2023-12-10 12:15:00 +01:00
Roman Perepelitsa
d70eedb345 Merge commit 'dec881651ccbd90f7f68b2a2012cf4870741d0dd' 2023-12-10 12:15:00 +01:00
Roman Perepelitsa
36cce9a088 wizard: replace rm with zf_rm (#2504) 2023-12-09 09:38:45 +01:00
Roman Perepelitsa
3cc18b5e08 Merge branch 'oe7drt-openbsd-wizard' 2023-12-09 09:36:04 +01:00
Dominic Reich
44f754d711 use "rm" instead of "unlink" to delete old config file 2023-12-08 18:49:24 +01:00
Roman Perepelitsa
47b0187a67 docs: add a note about p10k reload (#2006) 2023-12-06 08:59:36 +01:00
Roman Perepelitsa
b9a2d846ef docs: clarify that powerlevel10k does not install new commands (#2498) 2023-12-03 16:47:50 +01:00
Roman Perepelitsa
7fd76370f5 be a lot more strict when matching the remote git URL (#2493)
When you choose "Many icons" option in the configuration wizard,
git repositories with a remote receive an icon that depends on
the remote's URL. In the past the matching of the URL was rather
lax: both https://foo.bar/github.com and https://github.com.foo.bar/
were recognized as belonging to github.com. This is no longer the
case.

If you start seeing the plain "git" icon where you were used to
seeing a github/gitlab/etc logo, please open an issue. Make sure
to mention the remote URL of your repo.

This change also allows you to specify the mapping from remote URLs
to icons. Here's an example:

    typeset -g POWERLEVEL9K_VCS_GIT_REMOTE_ICONS=(
      '*@my-company.com:*' VCS_GIT_MY_COMPANY_ICON
      '?*'                 VCS_GIT_ICON
      '*'                  ''
    )

    POWERLEVEL9K_VCS_GIT_MY_COMPANY_ICON='my-company-logo'

The matching is done in the specified order: the first match wins.
2023-12-02 12:20:55 +01:00
Roman Perepelitsa
9547f22822 s/VCS_GIT_ARCH_ICON/VCS_GIT_ARCHLINUX_ICON/ (#2493) 2023-12-02 11:50:18 +01:00
Roman Perepelitsa
c39e5304a1 add VCS_GIT_GITEA_ICON and VCS_GIT_SOURCEHUT_ICON (#2493) 2023-12-02 09:49:50 +01:00
Roman Perepelitsa
096a731db3 define usable defaults for VCS_*_ICON (#2493) 2023-12-02 09:44:17 +01:00
Roman Perepelitsa
783588c17f Merge branch 'add_remotes' of https://github.com/hasecilu/powerlevel10k 2023-12-02 09:32:15 +01:00
Roman Perepelitsa
211c90343f wizard: recognize source -- ~.p10k.zsh in .zshrc 2023-11-30 09:47:34 +01:00
hasecilu
47d5397baa Add various remote git server instances
Currently only icons for big providers of git hosting service are available.

Organizations of open source software usually manage their own instances.

Adding the remote addresses of some of this organizations will let us to
identify via a glyph icon the provider of the source code.
2023-11-23 16:55:36 -06:00
hasecilu
92bee79642 Add icons for VCS_GIT usage
The icons are from organizations that manage a git instance by themselves.
2023-11-23 16:49:36 -06:00
Roman Perepelitsa
174ce9bf01 recognize azure devops git remote HTTPS URLs (#2472) 2023-11-01 10:44:43 +01:00
Roman Perepelitsa
18f0bec1bb use newer icons for azure and azure devops (#2472) 2023-11-01 10:37:54 +01:00
Roman Perepelitsa
430616734a make terraform_version compatible with tfenv (#2049) 2023-10-23 10:44:15 +02:00
Roman Perepelitsa
c7fa7d6748 make rust_version segment compatible with the new rustup toolchain file (#2413) 2023-10-23 10:09:41 +02:00
Roman Perepelitsa
862440ae11 add an icon for azure to vcs (#2447) 2023-10-09 10:17:06 +02:00
Roman Perepelitsa
873c4ff09c fix the path to powerlevel10k when installing with homebrew (#2429) 2023-09-09 11:41:14 +02:00
Roman Perepelitsa
215b20e087 bump version 2023-09-08 12:16:35 +02:00
Jussi Timperi
be4c68fd0a add Guix System icon (#2424) 2023-09-08 03:11:37 -07:00
Roman Perepelitsa
f8595a35bf use powerlevel10k from homebrew/core when installing with brew 2023-09-07 13:58:08 +02:00
Nanda Lopes
011b8469ab typo: s/.tool-version/.tool-versions/ in all configs 2023-08-27 06:42:57 -07:00
Roman Perepelitsa
d8041e4700 Squashed 'gitstatus/' changes from bdaad2e8d..38d35b959
38d35b959 cleanup
7e7b5e807 bash prompt: set PROMPT_COMMAND in a nicer and more robust manner (#403)
7ee9227de Merge branch 'samiam-append_prompt'
198ed58ce Revert "Update README to append to PROMPT_COMMAND"
8b6a229fa Switch to using var assignment for backward compatibility
693f9efa0 Update README to append to PROMPT_COMMAND
a48175ce1 Append to PROMPT_COMMAND to play nice with other prompt programs

git-subtree-dir: gitstatus
git-subtree-split: 38d35b95926e09d07b8cf78edade7cee7a9a1dcf
2023-08-15 10:30:02 +02:00
Roman Perepelitsa
f04ce05d92 Merge commit 'd8041e4700ace779aaf42e19c3de2d25a14dbae8' 2023-08-15 10:30:02 +02:00
Roman Perepelitsa
9401ed17c0 Squashed 'gitstatus/' changes from abb4f6a52..bdaad2e8d
bdaad2e8d Makefile: remove the explicit check for the existence of $(CXX)
6d32e0272 Merge branch 'criadoperez-fix/makefile'
c0e3c250e improved Makefile

git-subtree-dir: gitstatus
git-subtree-split: bdaad2e8d0e6e2f9928e067c85de8096b87e21fa
2023-08-10 11:48:54 +02:00
Roman Perepelitsa
69d726d9fb Merge commit '9401ed17c0a8c3d1654214a204b8d5b5f7ccf386' 2023-08-10 11:48:54 +02:00
Roman Perepelitsa
22cb2f79dd Squashed 'gitstatus/' changes from 4b47ca047..abb4f6a52
abb4f6a52 fix typos in docs and comments
958ae4e6d docs: explicitly mention that core.fsmonitor was disable in git benchmarks (#370)

git-subtree-dir: gitstatus
git-subtree-split: abb4f6a5225d12f51ffd8196060804b0c770482e
2023-08-10 09:32:33 +02:00
Roman Perepelitsa
2d9c1f271b Merge commit '22cb2f79ddb89a368dd823e815fa1b0587ff1b6a' 2023-08-10 09:32:33 +02:00
Alejandro Criado-Pérez
717f9a1881 fix typos in docs and comments 2023-08-10 00:31:37 -07:00
Roman Perepelitsa
f851f41fc1 remove MULTIBYTE requirement from the configuration wizard (#2397) 2023-07-29 17:01:40 +02:00
Roman Perepelitsa
9bb15e9ffb docs: rephrase "Git status looks incorrect" section 2023-07-26 19:24:52 +02:00
Roman Perepelitsa
ef401ad02a Merge branch 'fzakaria-skip-hash' 2023-07-26 19:12:18 +02:00
Farid Zakaria
a8fa0e2a1b Add documentation explaining lack of support for skipHash
libgit2 does not support skipHash which causes the prompt to be
incorrect for repos that have it toggled.

Add the documentation for this gap.

fixes #2387
2023-07-26 17:08:46 +00:00
Roman Perepelitsa
68104494a7 bump version + cleanup (#2391) 2023-07-25 21:42:48 +02:00
Roman Perepelitsa
baf03bf48e Merge branch 'mgkurtz-mgk/rocky' 2023-07-25 21:40:10 +02:00
Markus Kurtz
367c667de6 Add rocky icon to wizard 2023-07-25 21:36:13 +02:00
Markus Kurtz
12aa3fa3c4 Add rocky icon 2023-07-25 20:50:59 +02:00
Roman Perepelitsa
7e9a79f3f1 new segment: per_directory_history (#2384) 2023-07-25 13:25:19 +02:00
Roman Perepelitsa
1d96f5e066 unquote ID in /etc/os-release (#2388) 2023-07-25 07:55:26 +02:00
Roman Perepelitsa
e8aa8cce7f unquote ID in /etc/os-release (#2388) 2023-07-25 07:54:38 +02:00
Roman Perepelitsa
646bae0dd6 docs: Terminus is now called Tabby 2023-07-21 22:48:11 +02:00
Roman Perepelitsa
4cc0ea0081 Merge branch 'hugivar-master' 2023-07-21 22:46:13 +02:00
hugo
2453fd27e2 Update README.md as Terminus is now known as Tabby 2023-07-21 16:18:24 -04:00
Roman Perepelitsa
932954a8b1 do not display an indicator when a git branch is up to date with a remote
https://github.com/romkatv/powerlevel10k/issues/2361 requested an indicator for
up to date branches, which was added in
20323d6f8c.

Since then, 3 users complained about the new indicator:

- https://github.com/romkatv/powerlevel10k/issues/2377
- https://github.com/romkatv/powerlevel10k/issues/2380
- https://github.com/romkatv/powerlevel10k/issues/2361#issuecomment-1630731045

On one hand we have one request to add a feature. On the other hand we have
three complaints about the feature's existence. The feature is going away.
2023-07-12 15:01:32 +02:00
Roman Perepelitsa
93d97b7eba better comments 2023-07-11 11:11:21 +02:00
Roman Perepelitsa
078497570f clean up the handling of POWERLEVEL9K_AZURE_CLASSES and put it in all configs (#2379)
This reverts commit 343d4f44e5, reversing
changes made to 4dca4bdfbb.
2023-07-11 11:08:18 +02:00
Roman Perepelitsa
343d4f44e5 Merge branch 'benm-stm-bug/sub-patterns-colors-for-azure' 2023-07-11 10:52:17 +02:00
BEN MANSOUR Mohamed Rafik
0c28fec137 fix pattern coloration for azure defined classes 2023-07-10 22:07:28 +02:00
Roman Perepelitsa
4dca4bdfbb bug fix: honor POWERLEVEL9K_LEFT_SEGMENT_END_SEPARATOR in instant prompt (#2376) 2023-07-09 09:42:35 +02:00
Roman Perepelitsa
20323d6f8c display = in git status if up to date with the remote (#2361) 2023-06-26 10:33:21 +02:00
Roman Perepelitsa
017395a266 release v1.19.0 2023-06-23 07:44:27 +02:00
Koen van Zuijlen
ab8bac01e2 Add sparkctl to POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND (#2346) 2023-06-17 01:46:55 -07:00
Roman Perepelitsa
360dcd3907 respect XDG_DATA_HOME when looking for the timewarrior data directory (#2344)
The logic for finding the data directory is as follows:

1. Find the root directory:
  1.1 If TIMEWARRIORDB is set, use that.
  1.2 Else if ~/.timewarrior is an existing directory, use that.
  1.3 Else if XDG_DATA_HOME is set, use $XDG_DATA_HOME/timewarrior.
  1.4 Else use ~/.local/share/timewarrior.
2. Append "/data" to the root directory.
2023-06-15 08:48:43 +02:00
Roman Perepelitsa
944f52fc43 move chezmoi_shell in the docs closer to other shell indicator segments 2023-06-11 09:09:24 +02:00
Roman Perepelitsa
cc4878aef2 fix chezmoi segment and rename it to chezmoi_shell (#2311)
- Link to the project's homepage rather than its source code.
- Move `chezmoi_shell` next to all the other *shell indicator* segments.
- Use a shade of blue that resembes the color on chezmoi.io.
- Don't go beyond 8 colors in 8-color configs.
- Remove the segment from the *pure* config.
- Fix whitespace padding on `CHEZMOI_ICON`.
- Use the appropriate icon with all fonts (the same as `HOME`).
- Add missing `CHEZMOI_ICON` definitions for "powerline" and "ascii" font modes.
- Remove the redundant literal "chezmoi" content from the segment.
- Fix instant prompt so that the segment is shown only when `$CHEZMOI` is non-empty.
2023-06-11 09:07:41 +02:00
Roman Perepelitsa
c775a3ffd5 Merge branch 'Alkindi42-feat/add-chezmoi-prompt' 2023-06-11 08:14:15 +02:00
Roman Perepelitsa
416bdf1ca3 Merge branch 'feat/add-chezmoi-prompt' of https://github.com/Alkindi42/powerlevel10k into Alkindi42-feat/add-chezmoi-prompt 2023-06-11 08:14:06 +02:00
Alkindi42
3ecef8c6a5 feat(chezmoi): add instant_prompt_chezmoi 2023-06-10 14:25:17 +02:00
Alkindi42
7b19746580 feat: add color and custom icon 2023-06-10 14:09:50 +02:00
kvanzuijlen
e4b8925478 Added cert manager cmctl to POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND 2023-06-08 09:27:26 +02:00
Roman Perepelitsa
79753faacb add a comment within .p10k.zsh explaining the use of "_joined" (#2332) 2023-06-04 20:11:07 +02:00
Roman Perepelitsa
3ce7bac4ff Merge branch 'warp' 2023-05-27 07:34:08 +02:00
Alkindi42
9ed51ec315 doc: add chezmoi prompt in the README 2023-05-21 21:54:50 +02:00
Alkindi42
6db5920bb9 feat: add chezmoi icon 2023-05-21 21:45:11 +02:00
Alkindi42
29c0b25850 feat: enable chezmoi prompt in configurations 2023-05-21 21:42:09 +02:00
Skyler
951d695789 Update README.md
Fixed a small bug in alpine linux hyperlink under Installation
2023-05-20 00:49:12 -07:00
Alkindi42
6740f08f61 chezmoi: add chezmoi prompt 2023-05-18 11:57:40 +02:00
Roman Perepelitsa
8cce84643f set P9K_VERSION (#2307) 2023-05-17 17:57:29 +02:00
Roman Perepelitsa
a69aa22fa8 show the right cwd when some part of it gets renamed (#2304) 2023-05-16 10:43:49 +02:00
Roman Perepelitsa
f4a7e6d0e0 force shell integration when running under warp (#2307) 2023-05-16 10:16:42 +02:00
Roman Perepelitsa
7bb3f05318 annotate right prompt for warp (#2307) 2023-05-16 10:16:05 +02:00
Arthur McLain
9b47a22f13 Update README.md 2023-05-10 23:45:44 -07:00
Roman Perepelitsa
1dcd882593 set P9K_STARTUP_CONSOLE_OUTPUT to assist in debugging startup console output problems 2023-05-10 09:25:31 +02:00
Roman Perepelitsa
064f4d2209 whitelist DCS in startup console output (#2299) 2023-05-10 09:25:01 +02:00
Roman Perepelitsa
0a9eb73e16 nvm: change the default value of POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW back to false (#2296) 2023-05-08 09:10:24 +02:00
Roman Perepelitsa
016512f493 nvm: change the default value of POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW to true and fix the way it is used (#2296) 2023-05-08 09:06:00 +02:00
Roman Perepelitsa
7039779c19 Merge branch 'zaidhaan-nvm-always-show' 2023-05-08 08:57:29 +02:00
Zaidhaan Hussain
4ed8aae324 nvm: implement POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW and default to false 2023-05-07 17:16:16 +08:00
Zaidhaan Hussain
5d16c106ed nvm: implement POWERLEVEL9K_NVM_SHOW_SYSTEM and default to true 2023-05-07 00:33:06 -07:00
Roman Perepelitsa
0af598cbed wizard: add a screen for detecting faulty terminals that render glyphs such as U+F0001 as wide (e.g., Windows Terminal) 2023-05-04 11:50:14 +02:00
Roman Perepelitsa
ce0bee979b wizard: check for unicode 9 support before asking about U+F0737 2023-05-04 10:40:52 +02:00
Roman Perepelitsa
dff735c261 increase the default value of POWERLEVEL9K_GITSTATUS_INIT_TIMEOUT_SEC from 5 to 10 2023-04-29 08:52:46 +02:00
Roman Perepelitsa
630c1868df add POWERLEVEL9K_GITSTATUS_INIT_TIMEOUT_SEC 2023-04-29 08:51:49 +02:00
Roman Perepelitsa
bbea8d2d06 use U+F327 (Kali Linux logo) only with POWERLEVEL9K_MODE=nerdfont-v3 (#2281) 2023-04-24 10:39:39 +02:00
Roman Perepelitsa
6f8dec7a76 Merge branch 'zerom0-master' 2023-04-24 10:32:01 +02:00
Martin Mosler
94c4428ddc added icon for kali linux 2023-04-23 21:08:36 +02:00
Roman Perepelitsa
045f006c50 correctly resolve node_version when using nodenv (#2268) 2023-04-18 09:50:43 +02:00
Roman Perepelitsa
c1b5b2c8aa Merge branch 'LucasLarson-clock_mnemonic' 2023-04-15 20:25:33 +02:00
Lucas Larson
954f38d589 use less surprising input for clock option
for the three clock options (no clock, a 12-hour clock, or a 24-hour
clock), use the first character of the option as the input to
fix #2266.

This pull request is a reissue of – and supersession of – #2267,
which was pushed on a branch with non-ASCII characters in the name.

Signed-off-by: Lucas Larson <LucasLarson@riseup.net>
2023-04-15 14:06:47 -04:00
Roman Perepelitsa
f27d192eb2 bump version 2023-04-12 11:08:01 +02:00
Roman Perepelitsa
bab655fb1f do not infer nix_shell from PATH unless POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH is set to true (#2246) 2023-04-12 11:07:32 +02:00
Roman Perepelitsa
fb1287fedb simplify _p9k_url_escape 2023-04-07 13:24:49 +02:00
Roman Perepelitsa
1cff22491b fix the kubernetes icon (#2217) 2023-04-05 18:14:52 +02:00
Roman Perepelitsa
b474978b2e wizard: prefer POWERLEVEL9K_MODE=nerdfont-complete over nerdfont-v3
Apparently Windows Terminal has a bug. To reproduce:

    print -P '\UF0737%K{red} %k'

The expected output:

    x_

Here 'x' signifies any glyph of width 1, and '_' signifies a red
block.

The actual output:

    x _

Notice the space.

The output of the following two commands is as expected:

    print -P '\UFC35%K{red} %k'
    print -P '\UFC35x'
2023-04-03 14:23:14 +02:00
Roman Perepelitsa
8167383665 wizard bug fix: offer advanced powerline options when using nerdfont-v3 2023-04-03 12:34:11 +02:00
Roman Perepelitsa
d031df752b wizard: detect POWERLEVEL9K_MODE=nerdfont-v3
This is Step 2 of https://github.com/romkatv/powerlevel10k/issues/2217#issuecomment-1493271666.
2023-04-02 14:22:01 +02:00
Roman Perepelitsa
6314edf35c wizard: rename capability "arrow" to "quotes" 2023-04-02 14:19:00 +02:00
Roman Perepelitsa
6c82236d6f nerdfonts-v3: add an icon for EndevourOS (#1933) 2023-04-02 13:34:20 +02:00
Roman Perepelitsa
6b50e0918b nerdfonts-v3: use the kubernetes logo as a kubernetes icon (#2184) 2023-04-02 13:23:06 +02:00
Roman Perepelitsa
ec1702caf1 nerdfonts-v3: add icons for artix and void linux (#2033) 2023-04-02 13:20:27 +02:00
Roman Perepelitsa
f02b8d365b add POWERLEVEL9K_MODE=nerdfont-v3 (#2217)
This is Step 1 of https://github.com/romkatv/powerlevel10k/issues/2217#issuecomment-1493271666.
2023-04-02 13:14:47 +02:00
Roman Perepelitsa
614a6ed1ca display nix_shell if path contains /nix/store/* (#2246) 2023-04-01 10:51:37 +02:00
Roman Perepelitsa
cb9788b12a docs: fix zed font instructions 2023-03-16 09:51:24 +01:00
Roman Perepelitsa
7f30a32ee6 Merge branch 'lazarjov-master' 2023-03-16 09:44:25 +01:00
Lazar Jovanovic
e2c4e6673f Add manual MesloLGS NF font installation for Zed 2023-03-15 12:24:13 -07:00
Roman Perepelitsa
2aa16c5431 docs: prune the list of kubecontext commands 2023-03-03 17:01:19 +01:00
NatureLR
373337123c Added kubecolor to KUBECONTEXT_SHOW_ON_COMMAND 2023-03-03 16:56:35 +01:00
Roman Perepelitsa
a30145b0f8 add an optional parameter to _p9k_upglob to pass glob qualifiers and use it in most cases to restrict globbing to files/directories/links/etc (#2175) 2023-01-30 20:25:55 +01:00
Roman Perepelitsa
e7b2bb2372 set POWERLEVEL9K_VPN_IP_INTERFACE to the same value as the default: this adds ZeroTier support 2023-01-28 12:50:42 +01:00
Mehyar
e9e94a503a fix the default value of POWERLEVEL9K_VPN_IP_INTERFACE
It was broken by #1730.
2023-01-28 12:43:07 +01:00
Roman Perepelitsa
0adbc1415b fix a silly bug introduced in the last commit (#2170) 2023-01-23 11:11:20 +01:00
Roman Perepelitsa
f03d917fb0 fix network interface detection on macos (#2170)
This was broken in #2088.
2023-01-23 10:59:07 +01:00
Roman Perepelitsa
21e89cb61d bust caches 2023-01-19 18:46:16 +01:00
Zoltán Reegn
b165fec0ed Add AWS partitions support to EKS kubernetes cluster names
The AWS ARN in govcloud and china looks different to the currently supported
one:

https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/using-govcloud-arns.html
https://docs.amazonaws.cn/en_us/aws/latest/userguide/ARNs.html

This change introduces support for all possible AWS partitions.
2023-01-19 18:45:25 +01:00
James Winegar
d1b89dd381 Update README.md
You run containers that are based on images. The container will be deleted, but not the image.
2023-01-19 16:57:43 +01:00
Roman Perepelitsa
a066b55f85 don't trust P9K_SSH if it was set with a different TTY (#2154) 2023-01-13 12:06:20 +01:00
Roman Perepelitsa
1a4b01c232 work around a bug in ohmyzsh (#2152)
The bug was introduced here: 3dd83a22a1

This causes Oh My Zsh to print \r to the terminal.
2023-01-11 21:52:19 +01:00
kvanzuijlen
35165798a8 Added kubent to KUBECONTEXT_SHOW_ON_COMMAND 2023-01-06 12:14:59 +01:00
Roman Perepelitsa
33916e91a7 add a missing lf header to p10k-lean.zsh (#2126) 2022-12-16 15:52:19 +01:00
Roman Perepelitsa
c08975d0f6 Merge branch 'UtkarshVerma-master' 2022-12-16 15:50:58 +01:00
Utkarsh Verma
07b5a607d4 Add lf segment 2022-12-16 19:55:25 +05:30
Leon Satoshi
7f2950f9cc Update README.md
change from China mainland to  China in Mandarin
2022-12-11 13:36:20 +01:00
Roman Perepelitsa
a7bf4c83de docs: add cpu_arch 2022-12-02 10:36:06 +01:00
Roman Perepelitsa
edafcb5a7d fix bugs in cpu_arch 2022-12-02 10:34:51 +01:00
Roman Perepelitsa
9f0751c2e3 Merge branch 'clarkcox3-master' 2022-12-02 10:25:43 +01:00
Clark S. Cox
45758d95fb Use "machine" where available for CPU arch
This allows shells on macOS to display more specific CPU arch (e.g. a 64-bit intel machine will display "x86_64" instead of "i386")
2022-12-01 16:08:09 -08:00
Roman Perepelitsa
6609767abd don't invoke mktemp if it doesn't exist 2022-11-28 12:14:48 +01:00
Roman Perepelitsa
8d47270e8c don't invoke mktemp if it doesn't exist 2022-11-27 15:37:04 +01:00
Roman Perepelitsa
176f781121 assume that dotnet version may depend on the content of global.json (#2103) 2022-11-27 11:45:23 +01:00
Roman Perepelitsa
cf83ab21e4 fix a bug in zap install instructions and add uninstall instructions (#2093) 2022-11-17 10:22:27 +01:00
Roman Perepelitsa
54798e0c18 Merge branch 'shwcsmack-patch-1' 2022-11-17 10:13:08 +01:00
shwcsmack
d5123401be Add reference to Zap plugin manager
I added a reference in the Readme for my favorite ZSH package manager: Zap
2022-11-16 17:08:59 -06:00
Roman Perepelitsa
bc5983543a Merge branch 'ebardie-ebardie/prefer_ip_over_ifconfig' 2022-11-14 14:58:15 +01:00
Jonathan Sambrook
5691a418e0 Prefer ip over ifconfig for i/f detection.
`ifconfig`'s formatting doesn't cope well with long interface names. In
these cases it will eat up the whitespace separating the name from the
text "Link" in the output, which makes parsing the output problematic.

e.g. `ifconfig`:

    wlp0s20f0u2Link encap:Ethernet  HWaddr 00:AA:BB:CC:DD:EE

v.s `ip`:

   21: wlp0s20f0u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc \
       mq state UP group default qlen 1000

This commit swaps the order of detection inside
`_p9k_prompt_net_iface_async()`, so that `ip` will be preferred.

`ifconfig` is deprecated by distros in favour of `ip`, so this will
often be an incredibly marginal performance boost :)

NOTE: this commit does not address the problem with using `ifconfig`. I
don't understand the zsh regex, so have not touched it.
2022-11-14 13:52:07 +00:00
Roman Perepelitsa
8c55eb4fa3 wizad: add a hint pointing to the frame when asking for frame color 2022-11-14 14:26:12 +01:00
Roman Perepelitsa
5a3109e40d replace POWERLEVEL9K_CHRUBY_SHOW_ENGINE_IF_RUBY with POWERLEVEL9K_CHRUBY_SHOW_ENGINE_PATTERN (#2072)
POWERLEVEL9K_CHRUBY_SHOW_ENGINE_PATTERN defines a pattern that
RUBY_ENGINE should match for it to be shown. Matching is done
with extended_glob.

For example, to show all values of RUBY_ENGINE except "ruby":

    POWERLEVEL9K_CHRUBY_SHOW_ENGINE_PATTERN='^ruby'

If POWERLEVEL9K_CHRUBY_SHOW_ENGINE_PATTERN is unset and
POWERLEVEL9K_CHRUBY_SHOW_ENGINE is set to true,
the behavior is the same as if POWERLEVEL9K_CHRUBY_SHOW_ENGINE_PATTERN
was set to *.
2022-11-02 15:55:35 +01:00
Roman Perepelitsa
f68197a3aa Merge branch 'skipkayhil-rm-ruby-engine-if-ruby' 2022-11-02 11:04:17 +01:00
Hartley McGuire
b8c6c6f42f Add chruby config to hide RUBY_ENGINE when "ruby"
Previously, the chruby segment looks like this for standard and
non-standard ruby implementations respectively:

```
Ruby ruby 3.1.2
Ruby truffleruby 3.0.3
```

While displaying the RUBY_ENGINE is helpful for non-standard
implementations, showing it for "ruby" results in "Ruby ruby" which
feels redundant.

This commit adds a new configuration option to disable showing the
RUBY_ENGINE when it is "ruby". Other values for RUBY_ENGINE will always
display as before:

```
Ruby 3.1.2
Ruby truffleruby 3.0.3
```

This also makes the formatting more similar to the asdf segment:

```
Ruby 3.1.2
Ruby truffleruby-22.3.0
```
2022-11-01 21:09:52 -04:00
Roman Perepelitsa
8091c8a3a8 Merge branch 'mmathys-patch-1' 2022-10-09 11:59:23 +02:00
Roman Perepelitsa
e4a94a8ae0 Merge branch 'patch-1' of github.com:mmathys/powerlevel10k into mmathys-patch-1 2022-10-09 11:59:09 +02:00
Roman Perepelitsa
ed1b02efd5 Squashed 'gitstatus/' changes from 6dc0738c0..4b47ca047
4b47ca047 docs: s/mainland China/China/
b74da1403 docs: fix grammar
fc27662b4 Merge branch 'andresrinivasan-patch-1'
ad739b2b0 Clarify that gitstatus is included with Powerlevel10k

git-subtree-dir: gitstatus
git-subtree-split: 4b47ca047be1d482dbebec7279386a9365b946c6
2022-10-09 11:58:40 +02:00
Roman Perepelitsa
cd47894197 Merge commit 'ed1b02efd5f7691d72cf9b657d939e3adc31034c' 2022-10-09 11:58:40 +02:00
Roman Perepelitsa
bd0c9f4ec7 rename arch to cpu_arch and rewrite it (#1752) 2022-10-09 11:54:02 +02:00
Roman Perepelitsa
f89b54faf2 Merge branch 'brent-moffit-master' 2022-10-08 16:13:48 +02:00
Roman Perepelitsa
02290d1eb9 Merge branch 'master' of github.com:brent-moffit/powerlevel10k into brent-moffit-master 2022-10-08 16:13:40 +02:00
Max Mathys
3e952468aa "mainland China" to "China" 2022-10-08 13:07:13 +02:00
Max Mathys
efffc87cf5 Rename "mainland China" to "China" 2022-10-08 13:05:32 +02:00
Roman Perepelitsa
5ee784787f fix a bug introduced in cf1b586515 2022-10-05 11:26:40 +02:00
Roman Perepelitsa
cf1b586515 fix bugs introduced in 843dcf0167 2022-10-05 10:23:04 +02:00
Roman Perepelitsa
843dcf0167 survive broken FPATH (#10 2022-10-02 18:34:25 +02:00
hayas1
957249a95c Fix gcloud config directory 2022-09-23 14:34:57 +02:00
Roman Perepelitsa
4bbb198a60 fix tables broken by the last commit 2022-09-04 19:22:31 +02:00
Roman Perepelitsa
b4a5379be8 Merge branch 'andresrinivasan-patch-1' 2022-09-04 19:21:23 +02:00
Roman Perepelitsa
5ca97df8fe Merge branch 'patch-1' of github.com:andresrinivasan/powerlevel10k into andresrinivasan-patch-1 2022-09-04 19:20:57 +02:00
André Srinivasan
18f939d344 Add references to Antidote
Signed-off-by: André Srinivasan <andre.srinivasan@gmail.com>
2022-09-01 13:59:51 -07:00
Roman Perepelitsa
3bfbb8294f sync fonts.md with README.md 2022-08-31 09:47:53 +02:00
Roman Perepelitsa
cbca1bd8c1 docs: set font in Windows Terminal through the Settings UI 2022-08-31 09:46:32 +02:00
Roman Perepelitsa
534ace8773 Merge branch 'phwt-patch-1' 2022-08-31 09:42:55 +02:00
phwt
5d223b8351 docs: update Windows Terminal font configuration 2022-08-30 12:44:44 +07:00
Roman Perepelitsa
0493886837 clarify that quotes are necessary when specifying font name in crostini (#1934) 2022-08-20 10:16:28 +02:00
Roman Perepelitsa
f9fd384d8d make zi installation instructions consistent with the rest; fix table formatting 2022-07-31 11:46:16 +02:00
Roman Perepelitsa
4a60348e07 Merge branch '0xMRTT-patch-1' 2022-07-31 11:43:24 +02:00
0xMRTT
abc318b608 Add Zi plugin manager to the install list
A more detailled procedure of the installation of powerlevel10k with zi is available at [wiki.zshell.dev](https://wiki.zshell.dev/community/gallery/collection/themes#thp-romkatvpowerlevel10k)
2022-07-31 11:37:26 +02:00
Roman Perepelitsa
e72264e01c don't trust cnorm as it's incorrect in some combinations of terminals and terminfo (#1699) 2022-07-21 13:54:51 +02:00
Roman Perepelitsa
fd5fa09504 fix toolbox segment (#1916) 2022-07-20 11:12:37 +02:00
Roman Perepelitsa
7704f6b877 Merge branch 'christian-schulze-use-HOST-for-distrobox-detection' 2022-07-20 11:10:56 +02:00
Roman Perepelitsa
64c5f10379 Merge branch 'use-HOST-for-distrobox-detection' of https://github.com/christian-schulze/powerlevel10k into christian-schulze-use-HOST-for-distrobox-detection 2022-07-20 11:10:42 +02:00
Roman Perepelitsa
2dd6a29e4d replace a hyperlink in crostini instructions with regular text (#1934) 2022-07-14 16:42:44 +02:00
Omeir Fawaz
71e4e3288d fix typo in README 2022-07-14 14:25:49 +02:00
Roman Perepelitsa
be3724bc80 typo in comments 2022-07-11 10:08:06 +02:00
Roman Perepelitsa
487a388dbd make crostini font instructions stylistically similar to the rest and copy them over to font.md (#1934) 2022-07-11 10:00:20 +02:00
Roman Perepelitsa
c1c827e21d Merge branch 'alkis-crostini' 2022-07-11 09:51:59 +02:00
Alkis Evlogimenos
9a3c2f48a4 add Crostini installation instructions 2022-07-10 15:48:34 +03:00
Christian Schulze
cb82b1f5d9 use HOST for distrobox detection 2022-06-24 15:09:06 +10:00
Roman Perepelitsa
cf67cad465 fix the UNICODE code point for powerline "branch" icon in comments (#1911) 2022-06-22 12:06:42 +02:00
Gerald Turner
0c197ed4a5 battery plugin: Support Linux on Librem5 phone 2022-06-18 22:17:37 +02:00
Roman Perepelitsa
0bef490cda replace fig ads with installation instructions 2022-06-15 20:37:51 +02:00
Roman Perepelitsa
3ed9c1bce1 Merge branch 'ibayramli2001-fig' 2022-06-15 20:34:06 +02:00
Ilkin Bayramli
19bcd37935 Add Fig as an installation method to the README 2022-06-15 11:25:22 -07:00
Roman Perepelitsa
6b128d48d6 update alpine linux installation instructions 2022-06-06 17:33:37 +02:00
Anupam Srivastava
89ecd6539a Fixed minor spelling mistakes 2022-06-03 15:26:12 +02:00
Roman Perepelitsa
5c7ad753a2 add installation instructions for alpine; related: #1828 2022-05-28 18:59:10 +02:00
Roman Perepelitsa
a3f6859a8d cleanup 2022-05-26 09:42:26 +02:00
Lucas Larson
cf9a1fd02d suppress nounset error if DIRENV_DIR isn’t defined (fix #1876)
Signed-off-by: Lucas Larson <LucasLarson@riseup.net>
2022-05-26 09:41:45 +02:00
Roman Perepelitsa
74ff02a819 work around a bug in zsh 5.4.1 (#1872)
Here's the bug:

  zsh -fc 'print "${#${x}}"'

This code should print "0" but it prints "1" in zsh 5.4.1.
2022-05-20 16:58:51 +02:00
AdalZanabria
406e6aa9e4 Added missing segments to README without auto-formatting. 2022-05-03 12:04:31 -07:00
AdalZanabria
d03058819d Revert "Added missing segments to README." because of auto-formatting.
This reverts commit e65e508743.
2022-05-03 12:04:31 -07:00
AdalZanabria
ff531e5f2c Added missing segments to README. 2022-05-03 12:04:31 -07:00
Curtis Vogt
0b02654269 Show kubecontext when using kubeseal or skaffold 2022-04-07 12:32:24 -07:00
Roman Perepelitsa
657e184e0d disable vscode integration; it doesn't work anyway but it makes shell slower
Context: https://github.com/microsoft/vscode/pull/145610#issuecomment-1076519194
2022-04-04 15:14:55 +02:00
Roman Perepelitsa
65599411ec ignore garbage printed by vscode 2022-03-20 14:58:15 +01:00
Roman Perepelitsa
e13283ec7d bug fix: strip escape sequences in instant prompt output less aggressively 2022-03-20 14:57:27 +01:00
Roman Perepelitsa
f07d7baea3 minor cleanup around perlbrew 2022-02-28 10:30:39 +01:00
Roman Perepelitsa
73698935b8 Merge branch 'lmburns-perlbrew' 2022-02-28 10:24:10 +01:00
Lucas Burns
40a5cdfa6c chore: forgot to add global variables to main 2022-02-26 20:32:53 -06:00
Lucas Burns
b898d1de15 feature: added perlbrew 2022-02-26 20:27:19 -06:00
brent-moffit
59e90bd8b0 Add instant prompt for arch 2022-02-14 12:38:13 -08:00
brent-moffit
01467fae4f Change arch prompt colors to better match default themes 2022-02-14 12:27:56 -08:00
Roman Perepelitsa
c0a028351f Squashed 'gitstatus/' changes from f889c13d1..6dc0738c0
6dc0738c0 release v1.5.4
6b3e7cf2f update mbuild script for the new release infra
12b2457ae release v1.5.4

git-subtree-dir: gitstatus
git-subtree-split: 6dc0738c0e5199b0ae47d9693874e7d43c7f8f29
2022-02-14 19:26:12 +01:00
Roman Perepelitsa
123136c0e7 Merge commit 'c0a028351ff9a611c4061938ebd5ec4cafb900eb' 2022-02-14 19:26:12 +01:00
Roman Perepelitsa
5fe28f0a01 bug fix: correctly parse kubectl config when current-context has metacharacters (#1767) 2022-02-14 10:10:38 +01:00
Roman Perepelitsa
4b21cd06ff Squashed 'gitstatus/' changes from b226d8e06..f889c13d1
f889c13d1 build: clean up dragonfly support (#297)
2b6366fbd Merge branch 'msvetlik-dragonflybsd-support'
409c791eb Added detection of DragonflyBSD and tested compilation on v6.2.1

git-subtree-dir: gitstatus
git-subtree-split: f889c13d18fbf6f3109d6889be34d50af04d99b9
2022-02-07 08:38:49 +01:00
Roman Perepelitsa
a83e53005f Merge commit '4b21cd06ffeb5706b017c78b13c2eaf40d7deac1' 2022-02-07 08:38:49 +01:00
brent-moffit
c5203a3da2 Add arch prompt for displaying CPU architecture
Adds the `arch` prompt to `p10k.zsh`, `ARCH_ICON` to `icons.zsh`, and commented entries in the default configs
2022-02-02 17:47:46 -08:00
Roman Perepelitsa
8a676a9157 fix shell integration with kitty 2022-02-01 20:39:00 +01:00
Roman Perepelitsa
bee6e09262 Squashed 'gitstatus/' changes from 6eb490ab..b226d8e0
b226d8e0 bug fix: don't crap out when TMPDIR is unset

git-subtree-dir: gitstatus
git-subtree-split: b226d8e060db82ac68f1b00c49d1fc85abdbe56e
2022-01-26 16:04:09 +01:00
Roman Perepelitsa
4f143b7b97 Merge commit 'bee6e09262a6145fc178ddc85c656da4bb83a9a9' 2022-01-26 16:04:09 +01:00
Roman Perepelitsa
d6f8c47761 survive broken $TMPDIR 2022-01-26 15:03:22 +01:00
Roman Perepelitsa
5014de0541 Squashed 'gitstatus/' changes from e02d9eed..6eb490ab
6eb490ab survive broken $TMPDIR
94bf4fc2 add ppc64 support to the build script

git-subtree-dir: gitstatus
git-subtree-split: 6eb490ab86118ad063224e4d50b6b05bea7dd12c
2022-01-26 14:45:50 +01:00
Roman Perepelitsa
cead0349c5 Merge commit '5014de0541201716dc4ee6f544321ac4e3d7431e' 2022-01-26 14:45:50 +01:00
Roman Perepelitsa
6c71862c5f don't set OS, DEFAULT_COLOR and DEFAULT_COLOR_INVERTED
See #1735.
2022-01-25 14:32:01 +01:00
Roman Perepelitsa
9e0ef918db fix ZeroTier network interface regex
From https://forwardingplane.net/configuration-archive/renaming-interfaces-under-linux/:

> ZeroTier has the inconsistency of using zt* on some platforms and ztublkahlah on others.

They mean zt[0-9]+ and zt[a-z0-9]+.
2022-01-20 12:28:27 +01:00
Roman Perepelitsa
02710eb568 Merge branch 'Mehyar-ALS-patch-1' 2022-01-20 12:26:11 +01:00
Mehyar
e511c36ec6 Add ZeroTier to the list of VPNs
ZeroTier users can also see their VPN IP when enabling the vpn_ip option.
2022-01-20 11:49:58 +01:00
Roman Perepelitsa
3d994b033b work around bugs in WSL where it reports more swap being used than the total available (#1724) 2022-01-17 15:35:20 +01:00
Roman Perepelitsa
0f8a77d47d increase the minimum required zsh version from 5.1 to 5.3 (#1722) 2022-01-15 23:00:17 +01:00
Roman Perepelitsa
161f4c1f04 respect VIRTUAL_ENV_PROMPT if its value is different from the default (#1718) 2022-01-14 13:59:05 +01:00
Roman Perepelitsa
b8ddcd4c17 docs: clean up font instructions for xterm and copy them to README.md 2022-01-13 10:08:21 +01:00
Roman Perepelitsa
c4d3ab0ae0 Merge branch 'pstekl-master' 2022-01-13 10:03:22 +01:00
pstekl
69909a7a1f Add xterm to font configuration section 2022-01-12 20:52:44 +01:00
Roman Perepelitsa
fdbde52c20 docs: sort the table of segments 2022-01-11 12:56:27 +01:00
Roman Perepelitsa
6fae3a169b add toolbox segment to the docs (#1713) 2022-01-11 12:55:43 +01:00
MenkeTechnologies
683a485232 remove duplicate the 2022-01-08 20:03:30 +01:00
Roman Perepelitsa
e1c52e08d4 add an icon for amazon linux (#1706) 2022-01-06 12:37:20 +01:00
Andrea Cervesato (TheKoma)
fba50d9671 Added gsutil as is the main "other command" in GCP 2022-01-05 16:04:29 +01:00
Roman Perepelitsa
66c0181f76 doc: s/Kitty/kitty/ 2022-01-05 08:37:11 +01:00
Roman Perepelitsa
67ac98d515 doc: kitty v0.24.0 has been released (the first version with shell integration) 2022-01-05 08:36:29 +01:00
Roman Perepelitsa
c8160f2954 Squashed 'gitstatus/' changes from f1cf61b24..e02d9eedd
e02d9eedd fix cwd detection when it has weird characters
78c171590 Loongarch support (#290)
be6396b1a fix pkg_add command on openbsd (#282)
f1c89585a avoid ksh if possible (it's broken; see #282)
22407d6fd bug fix: correctly resolve pwd when it contains control chars

git-subtree-dir: gitstatus
git-subtree-split: e02d9eedd9d8f3689e6a6cdccec70b55cf87dca6
2022-01-04 12:14:19 +01:00
Roman Perepelitsa
2079d8ecbe Merge commit 'c8160f29543a2f57ae7149103deefa029fd4e861' 2022-01-04 12:14:19 +01:00
Roman Perepelitsa
3d3b24c419 work around bugs in WSL where it /proc/pid/cwd reports an alias drive 2022-01-04 12:05:05 +01:00
Roman Perepelitsa
7354688123 fix cwd handling when the current dir is '/foo\bar' (#1697) 2022-01-02 15:14:26 +01:00
Roman Perepelitsa
dd3dcfaf51 make toolbox segment work with distrobox (#1696) 2022-01-02 07:51:53 +01:00
Roman Perepelitsa
ced7788012 docs: fix indentation 2022-01-01 07:54:06 +01:00
Roman Perepelitsa
ab321a2a03 docs: clean up puTTY font instructions 2022-01-01 07:52:01 +01:00
Roman Perepelitsa
d99df7d12d Merge branch 'ajanian-master' 2022-01-01 07:45:26 +01:00
Andrew Janian
0d6202c077 add puTTY to the install section including not about a bug in versions prior to 0.75 2021-12-29 14:25:16 -05:00
Roman Perepelitsa
ed70c90c2d fix a bug with URL-escaping for directory links (#1687) 2021-12-27 08:15:25 +01:00
Roman Perepelitsa
c9bc2f5a32 fix POWERLEVEL9K_TERM_SHELL_INTEGRATION 2021-12-23 10:01:27 +01:00
Roman Perepelitsa
2e58e3888e add POWERLEVEL9K_TERM_SHELL_INTEGRATION parameter that enables OSC 133 marks 2021-12-23 09:52:23 +01:00
Roman Perepelitsa
cde05cfa7b add a link to romkatv/zsh-bench#instant-prompt (should really copy some of that content over to p10k; maybe later) 2021-12-23 09:11:45 +01:00
Roman Perepelitsa
00dd4ae009 docs: shrink "getting started" 2021-12-23 08:56:34 +01:00
Roman Perepelitsa
370535af45 explicitly set LC_ALL when starting docker 2021-12-23 08:52:19 +01:00
Roman Perepelitsa
da5a4cdbec add high-level table of contents at the top and low-level table of contents in each section; remove the full table of contents from the bottom 2021-12-23 08:52:08 +01:00
Roman Perepelitsa
83f773caae doc: remove most content from "is it fast to load" section 2021-12-23 08:40:12 +01:00
Roman Perepelitsa
356ce68f69 doc: remove most content from "is it really fast" section 2021-12-23 08:35:10 +01:00
Roman Perepelitsa
6692245f3e hide all screen recordings under <details> in the hope that #anchors will work properly 2021-12-23 08:21:26 +01:00
Roman Perepelitsa
09ece9601f grammar in the instant prompt faq 2021-12-23 08:09:47 +01:00
Roman Perepelitsa
608bd2c88b expand instant prompt faq 2021-12-23 08:05:47 +01:00
Roman Perepelitsa
469baa6221 url-escape dir properly when POWERLEVEL9K_DIR_HYPERLINK is set 2021-12-22 12:53:18 +01:00
Roman Perepelitsa
57d0274b88 fix bugs in dir and several other segments when cwd contains control characters 2021-12-22 11:24:46 +01:00
Roman Perepelitsa
2e8a8f1d63 fix a bug that causes VISUAL_IDENTIFIER_COLOR to leak into content 2021-12-21 09:33:52 +01:00
Roman Perepelitsa
a23c4314a1 doc: update "horrific mess when resizing terminal window" section
- Don't say it's a bug in Zsh. It's more complicated than that.
- Mention that the the issue can be avoided by using Kitty.
- Do not mention that the issue can also be avoided by using
  zsh4humans (even though it's true). If you, dear reader, see this,
  give zsh4humans a try.
2021-12-17 19:01:44 +01:00
Roman Perepelitsa
4543076483 when using tmux, write unwrapped OSC 133 in addition to wrapped; the new integrated tmux uses them when resizing 2021-12-17 17:10:52 +01:00
Roman Perepelitsa
3091ffbd86 bust caches 2021-12-10 23:38:24 +01:00
Roman Perepelitsa
fde8bf62d4 fix prefix-based formatting of numbers that are slightly below the boundary (#1664) 2021-12-10 23:34:10 +01:00
Roman Perepelitsa
abc5df446d attempt to fix asdf when some files have windows line endings (#1653) 2021-12-08 12:12:15 +01:00
Roman Perepelitsa
e181bc0653 Squashed 'gitstatus/' changes from e26996460..f1cf61b24
f1cf61b24 work around a bug in IP-guard

git-subtree-dir: gitstatus
git-subtree-split: f1cf61b241a2a34514a8ff5f71dfb79a99d85c7c
2021-12-05 09:28:30 +01:00
Roman Perepelitsa
3380f7503e Merge commit 'e181bc0653ae15ba5730a65b253d499bf22a31bf' 2021-12-05 09:28:30 +01:00
Roman Perepelitsa
a9f208c8fc don't auto-start configuration wizard if it's likely that zshrc is broken
This change is an attempt to automate this:
https://github.com/romkatv/powerlevel10k#configuration-wizard-runs-automatically-every-time-zsh-is-started
2021-11-15 07:26:51 +01:00
Zura Kurtanidze
6520323fdb Delete duplicate word "using using"
Hi, I removed duplicate word in the default configuration file
2021-11-03 23:16:12 -07:00
Roman Perepelitsa
e2447322e0 Squashed 'gitstatus/' changes from eaf430112..e26996460
e26996460 survive broken shasum
b1825b29a make bash bindings work with nounset

git-subtree-dir: gitstatus
git-subtree-split: e269964607042ef0fdbda2d7af74ef9c8f618cf4
2021-11-02 07:23:57 +01:00
Roman Perepelitsa
d281e595b3 Merge commit 'e2447322e0be4eddb84196f05952f91fa3c6f37e' 2021-11-02 07:23:57 +01:00
Roman Perepelitsa
a55955c5cf enable bracketed paste when printing instant prompt 2021-10-28 10:47:14 +02:00
Roman Perepelitsa
dce00cdb5d docs: typo 2021-10-28 07:19:53 +02:00
Roman Perepelitsa
85e31542dd wizard: underline paths instead of bolding in the success message 2021-10-27 16:31:33 +02:00
Roman Perepelitsa
99edd12e00 grammar 2021-10-27 10:53:59 +02:00
Roman Perepelitsa
faddef4a22 add faq entries about enabling direnv and exporting GPG_TTY (#702) 2021-10-27 10:52:59 +02:00
Roman Perepelitsa
b4615f5e00 add _p9k__raw_msg for direnv notifications in zsh4humans 2021-10-27 09:55:43 +02:00
Roman Perepelitsa
ed0bd29416 Merge commit '1af638543631f2e7db64829c7412ed007047fa81' 2021-10-20 14:05:34 +02:00
Roman Perepelitsa
1af6385436 Squashed 'gitstatus/' changes from cd98a3c2..eaf43011
eaf43011 when downloading gitstatusd, try curl/wget with user configs before trying without (https://github.com/romkatv/powerlevel10k/issues/1606)

git-subtree-dir: gitstatus
git-subtree-split: eaf43011246e359881931647747e8756a73a143a
2021-10-20 14:05:33 +02:00
Roman Perepelitsa
6441a01dd3 survive non-writable $TTY 2021-10-14 14:38:27 +02:00
Roman Perepelitsa
edd98053cc disable icanon on the tty after printing instant prompt; this way keys like Ctrl-R and Ctrl-D will get through to zle 2021-10-10 10:34:54 +02:00
Roman Perepelitsa
5acedce0b0 speed up pre-redraw hook 2021-10-08 12:39:30 +02:00
Roman Perepelitsa
3e515a75d2 remove obsolete nordvpn comments 2021-10-06 13:04:28 +02:00
Roman Perepelitsa
ed45177e19 fix nordvpn; it was broken by the latest upstream update (#1590) 2021-10-06 12:51:19 +02:00
Charles Timko
0ce9df66d2 Add RHEL to the OS Icon lists (#1581)
* Add RHEL to the OS Icon lists
2021-09-22 19:49:39 +02:00
Roman Perepelitsa
7a72acf563 clean up font instructions for yakuake 2021-09-14 10:18:27 +02:00
Roman Perepelitsa
fcfeebfb53 Merge branch 'ilsteiner-patch-1' 2021-09-14 10:13:02 +02:00
Isaac Lebwohl-Steiner
0122a63834 Add instructions to manually set font on Yakuake 2021-09-13 18:25:55 -07:00
Roman Perepelitsa
543e2d59cf change formatting in the font installation instructions to make it more obvious where each step begins and ends 2021-09-13 10:31:34 +02:00
Roman Perepelitsa
0745592886 fix a spello in comments in the generated .p10k.zsh 2021-09-13 09:05:43 +02:00
Roman Perepelitsa
20eb8c64bf Squashed 'gitstatus/' changes from edd92f621..cd98a3c28
cd98a3c28 rebuild gitstatusd-freebsd-amd64 on freebsd 13
b03580cb0 rebuild gitstatusd-freebsd-amd64 (now with proper version)
3c95a47dc update version to v1.5.3
e3a3cd122 rebuild gitstatusd-freebsd-amd64 with clang (#262)
6aed2ae95 compile with clang on freebsd by default (#262)

git-subtree-dir: gitstatus
git-subtree-split: cd98a3c2849600982aa1b7d03f66784710106291
2021-09-12 10:40:43 +02:00
Roman Perepelitsa
d2f78d4b29 Merge commit '20eb8c64bf2520e20739610acb503c8729867a5e' 2021-09-12 10:40:43 +02:00
Roman Perepelitsa
4f3d2ffe72 new prompt segment: toolbox (https://github.com/containers/toolbox) #1560 2021-09-10 13:21:31 +02:00
Roman Perepelitsa
c5c9178341 update a link to visual-studio-code-font-settings.jpg (now with annotations) 2021-09-03 10:27:01 +02:00
Roman Perepelitsa
c2c3171927 extra verbose instructions for vscode font changes 2021-09-03 10:10:11 +02:00
Roman Perepelitsa
b5f4d27c74 add a screenshot of vscode font settings 2021-09-03 09:42:31 +02:00
Roman Perepelitsa
2c7241c43d add an extra step to the uninstallation instructions to delete cache files (#1561) 2021-09-02 13:47:29 +02:00
Roman Perepelitsa
b3b0efb69f work around bugs in terminals and window managers by essentially disabling prompt_sp (but keeping prompt_cr) in instant prompt for new TTYs 2021-08-28 10:14:37 +02:00
Roman Perepelitsa
10ad57cc6b Squashed 'gitstatus/' changes from 2ecd9907..edd92f62
edd92f62 build: more debug info in case wget fails
1cfcb46c build: add a workaround for systems with broken wget

git-subtree-dir: gitstatus
git-subtree-split: edd92f6210afb16411274e1d6060c6a68bd1e999
2021-08-23 10:30:28 +02:00
Roman Perepelitsa
e362b69735 Merge commit '10ad57cc6b73b9ed51474edbd5235e6b5f2fd16b' 2021-08-23 10:30:28 +02:00
Roman Perepelitsa
0a1946b965 bug fix: display the intended battery icon when using legacy configs (#1530) 2021-08-21 10:08:59 +02:00
elProxy
379b97e4e7 Fix after #1544 (#1547)
Well, that's embarassing...
2021-08-19 10:16:12 +02:00
elProxy
277ff8b414 Add support for AWS_REGION with fallback to AWS_DEFAULT_REGION (#1544)
See https://fossies.org/linux/aws-cli/CHANGELOG.rst#section-133
2021-08-19 00:27:05 -07:00
Roman Perepelitsa
80ec734a95 Squashed 'gitstatus/' changes from 845f492f..2ecd9907
2ecd9907 add logging to debug https://github.com/romkatv/powerlevel10k/issues/1477
74010456 add a TODO to fix #254
864f1caf Trim '\w' part of bash prompt. (#253)

git-subtree-dir: gitstatus
git-subtree-split: 2ecd990706255d2000fedbde3b2d2353f63d69a1
2021-08-18 17:05:04 +02:00
Roman Perepelitsa
ec44300155 Merge commit '80ec734a953d930838ea6839923c97c3da880a0d' 2021-08-18 17:05:04 +02:00
Roman Perepelitsa
25e5f5985f spello 2021-08-17 19:42:05 +02:00
Roman Perepelitsa
5669c12c66 Revert "add availability to display or not Terraform version"
This reverts commit 20b87731de.
2021-08-17 19:41:29 +02:00
Roman Perepelitsa
e7629449c6 spello 2021-08-17 19:41:15 +02:00
Roman Perepelitsa
ce7d4a4cd3 Merge branch 'ptavares-master' 2021-08-17 19:38:35 +02:00
Patrick Tavares
6aeb13b08a add terraform_version segment to the list of available segments 2021-08-16 18:47:40 +02:00
Patrick Tavares
20b87731de add availability to display or not Terraform version
Show Terraform version segment only when *.tf files are present in current directory
2021-08-16 18:46:46 +02:00
Eric Nielsen
32e76e7721 Update README.md (#1532)
with new changed from version 1.5.0 of Zim.
2021-08-10 19:03:29 +02:00
ahillio
46a3e51896 readme: make 2steps for oh-my-zsh installation explicit. (#1526) 2021-08-08 11:22:22 -07:00
Roman Perepelitsa
799c22f63b Squashed 'gitstatus/' changes from 1edd9e62..845f492f
845f492f build: target march armv8-a instead of armv8
cf21109b build: respect CXX environment variable

git-subtree-dir: gitstatus
git-subtree-split: 845f492f777af84e50b9a4820c7b08729c841f0c
2021-07-25 09:31:56 +02:00
Roman Perepelitsa
8f798f986a Merge commit '799c22f63b93e9d1ab8f01473bf9ebd2e9750f43' 2021-07-25 09:31:56 +02:00
Roman Perepelitsa
e3c8529052 doc: typo 2021-07-23 09:09:40 +02:00
NickVeld
c23f3c3c10 README: Windows Terminal "default"->"defaults" key (#1499) 2021-07-22 20:29:54 +02:00
Roman Perepelitsa
5e1c1caeb1 doc: spello 2021-07-22 12:01:06 +02:00
Roman Perepelitsa
70ae5810d8 Squashed 'gitstatus/' changes from 0440e38b..1edd9e62
1edd9e62 build: respect standard compiler/linker env vars and fortify by default

git-subtree-dir: gitstatus
git-subtree-split: 1edd9e621ec5c8bf038767e529194b5c53b36352
2021-07-22 11:19:22 +02:00
Roman Perepelitsa
a38a1f5be1 Merge commit '70ae5810d81f941a93e2077a2aa080f341deb96e' 2021-07-22 11:19:22 +02:00
Roman Perepelitsa
83d80fa308 don't leak 'state' local parameter 2021-07-17 10:38:22 +02:00
Roman Perepelitsa
2c135dd631 make terraform_version consistent with other *_version segments (#1487) 2021-07-17 10:36:26 +02:00
Roman Perepelitsa
942c4cf640 Merge branch 'alexganwd-master' 2021-07-17 10:13:48 +02:00
Alejandro Gandara
dae5f7f1c9 * Added cache to terraform --version 2021-07-16 20:39:23 +01:00
Alejandro Gandara
9f98915167 * Added new module for showing in prompt the active terraform version.
* Prompt shows, the terraform version in this format: Terraform v0.12.13 . If only if a valid terraform command is used, or an alias to it.

The use case: We have a need to constantly change between terraform versions depending on what project we are working on, it is easy to by mistake upgrade the wrong project to the latest terraform version. This is why the prompt is shown in red as soon as you type terraform, this is a good way to remind you to double check this is the terraform version you want to use.

Future improvements:
Detect current terraform version by checking the terraform workspace state version, and change the terraform color prompt from red to green if you're using the same version.
2021-07-15 00:44:37 +01:00
Alejandro Gandara
f717a91f55 * Added new module for showing in prompt the active terraform version.
* Prompt shows, the terraform version in this format: Terraform v0.12.13 . If only if a valid terraform command is used, or an alias to it.

The use case: We have a need to constantly change between terraform versions depending on what project we are working on, it is easy to by mistake upgrade the wrong project to the latest terraform version. This is why the prompt is shown in red as soon as you type terraform, this is a good way to remind you to double check this is the terraform version you want to use.

Future improvements:
Detect current terraform version by checking the terraform workspace state version, and change the terraform color prompt from red to green if you're using the same version.
2021-07-14 22:52:22 +01:00
Chris Williams
1e7be00e04 show kubecontext show for 'flux' (#1480)
Support for flux v2 CLI

Co-authored-by: Chris Williams <chris.williams@amwell.com>
2021-07-09 08:46:18 -07:00
Roman Perepelitsa
4bcc519547 add 'minify' make target 2021-07-02 14:39:26 +02:00
Roman Perepelitsa
077abf95e0 Squashed 'gitstatus/' changes from 4b4226ca..0440e38b
0440e38b sort files lexicographically
1c3157e9 don't minify from pkg target

git-subtree-dir: gitstatus
git-subtree-split: 0440e38b336aaf992aabf3649bf4a7f65f396c0a
2021-07-02 14:37:14 +02:00
Roman Perepelitsa
05d71fe82c Merge commit '077abf95e0a3c6325a6cdd9761cab75b2f5468c6' 2021-07-02 14:37:14 +02:00
Roman Perepelitsa
63a009669a Squashed 'gitstatus/' changes from 68bf9e0d..4b4226ca
4b4226ca add 'minify' make target and invoke it from 'pkg'

git-subtree-dir: gitstatus
git-subtree-split: 4b4226ca86fef6d0491ab9e863c9df6864dc9642
2021-07-02 14:28:20 +02:00
Roman Perepelitsa
7f4a2741b5 Merge commit '63a009669a7ed6aa6040f0af008adfb62829188c' 2021-07-02 14:28:20 +02:00
Roman Perepelitsa
7759063b74 Squashed 'gitstatus/' changes from 76182238..68bf9e0d
68bf9e0d build: generate byte-for-byte identical gitstatusd if the compiler supports -ffile-prefix-map
d03e8edc add support for s390x architecture
b32bea51 add a few architectures to the build script
7001409e bash: escape non-printable ANSI sequences (#247)

git-subtree-dir: gitstatus
git-subtree-split: 68bf9e0da3695ae989d523527643bef3f88e86ea
2021-07-02 11:02:41 +02:00
Roman Perepelitsa
f4668bc194 Merge commit '7759063b7485ca0701fc8ba1961d0e53568ddd59' 2021-07-02 11:02:41 +02:00
Roman Perepelitsa
3213e2e17f docs: grammar 2021-07-01 12:05:46 +02:00
Roman Perepelitsa
fd7313a5e7 replace @{u} with @{upstream} in the docs (it's the same thing but clearer) 2021-06-30 18:44:10 +02:00
Roman Perepelitsa
0c862a1307 add zwc make target 2021-06-27 18:49:57 +02:00
Roman Perepelitsa
f1ff680487 Squashed 'gitstatus/' changes from 260a5f4b..76182238
76182238 add zwc make target
ea398d90 update libgit2 ref (https://github.com/romkatv/powerlevel10k/issues/1428)

git-subtree-dir: gitstatus
git-subtree-split: 7618223859f614a76ed8019f1a60ee3df18984cf
2021-06-27 18:48:35 +02:00
Roman Perepelitsa
73eff3a033 Merge commit 'f1ff6804871d47381b9bd398a60f4c77174fd1d3' 2021-06-27 18:48:35 +02:00
Roman Perepelitsa
c003c253e8 respect POWERLEVEL9K_INSTANT_PROMPT_COMMAND_LINES if it is explicitly set even when using z4h 2021-06-24 22:40:23 +02:00
Roman Perepelitsa
515422c727 fix a bug that can cause instant prompt to be duplicated in z4h 2021-06-24 21:42:00 +02:00
Roman Perepelitsa
67f494cf54 docs: cross-link two faq entries 2021-06-17 17:59:17 +02:00
Roman Perepelitsa
606d4a85a9 readme: update git commands for ahead/behind arrows 2021-06-17 15:20:14 +02:00
Roman Perepelitsa
717573d845 presume that node --version may depend on package.json (#1388) 2021-06-11 14:09:52 +02:00
Roman Perepelitsa
a49f90d3ba cleanup 2021-06-11 10:19:09 +02:00
Roman Perepelitsa
4e4c14927f update windows terminal font instructions to accound for the fact that they've changed the default settings.json (#1443) 2021-06-11 10:17:23 +02:00
Roman Perepelitsa
2e0989c018 Merge commit '038de6f78b21171615d0b4628471e71efe10d77e' 2021-06-11 09:23:28 +02:00
Roman Perepelitsa
038de6f78b Squashed 'gitstatus/' changes from 96b520b2..260a5f4b
260a5f4b fix a bug in the build script that prevented it from working when using a newer git with init.defaultBranch override in the global config (#242)

git-subtree-dir: gitstatus
git-subtree-split: 260a5f4bc9776d41d500a51464249ce5e555a99e
2021-06-11 09:23:27 +02:00
Roman Perepelitsa
f5d61840ae Merge commit '96f3ca173331c5dba505d2ef5106cb0d605ec3be' 2021-06-10 10:15:02 +02:00
Roman Perepelitsa
96f3ca1733 Squashed 'gitstatus/' changes from 113f1f69..96b520b2
96b520b2 build v1.5.1 binaries for all platforms
ffeb0507 bump version to v1.5.1
1bcbea07 mbuild: disable pacman upgrades on msys
39dbb92f log a warning if unable to parse packed-refs
a9d70ec0 add `-r` flag to gitstatus_start in bash bindings (#241)
abbf9a79 don't use static_assert with one argument as it's not available prior to c++17 (#239)
f8c396e4 drop all tags if packed-refs doesn't have a header line (https://github.com/romkatv/powerlevel10k/issues/1428)

git-subtree-dir: gitstatus
git-subtree-split: 96b520b248ca872646e27b3df4535898356e4637
2021-06-10 10:15:02 +02:00
Roman Perepelitsa
4ba3c010f6 display "wip" in git status if the latest commit's summary contains "wip" or "WIP" (#1425) 2021-06-08 11:47:19 +02:00
Roman Perepelitsa
b9c62ca028 cleanup 2021-06-04 15:02:36 +02:00
Roman Perepelitsa
ba83466e1d Squashed 'gitstatus/' changes from 6d00edd0..113f1f69
113f1f69 release gitstatusd-linux-x86_64 v1.5.0
e193be52 expose HEAD's commit message
815301f1 do not redefine `exec` and `builtin` in bash bindings (#235)
97c2aa17 Make `--version-glob` to receive an argument (#216)
95e549fd Support building on OpenBSD (#208)
b054ddf2 make homebrew instructions work on systems other than darwin-x86_64 (#205)
98f99ade fix brew formula check

git-subtree-dir: gitstatus
git-subtree-split: 113f1f698667d12906d97e3818aec5d760dc6e3d
2021-05-30 10:35:40 +02:00
Roman Perepelitsa
f217e4a39a Merge commit 'ba83466e1da75d9260ebbb145215d9c46d6eadf6' 2021-05-30 10:35:40 +02:00
Roman Perepelitsa
77fa0e6dcc clarify that Windows Terminal is the one from Microsoft 2021-05-29 08:41:20 +02:00
Mark Adamson
d87d557b0f Correct name of Windows Terminal in README (#1424) 2021-05-28 23:39:59 -07:00
Roman Perepelitsa
c7ad00b5a5 add P9K_AWS_PROFILE and P9K_AWS_REGION and use it in default configs 2021-05-28 14:55:27 +02:00
Roman Perepelitsa
10918387b3 Merge branch 'alexjurkiewicz-aws-region' 2021-05-28 14:52:29 +02:00
Alex Jurkiewicz
aa4d366341 Add region support for aws element 2021-05-28 14:25:39 +10:00
Zachary Palumbo
35acee119d Fix icon padding for VCS bookmark icon (#1414) (#1415) 2021-05-26 07:40:05 -07:00
Roman Perepelitsa
c59720647a fix asdf, was broken by 1ad8e5759e (#1409) 2021-05-25 14:01:41 +02:00
Roman Perepelitsa
a3494a52d7 don't leak 'token' local variable in parser (#1407) 2021-05-24 09:19:13 +02:00
Roman Perepelitsa
f774df6c76 pyenv: skip lines that start with "#" (#1376) 2021-05-22 12:19:41 +02:00
Roman Perepelitsa
69d3650958 hide python version in pyenv in lean/classic/rainbow if the rest of the content starts with it (#1376) 2021-05-22 12:09:13 +02:00
Roman Perepelitsa
1ad8e5759e when searching for files in ancestor directories, do match in $HOME (#1376) 2021-05-22 11:57:13 +02:00
Roman Perepelitsa
4d2346da0a set P9K_PYENV_PYTHON_VERSION correctly when dealing with multiple pyenv versions (#1376) 2021-05-22 11:32:24 +02:00
Roman Perepelitsa
0ab7e1ccfd when resolving python --version, handle pyenv shims specially (#1378) 2021-05-22 11:00:19 +02:00
Maxim Baz
9c034101fe Add xplr segment (#1396) 2021-05-15 04:37:58 -07:00
Roman Perepelitsa
f924646194 add P9K_IP_{RX,TX}_BYTES_DELTA to the list of parameters available within POWERLEVEL9K_IP_CONTENT_EXPANSION (#1392) 2021-05-14 11:41:56 +02:00
Roman Perepelitsa
8d1daa4e63 disable colors in the output of taskwarrior; this time for real (#1365) 2021-04-20 22:19:51 +02:00
Roman Perepelitsa
b69bb45ab1 disable colors in the output of taskwarrior (#1365) 2021-04-20 20:53:58 +02:00
Roman Perepelitsa
48ff2e8065 fix style in font instructions 2021-04-18 08:54:54 +02:00
alsoGAMER
836332f578 Font instructions for Asbrú Connection Manager (#1362) 2021-04-17 23:48:26 -07:00
Roman Perepelitsa
607befe822 bump version (#1361) 2021-04-16 22:07:08 +02:00
Roman Perepelitsa
cd865da150 expand c-escapes in kubectl (#1361) 2021-04-16 21:42:41 +02:00
Roman Perepelitsa
b55ad16bdf bug fix: segments whose state contains numbers could not be hidden (#1353) 2021-04-12 12:22:19 +02:00
Roman Perepelitsa
30bd9461b3 replace POWERLEVEL9K_LOAD_THRESHOLD with POWERLEVEL9K_LOAD_{WARNING,CRITICAL}_PCT (#1340) 2021-04-10 14:27:09 +02:00
Tim Ysewyn
8dc91004cb Fix gcloud CLI (#1342)
This reverts #1324 (d3de2e5).
2021-04-04 09:59:17 -07:00
Klas Mellbourn
8b2aab74d4 Add CPU load threshold setting (#1340) 2021-04-04 02:21:39 -07:00
Éverton Arruda
4d15cf977e Get active gcloud profile using list command (#1331)
`gcloud config configure describe` command does not have `--filter` option. To filter
the active profile using `--filter` it is necessary to use `gcloud config configure list`
command
2021-03-30 19:46:50 +02:00
Paweł Cembaluk
af86b53047 Added urxvt to manual font installation section. (#1326) 2021-03-28 05:59:23 -07:00
Roman Perepelitsa
eafd78c3e0 respect POWERLEVEL9K_SHORTEN_DIR_LENGTH when POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_last 2021-03-28 09:54:30 +02:00
Ramon Lucas
d3de2e558c Sets the filter for the current gcloud profile (#1324)
When you have multiple profiles set up, you should only search for what is currently active.
2021-03-27 01:16:50 -07:00
Daniel
58f5470cd9 Add font configuration instructions for WezTerm (#1313) 2021-03-21 09:03:53 -07:00
Roman Perepelitsa
7d786b9c50 remove all CR from prompt (#1304 and #1305) 2021-03-17 08:44:29 +01:00
Roman Perepelitsa
d28e84ca70 don't display git tag when on a branch (#1294) 2021-03-09 12:20:28 +01:00
wzy
6d545d5dd0 Fix #1286 (#1288) 2021-03-07 00:11:28 -08:00
bcochofel
3920940ea8 add fluxctl and stern to show kubecontext (#1268) 2021-02-21 21:03:14 +01:00
bcochofel
6a7115b35b add azure classes (#1274) 2021-02-21 19:02:14 +01:00
Roman Perepelitsa
b816abfed0 work around bugs in add-zle-hook-widget (#1238) 2021-01-26 12:43:07 +01:00
Dhananjay Tanpure
d26bdcd601 Added wlan(w) to regular expression of network interfaces. (#1224)
Name of network interface is generally wlan0 or wlp3s0.
2021-01-15 18:20:46 +01:00
Jaehee Hong
7b0698debf README Homebrew installation script fix (#1222)
make homebrew installation instructions work on darwin-arm64 and linux
2021-01-14 15:51:52 +01:00
Thomas Lauf
68abcc86d4 Change icon for the timewarrior segment to '' (#1217)
Icon was changed in c65260aaab from '🛡️' to ''
2021-01-13 09:05:59 +01:00
Roman Perepelitsa
00232d1b6d doc cleanup 2021-01-09 23:55:54 +01:00
Roman Perepelitsa
a2695675e6 Merge branch 'joxxperez-master' 2021-01-09 23:53:52 +01:00
Roman Perepelitsa
a20dcd0284 Merge branch 'master' of https://github.com/joxxperez/powerlevel10k into joxxperez-master 2021-01-09 23:53:45 +01:00
Roman Perepelitsa
4fa8943960 doc cleanup 2021-01-09 23:53:03 +01:00
Roman Perepelitsa
f0af094382 Merge branch 'YorkGrizzly-master' 2021-01-09 23:50:59 +01:00
Roman Perepelitsa
eadc0d7653 Merge branch 'master' of https://github.com/YorkGrizzly/powerlevel10k into YorkGrizzly-master 2021-01-09 23:50:43 +01:00
Julio Carlos Barrera Juez
33f20f5eae Add tailscale in VPN network interface regex. (#1208) 2021-01-09 23:49:12 +01:00
joxxperez
a43748d427 Add font installation instructions for WSLtty 2021-01-02 20:10:48 +08:00
YorkGrizzly
8bafd1a2ee Update font.md 2020-12-29 09:57:22 +08:00
YorkGrizzly
ea97f031b4 Update font.md 2020-12-29 09:56:53 +08:00
YorkGrizzly
29f16b61e6 Update font.md 2020-12-29 09:54:30 +08:00
Roman Perepelitsa
d524164020 scroll the screen before printing prompt 2020-12-26 13:23:54 +01:00
Roman Perepelitsa
0513e0fee4 simplify uname -m matching on Windows platforms 2020-12-24 05:54:50 +01:00
Roman Perepelitsa
59db4252bb uncomment BACKGROUND and FOREGROUND parameters in p10k-classic.zsh; comments confuse users (#1182) 2020-12-24 05:52:27 +01:00
Roman Perepelitsa
dd62469cc7 fix ram segment on darwin-arm64 (#1181)
Darwin arm64 uses 16kB pages rather than 4kB.

Thanks, @johnalanwoods!
2020-12-24 05:26:15 +01:00
Osman Tas
61c63eea6b Update os icon at zsh.exe on git for windows (#1180)
* Update os icon for windows

Windows icon is not shown on git for windows zsh.exe
Same update also added to wizards.zsh file.

* Update os icon for windows

Windows icon is not shown on git for windows zsh.exe
Same update also added to p10k.zsh file.
2020-12-23 17:58:10 +01:00
Roman Perepelitsa
5ea5d4bc19 disable re_match_pcre, otherwise we can get an error when users enable this option without having zsh/pcre module 2020-12-22 09:16:02 +01:00
Roman Perepelitsa
9609a835ca Squashed 'gitstatus/' changes from 630915cc..6d00edd0
6d00edd0 use a native binary on darwin-arm64
4994f160 add a build server for darwin-arm64
0e922813 invoke port with sudo
576571c7 support macports in addition to homebrew when building on macos
b476570a remove trailing whitespace

git-subtree-dir: gitstatus
git-subtree-split: 6d00edd0bfd1d65a3cbcebfc6e679e8c43726acc
2020-12-21 16:19:22 +01:00
Roman Perepelitsa
9c3ecab81e Merge commit '9609a835ca2eb3089e35269a05369833e9ec0ba2' 2020-12-21 16:19:22 +01:00
Roman Perepelitsa
033e01a272 docs: more info about greyed out vcs 2020-12-21 07:33:17 +01:00
Samuel Gräfenstein
38a5492b5f Remove trailing whitespace (#1173) 2020-12-20 16:28:52 +01:00
Roman Perepelitsa
a5d0525c6a refactor my_git_formatter to make it easier to change it so that tag is always displayed 2020-12-20 07:54:27 +01:00
Roman Perepelitsa
4807bd8da2 doc cleanup 2020-12-20 07:33:10 +01:00
Roman Perepelitsa
7a6eef4918 docs: make p10k configure method of installing MesloLGS NF for iTerm2 more prominent 2020-12-19 08:46:09 +01:00
Roman Perepelitsa
b9b3399b35 nordvpn: pick up nordvpnd.sock from the new location (changed with the latest nordvpn update); remove MISSING state; (#1167) 2020-12-18 16:25:33 +01:00
Roman Perepelitsa
fc854fa719 fix a comment above POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION in lean style 2020-12-18 08:40:26 +01:00
Roman Perepelitsa
e8afa806ce wizard: allow uppercase letters in choices 2020-12-16 16:07:00 +01:00
Josh Skidmore
c14fe96b7c remove accidental logging (#1161) 2020-12-14 18:18:23 +01:00
Roman Perepelitsa
439ce3ed4e dir: add _NON_EXISTENT similarly to _NON_WRITABLE (requires POWERLEVEL9K_DIR_SHOW_WRITABLE=v3)
See #1160.
2020-12-14 08:01:05 +01:00
Roman Perepelitsa
1d99a0bac3 wifi: recognize SSID with spaces (#1152) 2020-12-12 09:42:41 +01:00
Roman Perepelitsa
b90b36251d fix iterm2 integration when not using zsh4humans v5 (#192 and #1138) 2020-12-02 08:56:34 +01:00
Roman Perepelitsa
2c3bcd8b5d use tmux bypass in iterm2 integration only if _z4h_iterm_cmd is defined 2020-11-28 09:55:13 +01:00
Roman Perepelitsa
c7914c051d remove spurious slashes from tmux bypass sequences 2020-11-26 13:21:57 +01:00
Roman Perepelitsa
96646e8b9c enable iterm2 shell integration when running in tmux in zsh4humans 2020-11-26 12:05:00 +01:00
ratijas
ecf1de25a4 Makefile: optimize recursive invocation (#1127) 2020-11-26 11:51:39 +01:00
Roman Perepelitsa
ff79e502ad don't allow overriding the path to zsh 2020-11-26 11:17:01 +01:00
Roman Perepelitsa
29759b7b0a Squashed 'gitstatus/' changes from e2276e72..630915cc
630915cc don't allow overriding the path to zsh

git-subtree-dir: gitstatus
git-subtree-split: 630915ccb1700f1f880d25cb04da23bf68fc4293
2020-11-26 11:16:16 +01:00
Roman Perepelitsa
bc3158cba5 Merge commit '29759b7b0a83e08ce52dd240c9463f2c8090c416' 2020-11-26 11:16:16 +01:00
Roman Perepelitsa
a7f417245d Squashed 'gitstatus/' changes from 4211e33b..e2276e72
e2276e72 install: fix the check for rosetta on darwin-arm64

git-subtree-dir: gitstatus
git-subtree-split: e2276e729e0155391126ee4aa090aa38b345b9fd
2020-11-26 08:53:49 +01:00
Roman Perepelitsa
9d6444a557 Merge commit 'a7f417245dc21b666f5647c4a0d55a1f51fe6cac' 2020-11-26 08:53:49 +01:00
Roman Perepelitsa
622069e60f Squashed 'gitstatus/' changes from 1dcba393..4211e33b
4211e33b bug fix: make install work in standalone mode

git-subtree-dir: gitstatus
git-subtree-split: 4211e33b0b9ed9ad41898eb5a2b4f6a4a37b1db2
2020-11-26 07:59:45 +01:00
Roman Perepelitsa
381bd09e67 Merge commit '622069e60f9573c714f482dd6c76858229f4732a' 2020-11-26 07:59:45 +01:00
Roman Perepelitsa
4050729e48 wizard: after installing the font on iTerm2, ask for system reboot if iTerm2 session restoration is enabled 2020-11-26 07:19:35 +01:00
Roman Perepelitsa
7cb7ee07be docs: add missing colons 2020-11-25 17:55:01 +01:00
Roman Perepelitsa
ade5b86226 docs: s/Windows Terminal/Microsoft Terminal/ 2020-11-25 17:53:00 +01:00
Roman Perepelitsa
e1e50dc84c Merge branch 'ravinderpal-patch-1' 2020-11-25 17:52:03 +01:00
Ravinder Pal Singh
8db9836617 Added instructions for IntelliJ 2020-11-25 16:46:34 +00:00
Roman Perepelitsa
98a8ec6f31 prompt_length cleanup 2020-11-25 16:36:03 +01:00
Roman Perepelitsa
685682da90 Revert "docs: experiment with image dimensions"
This reverts commit 507018f079.
2020-11-25 12:09:55 +01:00
Roman Perepelitsa
507018f079 docs: experiment with image dimensions 2020-11-25 11:52:44 +01:00
Roman Perepelitsa
fb89173a42 Squashed 'gitstatus/' changes from 313fa4f1..1dcba393
1dcba393 bash bindings: provide better diagnostic for the common errors in gitstatus_start
603fb2ce move the rosetta check to `install`
3829edac provide better diagnostic for the common errors in gitstatus_start
e8c9d9cd propagate error messages from install to gitstatus_start; add a special diagnostic for rosetta2

git-subtree-dir: gitstatus
git-subtree-split: 1dcba3930654c54976f112b96acf2ce23006d9e5
2020-11-25 11:14:38 +01:00
Roman Perepelitsa
7e363af9ed Merge commit 'fb89173a4257e0cfe3bfc772bc0cdbccd61e3be0' 2020-11-25 11:14:38 +01:00
Roman Perepelitsa
98b96e06cc Squashed 'gitstatus/' changes from ae213c54..313fa4f1
313fa4f1 make target pkg work with `make -C`

git-subtree-dir: gitstatus
git-subtree-split: 313fa4f1bfabe99a04027d0bdf6cbecff2e963c7
2020-11-24 12:46:19 +01:00
Roman Perepelitsa
6b254621e7 Merge commit '98b96e06cc98ef2578adbf83ac4bb35a74485e8f' 2020-11-24 12:46:19 +01:00
Roman Perepelitsa
139413f535 add Makefile 2020-11-24 12:46:00 +01:00
Roman Perepelitsa
39cf063480 Squashed 'gitstatus/' changes from 90cbb46b..ae213c54
ae213c54 add "pkg" target to makefile
a208375b comments
cdeb063d Give ListDir() the same semantics on BSD as on Linux

git-subtree-dir: gitstatus
git-subtree-split: ae213c540dd6924d3fb153a0860276897c9ba6c8
2020-11-24 12:32:19 +01:00
Roman Perepelitsa
21df7db2b2 Merge commit '39cf063480f6a378dadc802c174e96112c38c0c0' 2020-11-24 12:32:19 +01:00
Felix Yan
31ede3c1d3 Correct some typos in zsh conf (#1119) 2020-11-22 19:02:27 +01:00
Roman Perepelitsa
28301be914 Squashed 'gitstatus/' changes from cb363c77..90cbb46b
90cbb46b s/darwin-aarch64/darwin-arm64/ (#188)

git-subtree-dir: gitstatus
git-subtree-split: 90cbb46b7b185dc95ab96301ec49754f7e801395
2020-11-17 12:42:57 +01:00
Roman Perepelitsa
04f75a10a5 Merge commit '28301be914dec6da5d1bbd21cd8511cd71b419ee' 2020-11-17 12:42:57 +01:00
Roman Perepelitsa
790f4719ab Squashed 'gitstatus/' changes from f9acc15a..cb363c77
cb363c77 build: use zsh if possible when langued with bash < 4.0 (#188)
efb0fd1b make mbuild work with darwin-aarch64
c9e6e608 do not hardcode path to homebrew, retrieve it with `brew --prefix`
df4eba94 work around bugs in ancient versions of bash (#188)

git-subtree-dir: gitstatus
git-subtree-split: cb363c778a37575b0d5371d7e355d80ec7ae5498
2020-11-17 10:02:15 +01:00
Roman Perepelitsa
ece7213a3d Merge commit '790f4719ab3db8d62f8dec6fbb89a91d87e81df0' 2020-11-17 10:02:15 +01:00
Roman Perepelitsa
b7167a64c6 Squashed 'gitstatus/' changes from 4f9746fb..f9acc15a
f9acc15a use gitstatusd-darwin-x86_64 binary on darwin-aarch64 (#188)

git-subtree-dir: gitstatus
git-subtree-split: f9acc15a3aa224206c4eba0e4a26b5d3c00325be
2020-11-17 08:32:05 +01:00
Roman Perepelitsa
bf830b5bf1 Merge commit 'b7167a64c60401b184346147d8297f3803f56e06' 2020-11-17 08:32:05 +01:00
Roman Perepelitsa
7969eb3f18 retain instant prompt and state dumps when TERM or TERM_PROGRAM change (#1098) 2020-11-16 09:02:31 +01:00
Roman Perepelitsa
09be56bb53 fix a bug introduced in 8488f7c (#1107) 2020-11-15 11:05:31 +01:00
Roman Perepelitsa
f8ae544e6e properly restore prompt after SIGINT when transient prompt is disabled 2020-11-15 09:41:55 +01:00
Roman Perepelitsa
8488f7c75c set P9K_PROMPT=transient for the duration of zle-line-finish (#1105) 2020-11-15 09:19:25 +01:00
Roman Perepelitsa
feaf120ddc replace >>! with >>; the former does not work in non-zsh shells; users who set noclobber presumably know how to deal with errors from this option 2020-11-11 07:04:02 +01:00
Roman Perepelitsa
8840fe550e correct install-without-internet instructions w.r.t. ZSH_THEME 2020-11-11 07:02:38 +01:00
Roman Perepelitsa
271836403d remove artificial term scrolling before instant prompt 2020-11-10 09:59:41 +01:00
Roman Perepelitsa
e2db860745 print instant prompt only if TERM is the same 2020-11-10 07:41:14 +01:00
Roman Perepelitsa
f6c24d2053 reset text attributes at the end of precmd 2020-11-08 13:33:59 +01:00
Roman Perepelitsa
2fc7257486 docs 2020-11-06 09:13:04 +01:00
Roman Perepelitsa
d7861fcfa0 wrap z4h-clear-screen-{soft,hard}-top 2020-11-01 18:23:10 +01:00
Roman Perepelitsa
5e2422df50 fix old/new TTY detection 2020-10-31 07:10:11 +01:00
Roman Perepelitsa
76e5a69262 save/restore screen through z4h to make it work over ssh 2020-10-30 16:27:35 +01:00
Roman Perepelitsa
85f9e75918 drop __p9k_initial_screen_empty; rely on _Z4H_TMUX_CMD instead 2020-10-30 13:52:17 +01:00
Roman Perepelitsa
aa6d40b733 fix a typo in docs 2020-10-28 09:21:22 +01:00
Stephen
b9be4f968b Updating README.md typo (#1077) 2020-10-28 09:20:36 +01:00
Roman Perepelitsa
2ea3356d66 add __p9k_initial_screen_empty for z4h integration 2020-10-27 12:49:39 +01:00
Roman Perepelitsa
8f0db0c95a expand the list of things powerlevel10k does not affect 2020-10-27 08:01:42 +01:00
Roman Perepelitsa
74c6e18363 check mtime of $TTY on startup if it points to a different tty than in the parent; see #930 2020-10-26 12:26:45 +01:00
Roman Perepelitsa
49d5617989 doc cleanup 2020-10-25 06:14:39 +01:00
Roman Perepelitsa
78301e82c7 clean up kitty font instructions and duplicate them in readme.md 2020-10-25 06:14:12 +01:00
Subhaditya Nath
98494aaf7b Added font instructions for kitty (#1070) 2020-10-25 06:10:26 +01:00
Roman Perepelitsa
d86bbe75de Squashed 'gitstatus/' changes from 6ba954a4..4f9746fb
4f9746fb rebuild all binaries
6a3d54a5 upgrade libgit2

git-subtree-dir: gitstatus
git-subtree-split: 4f9746fb6e949475ff37986883796adf937055da
2020-10-22 14:54:18 +02:00
Roman Perepelitsa
68c89ec2bc Merge commit 'd86bbe75dece6c4276bfa99246880b92f9e053aa' 2020-10-22 14:54:18 +02:00
Roman Perepelitsa
de0e022177 typo 2020-10-21 16:24:38 +02:00
Roman Perepelitsa
f0159ca642 better wizard intro when installing z4h 2020-10-21 16:23:15 +02:00
Roman Perepelitsa
fdc0ee3708 add font.md 2020-10-21 16:05:26 +02:00
Roman Perepelitsa
2bcf38f554 add #font anchor to the readme 2020-10-21 15:53:29 +02:00
Roman Perepelitsa
47713ea2df recognize double-quoted strings when parsing kube configs; other types of quotes are still not supported; see #1061 2020-10-21 13:40:10 +02:00
Kid
e43209409b Correct Python version in README (#1065) 2020-10-21 12:28:59 +02:00
Roman Perepelitsa
b1aeeda6a8 make it more difficult to incorrectly restart iTerm2 after installing Meslo 2020-10-19 16:36:25 +02:00
Roman Perepelitsa
a124a71032 typo 2020-10-19 14:51:01 +02:00
Roman Perepelitsa
fb2805e5ab wizard: suppress the into message if z4h would print its welcome 2020-10-19 14:46:22 +02:00
Roman Perepelitsa
967e845819 wizard: suppress the outro message if z4h would print its welcome 2020-10-19 14:39:01 +02:00
Roman Perepelitsa
b770e6a3e5 fix a typo that was preventing zinit-specific diagnostic from being printed as part of an error message 2020-10-09 10:52:43 +02:00
Roman Perepelitsa
0da94e8ef1 Squashed 'gitstatus/' changes from a760bda8..6ba954a4
6ba954a4 make lowercasing work with Turkish locale

git-subtree-dir: gitstatus
git-subtree-split: 6ba954a4a6fb2b86e7d10b4b19db7757b4876525
2020-10-05 15:05:41 +02:00
Roman Perepelitsa
9b981b89c5 Merge commit '0da94e8ef1b84581ce8b4eb397c9e465640711ea' 2020-10-05 15:05:41 +02:00
Roman Perepelitsa
3aec0c6b36 make configuration options work when using Turkish locale (#1036) 2020-10-05 14:46:48 +02:00
Roman Perepelitsa
060af91a80 fix a TOC link 2020-10-02 10:10:38 +02:00
Roman Perepelitsa
2875595647 add offline installation instructions (#1033) 2020-10-02 10:08:44 +02:00
Roman Perepelitsa
42aa719e48 dir: ignore separator overrides if cwd is / and POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER is true 2020-09-29 13:40:06 +02:00
Roman Perepelitsa
3586cc8d7e expand c-escapes in POWERLEVEL9K_DIR_PATH_SEPARATOR 2020-09-29 13:26:21 +02:00
Roman Perepelitsa
71b39f0da9 mention that zsh-theme-powerlevel10k community package is to be avoided (#1018) 2020-09-21 07:31:02 +02:00
Roman Perepelitsa
80d9e57388 docs: remove -u from yay commands (#1018) 2020-09-19 12:28:55 +02:00
Roman Perepelitsa
3b772824c0 don't print instant prompt if it was generated with the different value of terminfo[colors] 2020-09-16 15:01:49 +02:00
Roman Perepelitsa
f14b58e44f wizard: recognize source $POWERLEVEL9K_CONFIG_FILE in .zshrc 2020-09-15 19:50:11 +02:00
Roman Perepelitsa
4d1fba340f bug fix: superfluous dash in P9K_KUBECONTEXT_CLOUD_ZONE (#1013) 2020-09-15 10:45:04 +02:00
Roman Perepelitsa
760f7cb7a5 Squashed 'gitstatus/' changes from 3f874d9c..a760bda8
a760bda8 disable certificate checks in curl; we are checking sha256 anyway

git-subtree-dir: gitstatus
git-subtree-split: a760bda882be6e79a5ff0ab0ccc0e576781dca7a
2020-09-11 09:16:24 +02:00
Roman Perepelitsa
afb854d279 Merge commit '760f7cb7a55203be03ddf789dd3c06e75377423f' 2020-09-11 09:16:24 +02:00
Roman Perepelitsa
54d40b924c support POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=if-different; see #730 2020-09-09 12:10:26 +02:00
Lucas Larson
12cef82077 repair spelling of "occurrences" (#998) 2020-09-07 22:30:55 +02:00
Roman Perepelitsa
622130980c add scalaenv prompt segment; see #991 2020-09-03 10:53:19 +02:00
Roman Perepelitsa
6c8c6eea1b typo in comments 2020-09-02 09:24:58 +02:00
Roman Perepelitsa
3b2f474c9f support generic POWERLEVEL9K_* parameters for segments with dashes in their names 2020-09-01 13:31:05 +02:00
Roman Perepelitsa
47c842fe8e wifi: further cleanup 2020-09-01 11:12:55 +02:00
Roman Perepelitsa
cababbeee2 wifi on linux: fix bugs and speed things up 2020-09-01 11:03:55 +02:00
Roman Perepelitsa
dd5948e5e3 Merge branch 'master' of https://github.com/sys-lectern/powerlevel10k into sys-lectern-master 2020-09-01 10:03:08 +02:00
Roman Perepelitsa
536d90a335 support per-state POWERLEVEL9K_BATTERY_HIDE_ABOVE_THRESHOLD; see #988 2020-08-31 12:55:00 +02:00
Roman Perepelitsa
a3727dcaef wizard: don't refuse to start if ZDOTDIR is not writable; see #987 2020-08-30 13:40:12 +02:00
Roman Perepelitsa
c1db3926fe docs: explicitly mention that powerlevel10k doesn't affect key bindings 2020-08-28 10:25:23 +02:00
Roman Perepelitsa
b673e6a7dd bug fix: trigger transient prompt on send-break 2020-08-28 09:38:16 +02:00
Roman Perepelitsa
f2bf019758 wizard: simplify instant prompt screen; make sure all screens work with 47x14 terminal size 2020-08-27 09:57:12 +02:00
Roman Perepelitsa
2a4c962c21 add "gpd" to the list of default VPN network interfaces; see #979 2020-08-27 08:15:13 +02:00
Roman Perepelitsa
7eb501c0f5 suport hex flags in the output of ifconfig; see #979 2020-08-26 10:48:53 +02:00
sys-lectern
6853fcd8e5 minor fixes and syntax improvements 2020-08-25 16:13:41 -04:00
sys-lectern
c464fd25e6 Merge branch 'master' of https://github.com/sys-lectern/powerlevel10k 2020-08-25 16:07:49 -04:00
sys-lectern
16cb58d15f minor fixes and syntax improvements 2020-08-25 16:04:47 -04:00
Roman Perepelitsa
6279aa57d7 add k9s, helmfile and terragrunt to some SHOW_ON_COMMAND params; #904 2020-08-24 09:02:52 +02:00
Roman Perepelitsa
2f4c3c4cec use portable sed syntax 2020-08-24 08:22:03 +02:00
David
d62961131c Delete log.txt 2020-08-23 17:36:08 -04:00
hal9000
8f90ed6d49 linux wifi widget 2020-08-23 17:29:03 -04:00
Roman Perepelitsa
dca8774f1b add an empty line after the branch/tag truncation logic 2020-08-22 09:35:48 +02:00
Roman Perepelitsa
711490252e enable extended_glob in p10k-{pure,robbyrussell}.zsh to fix unset -m 2020-08-21 11:08:14 +02:00
Roman Perepelitsa
525e2545db wizard: when using z4h, automatically enable instant prompt in quiet mode 2020-08-20 14:59:07 +02:00
Roman Perepelitsa
c425a5e635 bump version 2020-08-19 22:12:14 +02:00
Roman Perepelitsa
03ab8e9c7e don't expand _p9k_dir when dir is hidden via 'p10k display'; see #952 2020-08-18 11:25:43 +02:00
Roman Perepelitsa
f63d6a31c1 Squashed 'gitstatus/' changes from fcebf0b0..3f874d9c
3f874d9c fix bash bindings when noclobber is set; see #171

git-subtree-dir: gitstatus
git-subtree-split: 3f874d9c5933d184b9b06472dcf25e8debb326a8
2020-08-15 08:59:44 +02:00
Roman Perepelitsa
ebfaae2ab6 Merge commit 'f63d6a31c1348e304e40e4e0dcca750128ad2cfd' 2020-08-15 08:59:44 +02:00
Roman Perepelitsa
7a0bf995c7 formatting 2020-08-08 23:52:52 +02:00
Roman Perepelitsa
b53b43533a fix wording in docs 2020-08-08 23:52:12 +02:00
Stephen
d5d6ee11ff Add MesloLGS font config steps for Alacritty (#929)
* Add MesloLGS font config steps for Alacritty

* Adding Alacritty font config changes

Shortened steps and included official doc.

* Simplified and updated Alacritty font config steps

Required YAML included in full. Quotes added to font family due to space in family name. Unnecessary detail has been removed.

* Reduced the required Alacritty font config YAML

Removed additional styles from the "MesloLGS NF" family, they are implied and not necessary to include.
2020-08-08 23:50:04 +02:00
Roman Perepelitsa
c48b81ecb7 remove minimum screen size requirement for the wizard 2020-08-06 16:03:04 +02:00
Roman Perepelitsa
03e61879b5 add p10k display -r 2020-08-03 10:58:14 +02:00
Roman Perepelitsa
cb59280c40 Squashed 'gitstatus/' changes from b157d02a..fcebf0b0
fcebf0b0 support armv8l; see #165; thanks, @ppoffice!
c2e03bc5 use fully-qualified remote ref name; see powerlevel10k/issues/915
dc827169 Merge branch 'master' of github.com:romkatv/gitstatus
4ad671ca build: set -march=armv8 when compiling for Apple's arm64 architecture

git-subtree-dir: gitstatus
git-subtree-split: fcebf0b0f7aff181f2ecc441458d8fc443125ad0
2020-07-29 23:05:36 +02:00
Roman Perepelitsa
422b7a94b9 Merge commit 'cb59280c407e60d6e993c24eaddb0feb5dd373a5' 2020-07-29 23:05:36 +02:00
Roman Perepelitsa
05ff662568 add more info about the resizing bug and patch 2020-07-29 09:45:02 +02:00
Roman Perepelitsa
598ff99f1b reduce the default value of POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS to 10ms 2020-07-29 08:37:51 +02:00
Roman Perepelitsa
2ba87f4d1f ksh_arrays compatibility 2020-07-23 08:17:34 +02:00
Roman Perepelitsa
15818346bf Squashed 'gitstatus/' changes from 7546f4de..b157d02a
b157d02a treat exit code 159 (SIGSYS) from gistatusd as terminal

git-subtree-dir: gitstatus
git-subtree-split: b157d02a9a89892f228064e06b5a817a24eea9ed
2020-07-20 15:06:02 +02:00
Roman Perepelitsa
88d5fb6145 Merge commit '15818346bf496c7e5f8cb21b2f273c47d386b7db' 2020-07-20 15:06:02 +02:00
Roman Perepelitsa
7a114ad6fb detect artix linux for the sake of displaying os logo; see #898 2020-07-19 11:26:19 +02:00
Roman Perepelitsa
86b747f434 bug fix: infinite loop when cwd doesn't exist; see #900 2020-07-19 11:10:50 +02:00
Roman Perepelitsa
24278ccd39 Merge commit 'bf2aa14becccd2b55180bc2aeff44d3a6015a580' 2020-07-19 11:09:40 +02:00
Roman Perepelitsa
bf2aa14bec Squashed 'gitstatus/' changes from 89e9ebfd..7546f4de
7546f4de return norepo-sync when cwd does not exist
8ccd4d34 comments

git-subtree-dir: gitstatus
git-subtree-split: 7546f4def34558e44ee660a9970da80f760e99c8
2020-07-19 11:09:39 +02:00
Roman Perepelitsa
6dfd92f8c1 allow optional offset in POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER; see #896 2020-07-18 10:43:49 +02:00
Roman Perepelitsa
620e69fef1 replace NETWORK_ICON; the original (U+F877) triggers a bug on macOS; see #895 2020-07-16 15:58:19 +02:00
Roman Perepelitsa
4635fcacee don't fetch gitstatusd if there is no git 2020-07-14 06:46:05 +02:00
Roman Perepelitsa
a28d45005e Merge branch 'master' of github.com:romkatv/powerlevel10k 2020-07-13 14:24:45 +02:00
Roman Perepelitsa
cfc35853df start downloading gitstatusd while wizard is running 2020-07-13 14:24:38 +02:00
Kamlesh
d0edcbc966 Add Instructions to make powerlevel10 work for Guake (#882)
Update instructions for the `Guake` terminal
2020-07-12 08:19:01 +02:00
Henry Bley-Vroman
34952e4a85 Fix POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD comments (#880) 2020-07-11 22:53:38 +02:00
Roman Perepelitsa
6c9d0977a6 make omz installation command work when executed from weird shells (no quoting though; that would be too much) 2020-07-11 10:07:34 +02:00
Roman Perepelitsa
0c341b6702 Merge branch 'ancarpan-terraform-show-default' 2020-07-04 08:08:49 +02:00
Roman Perepelitsa
06ed564092 Merge branch 'terraform-show-default' of https://github.com/ancarpan/powerlevel10k into ancarpan-terraform-show-default 2020-07-04 07:44:51 +02:00
Roman Perepelitsa
2d74ac9d06 prefix all source calls with builtin 2020-07-04 07:03:46 +02:00
Roman Perepelitsa
ff8654ccd5 Squashed 'gitstatus/' changes from 0f5402c8..89e9ebfd
89e9ebfd survive zsh environments where `source` is a broken function

git-subtree-dir: gitstatus
git-subtree-split: 89e9ebfd59f5ddfea4d97ae1e510273415a57a51
2020-07-04 07:00:17 +02:00
Roman Perepelitsa
9486385824 Merge commit 'ff8654ccd5b4f22710a235e7f715913277612451' 2020-07-04 07:00:17 +02:00
Andrea Carpani
882cede0ae Add option to show terraform workspace even if it's default 2020-07-03 19:05:48 +02:00
Roman Perepelitsa
e0ed693e6d add CMB* to battery directory patterns; see #858 2020-07-02 10:39:35 +02:00
Roman Perepelitsa
be66f21f53 replace NETWORK_ICON
The original icon (U+FBF1) is in fact a ligature. Some terminals do
funky things when displaying it. For example:

    print '\uFBF1 42 abc'

When executed in a VTE-based terminal with Nerd Fonts, it'll print this:

    42 X abc

Here X stands for the glyph that Nerd Fonts uses for U+FBF1.
2020-07-02 06:33:12 +02:00
Roman Perepelitsa
a88e11f54b disable background transparency in iTerm2 2020-06-28 11:11:27 +02:00
Roman Perepelitsa
db6f909958 suppress the expected error message from PlistBuddy 2020-06-28 10:45:46 +02:00
Roman Perepelitsa
ae32fd58b3 fix fvm styling that has been broken by the last commit; fixes #645 2020-06-25 11:09:19 +02:00
Roman Perepelitsa
6a1e993a05 make fvm segment work with fvm >= 1.0.0; see #842 2020-06-25 09:03:59 +02:00
Roman Perepelitsa
eadfdba707 Squashed 'gitstatus/' changes from 0d23fbd1..0f5402c8
0f5402c8 bug fix: properly propagate switches to gitstatusd

git-subtree-dir: gitstatus
git-subtree-split: 0f5402c8686a593cd21b95ade28a154dd51749bb
2020-06-22 19:18:34 +02:00
Roman Perepelitsa
1be10ebcf7 Merge commit 'eadfdba7073e625562ae02841608ea37a46e0120' 2020-06-22 19:18:34 +02:00
mundry
d394a4e038 Fix typo in config comment. (#836)
Co-authored-by: mundry <mundry@users.noreply.github.com>
2020-06-21 11:04:23 +02:00
mundry
178c3bccf0 Add font configuration instructions for Terminator. (#835)
Co-authored-by: mundry <mundry@users.noreply.github.com>
2020-06-21 11:03:36 +02:00
Roman Perepelitsa
8854cb6000 survive files with windows EOL (on linux, yes; people do that); see #827 2020-06-16 19:51:53 +02:00
Roman Perepelitsa
eda706c8ff notes 2020-06-15 17:56:32 +02:00
Roman Perepelitsa
54bbe0a0a3 speed up pasting in terminals without bracketed paste 2020-06-15 17:33:35 +02:00
Roman Perepelitsa
0717e57ff4 Squashed 'gitstatus/' changes from 1c74c8db..0d23fbd1
0d23fbd1 comments
9c19c9c4 fix a typo in install that prevents the locally built gitstatusd from being used
92fd143f doc cleanup

git-subtree-dir: gitstatus
git-subtree-split: 0d23fbd117ad6afe52fdbd96d08cf38f941be4d3
2020-06-14 10:29:29 +02:00
Roman Perepelitsa
5e5d3f5aff Merge commit '0717e57ff46201ff04e7d62cda8677e174a83be6' 2020-06-14 10:29:29 +02:00
Roman Perepelitsa
4c15d633dd respect POWERLEVEL9K_PROMPT_CHAR_ERROR_VIINS_CONTENT_EXPANSION in simple transient prompt; see #820 2020-06-14 09:21:28 +02:00
Roman Perepelitsa
3e17260622 no need to call zle -R when using z4h 2020-06-13 17:04:31 +02:00
Roman Perepelitsa
b015817892 Squashed 'gitstatus/' changes from 38d62a47..1c74c8db
1c74c8db add linux-ppc64le
968779b5 fix tar invocation
300f657c create anonymous tar archives
a5581d18 force C locale during build (perl complains)
2616cd47 support downloads to usrbin
1e6075dd enable static linking on linux
2975d25f update libgit2 ref
bea6f868 add ppc64le target

git-subtree-dir: gitstatus
git-subtree-split: 1c74c8db0f422aa6f95ced878351e0c6944a9bd6
2020-06-13 11:15:44 +02:00
Roman Perepelitsa
4d14f9e0ba Merge commit 'b0158178925484c058e6175e174b639237532c63' 2020-06-13 11:15:44 +02:00
Roman Perepelitsa
faa510d54c explicitly mention that POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND overrides POWERLEVEL9K_ASDF_FOREGROUND; see #817 2020-06-12 13:00:03 +02:00
Roman Perepelitsa
a43b1b34d8 add an icon and asdf colors for julia; see #817 2020-06-12 12:55:02 +02:00
Roman Perepelitsa
e2196ce32e match terminal escape sequences in instant prompt output more aggressively 2020-06-12 08:30:03 +02:00
Roman Perepelitsa
05eaf8162c tweak omz update pattern; maybe it'll help with #729 2020-06-11 15:29:47 +02:00
Roman Perepelitsa
fb5a0a6cca make error message about incorrect powerlevel10k loading visible in more cases 2020-06-11 11:06:02 +02:00
Roman Perepelitsa
fa2e337cbd Squashed 'gitstatus/' changes from 3050dfca8..38d62a475
38d62a475 fix gitstatus on older zsh versions

git-subtree-dir: gitstatus
git-subtree-split: 38d62a475fadf5f8d418fc772d680ba234ba8609
2020-06-10 07:57:51 +02:00
Roman Perepelitsa
b7d90c8467 Merge commit 'fa2e337cbdd88ccd297d25fa9847225211801d3e' 2020-06-10 07:57:51 +02:00
Roman Perepelitsa
e3f582f246 survive people explicitly disabling conda prompt and then expecting to see it 2020-06-09 21:33:10 +02:00
Roman Perepelitsa
c6e599ddd5 fix a typo in remote-git-url => icon conversion (bitbucket was shows as github); see #808 2020-06-09 20:25:55 +02:00
Roman Perepelitsa
a700031279 don't start gitstatusd from instant prompt if there is no git command 2020-06-09 13:49:03 +02:00
Roman Perepelitsa
a3c1b7164b Squashed 'gitstatus/' changes from 830aaa999..3050dfca8
3050dfca8 add `command` in front of commands

git-subtree-dir: gitstatus
git-subtree-split: 3050dfca875a8070aaa0dc890afcc756574078c6
2020-06-09 13:26:38 +02:00
Roman Perepelitsa
00cf3b1167 Merge commit 'a3c1b7164be115f097682088c6feac283c40a1f2' 2020-06-09 13:26:38 +02:00
Roman Perepelitsa
d75147503e remove git from POWERLEVEL9K_VCS_BACKENDS if there is no git command 2020-06-09 13:08:12 +02:00
Roman Perepelitsa
6e120b9eec don't initialize vcs if there is no git command 2020-06-09 12:58:48 +02:00
Roman Perepelitsa
b93f9663c5 Squashed 'gitstatus/' changes from ec9c39499..830aaa999
830aaa999 try wget without --no-config if it fails with

git-subtree-dir: gitstatus
git-subtree-split: 830aaa99976c0f5addedf336414f9bf82e2699d6
2020-06-08 10:52:47 +02:00
Roman Perepelitsa
bf88ce9120 Merge commit 'b93f9663c5e4e9d914c4389fc405bc7ec7382b57' 2020-06-08 10:52:47 +02:00
Roman Perepelitsa
54c9822834 Squashed 'gitstatus/' changes from 643091154..ec9c39499
ec9c39499 don't download gitstatusd if there is a bad version in usrbin

git-subtree-dir: gitstatus
git-subtree-split: ec9c39499a96ea8b181db15c76df5089959d3111
2020-06-08 09:41:59 +02:00
Roman Perepelitsa
ed9d5a7088 Merge commit '54c98228342043612ea83eaaf13ac13659c26295' 2020-06-08 09:41:59 +02:00
Roman Perepelitsa
05dad31f3f add uninstall instructions for arch linux 2020-06-06 18:39:43 +02:00
Roman Perepelitsa
b2be33d556 fix formatting 2020-06-06 18:36:52 +02:00
Roman Perepelitsa
04656da7c1 add install and update instructions for arch linux 2020-06-06 18:31:48 +02:00
Roman Perepelitsa
50dec9f9f5 default to POWERLEVEL9K_MODE=ascii if there is no UTF-8 locale 2020-06-06 09:16:26 +02:00
Roman Perepelitsa
7760aa66d7 don't unset POWERLEVEL9K_GITSTATUS_DIR in config templates 2020-06-03 18:30:40 +02:00
Roman Perepelitsa
9fd719c834 Squashed 'gitstatus/' changes from a827370d7..643091154
643091154 suppress rc files for curl and wget; see #146

git-subtree-dir: gitstatus
git-subtree-split: 6430911548516bd9bb0e4a5088993302d45cc499
2020-06-03 09:56:40 +02:00
Roman Perepelitsa
2ba6182373 Merge commit '9fd719c834910c9734b0def927cc079654943a8d' 2020-06-03 09:56:40 +02:00
Roman Perepelitsa
f82d0de0d3 remove spurious error messages from _p9k_worker_stop 2020-06-03 09:22:15 +02:00
Roman Perepelitsa
2b1d0e599c make todo segment work if todo-cli is installed from apt; see #785 2020-06-02 10:30:35 +02:00
Roman Perepelitsa
62c0a12a10 Squashed 'gitstatus/' changes from ab1aea155..a827370d7
a827370d7 suppress error message from redirect

git-subtree-dir: gitstatus
git-subtree-split: a827370d7f11f6e6aac4a044efaef6a99ab1f1f4
2020-06-01 16:30:50 +02:00
Roman Perepelitsa
537c2b04e1 Merge commit '62c0a12a10518607814fa661905b3c8ec0f16590' 2020-06-01 16:30:50 +02:00
Roman Perepelitsa
55a9f366a8 typo in docs 2020-06-01 07:32:48 +02:00
Roman Perepelitsa
801bfbb294 jump straight to ascii if TERM is "dump" or "linux" 2020-05-31 11:49:03 +02:00
Roman Perepelitsa
285bf7ba60 ignore POWERLEVEL9K_GITSTATUS_DIR when deciding whether to auto-trigger the wizard 2020-05-31 11:45:21 +02:00
Roman Perepelitsa
189ecf8e16 remove traling ")" from conda even if it is not followed by space 2020-05-30 18:48:03 +02:00
Roman Perepelitsa
094d1b3a47 Squashed 'gitstatus/' changes from 45489634e..ab1aea155
ab1aea155 remove "this command failed" message; it makes users to post truncated messages that are useless for debugging

git-subtree-dir: gitstatus
git-subtree-split: ab1aea155f051ecab8b70154f136eef81976dd25
2020-05-30 12:58:18 +02:00
Roman Perepelitsa
127737816a Merge commit '094d1b3a47cf40746807820cababab3a829ac334' 2020-05-30 12:58:18 +02:00
Roman Perepelitsa
a4a71cff9e speed up pasting in terminals without bracketed paste; see #568 2020-05-29 14:43:43 +02:00
Roman Perepelitsa
a3d887cd43 add __p9k_root_dir and GITSTATUS_AUTO_INSTALL to param_pat 2020-05-29 09:25:40 +02:00
romkatv
f3fb34dd99 more conservative instant prompt activation and cleanup on premature shell exit; see #770 2020-05-28 08:58:53 +02:00
romkatv
d8d6efc4ec add more details to uninstall instructions 2020-05-27 07:41:54 +02:00
romkatv
c9e3cfe5db add rm -f ~/.p10k.zsh to uninistall instructions 2020-05-27 07:37:19 +02:00
romkatv
937204640a add uninistall instructions 2020-05-27 07:35:31 +02:00
romkatv
86d980cdb5 Squashed 'gitstatus/' changes from be42ea1be..45489634e
45489634e check for cygwin via OSTYPE

git-subtree-dir: gitstatus
git-subtree-split: 45489634e1b9a2a11fc8dc94482516142d61a9c8
2020-05-26 21:50:05 +02:00
romkatv
b38a7bf4af Merge commit '86d980cdb5d8eed683322f61db7c22c02640dd67' 2020-05-26 21:50:05 +02:00
romkatv
102aefadab Squashed 'gitstatus/' changes from 331e9ff65..be42ea1be
be42ea1be support split gitstatusd release binaries

git-subtree-dir: gitstatus
git-subtree-split: be42ea1be4a7938464aea568d719bf4c01e4b1f4
2020-05-26 20:51:58 +02:00
romkatv
ee68d4db4b Merge commit '102aefadaba271a48a74f13953dd88067f9862c6' 2020-05-26 20:51:58 +02:00
romkatv
b3875f5193 avoid spurious error (even if harmless and invisible) on worker cleanup 2020-05-26 20:15:53 +02:00
romkatv
ad18cd78db call taskwarrior via command task 2020-05-26 13:47:34 +02:00
romkatv
4cd2700a85 bug fix: update taskwarrior when a pending task becomes overdue; see #763 2020-05-26 13:45:56 +02:00
romkatv
7d35c7ebb8 remove execute permission from wizard.zsh 2020-05-26 11:31:11 +02:00
romkatv
6696212dde Squashed 'gitstatus/' changes from cc956ca78..331e9ff65
331e9ff65 docs: remove packaging instructions and instead discourage it
c1fff558c install: add a link to #compiling docs if no gitstatusd is found
8632b85ab build: use extra optimization and hardening flags
c0a71c757 mbuild: don't stop on first failure
52e0359ec build: don't link statically when doing a local linux build

git-subtree-dir: gitstatus
git-subtree-split: 331e9ff65df96e7423c0b7a01e5e98d6c6b7d428
2020-05-26 11:14:53 +02:00
romkatv
90df734bf8 Merge commit '6696212ddecbb5ffae8d71467518cc5651c90b3f' 2020-05-26 11:14:53 +02:00
romkatv
ba6c79e277 docs: remove packaging instructions and instead discourage it 2020-05-26 11:14:33 +02:00
romkatv
9a4bbcd930 Squashed 'gitstatus/' changes from 0127fd26a..cc956ca78
cc956ca78 interrupt p10k instant prompt before printing "gitstatus failed to initialize" error
db3603bc8 improve "gitstatus failed to initialize" error message
e164594ea work around bugs in cygwin
55af96ade cleanup + todo
0e70dbc56 add an empty line before the error message

git-subtree-dir: gitstatus
git-subtree-split: cc956ca7878ef6d00bb1f35861864d0a40ffac75
2020-05-26 08:37:25 +02:00
romkatv
619ddaf6f1 Merge commit '9a4bbcd930afa54bc605e3020fb38353161e5a84' 2020-05-26 08:37:25 +02:00
romkatv
2ade5d786b disable instant prompt when gitstatus fails to initialize 2020-05-26 08:37:05 +02:00
romkatv
ed3287b737 Revert "mention that arch linux packages for powerlevel10k are broken and should not be used"
This reverts commit 6b69030bfb.
2020-05-25 17:07:41 +02:00
romkatv
5e9a4eb072 asdf: filter multiple versions the same way as upstream; see #764 2020-05-25 12:18:02 +02:00
romkatv
644488afcc change the default anaconda format in config templates
Also document how to configure it.

See #762.
2020-05-25 07:31:19 +02:00
romkatv
45eeb08fc3 add P9K_ANACONDA_PYTHON_VERSION 2020-05-25 07:26:52 +02:00
romkatv
a963533cbd mention that powerlevel10k once again can be installed from AUR 2020-05-24 13:08:05 +02:00
romkatv
be83ec430c replace Ⅴ (roman numeral 5) with V (ascii); see #754 2020-05-23 14:20:37 +02:00
romkatv
6b69030bfb mention that arch linux packages for powerlevel10k are broken and should not be used 2020-05-22 21:36:40 +02:00
romkatv
ee44f9e112 Squashed 'gitstatus/' changes from 063ed450..0127fd26
0127fd26 set user.name in the test git repo
00564e95 Merge pull request #135 from Aloxaf/Aloxaf-patch-1
6003278c build: no gpg sign

git-subtree-dir: gitstatus
git-subtree-split: 0127fd26a0d102cc5d5b2b10e511fa99138d78e3
2020-05-22 08:44:25 +02:00
romkatv
936b0d6dea Merge commit 'ee44f9e112a71ef6fa5aacdf65a43862a5a89279' 2020-05-22 08:44:25 +02:00
39 changed files with 5640 additions and 2320 deletions

14
Makefile Normal file
View File

@@ -0,0 +1,14 @@
ZSH := $(shell command -v zsh 2> /dev/null)
all:
zwc:
$(MAKE) -C gitstatus zwc
$(or $(ZSH),:) -fc 'for f in *.zsh-theme internal/*.zsh; do zcompile -R -- $$f.zwc $$f || exit; done'
minify:
$(MAKE) -C gitstatus minify
rm -rf -- .git .gitattributes .gitignore LICENSE Makefile README.md font.md powerlevel10k.png
pkg: zwc
$(MAKE) -C gitstatus pkg

1247
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -17,10 +17,10 @@
# Unset all configuration options. This allows you to apply configuration changes without
# restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
autoload -Uz is-at-least && is-at-least 5.1 || return
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# The list of segments shown on the left. Fill it with the most important segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
@@ -65,22 +65,30 @@
luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
jenv # java version from jenv (https://github.com/jenv/jenv)
plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
haskell_stack # haskell version from stack (https://haskellstack.org/)
kubecontext # current kubernetes context (https://kubernetes.io/)
terraform # terraform workspace (https://www.terraform.io)
# terraform_version # terraform version (https://www.terraform.io)
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
gcloud # google cloud cli account and project (https://cloud.google.com/)
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
toolbox # toolbox name (https://github.com/containers/toolbox)
context # user@hostname
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
ranger # ranger shell (https://github.com/ranger/ranger)
yazi # yazi shell (https://github.com/sxyazi/yazi)
nnn # nnn shell (https://github.com/jarun/nnn)
lf # lf shell (https://github.com/gokcehan/lf)
xplr # xplr shell (https://github.com/sayanarijit/xplr)
vim_shell # vim shell indicator (:sh)
midnight_commander # midnight commander shell (https://midnight-commander.org/)
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
chezmoi_shell # chezmoi shell (https://www.chezmoi.io/)
# vi_mode # vi mode (you don't need this if you've enabled prompt_char)
# vpn_ip # virtual private network indicator
# load # CPU load
@@ -90,6 +98,8 @@
todo # todo items (https://github.com/todotxt/todo.txt-cli)
timewarrior # timewarrior tracking status (https://timewarrior.net/)
taskwarrior # taskwarrior task count (https://taskwarrior.org/)
per_directory_history # Oh My Zsh per-directory-history local/global indicator
# cpu_arch # CPU architecture
# time # current time
# =========================[ Line #2 ]=========================
newline # \n
@@ -136,7 +146,7 @@
# Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
# '─'. The last two make it easier to see the alignment between left and right prompt and to
# separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
# for more compact prompt if using using this option.
# for more compact prompt if using this option.
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
@@ -161,6 +171,9 @@
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
# To remove a separator between two segments, add "_joined" to the second segment name.
# For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined)
# The right end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
# The left end of right prompt.
@@ -190,7 +203,7 @@
# Prompt symbol in command vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=''
# Prompt symbol in visual vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=''
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
# Prompt symbol in overwrite vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
@@ -230,7 +243,8 @@
.java-version
.perl-version
.php-version
.tool-version
.tool-versions
.mise.toml
.shorten_folder_marker
.svn
.terraform
@@ -247,6 +261,11 @@
# /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
# or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
# and other directories don't.
#
# Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
# This moves the truncation point to the right (positive offset) or to the left (negative offset)
# relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
# respectively.
typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
# Don't shorten this many last directory segments. They are anchors.
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
@@ -268,12 +287,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
# Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
# POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
# Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
# and POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
# The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
# set to v2.
# The default icon shown next to non-writable and non-existent directories when
# POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -286,8 +305,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
# its class gets suffix _NOT_WRITABLE.
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
# acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -296,10 +315,11 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
# WORK or WORK_NOT_WRITABLE.
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
# of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
# WORK_NON_EXISTENT.
#
# Simply assigning classes to directories don't have any visible effects. It merely gives you an
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
#
# # Styling for WORK.
@@ -314,6 +334,12 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
#
# # Styling for WORK_NON_EXISTENT.
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
#
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
# back to POWERLEVEL9K_DIR_FOREGROUND.
@@ -324,7 +350,7 @@
# typeset -g POWERLEVEL9K_DIR_PREFIX='%248Fin '
#####################################[ vcs: git status ]######################################
# Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
# Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# Untracked files icon. It's really a question mark, your font isn't broken.
@@ -333,7 +359,7 @@
# Formatter for Git status.
#
# Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
# Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
#
# You can edit the function to customize how Git status looks.
#
@@ -366,35 +392,55 @@
fi
local res
local where # branch or tag
if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}"
where=${(V)VCS_STATUS_LOCAL_BRANCH}
elif [[ -n $VCS_STATUS_TAG ]]; then
res+="${meta}#"
where=${(V)VCS_STATUS_TAG}
local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
# If local branch name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#branch > 32 )) && branch[13,-13]="…" # <-- this line
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
fi
# If local branch name or tag is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#where > 32 )) && where[13,-13]="…"
res+="${clean}${where//\%/%%}" # escape %
if [[ -n $VCS_STATUS_TAG
# Show tag only if not on a branch.
# Tip: To always show tag, delete the next line.
&& -z $VCS_STATUS_LOCAL_BRANCH # <-- this line
]]; then
local tag=${(V)VCS_STATUS_TAG}
# If tag name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show tag name in full without truncation, delete the next line.
(( $#tag > 32 )) && tag[13,-13]="…" # <-- this line
res+="${meta}#${clean}${tag//\%/%%}"
fi
# Display the current Git commit if there is no branch or tag.
# Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line.
[[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Display the current Git commit if there is no branch and no tag.
# Tip: To always display the current Git commit, delete the next line.
[[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line
res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Show tracking branch name if it differs from local branch.
if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape %
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
fi
# Display "wip" if the latest commit's summary contains "wip" or "WIP".
if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
res+=" ${modified}wip"
fi
if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
# Tip: Uncomment the next line to display '=' if up to date with the remote.
# res+=" ${clean}="
fi
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
# ⇠42 if behind the push remote.
(( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_PUSH_COMMITS_BEHIND}"
(( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
@@ -460,7 +506,7 @@
# isn't in an svn or hg reposotiry.
typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
# These settings are used for respositories other than Git or when gitstatusd fails and
# These settings are used for repositories other than Git or when gitstatusd fails and
# Powerlevel10k has to fall back to using vcs_info.
typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
@@ -503,7 +549,7 @@
typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
###################[ command_execution_time: duration of the last command ]###################
# Show duration of the last command if takes longer than this many seconds.
# Show duration of the last command if takes at least this many seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
# Show this many fractional digits. Zero means round to seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
@@ -532,6 +578,7 @@
###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
# Default asdf color. Only used to display tools for which there is no color override (see below).
# Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
# There are four parameters that can be used to hide asdf tools. Each parameter describes
@@ -577,7 +624,7 @@
typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
# If set to non-empty value, hide tools unless there is a file matching the specified file pattern
# in the current directory, or its parent diretory, or its grandparent directory, and so on.
# in the current directory, or its parent directory, or its grandparent directory, and so on.
#
# Note: If this parameter is set to empty value, it won't hide tools.
# Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
@@ -664,6 +711,11 @@
# typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
# Julia version from asdf.
typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
# typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
# NordVPN connection indicator color.
typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
@@ -678,6 +730,12 @@
typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
# Custom icon.
# typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
# Yazi shell color.
typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178
# Custom icon.
# typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
# Nnn shell color.
@@ -685,6 +743,18 @@
# Custom icon.
# typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
# lf shell color.
typeset -g POWERLEVEL9K_LF_FOREGROUND=72
# Custom icon.
# typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
# xplr shell color.
typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
# Custom icon.
# typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########################[ vim_shell: vim shell indicator (:sh) ]###########################
# Vim shell indicator color.
typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
@@ -701,12 +771,21 @@
# Nix shell color.
typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
# Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
# typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
# Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
# typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
# chezmoi shell color.
typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
# Custom icon.
# typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ disk_usage: disk usage ]##################################
# Colors for different levels of disk usage.
typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
@@ -733,9 +812,8 @@
# Text and color for insert vi mode.
typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=
typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=66
# Custom icon.
# typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################################[ ram: free RAM ]#######################################
# RAM color.
@@ -800,7 +878,7 @@
##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
# Taskwarrior color.
typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
# Taskwarrior segment format. The following parameters are available within the expansion.
#
# - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`.
@@ -817,6 +895,30 @@
# Custom icon.
# typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
# Color when using local/global history.
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
# Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
# Custom icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
################################[ cpu_arch: CPU architecture ]################################
# CPU architecture color.
typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
# Hide the segment when on a specific CPU architecture.
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ context: user@hostname ]##################################
# Context color when running with privileges.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
@@ -846,7 +948,8 @@
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
# Don't show Python version next to the virtual environment name.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
# Don't show virtualenv if pyenv is already shown.
# If set to "false", won't show virtualenv if pyenv is already shown.
# If set to "if-different", won't show virtualenv if it's the same as pyenv.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
@@ -856,10 +959,33 @@
#####################[ anaconda: conda environment (https://conda.io/) ]######################
# Anaconda environment color.
typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
# Don't show Python version next to the anaconda environment name.
typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
# Anaconda segment format. The following parameters are available within the expansion.
#
# - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment.
# - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment.
# - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below).
# - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version).
#
# CONDA_PROMPT_MODIFIER can be configured with the following command:
#
# conda config --set env_prompt '({default_env}) '
#
# The last argument is a Python format string that can use the following variables:
#
# - prefix The same as CONDA_PREFIX.
# - default_env The same as CONDA_DEFAULT_ENV.
# - name The last segment of CONDA_PREFIX.
# - stacked_env Comma-separated list of names in the environment stack. The first element is
# always the same as default_env.
#
# Note: '({default_env}) ' is the default value of env_prompt.
#
# The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
# without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
# is empty.
typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
# Custom icon.
# typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -881,10 +1007,10 @@
#
# The default format has the following logic:
#
# 1. Display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION" if $P9K_PYENV_PYTHON_VERSION is not
# empty and unequal to $P9K_CONTENT.
# 2. Otherwise display just "$P9K_CONTENT".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}'
# 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
# starts with "$P9K_PYENV_PYTHON_VERSION/".
# 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
# Custom icon.
# typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -918,6 +1044,11 @@
##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
# Nvm color.
typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
# If set to false, hide node version if it's the same as default:
# $(nvm version current) == $(nvm version default).
typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
# If set to false, hide node version if it's equal to "system".
typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1067,6 +1198,16 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
# Perlbrew color.
typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
# Show perlbrew version only when in a perl project subdirectory.
typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
# Don't show "perl-" at the front.
typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
# Custom icon.
# typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
# PHP color.
typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
@@ -1080,6 +1221,19 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
#######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
# Scala color.
typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
# Hide scala version if it doesn't come from one of these sources.
typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
# If set to false, hide scala version if it's the same as global:
# $(scalaenv version-name) == $(scalaenv global).
typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
# If set to false, hide scala version if it's equal to "system".
typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
# Haskell color.
typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
@@ -1095,6 +1249,8 @@
# typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
################[ terraform: terraform workspace (https://www.terraform.io) ]#################
# Don't show terraform workspace if it's literally "default".
typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
# POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current terraform workspace gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
@@ -1108,7 +1264,7 @@
# typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' DEFAULT)
# '*' OTHER)
#
# If your current terraform workspace is "project_test", its class is TEST because "project_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
@@ -1121,14 +1277,20 @@
typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' DEFAULT)
typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_FOREGROUND=38
# typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
'*' OTHER)
typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
# typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ terraform_version: terraform version (https://www.terraform.io) ]##############
# Terraform version color.
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
# Custom icon.
# typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
# Show kubecontext only when the the command you are typing invokes one of these tools.
# Show kubecontext only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show kubecontext.
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito'
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
# Kubernetes context classes for the purpose of using different colors, icons and expansions with
# different contexts.
@@ -1213,9 +1375,9 @@
# typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%248Fat '
#[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
# Show aws only when the the command you are typing invokes one of these tools.
# Show aws only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show aws.
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi'
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current AWS profile gets matched.
@@ -1247,6 +1409,12 @@
typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
# typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# AWS segment format. The following parameters are available within the expansion.
#
# - P9K_AWS_PROFILE The name of the current AWS profile.
# - P9K_AWS_REGION The region associated with the current AWS profile.
typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
#[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
# AWS Elastic Beanstalk environment color.
typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
@@ -1254,18 +1422,47 @@
# typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
# Show azure only when the the command you are typing invokes one of these tools.
# Show azure only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show azure.
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi'
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current azure account name gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
# that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
# you'll see this value in your prompt. The second element of each pair in
# POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
# first match wins.
#
# For example, given these settings:
#
# typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' OTHER)
#
# If your current azure account is "company_test", its class is TEST because "company_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
#
# You can define different colors, icons and content expansions for different classes:
#
# typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
# typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' OTHER)
# Azure account name color.
typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32
typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
# Custom icon.
# typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
# Show gcloud only when the the command you are typing invokes one of these tools.
# Show gcloud only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show gcloud.
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs'
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
# Google cloud color.
typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
@@ -1281,7 +1478,7 @@
# P9K_GCLOUD_PROJECT_ID | gcloud config get-value project
# P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced with '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
#
# Obtaining project name requires sending a request to Google servers. This can take a long time
# and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
@@ -1304,9 +1501,9 @@
# typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
#[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
# Show google_app_cred only when the the command you are typing invokes one of these tools.
# Show google_app_cred only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show google_app_cred.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi'
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
# Google application credentials classes for the purpose of using different colors, icons and
# expansions with different credentials.
@@ -1354,9 +1551,19 @@
# P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id
# P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced by '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
# Toolbox color.
typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
# Don't display the name of the toolbox if it matches fedora-toolbox-*.
typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
# Custom icon.
# typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
# Custom prefix.
# typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%248Fin '
###############################[ public_ip: public IP address ]###############################
# Public IP color.
typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
@@ -1371,7 +1578,7 @@
typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
# Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
# to see the name of the interface.
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*'
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
# If set to true, show one segment per matching network interface. If set to false, show only
# one segment corresponding to the first matching network interface.
# Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
@@ -1385,17 +1592,19 @@
# The following parameters are accessible within the expansion:
#
# Parameter | Meaning
# ----------------------+---------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
# ----------------------+-------------------------------------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
# P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+%70F⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+%215F⇡$P9K_IP_TX_RATE }%38F$P9K_IP_IP'
# Show information for the first network interface whose name matches this regular expression.
# Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
typeset -g POWERLEVEL9K_IP_INTERFACE='e.*'
typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
# Custom icon.
# typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1438,15 +1647,11 @@
# Parameter | Meaning
# ----------------------+---------------
# P9K_WIFI_SSID | service set identifier, a.k.a. network name
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
# P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
# P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0
# P9K_WIFI_NOISE | noise in dBm, from -120 to 0
# P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
#
# All parameters except P9K_WIFI_BARS are extracted from the output of the following command:
#
# /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
####################################[ time: current time ]####################################
# Current time color.
@@ -1473,7 +1678,7 @@
# User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
# is to generate the prompt segment for display in instant prompt. See
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
#
# Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
# and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
@@ -1509,7 +1714,7 @@
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.

View File

@@ -17,10 +17,10 @@
# Unset all configuration options. This allows you to apply configuration changes without
# restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
autoload -Uz is-at-least && is-at-least 5.1 || return
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# The list of segments shown on the left. Fill it with the most important segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
@@ -65,22 +65,30 @@
luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
jenv # java version from jenv (https://github.com/jenv/jenv)
plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
haskell_stack # haskell version from stack (https://haskellstack.org/)
kubecontext # current kubernetes context (https://kubernetes.io/)
terraform # terraform workspace (https://www.terraform.io)
# terraform_version # terraform version (https://www.terraform.io)
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
gcloud # google cloud cli account and project (https://cloud.google.com/)
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
toolbox # toolbox name (https://github.com/containers/toolbox)
context # user@hostname
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
ranger # ranger shell (https://github.com/ranger/ranger)
yazi # yazi shell (https://github.com/sxyazi/yazi)
nnn # nnn shell (https://github.com/jarun/nnn)
lf # lf shell (https://github.com/gokcehan/lf)
xplr # xplr shell (https://github.com/sayanarijit/xplr)
vim_shell # vim shell indicator (:sh)
midnight_commander # midnight commander shell (https://midnight-commander.org/)
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
chezmoi_shell # chezmoi shell (https://www.chezmoi.io/)
# vpn_ip # virtual private network indicator
# load # CPU load
# disk_usage # disk usage
@@ -89,6 +97,8 @@
todo # todo items (https://github.com/todotxt/todo.txt-cli)
timewarrior # timewarrior tracking status (https://timewarrior.net/)
taskwarrior # taskwarrior task count (https://taskwarrior.org/)
per_directory_history # Oh My Zsh per-directory-history local/global indicator
# cpu_arch # CPU architecture
# time # current time
# =========================[ Line #2 ]=========================
newline # \n
@@ -186,7 +196,7 @@
# Prompt symbol in command vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=''
# Prompt symbol in visual vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=''
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
# Prompt symbol in overwrite vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
@@ -224,7 +234,8 @@
.java-version
.perl-version
.php-version
.tool-version
.tool-versions
.mise.toml
.shorten_folder_marker
.svn
.terraform
@@ -241,6 +252,11 @@
# /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
# or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
# and other directories don't.
#
# Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
# This moves the truncation point to the right (positive offset) or to the left (negative offset)
# relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
# respectively.
typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
# Don't shorten this many last directory segments. They are anchors.
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
@@ -262,12 +278,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
# Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
# POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
# Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
# and POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
# The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
# set to v2.
# The default icon shown next to non-writable and non-existent directories when
# POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -280,8 +296,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
# its class gets suffix _NOT_WRITABLE.
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
# acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -290,10 +306,11 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
# WORK or WORK_NOT_WRITABLE.
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
# of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
# WORK_NON_EXISTENT.
#
# Simply assigning classes to directories don't have any visible effects. It merely gives you an
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
#
# # Styling for WORK.
@@ -306,7 +323,13 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=4#
#
# Styling for WORK_NON_EXISTENT.
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=4
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=4
#
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
@@ -318,7 +341,7 @@
# typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
#####################################[ vcs: git status ]######################################
# Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
# Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# Untracked files icon. It's really a question mark, your font isn't broken.
@@ -327,7 +350,7 @@
# Formatter for Git status.
#
# Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
# Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
#
# You can edit the function to customize how Git status looks.
#
@@ -360,35 +383,55 @@
fi
local res
local where # branch or tag
if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}"
where=${(V)VCS_STATUS_LOCAL_BRANCH}
elif [[ -n $VCS_STATUS_TAG ]]; then
res+="${meta}#"
where=${(V)VCS_STATUS_TAG}
local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
# If local branch name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#branch > 32 )) && branch[13,-13]="…" # <-- this line
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
fi
# If local branch name or tag is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#where > 32 )) && where[13,-13]="…"
res+="${clean}${where//\%/%%}" # escape %
if [[ -n $VCS_STATUS_TAG
# Show tag only if not on a branch.
# Tip: To always show tag, delete the next line.
&& -z $VCS_STATUS_LOCAL_BRANCH # <-- this line
]]; then
local tag=${(V)VCS_STATUS_TAG}
# If tag name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show tag name in full without truncation, delete the next line.
(( $#tag > 32 )) && tag[13,-13]="…" # <-- this line
res+="${meta}#${clean}${tag//\%/%%}"
fi
# Display the current Git commit if there is no branch or tag.
# Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line.
[[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Display the current Git commit if there is no branch and no tag.
# Tip: To always display the current Git commit, delete the next line.
[[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line
res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Show tracking branch name if it differs from local branch.
if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape %
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
fi
# Display "wip" if the latest commit's summary contains "wip" or "WIP".
if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
res+=" ${modified}wip"
fi
if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
# Tip: Uncomment the next line to display '=' if up to date with the remote.
# res+=" ${clean}="
fi
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
# ⇠42 if behind the push remote.
(( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_PUSH_COMMITS_BEHIND}"
(( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
@@ -451,10 +494,10 @@
# Show status of repositories of these types. You can add svn and/or hg if you are
# using them. If you do, your prompt may become slow even when your current directory
# isn't in an svn or hg reposotiry.
# isn't in an svn or hg repository.
typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
# These settings are used for respositories other than Git or when gitstatusd fails and
# These settings are used for repositories other than Git or when gitstatusd fails and
# Powerlevel10k has to fall back to using vcs_info.
typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=2
typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=2
@@ -497,7 +540,7 @@
typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
###################[ command_execution_time: duration of the last command ]###################
# Show duration of the last command if takes longer than this many seconds.
# Show duration of the last command if takes at least this many seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
# Show this many fractional digits. Zero means round to seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
@@ -526,6 +569,7 @@
###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
# Default asdf color. Only used to display tools for which there is no color override (see below).
# Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
typeset -g POWERLEVEL9K_ASDF_FOREGROUND=6
# There are four parameters that can be used to hide asdf tools. Each parameter describes
@@ -571,7 +615,7 @@
typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
# If set to non-empty value, hide tools unless there is a file matching the specified file pattern
# in the current directory, or its parent diretory, or its grandparent directory, and so on.
# in the current directory, or its parent directory, or its grandparent directory, and so on.
#
# Note: If this parameter is set to empty value, it won't hide tools.
# Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
@@ -658,6 +702,11 @@
# typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
# Julia version from asdf.
typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=2
# typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
# NordVPN connection indicator color.
typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=6
@@ -672,6 +721,12 @@
typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3
# Custom icon.
# typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
# Yazi shell color.
typeset -g POWERLEVEL9K_YAZI_FOREGROUND=3
# Custom icon.
# typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
# Nnn shell color.
@@ -679,6 +734,18 @@
# Custom icon.
# typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
# lf shell color.
typeset -g POWERLEVEL9K_LF_FOREGROUND=3
# Custom icon.
# typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
# xplr shell color.
typeset -g POWERLEVEL9K_XPLR_FOREGROUND=3
# Custom icon.
# typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########################[ vim_shell: vim shell indicator (:sh) ]###########################
# Vim shell indicator color.
typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=3
@@ -695,12 +762,21 @@
# Nix shell color.
typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=4
# Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
# typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
# Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
# typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
# chezmoi shell color.
typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=4
# Custom icon.
# typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ disk_usage: disk usage ]##################################
# Colors for different levels of disk usage.
typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=2
@@ -777,7 +853,7 @@
##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
# Taskwarrior color.
typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=6
# Taskwarrior segment format. The following parameters are available within the expansion.
#
# - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`.
@@ -794,6 +870,30 @@
# Custom icon.
# typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
# Color when using local/global history.
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=5
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=3
# Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
# Custom icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
################################[ cpu_arch: CPU architecture ]################################
# CPU architecture color.
typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=3
# Hide the segment when on a specific CPU architecture.
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ context: user@hostname ]##################################
# Context color when running with privileges.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1
@@ -823,7 +923,8 @@
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=6
# Don't show Python version next to the virtual environment name.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
# Don't show virtualenv if pyenv is already shown.
# If set to "false", won't show virtualenv if pyenv is already shown.
# If set to "if-different", won't show virtualenv if it's the same as pyenv.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
@@ -833,10 +934,33 @@
#####################[ anaconda: conda environment (https://conda.io/) ]######################
# Anaconda environment color.
typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=6
# Don't show Python version next to the anaconda environment name.
typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
# Anaconda segment format. The following parameters are available within the expansion.
#
# - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment.
# - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment.
# - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below).
# - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version).
#
# CONDA_PROMPT_MODIFIER can be configured with the following command:
#
# conda config --set env_prompt '({default_env}) '
#
# The last argument is a Python format string that can use the following variables:
#
# - prefix The same as CONDA_PREFIX.
# - default_env The same as CONDA_DEFAULT_ENV.
# - name The last segment of CONDA_PREFIX.
# - stacked_env Comma-separated list of names in the environment stack. The first element is
# always the same as default_env.
#
# Note: '({default_env}) ' is the default value of env_prompt.
#
# The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
# without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
# is empty.
typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
# Custom icon.
# typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -858,10 +982,10 @@
#
# The default format has the following logic:
#
# 1. Display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION" if $P9K_PYENV_PYTHON_VERSION is not
# empty and unequal to $P9K_CONTENT.
# 2. Otherwise display just "$P9K_CONTENT".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}'
# 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
# starts with "$P9K_PYENV_PYTHON_VERSION/".
# 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
# Custom icon.
# typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -895,6 +1019,11 @@
##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
# Nvm color.
typeset -g POWERLEVEL9K_NVM_FOREGROUND=2
# If set to false, hide node version if it's the same as default:
# $(nvm version current) == $(nvm version default).
typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
# If set to false, hide node version if it's equal to "system".
typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1044,6 +1173,16 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
# Perlbrew color.
typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
# Show perlbrew version only when in a perl project subdirectory.
typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
# Don't show "perl-" at the front.
typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
# Custom icon.
# typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
# PHP color.
typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=5
@@ -1057,6 +1196,19 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
#######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
# Scala color.
typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=1
# Hide scala version if it doesn't come from one of these sources.
typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
# If set to false, hide scala version if it's the same as global:
# $(scalaenv version-name) == $(scalaenv global).
typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
# If set to false, hide scala version if it's equal to "system".
typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
# Haskell color.
typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=3
@@ -1072,9 +1224,9 @@
# typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
# Show kubecontext only when the the command you are typing invokes one of these tools.
# Show kubecontext only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show kubecontext.
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito'
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
# Kubernetes context classes for the purpose of using different colors, icons and expansions with
# different contexts.
@@ -1159,6 +1311,8 @@
# typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
################[ terraform: terraform workspace (https://www.terraform.io) ]#################
# Don't show terraform workspace if it's literally "default".
typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
# POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current terraform workspace gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
@@ -1172,7 +1326,7 @@
# typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' DEFAULT)
# '*' OTHER)
#
# If your current terraform workspace is "project_test", its class is TEST because "project_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
@@ -1185,14 +1339,20 @@
typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' DEFAULT)
typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_FOREGROUND=4
# typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
'*' OTHER)
typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4
# typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ terraform_version: terraform version (https://www.terraform.io) ]##############
# Terraform version color.
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4
# Custom icon.
# typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
#[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
# Show aws only when the the command you are typing invokes one of these tools.
# Show aws only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show aws.
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi'
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current AWS profile gets matched.
@@ -1224,6 +1384,12 @@
typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=3
# typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# AWS segment format. The following parameters are available within the expansion.
#
# - P9K_AWS_PROFILE The name of the current AWS profile.
# - P9K_AWS_REGION The region associated with the current AWS profile.
typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
#[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
# AWS Elastic Beanstalk environment color.
typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2
@@ -1231,18 +1397,47 @@
# typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
# Show azure only when the the command you are typing invokes one of these tools.
# Show azure only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show azure.
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi'
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current azure account name gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
# that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
# you'll see this value in your prompt. The second element of each pair in
# POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
# first match wins.
#
# For example, given these settings:
#
# typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' OTHER)
#
# If your current azure account is "company_test", its class is TEST because "company_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
#
# You can define different colors, icons and content expansions for different classes:
#
# typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2
# typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' OTHER)
# Azure account name color.
typeset -g POWERLEVEL9K_AZURE_FOREGROUND=4
typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=4
# Custom icon.
# typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
# Show gcloud only when the the command you are typing invokes one of these tools.
# Show gcloud only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show gcloud.
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs'
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
# Google cloud color.
typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=4
@@ -1258,7 +1453,7 @@
# P9K_GCLOUD_PROJECT_ID | gcloud config get-value project
# P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced with '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
#
# Obtaining project name requires sending a request to Google servers. This can take a long time
# and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
@@ -1281,9 +1476,9 @@
# typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
#[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
# Show google_app_cred only when the the command you are typing invokes one of these tools.
# Show google_app_cred only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show google_app_cred.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi'
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
# Google application credentials classes for the purpose of using different colors, icons and
# expansions with different credentials.
@@ -1331,9 +1526,19 @@
# P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id
# P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced by '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
# Toolbox color.
typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=3
# Don't display the name of the toolbox if it matches fedora-toolbox-*.
typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
# Custom icon.
# typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
# Custom prefix.
# typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin '
###############################[ public_ip: public IP address ]###############################
# Public IP color.
typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=6
@@ -1348,7 +1553,7 @@
typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
# Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
# to see the name of the interface.
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*'
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
# If set to true, show one segment per matching network interface. If set to false, show only
# one segment corresponding to the first matching network interface.
# Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
@@ -1362,17 +1567,19 @@
# The following parameters are accessible within the expansion:
#
# Parameter | Meaning
# ----------------------+---------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
# ----------------------+-------------------------------------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
# P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %2F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %3F⇡$P9K_IP_TX_RATE}'
# Show information for the first network interface whose name matches this regular expression.
# Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
typeset -g POWERLEVEL9K_IP_INTERFACE='e.*'
typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
# Custom icon.
# typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1415,15 +1622,11 @@
# Parameter | Meaning
# ----------------------+---------------
# P9K_WIFI_SSID | service set identifier, a.k.a. network name
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
# P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
# P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0
# P9K_WIFI_NOISE | noise in dBm, from -120 to 0
# P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
#
# All parameters except P9K_WIFI_BARS are extracted from the output of the following command:
#
# /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
####################################[ time: current time ]####################################
# Current time color.
@@ -1450,7 +1653,7 @@
# User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
# is to generate the prompt segment for display in instant prompt. See
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
#
# Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
# and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
@@ -1486,7 +1689,7 @@
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.

View File

@@ -17,10 +17,10 @@
# Unset all configuration options. This allows you to apply configuration changes without
# restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
autoload -Uz is-at-least && is-at-least 5.1 || return
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# The list of segments shown on the left. Fill it with the most important segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
@@ -65,22 +65,30 @@
luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
jenv # java version from jenv (https://github.com/jenv/jenv)
plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
haskell_stack # haskell version from stack (https://haskellstack.org/)
kubecontext # current kubernetes context (https://kubernetes.io/)
terraform # terraform workspace (https://www.terraform.io)
# terraform_version # terraform version (https://www.terraform.io)
aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
gcloud # google cloud cli account and project (https://cloud.google.com/)
google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
toolbox # toolbox name (https://github.com/containers/toolbox)
context # user@hostname
nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
ranger # ranger shell (https://github.com/ranger/ranger)
yazi # yazi shell (https://github.com/sxyazi/yazi)
nnn # nnn shell (https://github.com/jarun/nnn)
lf # lf shell (https://github.com/gokcehan/lf)
xplr # xplr shell (https://github.com/sayanarijit/xplr)
vim_shell # vim shell indicator (:sh)
midnight_commander # midnight commander shell (https://midnight-commander.org/)
nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
chezmoi_shell # chezmoi shell (https://www.chezmoi.io/)
# vpn_ip # virtual private network indicator
# load # CPU load
# disk_usage # disk usage
@@ -89,6 +97,8 @@
todo # todo items (https://github.com/todotxt/todo.txt-cli)
timewarrior # timewarrior tracking status (https://timewarrior.net/)
taskwarrior # taskwarrior task count (https://taskwarrior.org/)
per_directory_history # Oh My Zsh per-directory-history local/global indicator
# cpu_arch # CPU architecture
# time # current time
# =========================[ Line #2 ]=========================
newline
@@ -173,8 +183,8 @@
#################################[ os_icon: os identifier ]##################################
# OS identifier color.
typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
# Make the icon bold.
typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='${P9K_CONTENT}'
# Custom icon.
# typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
################################[ prompt_char: prompt symbol ]################################
# Green prompt symbol if the last command succeeded.
@@ -186,7 +196,7 @@
# Prompt symbol in command vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=''
# Prompt symbol in visual vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=''
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
# Prompt symbol in overwrite vi mode.
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
@@ -224,7 +234,8 @@
.java-version
.perl-version
.php-version
.tool-version
.tool-versions
.mise.toml
.shorten_folder_marker
.svn
.terraform
@@ -241,6 +252,11 @@
# /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
# or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
# and other directories don't.
#
# Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
# This moves the truncation point to the right (positive offset) or to the left (negative offset)
# relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
# respectively.
typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
# Don't shorten this many last directory segments. They are anchors.
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
@@ -262,12 +278,12 @@
# the full directory that was used in previous commands.
typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
# Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
# POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
# Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
# and POWERLEVEL9K_DIR_CLASSES below.
typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
# The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
# set to v2.
# The default icon shown next to non-writable and non-existent directories when
# POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
# typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
# POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
@@ -280,8 +296,8 @@
#
# Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
#
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v2 and the current directory is not writable,
# its class gets suffix _NOT_WRITABLE.
# If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
# acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
#
# For example, given these settings:
#
@@ -290,10 +306,11 @@
# '~(|/*)' HOME ''
# '*' DEFAULT '')
#
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with class
# WORK or WORK_NOT_WRITABLE.
# Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
# of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
# WORK_NON_EXISTENT.
#
# Simply assigning classes to directories don't have any visible effects. It merely gives you an
# Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
# option to define custom colors and icons for different directory classes.
#
# # Styling for WORK.
@@ -308,6 +325,12 @@
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
#
# # Styling for WORK_NON_EXISTENT.
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
# typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
#
# If a styling parameter isn't explicitly defined for some class, it falls back to the classless
# parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
# back to POWERLEVEL9K_DIR_FOREGROUND.
@@ -318,7 +341,7 @@
# typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
#####################################[ vcs: git status ]######################################
# Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
# Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# Untracked files icon. It's really a question mark, your font isn't broken.
@@ -327,7 +350,7 @@
# Formatter for Git status.
#
# Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
# Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
#
# You can edit the function to customize how Git status looks.
#
@@ -360,35 +383,55 @@
fi
local res
local where # branch or tag
if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}"
where=${(V)VCS_STATUS_LOCAL_BRANCH}
elif [[ -n $VCS_STATUS_TAG ]]; then
res+="${meta}#"
where=${(V)VCS_STATUS_TAG}
local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
# If local branch name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#branch > 32 )) && branch[13,-13]="…" # <-- this line
res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
fi
# If local branch name or tag is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show local branch name in full without truncation, delete the next line.
(( $#where > 32 )) && where[13,-13]="…"
res+="${clean}${where//\%/%%}" # escape %
if [[ -n $VCS_STATUS_TAG
# Show tag only if not on a branch.
# Tip: To always show tag, delete the next line.
&& -z $VCS_STATUS_LOCAL_BRANCH # <-- this line
]]; then
local tag=${(V)VCS_STATUS_TAG}
# If tag name is at most 32 characters long, show it in full.
# Otherwise show the first 12 … the last 12.
# Tip: To always show tag name in full without truncation, delete the next line.
(( $#tag > 32 )) && tag[13,-13]="…" # <-- this line
res+="${meta}#${clean}${tag//\%/%%}"
fi
# Display the current Git commit if there is no branch or tag.
# Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line.
[[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Display the current Git commit if there is no branch and no tag.
# Tip: To always display the current Git commit, delete the next line.
[[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line
res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
# Show tracking branch name if it differs from local branch.
if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape %
res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
fi
# Display "wip" if the latest commit's summary contains "wip" or "WIP".
if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
res+=" ${modified}wip"
fi
if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
# Tip: Uncomment the next line to display '=' if up to date with the remote.
# res+=" ${clean}="
fi
# ⇣42 if behind the remote.
(( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_COMMITS_BEHIND}"
# ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}${VCS_STATUS_COMMITS_AHEAD}"
# ⇠42 if behind the push remote.
(( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}${VCS_STATUS_PUSH_COMMITS_BEHIND}"
(( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
@@ -451,10 +494,10 @@
# Show status of repositories of these types. You can add svn and/or hg if you are
# using them. If you do, your prompt may become slow even when your current directory
# isn't in an svn or hg reposotiry.
# isn't in an svn or hg repository.
typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
# These settings are used for respositories other than Git or when gitstatusd fails and
# These settings are used for repositories other than Git or when gitstatusd fails and
# Powerlevel10k has to fall back to using vcs_info.
typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
@@ -497,7 +540,7 @@
typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
###################[ command_execution_time: duration of the last command ]###################
# Show duration of the last command if takes longer than this many seconds.
# Show duration of the last command if takes at least this many seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
# Show this many fractional digits. Zero means round to seconds.
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
@@ -526,6 +569,7 @@
###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
# Default asdf color. Only used to display tools for which there is no color override (see below).
# Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
# There are four parameters that can be used to hide asdf tools. Each parameter describes
@@ -571,7 +615,7 @@
typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
# If set to non-empty value, hide tools unless there is a file matching the specified file pattern
# in the current directory, or its parent diretory, or its grandparent directory, and so on.
# in the current directory, or its parent directory, or its grandparent directory, and so on.
#
# Note: If this parameter is set to empty value, it won't hide tools.
# Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
@@ -658,6 +702,11 @@
# typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
# Julia version from asdf.
typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
# typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
# NordVPN connection indicator color.
typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
@@ -672,6 +721,12 @@
typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
# Custom icon.
# typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
# Yazi shell color.
typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178
# Custom icon.
# typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
# Nnn shell color.
@@ -679,6 +734,18 @@
# Custom icon.
# typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
# lf shell color.
typeset -g POWERLEVEL9K_LF_FOREGROUND=72
# Custom icon.
# typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
# xplr shell color.
typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
# Custom icon.
# typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########################[ vim_shell: vim shell indicator (:sh) ]###########################
# Vim shell indicator color.
typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
@@ -695,12 +762,21 @@
# Nix shell color.
typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
# Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
# typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
# Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
# typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
# chezmoi shell color.
typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
# Custom icon.
# typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ disk_usage: disk usage ]##################################
# Colors for different levels of disk usage.
typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
@@ -777,7 +853,7 @@
##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
# Taskwarrior color.
typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
# Taskwarrior segment format. The following parameters are available within the expansion.
#
# - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`.
@@ -794,6 +870,30 @@
# Custom icon.
# typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
# Color when using local/global history.
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
# Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
# Custom icon.
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
################################[ cpu_arch: CPU architecture ]################################
# CPU architecture color.
typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
# Hide the segment when on a specific CPU architecture.
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
# typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
# Custom icon.
# typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
##################################[ context: user@hostname ]##################################
# Context color when running with privileges.
typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
@@ -823,7 +923,8 @@
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
# Don't show Python version next to the virtual environment name.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
# Don't show virtualenv if pyenv is already shown.
# If set to "false", won't show virtualenv if pyenv is already shown.
# If set to "if-different", won't show virtualenv if it's the same as pyenv.
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
@@ -833,10 +934,33 @@
#####################[ anaconda: conda environment (https://conda.io/) ]######################
# Anaconda environment color.
typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
# Don't show Python version next to the anaconda environment name.
typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false
# Separate environment name from Python version only with a space.
typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
# Anaconda segment format. The following parameters are available within the expansion.
#
# - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment.
# - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment.
# - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below).
# - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version).
#
# CONDA_PROMPT_MODIFIER can be configured with the following command:
#
# conda config --set env_prompt '({default_env}) '
#
# The last argument is a Python format string that can use the following variables:
#
# - prefix The same as CONDA_PREFIX.
# - default_env The same as CONDA_DEFAULT_ENV.
# - name The last segment of CONDA_PREFIX.
# - stacked_env Comma-separated list of names in the environment stack. The first element is
# always the same as default_env.
#
# Note: '({default_env}) ' is the default value of env_prompt.
#
# The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
# without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
# is empty.
typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
# Custom icon.
# typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -858,10 +982,10 @@
#
# The default format has the following logic:
#
# 1. Display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION" if $P9K_PYENV_PYTHON_VERSION is not
# empty and unequal to $P9K_CONTENT.
# 2. Otherwise display just "$P9K_CONTENT".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}'
# 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
# starts with "$P9K_PYENV_PYTHON_VERSION/".
# 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
# Custom icon.
# typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -895,6 +1019,11 @@
##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
# Nvm color.
typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
# If set to false, hide node version if it's the same as default:
# $(nvm version current) == $(nvm version default).
typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
# If set to false, hide node version if it's equal to "system".
typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1044,6 +1173,16 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
# Perlbrew color.
typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
# Show perlbrew version only when in a perl project subdirectory.
typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
# Don't show "perl-" at the front.
typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
# Custom icon.
# typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
# PHP color.
typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
@@ -1057,6 +1196,19 @@
# Custom icon.
# typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
#######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
# Scala color.
typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
# Hide scala version if it doesn't come from one of these sources.
typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
# If set to false, hide scala version if it's the same as global:
# $(scalaenv version-name) == $(scalaenv global).
typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
# If set to false, hide scala version if it's equal to "system".
typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
# Custom icon.
# typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
# Haskell color.
typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
@@ -1072,9 +1224,9 @@
# typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
# Show kubecontext only when the the command you are typing invokes one of these tools.
# Show kubecontext only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show kubecontext.
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito'
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
# Kubernetes context classes for the purpose of using different colors, icons and expansions with
# different contexts.
@@ -1159,6 +1311,8 @@
# typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
################[ terraform: terraform workspace (https://www.terraform.io) ]#################
# Don't show terraform workspace if it's literally "default".
typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
# POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current terraform workspace gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
@@ -1172,7 +1326,7 @@
# typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' DEFAULT)
# '*' OTHER)
#
# If your current terraform workspace is "project_test", its class is TEST because "project_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
@@ -1185,14 +1339,20 @@
typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' DEFAULT)
typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_FOREGROUND=38
# typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
'*' OTHER)
typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
# typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
#############[ terraform_version: terraform version (https://www.terraform.io) ]##############
# Terraform version color.
typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
# Custom icon.
# typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
#[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
# Show aws only when the the command you are typing invokes one of these tools.
# Show aws only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show aws.
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi'
typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current AWS profile gets matched.
@@ -1224,6 +1384,12 @@
typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
# typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
# AWS segment format. The following parameters are available within the expansion.
#
# - P9K_AWS_PROFILE The name of the current AWS profile.
# - P9K_AWS_REGION The region associated with the current AWS profile.
typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
#[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
# AWS Elastic Beanstalk environment color.
typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
@@ -1231,18 +1397,47 @@
# typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
# Show azure only when the the command you are typing invokes one of these tools.
# Show azure only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show azure.
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi'
typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
# POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
# in each pair defines a pattern against which the current azure account name gets matched.
# More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
# that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
# you'll see this value in your prompt. The second element of each pair in
# POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
# first match wins.
#
# For example, given these settings:
#
# typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD
# '*test*' TEST
# '*' OTHER)
#
# If your current azure account is "company_test", its class is TEST because "company_test"
# doesn't match the pattern '*prod*' but does match '*test*'.
#
# You can define different colors, icons and content expansions for different classes:
#
# typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
# typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
typeset -g POWERLEVEL9K_AZURE_CLASSES=(
# '*prod*' PROD # These values are examples that are unlikely
# '*test*' TEST # to match your needs. Customize them as needed.
'*' OTHER)
# Azure account name color.
typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32
typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
# Custom icon.
# typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
# typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
# Show gcloud only when the the command you are typing invokes one of these tools.
# Show gcloud only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show gcloud.
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs'
typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
# Google cloud color.
typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
@@ -1258,7 +1453,7 @@
# P9K_GCLOUD_PROJECT_ID | gcloud config get-value project
# P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced with '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
#
# Obtaining project name requires sending a request to Google servers. This can take a long time
# and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
@@ -1281,9 +1476,9 @@
# typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
#[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
# Show google_app_cred only when the the command you are typing invokes one of these tools.
# Show google_app_cred only when the command you are typing invokes one of these tools.
# Tip: Remove the next line to always show google_app_cred.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi'
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
# Google application credentials classes for the purpose of using different colors, icons and
# expansions with different credentials.
@@ -1331,9 +1526,19 @@
# P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id
# P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
#
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced by '%%'.
# Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
# Toolbox color.
typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
# Don't display the name of the toolbox if it matches fedora-toolbox-*.
typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
# Custom icon.
# typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
# Custom prefix.
# typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin '
###############################[ public_ip: public IP address ]###############################
# Public IP color.
typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
@@ -1348,7 +1553,7 @@
typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
# Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
# to see the name of the interface.
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*'
typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
# If set to true, show one segment per matching network interface. If set to false, show only
# one segment corresponding to the first matching network interface.
# Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
@@ -1362,17 +1567,19 @@
# The following parameters are accessible within the expansion:
#
# Parameter | Meaning
# ----------------------+---------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
# ----------------------+-------------------------------------------
# P9K_IP_IP | IP address
# P9K_IP_INTERFACE | network interface
# P9K_IP_RX_BYTES | total number of bytes received
# P9K_IP_TX_BYTES | total number of bytes sent
# P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
# P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
# P9K_IP_RX_RATE | receive rate (since last prompt)
# P9K_IP_TX_RATE | send rate (since last prompt)
typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F⇡$P9K_IP_TX_RATE}'
# Show information for the first network interface whose name matches this regular expression.
# Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
typeset -g POWERLEVEL9K_IP_INTERFACE='e.*'
typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
# Custom icon.
# typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
@@ -1415,15 +1622,11 @@
# Parameter | Meaning
# ----------------------+---------------
# P9K_WIFI_SSID | service set identifier, a.k.a. network name
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"
# P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
# P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
# P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0
# P9K_WIFI_NOISE | noise in dBm, from -120 to 0
# P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
#
# All parameters except P9K_WIFI_BARS are extracted from the output of the following command:
#
# /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
####################################[ time: current time ]####################################
# Current time color.
@@ -1450,7 +1653,7 @@
# User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
# is to generate the prompt segment for display in instant prompt. See
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
#
# Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
# and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
@@ -1486,7 +1689,7 @@
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.

View File

@@ -23,13 +23,13 @@
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
() {
emulate -L zsh
emulate -L zsh -o extended_glob
# Unset all configuration options.
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
autoload -Uz is-at-least && is-at-least 5.1 || return
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# Prompt colors.
local grey=242
@@ -169,7 +169,7 @@
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.

File diff suppressed because it is too large Load Diff

View File

@@ -18,13 +18,13 @@
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
() {
emulate -L zsh
emulate -L zsh -o extended_glob
# Unset all configuration options.
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
# Zsh >= 5.1 is required.
autoload -Uz is-at-least && is-at-least 5.1 || return
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
# Left prompt segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(prompt_char dir vcs)
@@ -87,7 +87,7 @@
# it incompatible with your zsh configuration files.
# - quiet: Enable instant prompt and don't print warnings when detecting console output
# during zsh initialization. Choose this if you've read and understood
# https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
# https://github.com/romkatv/powerlevel10k#instant-prompt.
# - verbose: Enable instant prompt and print a warning when detecting console output during
# zsh initialization. Choose this if you've never tried instant prompt, haven't
# seen the warning, or if you are unsure what this all means.

180
font.md Normal file
View File

@@ -0,0 +1,180 @@
# Recommended font: Meslo Nerd Font patched for Powerlevel10k
Gorgeous monospace font designed by Jim Lyles for Bitstream, customized by the same for Apple,
further customized by André Berg, and finally patched by yours truly with customized scripts
originally developed by Ryan L McIntyre of Nerd Fonts. Contains all glyphs and symbols that
Powerlevel10k may need. Battle-tested in dozens of different terminals on all major operating
systems.
*FAQ*: [How was the recommended font created?](README.md#how-was-the-recommended-font-created)
## Automatic font installation
If you are using iTerm2 or Termux, `p10k configure` can install the recommended font for you.
Simply answer `Yes` when asked whether to install *Meslo Nerd Font*.
If you are using a different terminal, proceed with manual font installation. 👇
## Manual font installation
1. Download these four ttf files:
- [MesloLGS NF Regular.ttf](
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf)
- [MesloLGS NF Bold.ttf](
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf)
- [MesloLGS NF Italic.ttf](
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf)
- [MesloLGS NF Bold Italic.ttf](
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf)
1. Double-click on each file and click "Install". This will make `MesloLGS NF` font available to all
applications on your system.
1. Configure your terminal to use this font:
- **iTerm2**: Type `p10k configure` and answer `Yes` when asked whether to install
*Meslo Nerd Font*. Alternatively, open *iTerm2 → Preferences → Profiles → Text* and set *Font* to
`MesloLGS NF`.
- **Apple Terminal**: Open *Terminal → Preferences → Profiles → Text*, click *Change* under *Font*
and select `MesloLGS NF` family.
- **Hyper**: Open *Hyper → Edit → Preferences* and change the value of `fontFamily` under
`module.exports.config` to `MesloLGS NF`.
- **Visual Studio Code**: Open *File → Preferences → Settings* (PC) or
*Code → Preferences → Settings* (Mac), enter `terminal.integrated.fontFamily` in the search box at
the top of *Settings* tab and set the value below to `MesloLGS NF`.
Consult [this screenshot](
https://raw.githubusercontent.com/romkatv/powerlevel10k-media/389133fb8c9a2347929a23702ce3039aacc46c3d/visual-studio-code-font-settings.jpg)
to see how it should look like or see [this issue](
https://github.com/romkatv/powerlevel10k/issues/671) for extra information.
- **GNOME Terminal** (the default Ubuntu terminal): Open *Terminal → Preferences* and click on the
selected profile under *Profiles*. Check *Custom font* under *Text Appearance* and select
`MesloLGS NF Regular`.
- **Konsole**: Open *Settings → Edit Current Profile → Appearance*, click *Select Font* and select
`MesloLGS NF Regular`.
- **Tilix**: Open *Tilix → Preferences* and click on the selected profile under *Profiles*. Check
*Custom font* under *Text Appearance* and select `MesloLGS NF Regular`.
- **Windows Console Host** (the old thing): Click the icon in the top left corner, then
*Properties → Font* and set *Font* to `MesloLGS NF`.
- **Windows Terminal** by Microsoft (the new thing): Open *Settings* (<kbd>Ctrl+,</kbd>), click
either on the selected profile under *Profiles* or on *Defaults*, click *Appearance* and set
*Font face* to `MesloLGS NF`.
- **Conemu**: Open *Setup → General → Fonts* and set *Main console font* to `MesloLGS NF`.
- **IntelliJ** (and other IDEs by Jet Brains): Open *IDE → Edit → Preferences → Editor →
Color Scheme → Console Font*. Select *Use console font instead of the default* and set the font
name to `MesloLGS NF`.
- **Termux**: Type `p10k configure` and answer `Yes` when asked whether to install
*Meslo Nerd Font*.
- **Blink**: Type `config`, go to *Appearance*, tap *Add a new font*, tap *Open Gallery*, select
*MesloLGS NF.css*, tap *import* and type `exit` in the home view to reload the font.
- **Tabby** (formerly **Terminus**): Open *Settings → Appearance* and set *Font* to `MesloLGS NF`.
- **Terminator**: Open *Preferences* using the context menu. Under *Profiles* select the *General*
tab (should be selected already), uncheck *Use the system fixed width font* (if not already)
and select `MesloLGS NF Regular`. Exit the Preferences dialog by clicking *Close*.
- **Guake**: Right Click on an open terminal and open *Preferences*. Under *Appearance*
tab, uncheck *Use the system fixed width font* (if not already) and select `MesloLGS NF Regular`.
Exit the Preferences dialog by clicking *Close*.
- **MobaXterm**: Open *Settings**Configuration**Terminal* → (under *Terminal look and feel*)
and change *Font* to `MesloLGS NF`. If you have *sessions*, you need to change the font in each
of them through *Settings* → right click on an individual session → *Edit Session* → *Terminal
Settings* → *Font settings*.
- **Asbrú Connection Manager**: Open *Preferences → Local Shell Options → Look and Feel*, enable
*Use these personal options* and change *Font:* under *Terminal UI* to `MesloLGS NF Regular`.
To change the font for the remote host connections, go to *Preferences → Terminal Options →
Look and Feel* and change *Font:* under *Terminal UI* to `MesloLGS NF Regular`.
- **Warp**: Open Warp and Navigate to *Settings* then *Appearance*. Scroll down to *Text* Section
and under *"Terminal Font"*, select the `MesloLGS NF` font.
- **WSLtty**: Right click on an open terminal and then on *Options*. In the *Text* section, under
*Font*, click *"Select..."* and set Font to `MesloLGS NF Regular`.
- **Yakuake**: Click ***Manage Profiles**New**Appearance*. Click *Choose* next to the
*Font* dropdown, select `MesloLGS NF` and click *OK*. Click *OK* to save the profile. Select the
new profile and click *Set as Default*.
- **Alacritty**: Create or open `~/.config/alacritty/alacritty.toml` and add the following
section to it:
```toml
[font.normal]
family = "MesloLGS NF"
```
- **foot**: Create or open `~/.config/foot/foot.ini` and add the following section to it:
```ini
font=MesloLGS NF:size=12
```
- **kitty**: Create or open `~/.config/kitty/kitty.conf` and add the following line to it:
```text
font_family MesloLGS NF
```
Restart kitty by closing all sessions and opening a new session.
- **puTTY**: Set *Window* → *Appearance* → *Font* to `MesloLGS NF`. Requires puTTY
version >= 0.75.
- **WezTerm**: Create or open `$HOME/.config/wezterm/wezterm.lua` and add the following:
```lua
local wezterm = require 'wezterm';
return {
font = wezterm.font("MesloLGS NF"),
}
```
If the file already exists, only add the line with the font to the existing return.
Also add the first line if it is not already present.
- **urxvt**: Create or open `~/.Xresources` and add the following line to it:
```text
URxvt.font: xft:MesloLGS NF:size=11
```
You can adjust the font size to your preference. After changing the config run
`xrdb ~/.Xresources` to reload it. The new config is applied to all new terminals.
- **xterm**: Create or open `~/.Xresources` and add the following line to it:
```text
xterm*faceName: MesloLGS NF
```
After changing the config run `xrdb ~/.Xresources` to reload it. The new config is applied to
all new terminals.
- **Zed**: Open `~/.config/zed/settings.json` and set `terminal.font_family` to `"MesloLGS NF"`.
```jsonc
{
"terminal": {
"font_family": "MesloLGS NF"
},
// Other settings.
}
```
- Crostini (Linux on Chrome OS): Open
chrome-untrusted://terminal/html/nassh_preferences_editor.html, set *Text font family* to
`'MesloLGS NF'` (including the quotes) and *Custom CSS (inline text)* to the following:
```css
@font-face {
font-family: "MesloLGS NF";
src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Regular.ttf");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "MesloLGS NF";
src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold.ttf");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "MesloLGS NF";
src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Italic.ttf");
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: "MesloLGS NF";
src: url("https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold%20Italic.ttf");
font-weight: bold;
font-style: italic;
}
```
**_CAVEAT_**: If you open the normal terminal preferences these settings will be overwritten.
- **Deepin Terminal**: Create or open `~/.config/deepin/deepin-terminal/config.conf` and add the following section
to it:
```ini
[basic.interface.font]
value = "MesloLGS NF"
```
- **Ghostty**: Open *Menu → Open Configuration* (Linux) or *Ghostty → Settings...* (Mac) and add
the following line:
```text
font-family = "MesloLGS NF"
```
1. Run `p10k configure` to generate a new `~/.p10k.zsh`. The old config may work
incorrectly with the new font.
_Using a different terminal and know how to set the font for it? Share your knowledge by sending a
PR to expand the list!_

View File

@@ -2,6 +2,7 @@ APPNAME ?= gitstatusd
OBJDIR ?= obj
CXX ?= g++
ZSH := $(shell command -v zsh 2> /dev/null)
VERSION ?= $(shell . ./build.info && printf "%s" "$$gitstatus_version")
@@ -9,7 +10,7 @@ VERSION ?= $(shell . ./build.info && printf "%s" "$$gitstatus_version")
#
# Sized delete is implemented as __ZdlPvm in /usr/lib/libc++.1.dylib but this symbol is
# missing in macOS prior to 10.13.
CXXFLAGS += -std=c++14 -funsigned-char -O3 -DNDEBUG -DGITSTATUS_VERSION=$(VERSION) -Wall -Werror # -g -fsanitize=thread
CXXFLAGS += -std=c++14 -funsigned-char -O3 -DNDEBUG -DGITSTATUS_VERSION=$(VERSION) # -Wall -g -fsanitize=thread
LDFLAGS += -pthread # -fsanitize=thread
LDLIBS += -lgit2 # -lprofiler -lunwind
@@ -33,4 +34,24 @@ $(OBJDIR)/%.o: src/%.cc Makefile build.info | $(OBJDIR)
clean:
rm -rf -- $(OBJDIR)
zwc:
$(or $(ZSH),:) -fc 'for f in *.zsh install; do zcompile -R -- $$f.zwc $$f || exit; done'
minify:
rm -rf -- .clang-format .git .gitattributes .gitignore .vscode deps docs src usrbin/.gitkeep LICENSE Makefile README.md build mbuild
pkg: zwc
GITSTATUS_DAEMON= GITSTATUS_CACHE_DIR=$(shell pwd)/usrbin ./install -f
-include $(OBJS:.o=.dep)
.PHONY: help
help:
@echo "Usage: make [TARGET]"
@echo "Available targets:"
@echo " all Build $(APPNAME) (default target)"
@echo " clean Remove generated files and directories"
@echo " zwc Compile Zsh files"
@echo " minify Remove unnecessary files and folders"
@echo " pkg Create a package"

View File

@@ -1,5 +1,9 @@
# gitstatus
- **THE PROJECT HAS VERY LIMITED SUPPORT**
- **NO NEW FEATURES ARE IN THE WORKS**
- **MOST BUGS WILL GO UNFIXED**
**gitstatus** is a 10x faster alternative to `git status` and `git describe`. Its primary use
case is to enable fast git prompt in interactive shells.
@@ -22,7 +26,8 @@ Bash bindings for integration with shell.
The easiest way to take advantage of gitstatus from Zsh is to use a theme that's already integrated
with it. For example, [Powerlevel10k](https://github.com/romkatv/powerlevel10k) is a flexible and
fast theme with first-class gitstatus integration.
fast theme with first-class gitstatus integration. If you install Powerlevel10k, you don't need to
install gitstatus.
![Powerlevel10k Zsh Theme](
https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/prompt-styles-high-contrast.png)
@@ -35,7 +40,7 @@ git clone --depth=1 https://github.com/romkatv/gitstatus.git ~/gitstatus
echo 'source ~/gitstatus/gitstatus.prompt.zsh' >>! ~/.zshrc
```
Users in mainland China can use the official mirror on gitee.com for faster download.<br>
Users in China can use the official mirror on gitee.com for faster download.<br>
中国大陆用户可以使用 gitee.com 上的官方镜像加速下载.
```zsh
@@ -43,15 +48,15 @@ git clone --depth=1 https://gitee.com/romkatv/gitstatus.git ~/gitstatus
echo 'source ~/gitstatus/gitstatus.prompt.zsh' >>! ~/.zshrc
```
Alternatively, on macOS you can install with Homebrew:
Alternatively, if you have Homebrew installed:
```zsh
brew install romkatv/gitstatus/gitstatus
echo 'source /usr/local/opt/gitstatus/gitstatus.prompt.zsh' >>! ~/.zshrc
echo "source $(brew --prefix)/opt/gitstatus/gitstatus.prompt.zsh" >>! ~/.zshrc
```
(If you choose this option, replace `~/gitstatus` with `/usr/local/opt/gitstatus` in all code
snippets below.)
(If you choose this option, replace `~/gitstatus` with `$(brew --prefix)/opt/gitstatus/gitstatus`
in all code snippets below.)
_Make sure to disable your current theme if you have one._
@@ -103,9 +108,9 @@ function my_set_prompt() {
if gitstatus_query MY && [[ $VCS_STATUS_RESULT == ok-sync ]]; then
RPROMPT=${${VCS_STATUS_LOCAL_BRANCH:-@${VCS_STATUS_COMMIT}}//\%/%%} # escape %
(( $VCS_STATUS_NUM_STAGED )) && RPROMPT+='+'
(( $VCS_STATUS_NUM_UNSTAGED )) && RPROMPT+='!'
(( $VCS_STATUS_NUM_UNTRACKED )) && RPROMPT+='?'
(( VCS_STATUS_NUM_STAGED )) && RPROMPT+='+'
(( VCS_STATUS_NUM_UNSTAGED )) && RPROMPT+='!'
(( VCS_STATUS_NUM_UNTRACKED )) && RPROMPT+='?'
fi
setopt no_prompt_{bang,subst} prompt_percent # enable/disable correct prompt expansions
@@ -136,7 +141,7 @@ git clone --depth=1 https://github.com/romkatv/gitstatus.git ~/gitstatus
echo 'source ~/gitstatus/gitstatus.prompt.sh' >> ~/.bashrc
```
Users in mainland China can use the official mirror on gitee.com for faster download.<br>
Users in China can use the official mirror on gitee.com for faster download.<br>
中国大陆用户可以使用 gitee.com 上的官方镜像加速下载.
```bash
@@ -144,15 +149,15 @@ git clone --depth=1 https://gitee.com/romkatv/gitstatus.git ~/gitstatus
echo 'source ~/gitstatus/gitstatus.prompt.sh' >> ~/.bashrc
```
Alternatively, on macOS you can install with Homebrew:
Alternatively, if you have Homebrew installed:
```zsh
brew install romkatv/gitstatus/gitstatus
echo 'source /usr/local/opt/gitstatus/gitstatus.prompt.sh' >> ~/.bashrc
echo "source $(brew --prefix)/opt/gitstatus/gitstatus.prompt.sh" >> ~/.bashrc
```
(If you choose this option, replace `~/gitstatus` with `/usr/local/opt/gitstatus` in all code
snippets below.)
(If you choose this option, replace `~/gitstatus` with `$(brew --prefix)/opt/gitstatus/gitstatus`
in all code snippets below.)
This will give you a basic yet functional prompt with git status in it. It's
[over 10x faster](#benchmarks) than any alternative that can give you comparable prompt.
@@ -204,9 +209,9 @@ function my_set_prompt() {
else
PS1+=" @${VCS_STATUS_COMMIT//\\/\\\\}" # escape backslash
fi
[[ "$VCS_STATUS_HAS_STAGED" == 1 ]] && PS1+='+'
[[ "$VCS_STATUS_HAS_UNSTAGED" == 1 ]] && PS1+='!'
[[ "$VCS_STATUS_HAS_UNTRACKED" == 1 ]] && PS1+='?'
(( VCS_STATUS_HAS_STAGED" )) && PS1+='+'
(( VCS_STATUS_HAS_UNSTAGED" )) && PS1+='!'
(( VCS_STATUS_HAS_UNTRACKED" )) && PS1+='?'
fi
PS1+='\n\$ '
@@ -254,7 +259,7 @@ repository was checked out to an ext4 filesystem on M.2 SSD.
Three functionally equivalent tools for computing git status were benchmarked:
* `gitstatusd`
* `git` with untracked cache enabled
* `git` with `core.untrackedcache` enabled and `core.fsmonitor` disabled
* `lg2` -- a demo/example executable from [libgit2](https://github.com/romkatv/libgit2) that
implements a subset of `git` functionality on top of libgit2 API; for the purposes of this
benchmark the subset is sufficient to generate the same data as the other tools
@@ -380,7 +385,7 @@ generated with the same tools and the same flags as the profile of libgit2.
Since both profiles were generated from the same workload, absolute numbers can be compared. We can
see that gitstatusd took 62 seconds in total compared to libgit2's 232 seconds. System calls at the
core of the algorithm are cleary visible. `__GI___fxstatat` is a flavor of `stat()`, and the other
core of the algorithm are clearly visible. `__GI___fxstatat` is a flavor of `stat()`, and the other
three calls -- `__libc_openat64`, `__libc_close` and `__GI___fxstat` are responsible for opening
directories and finding untracked files. Notice that there is almost nothing else in the profile
apart from these calls. The rest of the code accounts for 3.77 seconds of CPU time -- 32 times less
@@ -491,7 +496,7 @@ cd gitstatus
./build -w -s -d docker
```
Users in mainland China can use the official mirror on gitee.com for faster download.<br>
Users in China can use the official mirror on gitee.com for faster download.<br>
中国大陆用户可以使用 gitee.com 上的官方镜像加速下载.
```zsh
@@ -511,83 +516,17 @@ by shell bindings automatically.
When you update shell bindings, they may refuse to work with the binary you've built earlier. In
this case you'll need to rebuild.
If you are using gitstatus through [Powerlevel10k](https://github.com/romkatv/powerlevel10k), the
instructions are the same except that you don't need to clone gitstatus. Instead, change your
current directory to `/path/to/powerlevel10k/gitstatus` (`/path/to/powerlevel10k` is the directory
where you've installed Powerlevel10k) and run `./build -w -s -d docker` from there as described
above.
### Compiling for distribution
If you want to package gitstatus, it's best to do it based off [releases](
https://github.com/romkatv/gitstatus/releases).
The following code should work without patching anything in gitstatus sources. If it doesn't, please
open an issue.
**IMPORTANT:** *Change version to what you want to package. This example doesn't get updated when
new versions are released.*
```zsh
# Download and extract gitstatus tarball.
gitstatus_version=1.1.0 # IMPORTANT: CHANGE VERSION TO WHAT YOU WANT
wget https://github.com/romkatv/gitstatus/archive/v"$gitstatus_version".tar.gz
tar -xzf v"$gitstatus_version".tar.gz
cd gitstatus-"$gitstatus_version"
# Download libgit2 tarball and compile gitstatusd.
./build -w
# Post-process.
rm ./deps/libgit2-*.tar.gz
for file in *.zsh install; do
zsh -fc "emulate zsh -o no_aliases && zcompile -R -- $file.zwc $file"
done
```
This needs binutils, cmake, gcc, g++, git, GNU make, wget, zsh and either shasum or sha256sum.
Once build completes, *do not delete or move any files*. Package the whole directory as is. Don't
add the directory or any of its subdirectories to `PATH`.
You probably don't want to build in docker, so don't pass `-d` to `./build`.
gitstatus depends on a [custom fork of libgit2](https://github.com/romkatv/libgit2/). When you run
`./build -w`, it'll automatically download the appropriate libgit2 tarball and verify its sha256.
If you want to separate the downloading of source tarballs from compilation, you can download the
libgit2 tarball manually and invoke `./build` without `-w`.
```zsh
# Download and extract gitstatus tarball.
gitstatus_version=1.1.0 # IMPORTANT: CHANGE VERSION TO WHAT YOU WANT
wget https://github.com/romkatv/gitstatus/archive/v"$gitstatus_version".tar.gz
tar -xzf v"$gitstatus_version".tar.gz
cd gitstatus-"$gitstatus_version"
# Download libgit2 tarball and place it where ./build expects it.
. ./build.info
libgit2_path=./deps/libgit2-"$libgit2_version".tar.gz
libgit2_url=https://github.com/romkatv/libgit2/archive/"$libgit2_version".tar.gz
wget -O "$libgit2_path" "$libgit2_url"
# Compile gitstatusd.
./build
# Post-process.
rm ./deps/libgit2-*.tar.gz
for file in *.zsh install; do
zsh -fc "emulate zsh -o no_aliases && zcompile -R -- $file.zwc $file"
done
```
Note that the URL and the content of the libgit2 tarball are fully defined by the main gitstatus
tarball. Thus, you can set URLs and sha256 checksums of the two tarball in the same place (package
definition) and update them at the same time when bumping package version. In other words, you don't
have to extract `libgit2_version` programmatically. You can manually copy it from [build.info](
https://github.com/romkatv/gitstatus/blob/master/build.info) to your package definition, if you
prefer.
[Powerlevel10k](https://github.com/romkatv/powerlevel10k) has an embedded version of gitstatus. It
must stay that way. If you decide to package both of them, follow the respective instructions from
each project. The embedded gitstatus in Powerlevel10k won't conflict with the standalone gitstatus.
They can have different versions and can coexist within the same Zsh process. Do not attempt to
surgically remove gitstatus from Powerlevel10k, package the result and then force Powerlevel10k to
use a separately packaged gitstatus. Instead, treat Powerlevel10k and gitstatus as independent
projects that don't depend on each other.
It's currently neither easy nor recommended to package and distribute gitstatus. There are no
instructions you can follow that would allow you to easily update your package when new versions of
gitstatus are released. This may change in the future but not soon.
## License

View File

@@ -9,6 +9,27 @@ if [ -n "${ZSH_VERSION:-}" ]; then
emulate sh -o err_exit -o no_unset
fi
export LC_ALL=C
if [ -z "${ZSH_VERSION-}" ] && command -v zsh >/dev/null 2>&1; then
# Avoid bash 3.*.
case "${BASH_VERSION-}" in
[0-3].*) exec zsh "$0" "$@";;
esac
fi
# Avoid ksh: https://github.com/romkatv/gitstatus/issues/282.
if [ -n "${KSH_VERSION-}" ]; then
if [ -z "${ZSH_VERSION-}" ] && command -v zsh >/dev/null 2>&1; then
exec zsh "$0" "$@"
elif [ -z "${BASH_VERSION-}" ] && command -v bash >/dev/null 2>&1 &&
bash_version="$(bash --version 2>&1)"; then
case "$bash_version" in
*version\ [4-9]*|*version\ [1-9][0-9]*) exec bash "$0" "$@";;
esac
fi
fi
usage="$(command cat <<\END
Usage: build [-m ARCH] [-c CPU] [-d CMD] [-i IMAGE] [-s] [-w]
@@ -27,7 +48,7 @@ Options:
succeed; on some operating systems this option is not
supported; on others it can have partial effect
-w automatically download tarballs for dependencies if they
don't already exist in ./deps; dependencies are described
do not already exist in ./deps; dependencies are described
in ./build.info
END
)"
@@ -47,29 +68,43 @@ workdir="$(command pwd)"
narg() { echo $#; }
if [ "$(narg $workdir)" != 1 -o -z "${workdir##*:*}" ]; then
if [ "$(narg $workdir)" != 1 -o -z "${workdir##*:*}" -o -z "${workdir##*=*}" ]; then
>&2 echo "[error] cannot build in this directory: $workdir"
exit 1
fi
appname=gitstatusd-"$gitstatus_kernel"-"$gitstatus_arch"
appname=gitstatusd
libgit2_tmp="$outdir"/deps/"$appname".libgit2.tmp
cleanup() {
cd /
command rm -rf -- "$workdir" "$outdir"/usrbin/"$appname".tmp "$libgit2_tmp"
trap - INT QUIT TERM ILL PIPE
cd /
if ! command rm -rf -- "$workdir" "$outdir"/usrbin/"$appname".tmp "$libgit2_tmp"; then
command sleep 5
command rm -rf -- "$workdir" "$outdir"/usrbin/"$appname".tmp "$libgit2_tmp"
fi
}
trap cleanup INT QUIT TERM ILL PIPE
if [ -n "$gitstatus_install_tools" ]; then
case "$gitstatus_kernel" in
linux)
command apk update
command apk add binutils cmake gcc g++ git make musl-dev perl-utils
if command -v apk >/dev/null 2>&1; then
command apk update
command apk add binutils cmake gcc g++ git make musl-dev perl-utils
elif command -v apt-get >/dev/null 2>&1; then
apt-get update
apt-get install -y binutils cmake gcc g++ make wget
else
>&2 echo "[error] -s is not supported on this system"
exit 1
fi
;;
freebsd)
command pkg install -y cmake gmake binutils gcc git perl5
freebsd|dragonfly)
command pkg install -y cmake gmake binutils git perl5 wget
;;
openbsd)
command pkg_add cmake gmake gcc g++ git wget
;;
netbsd)
command pkgin -y install cmake gmake binutils git
@@ -79,17 +114,20 @@ if [ -n "$gitstatus_install_tools" ]; then
>&2 echo "[error] please run 'xcode-select --install' and retry"
exit 1
fi
if ! command -v brew >/dev/null 2>&1; then
>&2 echo "[error] please install homebrew from https://brew.sh/ and retry"
if command -v port >/dev/null 2>&1; then
sudo port -N install libiconv cmake wget
elif command -v brew >/dev/null 2>&1; then
for formula in libiconv cmake git wget; do
if command brew ls --version "$formula" &>/dev/null; then
command brew upgrade "$formula"
else
command brew install "$formula"
fi
done
else
>&2 echo "[error] please install MacPorts or Homebrew and retry"
exit 1
fi
for formula in libiconv cmake git wget; do
if command brew list "$formula" &>/dev/null; then
command brew upgrade "$formula"
else
command brew install "$formula"
fi
done
;;
msys*|mingw*)
command pacman -Syu --noconfirm
@@ -103,11 +141,11 @@ if [ -n "$gitstatus_install_tools" ]; then
fi
cpus="$(command getconf _NPROCESSORS_ONLN 2>/dev/null)" ||
cpus="$(command sysctl -n hw.ncpu 2>/dev/null)" ||
cpus="$(command sysctl -n hw.ncpu 2>/dev/null)" ||
cpus=8
case "$gitstatus_cpu" in
ppc64le)
powerpc64|powerpc64le)
archflag="-mcpu"
;;
*)
@@ -115,41 +153,136 @@ case "$gitstatus_cpu" in
;;
esac
case "$gitstatus_arch" in
e2k)
nopltflag=""
;;
*)
nopltflag="-fno-plt"
;;
esac
cflags="$archflag=$gitstatus_cpu $nopltflag -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fpie"
ldflags=
static_pie=
if [ -z "${CC-}" ]; then
case "$gitstatus_kernel" in
freebsd) export CC=clang;;
*) export CC=cc;;
esac
fi
printf 'int main() {}\n' >"$workdir"/cc-test.c
if 2>/dev/null "$CC" \
-ffile-prefix-map=x=y \
-Werror \
-c "$workdir"/cc-test.c \
-o "$workdir"/cc-test.o; then
cflags="$cflags -ffile-prefix-map=$workdir/="
fi
command rm -f -- "$workdir"/cc-test "$workdir"/cc-test.o
if 2>/dev/null "$CC" \
-fstack-clash-protection \
-Werror \
-c "$workdir"/cc-test.c \
-o "$workdir"/cc-test.o; then
cflags="$cflags -fstack-clash-protection"
fi
command rm -f -- "$workdir"/cc-test "$workdir"/cc-test.o
if 2>/dev/null "$CC" \
-fcf-protection \
-Werror \
-c "$workdir"/cc-test.c \
-o "$workdir"/cc-test.o; then
cflags="$cflags -fcf-protection"
fi
command rm -f -- "$workdir"/cc-test "$workdir"/cc-test.o
if 2>/dev/null "$CC" \
-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now \
-Werror \
"$workdir"/cc-test.c \
-o "$workdir"/cc-test; then
ldflags="$ldflags -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
fi
command rm -f -- "$workdir"/cc-test "$workdir"/cc-test.o
if 2>/dev/null "$CC" \
-fpie -static-pie \
-Werror \
"$workdir"/cc-test.c \
-o "$workdir"/cc-test; then
static_pie='-static-pie'
fi
if [ "$gitstatus_cpu" = x86-64 ]; then
cflags="$cflags -mtune=generic"
fi
libgit2_cmake_flags=
libgit2_cflags="$archflag=$gitstatus_cpu"
libgit2_cflags="${CFLAGS-} $cflags -O3 -DNDEBUG"
gitstatus_cxx=g++
gitstatus_cxxflags="-I${workdir}/libgit2/include -DGITSTATUS_ZERO_NSEC -D_GNU_SOURCE $archflag=$gitstatus_cpu"
gitstatus_ldflags="-L${workdir}/libgit2/build"
gitstatus_cxxflags="${CXXFLAGS-} $cflags -I${workdir}/libgit2/include -DGITSTATUS_ZERO_NSEC -D_GNU_SOURCE -D_GLIBCXX_ASSERTIONS"
gitstatus_ldflags="${LDFLAGS-} $ldflags -L${workdir}/libgit2/build"
gitstatus_ldlibs=
gitstatus_make=make
case "$gitstatus_kernel" in
linux)
gitstatus_ldflags="$gitstatus_ldflags -static"
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
freebsd)
gitstatus_cxx=clang++
gitstatus_make=gmake
gitstatus_ldflags="$gitstatus_ldflags -static"
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
dragonfly)
gitstatus_cxx=clang++12
gitstatus_make=gmake
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
openbsd)
gitstatus_cxx=eg++
gitstatus_make=gmake
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
netbsd)
gitstatus_make=gmake
gitstatus_ldflags="$gitstatus_ldflags -static"
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
darwin)
command mkdir -- "$workdir"/lib
command ln -s -- /usr/local/opt/libiconv/lib/libiconv.a "$workdir"/lib
if [ -e /opt/local/lib/libiconv.a ]; then
command ln -s -- /opt/local/lib/libiconv.a "$workdir"/lib
libgit2_cflags="$libgit2_cflags -I/opt/local/include"
gitstatus_cxxflags="$gitstatus_cxxflags -I/opt/local/include"
else
brew_prefix="$(command brew --prefix)"
command ln -s -- "$brew_prefix"/opt/libiconv/lib/libiconv.a "$workdir"/lib
libgit2_cflags="$libgit2_cflags -I"$brew_prefix"/opt/libiconv/include"
gitstatus_cxxflags="$gitstatus_cxxflags -I"$brew_prefix"/opt/libiconv/include"
fi
libgit2_cmake_flags="$libgit2_cmake_flags -DUSE_ICONV=ON"
libgit2_cflags="$libgit2_cflags -I/usr/local/opt/libiconv/include"
gitstatus_cxxflags="$gitstatus_cxxflags -I/usr/local/opt/libiconv/include"
gitstatus_ldlibs="$gitstatus_ldlibs -liconv"
gitstatus_ldflags="$gitstatus_ldflags -L${workdir}/lib"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=OFF"
;;
msys*|mingw*)
gitstatus_ldflags="$gitstatus_ldflags -static"
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
cygwin*)
gitstatus_ldflags="$gitstatus_ldflags -static"
gitstatus_ldflags="$gitstatus_ldflags ${static_pie:--static}"
libgit2_cmake_flags="$libgit2_cmake_flags -DENABLE_REPRODUCIBLE_BUILDS=ON"
;;
*)
>&2 echo "[internal error] unhandled kernel: $gitstatus_kernel"
@@ -157,7 +290,7 @@ case "$gitstatus_kernel" in
;;
esac
for cmd in cat cmake gcc g++ git ld ln mkdir rm strip tar "$gitstatus_make"; do
for cmd in cat cmake git ld ln mkdir rm strip tar "$gitstatus_make"; do
if ! command -v "$cmd" >/dev/null 2>&1; then
if [ -n "$gitstatus_install_tools" ]; then
>&2 echo "[internal error] $cmd not found"
@@ -191,7 +324,18 @@ if [ ! -e "$libgit2_tarball" ]; then
fi
fi
libgit2_url=https://github.com/romkatv/libgit2/archive/"$libgit2_version".tar.gz
command wget -O "$libgit2_tmp" -- "$libgit2_url"
if ! >"$libgit2_tmp" command wget --no-config -qO- -- "$libgit2_url" &&
! >"$libgit2_tmp" command wget -qO- -- "$libgit2_url"; then
set -x
>&2 command which wget
>&2 command ls -lAd -- "$(command which wget)"
>&2 command ls -lAd -- "$outdir"
>&2 command ls -lA -- "$outdir"
>&2 command ls -lAd -- "$outdir"/deps
>&2 command ls -lA -- "$outdir"/deps
set +x
exit 1
fi
command mv -f -- "$libgit2_tmp" "$libgit2_tarball"
else
>&2 echo "[error] file not found: deps/libgit2-"$libgit2_version".tar.gz"
@@ -237,7 +381,7 @@ command mkdir libgit2/build
cd libgit2/build
CFLAGS="$libgit2_cflags" command cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_TYPE=None \
-DZERO_NSEC=ON \
-DTHREADSAFE=ON \
-DUSE_BUNDLED_ZLIB=ON \
@@ -249,14 +393,14 @@ CFLAGS="$libgit2_cflags" command cmake \
-DUSE_GSSAPI=OFF \
-DUSE_NTLMCLIENT=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_REPRODUCIBLE_BUILDS=OFF \
-G "Unix Makefiles" \
$libgit2_cmake_flags \
..
command make -j "$cpus" VERBOSE=1
APPNAME="$appname".tmp \
OBJDIR="$workdir"/gitstatus \
CXX="$gitstatus_cxx" \
CXX="${CXX:-$gitstatus_cxx}" \
CXXFLAGS="$gitstatus_cxxflags" \
LDFLAGS="$gitstatus_ldflags" \
LDLIBS="$gitstatus_ldlibs" \
@@ -267,15 +411,33 @@ app="$outdir"/usrbin/"$appname"
command strip "$app".tmp
command mkdir -- "$workdir"/repo
command git -C "$workdir"/repo init --
command git -C "$workdir"/repo config user.email "you@example.com"
command git -C "$workdir"/repo commit --allow-empty --allow-empty-message -m ''
printf '[init]\n defaultBranch = master\n' >"$workdir"/.gitconfig
(
cd -- "$workdir"/repo
GIT_CONFIG_NOSYSTEM=1 HOME="$workdir" command git init
GIT_CONFIG_NOSYSTEM=1 HOME="$workdir" command git config user.name "Your Name"
GIT_CONFIG_NOSYSTEM=1 HOME="$workdir" command git config user.email "you@example.com"
GIT_CONFIG_NOSYSTEM=1 HOME="$workdir" command git commit \
--allow-empty --allow-empty-message --no-gpg-sign -m ''
)
resp="$(printf "hello\037$workdir/repo\036" | "$app".tmp)"
[ -n "$resp" -a -z "${resp##hello*1*$workdir/repo*master*}" ]
case "$resp" in
hello*1*/repo*master*);;
*)
>&2 echo 'error: invalid gitstatusd response for a git repo'
exit 1
;;
esac
resp="$(printf 'hello\037\036' | "$app".tmp)"
[ -n "$resp" -a -z "${resp##hello*0*}" ]
case "$resp" in
hello*0*);;
*)
>&2 echo 'error: invalid gitstatusd response for a non-repo'
exit 1
;;
esac
command mv -f -- "$app".tmp "$app"
@@ -383,12 +545,17 @@ fi
if [ -z "$gitstatus_cpu" ]; then
case "$gitstatus_arch" in
armv6l) gitstatus_cpu=armv6;;
armel) gitstatus_cpu=armv5;;
armv6l|armhf) gitstatus_cpu=armv6;;
armv7l) gitstatus_cpu=armv7;;
aarch64) gitstatus_cpu=armv8-a;;
ppc64le) gitstatus_cpu=powerpc64le;;
arm64|aarch64) gitstatus_cpu=armv8-a;;
ppc64|ppc64le) gitstatus_cpu=powerpc64le;;
riscv64) gitstatus_cpu=rv64imafdc;;
loongarch64) gitstatus_cpu=loongarch64;;
x86_64|amd64) gitstatus_cpu=x86-64;;
x86) gitstatus_cpu=i586;;
s390x) gitstatus_cpu=z900;;
e2k) gitstatus_cpu=native;;
i386|i586|i686) gitstatus_cpu="$gitstatus_arch";;
*)
>&2 echo '[error] unable to infer target CPU architecture'
@@ -417,12 +584,13 @@ case "$gitstatus_kernel" in
fi
if [ -z "$docker_image" ]; then
case "$gitstatus_arch" in
x86_64) docker_image=alpine:3.11.6;;
i386|i586|i686) docker_image=i386/alpine:3.11.6;;
armv6l) docker_image=arm32v6/alpine:3.11.6;;
armv7l) docker_image=arm32v7/alpine:3.11.6;;
aarch64) docker_image=arm64v8/alpine:3.11.6;;
ppc64le) docker_image=ppc64le/alpine:3.11.6;;
x86_64) docker_image=alpine:3.11.6;;
x86|i386|i586|i686) docker_image=i386/alpine:3.11.6;;
armv6l|armhf) docker_image=arm32v6/alpine:3.11.6;;
armv7l) docker_image=arm32v7/alpine:3.11.6;;
aarch64) docker_image=arm64v8/alpine:3.11.6;;
ppc64|ppc64le) docker_image=ppc64le/alpine:3.11.6;;
s390x) docker_image=s390x/alpine:3.11.6;;
*)
>&2 echo '[error] unable to infer docker image'
>&2 echo 'Please specify explicitly with `-i IMAGE`.'
@@ -430,12 +598,9 @@ case "$gitstatus_kernel" in
;;
esac
fi
elif [ -n "$gitstatus_install_tools" ]; then
>&2 echo '[error] -s without -d is not supported on linux'
exit 1
fi
;;
freebsd|netbsd|darwin)
freebsd|openbsd|netbsd|darwin|dragonfly)
if [ -n "$docker_cmd" ]; then
>&2 echo "[error] docker (-d) is not supported on $gitstatus_kernel"
exit 1
@@ -486,6 +651,8 @@ fi
if [ -n "$docker_cmd" ]; then
"$docker_cmd" run \
-e docker_cmd="$docker_cmd" \
-e docker_image="$docker_image" \
-e gitstatus_kernel="$gitstatus_kernel" \
-e gitstatus_arch="$gitstatus_arch" \
-e gitstatus_cpu="$gitstatus_cpu" \

View File

@@ -2,8 +2,8 @@
# read by ./Makefile. `gitstatusd --version` reports it back.
#
# This value is also read by shell bindings (indirectly, through
# ./install) when gitstatusd is from ./usrbin.
gitstatus_version="v1.0.0"
# ./install) when using GITSTATUS_DAEMON or usrbin/gitstatusd.
gitstatus_version="v1.5.5"
# libgit2 is a build time dependency of gitstatusd. The values of
# libgit2_version and libgit2_sha256 are read by ./build.
@@ -18,5 +18,5 @@ gitstatus_version="v1.0.0"
#
# If sha256 of ./deps/libgit2-${libgit2_version}.tar.gz doesn't match,
# build gets aborted.
libgit2_version="tag-005f77dca6dbe8788e55139fa1199fc94cc04f9a"
libgit2_sha256="6af7c839640ed5474fef9761a80b5c24bcdd87abc771406e31d5c2bf27f48be5"
libgit2_version="tag-2ecf33948a4df9ef45a66c68b8ef24a5e60eaac6"
libgit2_sha256="4ce11d71ee576dbbc410b9fa33a9642809cc1fa687b315f7c23eeb825b251e93"

View File

@@ -35,12 +35,27 @@
#
# -D Unless this option is specified, report zero staged, unstaged and conflicted
# changes for repositories with bash.showDirtyState = false.
#
# -r INT Close git repositories that haven't been used for this many seconds. This is
# meant to release resources such as memory and file descriptors. The next request
# for a repo that's been closed is much slower than for a repo that hasn't been.
# Negative value means infinity. The default is 3600 (one hour).
function gitstatus_start() {
if [[ "$BASH_VERSION" < 4 ]]; then
>&2 printf 'gitstatus_start: need bash version >= 4.0, found %s\n' "$BASH_VERSION"
>&2 printf '\n'
>&2 printf 'To see the version of the current shell, type:\n'
>&2 printf '\n'
>&2 printf ' \033[32mecho\033[0m \033[33m"$BASH_VERSION"\033[0m\n'
>&2 printf '\n'
>&2 printf 'The output of `\033[32mbash\033[0m --version` may be different and is not relevant.\n'
return 1
fi
unset OPTIND
local opt timeout=5 max_dirty=-1 extra_flags
local opt timeout=5 max_dirty=-1 ttl=3600 extra_flags=
local max_num_staged=1 max_num_unstaged=1 max_num_conflicted=1 max_num_untracked=1
local ignore_status_show_untracked_files
while getopts "t:s:u:c:d:m:eUWD" opt; do
while getopts "t:s:u:c:d:m:r:eUWD" opt; do
case "$opt" in
t) timeout=$OPTARG;;
s) max_num_staged=$OPTARG;;
@@ -48,6 +63,7 @@ function gitstatus_start() {
c) max_num_conflicted=$OPTARG;;
d) max_num_untracked=$OPTARG;;
m) max_dirty=$OPTARG;;
r) ttl=$OPTARG;;
e) extra_flags+='--recurse-untracked-dirs ';;
U) extra_flags+='--ignore-status-show-untracked-files ';;
W) extra_flags+='--ignore-bash-show-untracked-files ';;
@@ -69,14 +85,14 @@ function gitstatus_start() {
local gitstatus_plugin_dir="$PWD"
fi
local tmpdir req_fifo resp_fifo
local tmpdir req_fifo resp_fifo culprit
function gitstatus_start_impl() {
local log_level="${GITSTATUS_LOG_LEVEL:-}"
[[ -n "$log_level" || "${GITSTATUS_ENABLE_LOGGING:-0}" != 1 ]] || log_level=INFO
local uname_sm
uname_sm="$(uname -sm)" || return
uname_sm="$(command uname -sm)" || return
uname_sm="${uname_sm,,}"
local uname_s="${uname_sm% *}"
local uname_m="${uname_sm#* }"
@@ -86,8 +102,8 @@ function gitstatus_start() {
else
local cpus
if ! command -v sysctl &>/dev/null || [[ "$uname_s" == linux ]] ||
! cpus="$(sysctl -n hw.ncpu)"; then
if ! command -v getconf &>/dev/null || ! cpus="$(getconf _NPROCESSORS_ONLN)"; then
! cpus="$(command sysctl -n hw.ncpu)"; then
if ! command -v getconf &>/dev/null || ! cpus="$(command getconf _NPROCESSORS_ONLN)"; then
cpus=8
fi
fi
@@ -102,9 +118,15 @@ function gitstatus_start() {
--max-num-conflicted="$max_num_conflicted"
--max-num-untracked="$max_num_untracked"
--dirty-max-index-size="$max_dirty"
--repo-ttl-seconds="$ttl"
$extra_flags)
tmpdir="$(mktemp -d "${TMPDIR:-/tmp}"/gitstatus.bash.$$.XXXXXXXXXX)" || return
if [[ -n "$TMPDIR" && ( ( -d "$TMPDIR" && -w "$TMPDIR" ) || ! ( -d /tmp && -w /tmp ) ) ]]; then
local tmpdir=$TMPDIR
else
local tmpdir=/tmp
fi
tmpdir="$(command mktemp -d "$tmpdir"/gitstatus.bash.$$.XXXXXXXXXX)" || return
if [[ -n "$log_level" ]]; then
GITSTATUS_DAEMON_LOG="$tmpdir"/daemon.log
@@ -115,7 +137,7 @@ function gitstatus_start() {
req_fifo="$tmpdir"/req.fifo
resp_fifo="$tmpdir"/resp.fifo
mkfifo -- "$req_fifo" "$resp_fifo" || return
command mkfifo -- "$req_fifo" "$resp_fifo" || return
{
(
@@ -125,7 +147,7 @@ function gitstatus_start() {
(
local fd_in fd_out
exec {fd_in}<"$req_fifo" {fd_out}>"$resp_fifo" || exit
exec {fd_in}<"$req_fifo" {fd_out}>>"$resp_fifo" || exit
echo "$BASHPID" >&"$fd_out"
local _gitstatus_bash_daemon _gitstatus_bash_version _gitstatus_bash_downloaded
@@ -137,7 +159,7 @@ function gitstatus_start() {
}
set -- -d "$gitstatus_plugin_dir" -s "$uname_s" -m "$uname_m" \
-p "printf '.\036' >&$fd_out" -- _gitstatus_set_daemon
-p "printf '.\036' >&$fd_out" -e "$fd_out" -- _gitstatus_set_daemon
[[ "${GITSTATUS_AUTO_INSTALL:-1}" -ne 0 ]] || set -- -n "$@"
source "$gitstatus_plugin_dir"/install || return
[[ -n "$_gitstatus_bash_daemon" ]] || return
@@ -146,8 +168,18 @@ function gitstatus_start() {
local sig=(TERM ILL PIPE)
if (( UID == EUID )); then
local home=~
else
local user
user="$(command id -un)" || return
[[ "$user" =~ ^[a-zA-Z0-9_,.-]+$ ]] || return
eval "local home=~$user"
[[ -n "$home" ]] || return
fi
if [[ -x "$_gitstatus_bash_daemon" ]]; then
"$_gitstatus_bash_daemon" \
HOME="$home" "$_gitstatus_bash_daemon" \
-G "$_gitstatus_bash_version" "${daemon_args[@]}" <&"$fd_in" >&"$fd_out" &
local pid=$!
trap "trap - ${sig[*]}; kill $pid &>/dev/null" ${sig[@]}
@@ -155,8 +187,8 @@ function gitstatus_start() {
local ret=$?
trap - ${sig[@]}
case "$ret" in
0|129|130|131|137|141|143)
echo -nE $'bye\x1f0\x1e' >&"$fd_out"
0|129|130|131|137|141|143|159)
echo -nE $'}bye\x1f0\x1e' >&"$fd_out"
exit "$ret"
;;
esac
@@ -164,6 +196,9 @@ function gitstatus_start() {
(( ! _gitstatus_bash_downloaded )) || return
[[ "${GITSTATUS_AUTO_INSTALL:-1}" -ne 0 ]] || return
[[ "$_gitstatus_bash_daemon" == \
"${GITSTATUS_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/gitstatus}"/* ]] || return
set -- -f "$@"
_gitstatus_bash_daemon=
_gitstatus_bash_version=
@@ -173,31 +208,34 @@ function gitstatus_start() {
[[ -n "$_gitstatus_bash_version" ]] || return
[[ "$_gitstatus_bash_downloaded" == 1 ]] || return
"$_gitstatus_bash_daemon" \
HOME="$home" "$_gitstatus_bash_daemon" \
-G "$_gitstatus_bash_version" "${daemon_args[@]}" <&"$fd_in" >&"$fd_out" &
local pid=$!
trap "trap - ${sig[*]}; kill $pid &>/dev/null" ${sig[@]}
wait "$pid"
trap - ${sig[@]}
echo -nE $'bye\x1f0\x1e' >&"$fd_out"
echo -nE $'}bye\x1f0\x1e' >&"$fd_out"
) & disown
) & disown
} 0</dev/null &>"$GITSTATUS_DAEMON_LOG"
exec {_GITSTATUS_REQ_FD}>"$req_fifo" {_GITSTATUS_RESP_FD}<"$resp_fifo" || return
command rm -f -- "$req_fifo" "$resp_fifo" || return
exec {_GITSTATUS_REQ_FD}>>"$req_fifo" {_GITSTATUS_RESP_FD}<"$resp_fifo" || return
command rm -f -- "$req_fifo" "$resp_fifo" || return
[[ "$GITSTATUS_DAEMON_LOG" != /dev/null ]] || command rmdir -- "$tmpdir" 2>/dev/null
IFS='' read -r -u $_GITSTATUS_RESP_FD GITSTATUS_DAEMON_PID || return
[[ "$GITSTATUS_DAEMON_PID" == [1-9]* ]] || return
local reply
echo -nE $'hello\x1f\x1e' >&$_GITSTATUS_REQ_FD || return
echo -nE $'}hello\x1f\x1e' >&$_GITSTATUS_REQ_FD || return
local dl=
while true; do
IFS='' read -rd $'\x1e' -u $_GITSTATUS_RESP_FD -t "$timeout" reply || return
[[ "$reply" == $'hello\x1f0' ]] && break
[[ "$reply" == . ]] || return
reply=
if ! IFS='' read -rd $'\x1e' -u $_GITSTATUS_RESP_FD -t "$timeout" reply; then
culprit="$reply"
return 1
fi
[[ "$reply" == $'}hello\x1f0' ]] && break
if [[ -z "$dl" ]]; then
dl=1
if [[ -t 2 ]]; then
@@ -225,7 +263,11 @@ function gitstatus_start() {
}
if ! gitstatus_start_impl; then
echo "gitstatus_start: failed to start gitstatusd" >&2
>&2 printf '\n'
>&2 printf '[\033[31mERROR\033[0m]: gitstatus failed to initialize.\n'
if [[ -n "${culprit-}" ]]; then
>&2 printf '\n%s\n' "$culprit"
fi
[[ -z "${req_fifo:-}" ]] || command rm -f "$req_fifo"
[[ -z "${resp_fifo:-}" ]] || command rm -f "$resp_fifo"
unset -f gitstatus_start_impl
@@ -233,54 +275,22 @@ function gitstatus_start() {
return 1
fi
export _GITSTATUS_CLIENT_PID _GITSTATUS_REQ_FD _GITSTATUS_RESP_FD GITSTATUS_DAEMON_PID
unset -f gitstatus_start_impl
if [[ "${GITSTATUS_STOP_ON_EXEC:-1}" == 1 ]]; then
type -t _gitstatus_exec &>/dev/null || function _gitstatus_exec() { exec "$@"; }
type -t _gitstatus_builtin &>/dev/null || function _gitstatus_builtin() { builtin "$@"; }
function _gitstatus_exec_wrapper() {
(( ! $# )) || gitstatus_stop
local ret=0
_gitstatus_exec "$@" || ret=$?
[[ -n "${GITSTATUS_DAEMON_PID:-}" ]] || gitstatus_start || true
return $ret
}
function _gitstatus_builtin_wrapper() {
while [[ "${1:-}" == builtin ]]; do shift; done
if [[ "${1:-}" == exec ]]; then
_gitstatus_exec_wrapper "${@:2}"
else
_gitstatus_builtin "$@"
fi
}
alias exec=_gitstatus_exec_wrapper
alias builtin=_gitstatus_builtin_wrapper
_GITSTATUS_EXEC_HOOK=1
else
unset _GITSTATUS_EXEC_HOOK
fi
}
# Stops gitstatusd if it's running.
function gitstatus_stop() {
[[ "${_GITSTATUS_CLIENT_PID:-$BASHPID}" == "$BASHPID" ]] || return 0
[[ -z "${_GITSTATUS_REQ_FD:-}" ]] || exec {_GITSTATUS_REQ_FD}>&- || true
[[ -z "${_GITSTATUS_RESP_FD:-}" ]] || exec {_GITSTATUS_RESP_FD}>&- || true
[[ -z "${GITSTATUS_DAEMON_PID:-}" ]] || kill "$GITSTATUS_DAEMON_PID" &>/dev/null || true
if [[ -n "${_GITSTATUS_EXEC_HOOK:-}" ]]; then
unalias exec builtin &>/dev/null || true
function _gitstatus_exec_wrapper() { _gitstatus_exec "$@"; }
function _gitstatus_builtin_wrapper() { _gitstatus_builtin "$@"; }
if [[ "${_GITSTATUS_CLIENT_PID:-$BASHPID}" == "$BASHPID" ]]; then
[[ -z "${_GITSTATUS_REQ_FD:-}" ]] || exec {_GITSTATUS_REQ_FD}>&- || true
[[ -z "${_GITSTATUS_RESP_FD:-}" ]] || exec {_GITSTATUS_RESP_FD}>&- || true
[[ -z "${GITSTATUS_DAEMON_PID:-}" ]] || kill "$GITSTATUS_DAEMON_PID" &>/dev/null || true
fi
unset _GITSTATUS_REQ_FD _GITSTATUS_RESP_FD GITSTATUS_DAEMON_PID _GITSTATUS_EXEC_HOOK
unset _GITSTATUS_REQ_FD _GITSTATUS_RESP_FD GITSTATUS_DAEMON_PID
unset _GITSTATUS_DIRTY_MAX_INDEX_SIZE _GITSTATUS_CLIENT_PID
}
# Retrives status of a git repository from a directory under its working tree.
# Retrieves status of a git repository from a directory under its working tree.
#
# Usage: gitstatus_query [OPTION]...
#
@@ -301,6 +311,8 @@ function gitstatus_stop() {
# VCS_STATUS_WORKDIR Git repo working directory. Not empty.
# VCS_STATUS_COMMIT Commit hash that HEAD is pointing to. Either 40 hex digits or
# empty if there is no HEAD (empty repo).
# VCS_STATUS_COMMIT_ENCODING Encoding of the HEAD's commit message. Empty value means UTF-8.
# VCS_STATUS_COMMIT_SUMMARY The first paragraph of the HEAD's commit message as one line.
# VCS_STATUS_LOCAL_BRANCH Local branch name or empty if not on a branch.
# VCS_STATUS_REMOTE_NAME The remote name, e.g. "upstream" or "origin".
# VCS_STATUS_REMOTE_BRANCH Upstream branch name. Can be empty.
@@ -348,7 +360,7 @@ function gitstatus_stop() {
# shell or the call had failed.
function gitstatus_query() {
unset OPTIND
local opt dir timeout=() no_diff=0
local opt dir= timeout=() no_diff=0
while getopts "d:c:t:p" opt "$@"; do
case "$opt" in
d) dir=$OPTARG;;
@@ -359,7 +371,7 @@ function gitstatus_query() {
done
(( OPTIND == $# + 1 )) || { echo "usage: gitstatus_query [OPTION]..." >&2; return 1; }
[[ -n "$GITSTATUS_DAEMON_PID" ]] || return # not started
[[ -n "${GITSTATUS_DAEMON_PID-}" ]] || return # not started
local req_id="$RANDOM.$RANDOM.$RANDOM.$RANDOM"
if [[ -z "${GIT_DIR:-}" ]]; then
@@ -404,6 +416,8 @@ function gitstatus_query() {
VCS_STATUS_PUSH_COMMITS_BEHIND="${resp[24]:-0}"
VCS_STATUS_NUM_SKIP_WORKTREE="${resp[25]:-0}"
VCS_STATUS_NUM_ASSUME_UNCHANGED="${resp[26]:-0}"
VCS_STATUS_COMMIT_ENCODING="${resp[27]-}"
VCS_STATUS_COMMIT_SUMMARY="${resp[28]-}"
VCS_STATUS_HAS_STAGED=$((VCS_STATUS_NUM_STAGED > 0))
if (( _GITSTATUS_DIRTY_MAX_INDEX_SIZE >= 0 &&
VCS_STATUS_INDEX_SIZE > _GITSTATUS_DIRTY_MAX_INDEX_SIZE_ )); then
@@ -446,6 +460,8 @@ function gitstatus_query() {
unset VCS_STATUS_PUSH_COMMITS_BEHIND
unset VCS_STATUS_NUM_SKIP_WORKTREE
unset VCS_STATUS_NUM_ASSUME_UNCHANGED
unset VCS_STATUS_COMMIT_ENCODING
unset VCS_STATUS_COMMIT_SUMMARY
fi
}

View File

@@ -15,6 +15,8 @@
# VCS_STATUS_COMMIT=c000eddcff0fb38df2d0137efe24d9d2d900f209
# VCS_STATUS_COMMITS_AHEAD=0
# VCS_STATUS_COMMITS_BEHIND=0
# VCS_STATUS_COMMIT_ENCODING=''
# VCS_STATUS_COMMIT_SUMMARY='pull upstream changes from gitstatus'
# VCS_STATUS_HAS_CONFLICTED=0
# VCS_STATUS_HAS_STAGED=0
# VCS_STATUS_HAS_UNSTAGED=1
@@ -57,7 +59,7 @@ zmodload -F zsh/files b:zf_rm || return
typeset -g _gitstatus_plugin_dir"${1:-}"="${${(%):-%x}:A:h}"
# Retrives status of a git repo from a directory under its working tree.
# Retrieves status of a git repo from a directory under its working tree.
#
## Usage: gitstatus_query [OPTION]... NAME
#
@@ -88,6 +90,8 @@ typeset -g _gitstatus_plugin_dir"${1:-}"="${${(%):-%x}:A:h}"
# VCS_STATUS_WORKDIR Git repo working directory. Not empty.
# VCS_STATUS_COMMIT Commit hash that HEAD is pointing to. Either 40 hex digits or
# empty if there is no HEAD (empty repo).
# VCS_STATUS_COMMIT_ENCODING Encoding of the HEAD's commit message. Empty value means UTF-8.
# VCS_STATUS_COMMIT_SUMMARY The first paragraph of the HEAD's commit message as one line.
# VCS_STATUS_LOCAL_BRANCH Local branch name or empty if not on a branch.
# VCS_STATUS_REMOTE_NAME The remote name, e.g. "upstream" or "origin".
# VCS_STATUS_REMOTE_BRANCH Upstream branch name. Can be empty.
@@ -168,22 +172,40 @@ function gitstatus_query"${1:-}"() {
done
if (( OPTIND != ARGC )); then
print -ru2 -- "gitstatus_start: exactly one positional argument is required"
print -ru2 -- "gitstatus_query: exactly one positional argument is required"
return 1
fi
local name=$*[OPTIND]
if [[ $name != [[:IDENT:]]## ]]; then
print -ru2 -- "gitstatus_start: invalid positional argument: $name"
print -ru2 -- "gitstatus_query: invalid positional argument: $name"
return 1
fi
(( _GITSTATUS_STATE_$name == 2 )) || return
if [[ -z $GIT_DIR ]]; then
[[ $dir == /* ]] || dir=${(%):-%/}/$dir
if [[ $dir != /* ]]; then
if [[ $PWD == /* && $PWD -ef . ]]; then
dir=$PWD/$dir
else
dir=${dir:a}
fi
fi
else
[[ $GIT_DIR == /* ]] && dir=:$GIT_DIR || dir=:${(%):-%/}/$GIT_DIR
if [[ $GIT_DIR == /* ]]; then
dir=:$GIT_DIR
elif [[ $PWD == /* && $PWD -ef . ]]; then
dir=:$PWD/$GIT_DIR
else
dir=:${GIT_DIR:a}
fi
fi
if [[ $dir != (|:)/* ]]; then
typeset -g VCS_STATUS_RESULT=norepo-sync
_gitstatus_clear$fsuf
return 0
fi
local -i req_fd=${(P)${:-_GITSTATUS_REQ_FD_$name}}
@@ -323,7 +345,9 @@ function _gitstatus_process_response"${1:-}"() {
VCS_STATUS_PUSH_COMMITS_AHEAD \
VCS_STATUS_PUSH_COMMITS_BEHIND \
VCS_STATUS_NUM_SKIP_WORKTREE \
VCS_STATUS_NUM_ASSUME_UNCHANGED in "${(@)resp[3,27]}"; do
VCS_STATUS_NUM_ASSUME_UNCHANGED \
VCS_STATUS_COMMIT_ENCODING \
VCS_STATUS_COMMIT_SUMMARY in "${(@)resp[3,29]}"; do
done
typeset -gi VCS_STATUS_{INDEX_SIZE,NUM_STAGED,NUM_UNSTAGED,NUM_CONFLICTED,NUM_UNTRACKED,COMMITS_AHEAD,COMMITS_BEHIND,STASHES,NUM_UNSTAGED_DELETED,NUM_STAGED_NEW,NUM_STAGED_DELETED,PUSH_COMMITS_AHEAD,PUSH_COMMITS_BEHIND,NUM_SKIP_WORKTREE,NUM_ASSUME_UNCHANGED}
typeset -gi VCS_STATUS_HAS_STAGED=$((VCS_STATUS_NUM_STAGED > 0))
@@ -365,8 +389,8 @@ function _gitstatus_daemon"${1:-}"() {
trap '' PIPE
local uname_sm
uname_sm="${(L)$(uname -sm)}" || return
[[ $uname_sm == [^' ']##' '[^' ']## ]] || return
uname_sm="${${(L)$(command uname -sm)}//ı/i}" || return
[[ $uname_sm == [^' ']##' '[^' ']## ]] || return
local uname_s=${uname_sm% *}
local uname_m=${uname_sm#* }
@@ -375,15 +399,15 @@ function _gitstatus_daemon"${1:-}"() {
else
local cpus
if (( ! $+commands[sysctl] )) || [[ $uname_s == linux ]] ||
! cpus="$(sysctl -n hw.ncpu)"; then
if (( ! $+commands[getconf] )) || ! cpus="$(getconf _NPROCESSORS_ONLN)"; then
! cpus="$(command sysctl -n hw.ncpu)"; then
if (( ! $+commands[getconf] )) || ! cpus="$(command getconf _NPROCESSORS_ONLN)"; then
cpus=8
fi
fi
args+=(-t $((cpus > 16 ? 32 : cpus > 0 ? 2 * cpus : 16)))
fi
mkfifo -- $file_prefix.fifo || return
command mkfifo -- $file_prefix.fifo || return
print -rnu $pipe_fd -- ${(l:20:)pgid} || return
exec <$file_prefix.fifo || return
zf_rm -- $file_prefix.fifo || return
@@ -398,47 +422,63 @@ function _gitstatus_daemon"${1:-}"() {
local gitstatus_plugin_dir_var=_gitstatus_plugin_dir$fsuf
local gitstatus_plugin_dir=${(P)gitstatus_plugin_dir_var}
set -- -d $gitstatus_plugin_dir -s $uname_s -m $uname_m -p "printf . >&$pipe_fd" -- \
_gitstatus_set_daemon$fsuf
[[ ${GITSTATUS_AUTO_INSTALL:-1} == (|-|+)<1-> ]] || set -- -n "$@"
source $gitstatus_plugin_dir/install || return
[[ -n $_gitstatus_zsh_daemon ]] || return
[[ -n $_gitstatus_zsh_version ]] || return
[[ $_gitstatus_zsh_downloaded == [01] ]] || return
builtin set -- -d $gitstatus_plugin_dir -s $uname_s -m $uname_m \
-p "printf '\\001' >&$pipe_fd" -e $pipe_fd -- _gitstatus_set_daemon$fsuf
[[ ${GITSTATUS_AUTO_INSTALL:-1} == (|-|+)<1-> ]] || builtin set -- -n "$@"
builtin source $gitstatus_plugin_dir/install || return
[[ -n $_gitstatus_zsh_daemon ]] || return
[[ -n $_gitstatus_zsh_version ]] || return
[[ $_gitstatus_zsh_downloaded == [01] ]] || return
if (( UID == EUID )); then
local home=~
else
local user
user="$(command id -un)" || return
local home=${userdirs[$user]}
[[ -n $home ]] || return
fi
if [[ -x $_gitstatus_zsh_daemon ]]; then
$_gitstatus_zsh_daemon -G $_gitstatus_zsh_version "${(@)args}" >&$pipe_fd
HOME=$home $_gitstatus_zsh_daemon -G $_gitstatus_zsh_version "${(@)args}" >&$pipe_fd
local -i ret=$?
[[ $ret == (0|129|130|131|137|141|143) ]] && return ret
[[ $ret == (0|129|130|131|137|141|143|159) ]] && return ret
fi
(( ! _gitstatus_zsh_downloaded )) || return
[[ ${GITSTATUS_AUTO_INSTALL:-1} == (|-|+)<1-> ]] || return
set -- -f "$@"
[[ $_gitstatus_zsh_daemon == \
${GITSTATUS_CACHE_DIR:-${XDG_CACHE_HOME:-$HOME/.cache}/gitstatus}/* ]] || return
builtin set -- -f "$@"
_gitstatus_zsh_daemon=
_gitstatus_zsh_version=
_gitstatus_zsh_downloaded=
source $gitstatus_plugin_dir/install || return
[[ -n $_gitstatus_zsh_daemon ]] || return
[[ -n $_gitstatus_zsh_version ]] || return
[[ $_gitstatus_zsh_downloaded == 1 ]] || return
builtin source $gitstatus_plugin_dir/install || return
[[ -n $_gitstatus_zsh_daemon ]] || return
[[ -n $_gitstatus_zsh_version ]] || return
[[ $_gitstatus_zsh_downloaded == 1 ]] || return
$_gitstatus_zsh_daemon -G $_gitstatus_zsh_version "${(@)args}" >&$pipe_fd
HOME=$home $_gitstatus_zsh_daemon -G $_gitstatus_zsh_version "${(@)args}" >&$pipe_fd
} always {
local -i ret=$?
zf_rm -f -- $file_prefix.lock $file_prefix.fifo
kill -- -$pgid
}
} &!
} &
pid_gitstatus=$!
(( lock_fd == -1 )) && return
{
if zsystem flock -- $file_prefix.lock && [[ -e $file_prefix.lock ]]; then
if zsystem flock -- $file_prefix.lock && command sleep 5 && [[ -e $file_prefix.lock ]]; then
zf_rm -f -- $file_prefix.lock $file_prefix.fifo
kill -- -$pgid
fi
} &!
} &
wait $pid_gitstatus
}
# Starts gitstatusd in the background. Does nothing and succeeds if gitstatusd is already running.
@@ -504,7 +544,7 @@ function gitstatus_start"${1:-}"() {
args+=(-$opt $OPTARG)
[[ $opt == m ]] && dirty_max_index_size=OPTARG
;;
e|U|W|D) args+=$opt;;
e|U|W|D) args+=-$opt;;
+(e|U|W|D)) args=(${(@)args:#-$opt});;
\?) print -ru2 -- "gitstatus_start: invalid option: $OPTARG" ; return 1;;
:) print -ru2 -- "gitstatus_start: missing required argument: $OPTARG"; return 1;;
@@ -524,7 +564,7 @@ function gitstatus_start"${1:-}"() {
fi
local -i lock_fd resp_fd stderr_fd
local file_prefix xtrace=/dev/null daemon_log=/dev/null
local file_prefix xtrace=/dev/null daemon_log=/dev/null culprit
{
if (( _GITSTATUS_STATE_$name )); then
@@ -538,7 +578,12 @@ function gitstatus_start"${1:-}"() {
else
typeset -gi _GITSTATUS_START_COUNTER
local log_level=$GITSTATUS_LOG_LEVEL
local file_prefix=${${TMPDIR:-/tmp}:A}/gitstatus.$name.$EUID
if [[ -n "$TMPDIR" && ( ( -d "$TMPDIR" && -w "$TMPDIR" ) || ! ( -d /tmp && -w /tmp ) ) ]]; then
local tmpdir=$TMPDIR
else
local tmpdir=/tmp
fi
local file_prefix=${tmpdir:A}/gitstatus.$name.$EUID
file_prefix+=.$sysparams[pid].$EPOCHSECONDS.$((++_GITSTATUS_START_COUNTER))
(( GITSTATUS_ENABLE_LOGGING )) && : ${log_level:=INFO}
if [[ -n $log_level ]]; then
@@ -573,7 +618,7 @@ function gitstatus_start"${1:-}"() {
typeset -gi _GITSTATUS_LOCK_FD_$name=lock_fd
if [[ -n $USERPROFILE && -d /cygdrive && -d /proc/self/fd ]]; then
if [[ $OSTYPE == cygwin* && -d /proc/self/fd ]]; then
# Work around bugs in Cygwin 32-bit.
#
# This hangs:
@@ -619,8 +664,8 @@ function gitstatus_start"${1:-}"() {
[[ $req_fd == <1-> ]] || return
typeset -gi _GITSTATUS_REQ_FD_$name=req_fd
print -nru $req_fd -- $'hello\x1f\x1e' || return
local expected=$'hello\x1f0\x1e' actual
print -nru $req_fd -- $'}hello\x1f\x1e' || return
local expected=$'}hello\x1f0\x1e' actual
if (( $+functions[p10k] )) && [[ ! -t 1 && ! -t 0 ]]; then
local -F deadline='EPOCHREALTIME + 4'
else
@@ -629,8 +674,15 @@ function gitstatus_start"${1:-}"() {
while true; do
[[ -t $resp_fd ]]
sysread -s 1 -t $timeout -i $resp_fd actual || return
[[ $actual == h ]] && break
[[ $actual == . ]] || return
[[ $expected == $actual* ]] && break
if [[ $actual != $'\1' ]]; then
[[ -t $resp_fd ]]
while sysread -t $timeout -i $resp_fd 'actual[$#actual+1]'; do
[[ -t $resp_fd ]]
done
culprit=$actual
return 1
fi
(( EPOCHREALTIME < deadline )) && continue
if (( deadline > 0 )); then
deadline=0
@@ -725,60 +777,49 @@ function gitstatus_start"${1:-}"() {
gitstatus_stop$fsuf $name
setopt prompt_percent no_prompt_subst no_prompt_bang
(( $+functions[p10k] )) && p10k clear-instant-prompt
print -ru2 -- ''
print -Pru2 -- '[%F{red}ERROR%f]: gitstatus failed to initialize.'
print -ru2 -- ''
print -ru2 -- ' Your Git prompt may disappear or become slow.'
print -Pru2 -- '[%F{red}ERROR%f]: gitstatus failed to initialize.'
print -ru2 -- ''
if [[ -n $culprit ]]; then
print -ru2 -- $culprit
return err
fi
if [[ -s $xtrace ]]; then
print -ru2 -- ''
print -ru2 -- " The content of ${(q-)xtrace} (gitstatus_start xtrace):"
print -Pru2 -- '%F{yellow}'
>&2 awk '{print " " $0}' <$xtrace
print -Pru2 -- "%F{red} ^ this command failed ($err)%f"
print -ru2 -- ''
print -Pru2 -- " Zsh log (%U${xtrace//\%/%%}%u):"
print -Pru2 -- '%F{yellow}'
print -lru2 -- "${(@)${(@f)$(<$xtrace)}/#/ }"
print -Pnru2 -- '%f'
fi
if [[ -s $daemon_log ]]; then
print -ru2 -- ''
print -ru2 -- " The content of ${(q-)daemon_log} (gitstatus daemon log):"
print -Pru2 -- " Daemon log (%U${daemon_log//\%/%%}%u):"
print -Pru2 -- '%F{yellow}'
>&2 awk '{print " " $0}' <$daemon_log
print -lru2 -- "${(@)${(@f)$(<$daemon_log)}/#/ }"
print -Pnru2 -- '%f'
fi
if [[ $GITSTATUS_LOG_LEVEL == DEBUG ]]; then
print -ru2 -- ''
print -ru2 -- ' Your system information:'
print -ru2 -- ' System information:'
print -Pru2 -- '%F{yellow}'
print -ru2 -- " zsh: $ZSH_VERSION"
print -ru2 -- " uname -a: $(uname -a)"
print -ru2 -- " uname -a: $(command uname -a)"
print -Pru2 -- '%f'
print -ru2 -- ' If you need help, open an issue and attach this whole error message to it:'
print -ru2 -- ''
print -Pru2 -- ' %F{green}https://github.com/romkatv/gitstatus/issues/new%f'
print -Pru2 -- ' %Uhttps://github.com/romkatv/gitstatus/issues/new%u'
else
print -ru2 -- ''
print -ru2 -- ' Run the following command to retry with extra diagnostics:'
print -Pru2 -- '%F{green}'
local env="GITSTATUS_LOG_LEVEL=DEBUG"
if [[ -n $GITSTATUS_NUM_THREADS ]]; then
env+=" GITSTATUS_NUM_THREADS=${(q)GITSTATUS_NUM_THREADS}"
fi
if [[ -n $GITSTATUS_DAEMON ]]; then
env+=" GITSTATUS_DAEMON=${(q)GITSTATUS_DAEMON}"
fi
if [[ -n $GITSTATUS_AUTO_INSTALL ]]; then
env+=" GITSTATUS_AUTO_INSTALL=${(q)GITSTATUS_AUTO_INSTALL}"
fi
if [[ -n $GITSTATUS_CACHE_DIR ]]; then
env+=" GITSTATUS_CACHE_DIR=${(q)GITSTATUS_CACHE_DIR}"
fi
print -nru2 -- " ${env} gitstatus_start ${(@q-)*}"
print -Pru2 -- '%f'
local home=~
local zshrc=${${${(q)${ZDOTDIR:-~}}/#${(q)home}/'~'}//\%/%%}/.zshrc
print -Pru2 -- " Add the following parameter to %U$zshrc%u for extra diagnostics on error:"
print -ru2 -- ''
local zshrc=${(D)ZDOTDIR:-~}/.zshrc
print -ru2 -- " If this command produces no output, add the following parameter to $zshrc:"
print -Pru2 -- ' %BGITSTATUS_LOG_LEVEL=DEBUG%b'
print -ru2 -- ''
print -Pru2 -- '%F{green} GITSTATUS_LOG_LEVEL=DEBUG%f'
print -ru2 -- ' Restart Zsh to retry gitstatus initialization:'
print -ru2 -- ''
print -ru2 -- ' With this parameter gitstatus will print additional information on error.'
print -Pru2 -- ' %F{green}%Uexec%u zsh%f'
fi
}
}

View File

@@ -2,7 +2,7 @@
# Source gitstatus.plugin.sh from $GITSTATUS_DIR or from the same directory
# in which the current script resides if the variable isn't set.
if [[ -n "${GITSTATUS_DIR:-}" ]]; then
if [[ -n "${GITSTATUS_DIR-}" ]]; then
source "$GITSTATUS_DIR" || return
elif [[ "${BASH_SOURCE[0]}" == */* ]]; then
source "${BASH_SOURCE[0]%/*}/gitstatus.plugin.sh" || return
@@ -33,11 +33,11 @@ function gitstatus_prompt_update() {
gitstatus_query "$@" || return 1 # error
[[ "$VCS_STATUS_RESULT" == ok-sync ]] || return 0 # not a git repo
local reset=$'\e[0m' # no color
local clean=$'\e[38;5;076m' # green foreground
local untracked=$'\e[38;5;014m' # teal foreground
local modified=$'\e[38;5;011m' # yellow foreground
local conflicted=$'\e[38;5;196m' # red foreground
local reset=$'\001\e[0m\002' # no color
local clean=$'\001\e[38;5;076m\002' # green foreground
local untracked=$'\001\e[38;5;014m\002' # teal foreground
local modified=$'\001\e[38;5;011m\002' # yellow foreground
local conflicted=$'\001\e[38;5;196m\002' # red foreground
local p
@@ -85,7 +85,15 @@ function gitstatus_prompt_update() {
gitstatus_stop && gitstatus_start -s -1 -u -1 -c -1 -d -1
# On every prompt, fetch git status and set GITSTATUS_PROMPT.
PROMPT_COMMAND=gitstatus_prompt_update
if [[ -z "${PROMPT_COMMAND[*]}" ]]; then
PROMPT_COMMAND=gitstatus_prompt_update
elif [[ ! "${PROMPT_COMMAND[*]}" =~ [[:space:]\;]?gitstatus_prompt_update[[:space:]\;]? ]]; then
# Note: If PROMPT_COMMAND is an array, this will modify its first element.
PROMPT_COMMAND=$'gitstatus_prompt_update\n'"$PROMPT_COMMAND"
fi
# Retain 3 trailing components of the current directory.
PROMPT_DIRTRIM=3
# Enable promptvars so that ${GITSTATUS_PROMPT} in PS1 is expanded.
shopt -s promptvars
@@ -94,7 +102,7 @@ shopt -s promptvars
#
# Example:
#
# user@host ~/projects/skynet master+!
# user@host ~/projects/skynet master ⇡42
# $ █
PS1='\[\033[01;32m\]\u@\h\[\033[00m\] ' # green user@host
PS1+='\[\033[01;34m\]\w\[\033[00m\]' # blue current working directory

View File

@@ -2,6 +2,12 @@
#
# This script does not have a stable API.
_gitstatus_install_daemon_found() {
local installed="$1"
shift
[ $# = 0 ] || "$@" "$daemon" "$version" "$installed"
}
_gitstatus_install_main() {
if [ -n "${ZSH_VERSION:-}" ]; then
emulate -L sh -o no_unset
@@ -9,17 +15,17 @@ _gitstatus_install_main() {
set -u
fi
local argv1=$1
local argv1="$1"
shift
local no_check= no_install= uname_s= uname_m= gitstatus_dir= dl_status=
local no_check= no_install= uname_s= uname_m= gitstatus_dir= dl_status= e=
local opt= OPTARG= OPTIND=1
while getopts ':s:m:d:p:fnh' opt "$@"; do
while getopts ':s:m:d:p:e:fnh' opt "$@"; do
case "$opt" in
h)
command cat <<\END
Usage: install [-s KERNEL] [-m ARCH] [-d DIR] [-p CMD] [-f|-n] [-- CMD [ARG]...]
Usage: install [-s KERNEL] [-m ARCH] [-d DIR] [-p CMD] [-e ERRFD] [-f|-n] [-- CMD [ARG]...]
If positional arguments are specified, call this on success:
@@ -36,6 +42,7 @@ Options:
-m ARCH use this instead of lowercase `uname -m`
-d DIR use this instead of `dirname "$0"`
-p CMD eval this every second while downloading gitstatusd
-e ERRFD write error messages to this file descriptor
-f download gitstatusd even if there is one locally
-n do not download gitstatusd (fail instead)
END
@@ -77,6 +84,17 @@ END
fi
dl_status="$OPTARG"
;;
e)
if [ -n "$e" ]; then
>&2 echo "[gitstatus] error: duplicate option: -$opt"
return 1
fi
if [ -z "$OPTARG" ]; then
>&2 echo "[error] incorrect value of -$opt: $OPTARG"
return 1
fi
e="$OPTARG"
;;
m)
if [ -n "$uname_m" ]; then
>&2 echo "[gitstatus] error: duplicate option: -$opt"
@@ -107,6 +125,7 @@ END
shift "$((OPTIND - 1))"
: "${e:=2}"
: "${gitstatus_dir:=$argv1}"
if [ -n "$no_check" -a -n "$no_install" ]; then
@@ -131,14 +150,8 @@ END
>&2 echo "[gitstatus] error: GITSTATUS_DAEMON is not absolute path: $daemon"
return 1
fi
if [ -z "$daemon" ]; then
if [ -z "$daemon" -a -e "$gitstatus_dir"/usrbin/gitstatusd ]; then
daemon="$gitstatus_dir"/usrbin/gitstatusd
if [ ! -e "$daemon" ]; then
daemon="$daemon"-"$uname_s"-"$uname_m"
if [ ! -e "$daemon" ]; then
daemon=
fi
fi
fi
if [ -n "$daemon" ]; then
local gitstatus_version= libgit2_version=
@@ -150,7 +163,8 @@ END
>&2 echo "[gitstatus] internal error: empty gitstatus_version in build.info"
return 1
fi
[ $# = 0 ] || "$@" "$daemon" "$gitstatus_version" 0
local version="$gitstatus_version"
_gitstatus_install_daemon_found 0 "$@"
return
fi
fi
@@ -184,23 +198,13 @@ END
if [ -z "$no_check" ]; then
# Check if a suitable gitstatusd already exists.
local daemon="$cache_dir"/"$file"
if [ -e "$daemon" ]; then
[ $# = 0 ] || "$@" "$daemon" "$version" 0
return
local daemon="$gitstatus_dir"/usrbin/"$file"
if [ ! -e "$daemon" ]; then
daemon="$cache_dir"/"$file"
[ -e "$daemon" ] || daemon=
fi
daemon="$daemon"-"$uname_s"-"$uname_m"
if [ -e "$daemon" ]; then
local gitstatus_version= libgit2_version=
if ! . "$gitstatus_dir"/build.info; then
>&2 echo "[gitstatus] internal error: failed to source build.info"
return 1
fi
if [ -z "$gitstatus_version" ]; then
>&2 echo "[gitstatus] internal error: empty gitstatus_version in build.info"
return 1
fi
[ $# = 0 ] || "$@" "$daemon" "$gitstatus_version" 0
if [ -n "$daemon" ]; then
_gitstatus_install_daemon_found 0 "$@"
return
fi
fi
@@ -218,84 +222,163 @@ END
>&2 echo "[gitstatus] error: GITSTATUS_CACHE_DIR is not absolute: $cache_dir"
return 1
fi
[ -d "$cache_dir" ] || mkdir -p -- "$cache_dir" || return
if [ ! -d "$cache_dir" ] && ! mkdir -p -- "$cache_dir" || [ ! -w "$cache_dir" ]; then
local dir="$cache_dir"
while true; do
if [ -e "$dir" ]; then
if [ ! -d "$dir" ]; then
>&"$e" printf 'Not a directory: \033[4;31m%s\033[0m\n' "$dir"
>&"$e" printf '\n'
>&"$e" printf 'Delete it, then restart your shell.\n'
elif [ ! -w "$dir" ]; then
>&"$e" printf 'Directory is not writable: \033[4;31m%s\033[0m\n' "$dir"
>&"$e" printf '\n'
>&"$e" printf 'Make it writable, then restart your shell.\n'
fi
break
fi
if [ "$dir" = / ] || [ "$dir" = . ]; then
break
fi
dir="$(dirname -- "$dir")"
done
return 1
fi
local tmpdir
if [ -n "${TMPDIR-}" -a '(' '(' -d "${TMPDIR-}" -a -w "${TMPDIR-}" ')' -o '!' '(' -d /tmp -a -w /tmp ')' ')' ]; then
local tmp="$TMPDIR"
else
local tmp=/tmp
fi
if ! command -v mktemp >/dev/null 2>&1 ||
! tmpdir="$(command mktemp -d "${TMPDIR:-/tmp}"/gitstatus-install.XXXXXXXXXX)"; then
tmpdir="${TMPDIR:-/tmp}/gitstatus-install.tmp.$$"
mkdir -p -- "$tmpdir" || return
! tmpdir="$(command mktemp -d "$tmp"/gitstatus-install.XXXXXXXXXX)"; then
tmpdir="$tmp/gitstatus-install.tmp.$$"
if ! mkdir -p -- "$tmpdir"; then
if [ "$tmp" = /tmp ]; then
local label='directory'
else
local label='directory (\033[1mTMPDIR\033[m)'
fi
if [ ! -e "$tmp" ]; then
>&"$e" printf 'Temporary '"$label"' does not exist: \033[4;31m%s\033[0m\n' "$tmp"
>&"$e" printf '\n'
>&"$e" printf 'Create it, then restart your shell.\n'
elif [ ! -d "$tmp" ]; then
>&"$e" printf 'Not a '"$label"': \033[4;31m%s\033[0m\n' "$tmp"
>&"$e" printf '\n'
>&"$e" printf 'Make it a directory, then restart your shell.\n'
elif [ ! -w "$tmp" ]; then
>&"$e" printf 'Temporary '"$label"' is not writable: \033[4;31m%s\033[0m\n' "$tmp"
>&"$e" printf '\n'
>&"$e" printf 'Make it writable, then restart your shell.\n'
fi
return 1
fi
fi
if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then
>&"$e" printf 'Please install \033[32mcurl\033[0m or \033[32mwget\033[0m, then restart your shell.\n'
return 1
fi
(
if [ -n "${ZSH_VERSION:-}" ]; then
builtin cd -q -- "$tmpdir" || exit
else
cd -- "$tmpdir" || exit
fi
local fetch
if command -v curl >/dev/null 2>&1; then
fetch="command curl -fsSLo"
elif command -v wget >/dev/null 2>&1; then
fetch="command wget -O"
else
>&2 echo "[gitstatus] error: please install curl or wget"
exit 1
fi
local url1="https://github.com/romkatv/gitstatus/releases/download/$version/$file.tar.gz"
local url2="https://gitee.com/romkatv/gitstatus/raw/release-$version/release/$file.tar.gz"
run_cmd() {
command -v "$1" >/dev/null 2>/dev/null || return 127
local trapped= pid die ret
trap 'trapped=1' $sig
# The only reason for suppressing stderr is that `curl -f` cannot be silenced:
# `-s` doesn't work despite what the docs say.
command "$@" 2>/dev/null &
ret="$?"
if [ "$ret" = 0 ]; then
pid="$!"
die="trap - $sig; kill -- $pid 2>/dev/null; wait -- $pid 2>/dev/null; exit 1"
trap "$die" $sig
[ -z "$trapped" ] || eval "$die"
wait -- "$pid" 2>/dev/null
ret="$?"
fi
trap - $sig
[ -z "$trapped" ] || exit
return "$ret"
}
check_sha256() {
local file="$1".tar.gz
local data_file="$tmpdir"/"$1".tar.gz
local hash_file="$tmpdir"/"$1".tar.gz.sha256
local hash=
if command -v shasum >/dev/null 2>/dev/null; then
hash="$(command shasum -b -a 256 -- "$file")" || hash=
hash="${hash%% *}"
elif command -v sha256sum >/dev/null 2>/dev/null; then
hash="$(command sha256sum -b -- "$file")" || hash=
hash="${hash%% *}"
elif command -v sha256 >/dev/null 2>/dev/null; then
hash="$(command sha256 -- "$file" </dev/null)" || hash=
# Ignore sha256 output if it's from hashalot. It's incompatible.
if [ ${#hash} -lt 64 ]; then
hash=
else
hash="${hash##* }"
fi
fi
{
command -v shasum >/dev/null 2>/dev/null &&
run_cmd shasum -b -a 256 -- "$data_file" >"$hash_file" </dev/null &&
IFS= read -r hash <"$hash_file" &&
hash="${hash%% *}" &&
[ ${#hash} -eq 64 ]
} || {
command -v sha256sum >/dev/null 2>/dev/null &&
run_cmd sha256sum -b -- "$data_file" >"$hash_file" </dev/null &&
IFS= read -r hash <"$hash_file" &&
hash="${hash%% *}" &&
[ ${#hash} -eq 64 ]
} || {
# Note: sha256 can be from hashalot. It's incompatible.
# Thankfully, it produces shorter output.
command -v sha256 >/dev/null 2>/dev/null &&
run_cmd sha256 -- "$data_file" >"$hash_file" </dev/null &&
IFS= read -r hash <"$hash_file" &&
hash="${hash##* }" &&
[ ${#hash} -eq 64 ]
} || {
hash=
}
[ "$1" = 1 -a -z "$hash" -o "$hash" = "$sha256" ]
}
local url1="https://github.com/romkatv/gitstatus/releases/download/$version/$file.tar.gz"
local url2="https://gitee.com/romkatv/gitstatus/raw/release-$version/release/$file.tar.gz"
local sig='INT QUIT TERM ILL PIPE'
fetch() {
local trapped=
trap 'trapped=1' $sig
if [ "$1" != 1 ] && command -v sleep >/dev/null 2>/dev/null; then
sleep "$1"
if ! run_cmd sleep "$1"; then
echo -n >"$tmpdir"/"$1".status
return 1
fi
fi
$fetch "$1".tar.gz -- "$2" 2>/dev/null &
local pid=$!
local die="trap - $sig; kill -- $pid 2>/dev/null; exit 1"
trap "$die" $sig
[ -z "$trapped" ] || eval "$die"
wait -- "$pid" 2>/dev/null && check_sha256 "$1"
local ret="$?"
echo -n >"$1".status
trap - $sig
local cmd part url ret
for cmd in 'curl -kfsSL' 'wget -qO-' 'curl -q -kfsSL' 'wget --no-config -qO-'; do
part=0
while true; do
if [ "$part" = 2 ]; then
ret=1
break
elif [ "$part" = 0 ]; then
url="$2"
else
url="$2"."$part"
fi
run_cmd $cmd -- "$url" >>"$tmpdir"/"$1".tar.gz
ret="$?"
[ "$ret" = 0 ] || break
check_sha256 "$1" && break
part=$((part+1))
done
[ "$ret" = 0 ] && break
run_cmd rm -f -- "$tmpdir"/"$1".tar.gz && continue
ret="$?"
break
done
echo -n >"$tmpdir"/"$1".status
return "$ret"
}
local trapped=
trap 'trapped=1' $sig
fetch 1 "$url1" &
local pid1=$!
fetch 2 "$url2" &
local pid2=$!
fetch 1 "$url1" &
local pid1="$!"
fetch 2 "$url2" &
local pid2="$!"
local die="trap - $sig; kill -- $pid1 $pid2 2>/dev/null; exit 1"
local die="trap - $sig; kill -- $pid1 $pid2 2>/dev/null; wait -- $pid1 $pid2 2>/dev/null; exit 1"
trap "$die" $sig
[ -z "$trapped" ] || eval "$die"
@@ -307,27 +390,39 @@ END
elif command -v true >/dev/null 2>/dev/null; then
command true
fi
if [ -n "$pid1" -a -e 1.status ]; then
if [ -n "$pid1" -a -e "$tmpdir"/1.status ]; then
wait -- "$pid1" 2>/dev/null
local ret="$?"
pid1=
if [ "$ret" = 0 ]; then
[ -z "$pid2" ] || kill -- "$pid2" 2>/dev/null
if [ -n "$pid2" ]; then
kill -- "$pid2" 2>/dev/null
wait -- "$pid2" 2>/dev/null
fi
n=1
break
elif [ -z "$pid2" ]; then
break
else
die="trap - $sig; kill -- $pid2 2>/dev/null; wait -- $pid2 2>/dev/null; exit 1"
trap "$die" $sig
fi
elif [ -n "$pid2" -a -e 2.status ]; then
elif [ -n "$pid2" -a -e "$tmpdir"/2.status ]; then
wait -- "$pid2" 2>/dev/null
local ret="$?"
pid2=
if [ "$ret" = 0 ]; then
[ -z "$pid1" ] || kill -- "$pid1" 2>/dev/null
if [ -n "$pid1" ]; then
kill -- "$pid1" 2>/dev/null
wait -- "$pid1" 2>/dev/null
fi
n=2
break
elif [ -z "$pid1" ]; then
break
else
die="trap - $sig; kill -- $pid1 2>/dev/null; wait -- $pid1 2>/dev/null; exit 1"
trap "$die" $sig
fi
fi
done
@@ -335,14 +430,16 @@ END
trap - $sig
if [ -z "$n" ]; then
>&2 echo "[gitstatus] error: failed to download gitstatusd from any mirror"
>&2 echo ""
>&2 echo " 1. $url1"
>&2 echo " 2. $url2"
>&"$e" printf 'Failed to download \033[32m%s\033[0m from any mirror:\n' "$file"
>&"$e" printf '\n'
>&"$e" printf ' 1. \033[4m%s\033[0m\n' "$url1"
>&"$e" printf ' 2. \033[4m%s\033[0m\n' "$url2"
>&"$e" printf '\n'
>&"$e" printf 'Check your internet connection, then restart your shell.\n'
exit 1
fi
command tar -xzf "$n".tar.gz || exit
command tar -C "$tmpdir" -xzf "$tmpdir"/"$n".tar.gz || exit
local tmpfile
if ! command -v mktemp >/dev/null 2>&1 ||
@@ -350,7 +447,7 @@ END
tmpfile="$cache_dir"/gitstatusd.tmp.$$
fi
command mv -f -- gitstatusd-* "$tmpfile" || exit
command mv -f -- "$tmpdir"/"$file" "$tmpfile" || exit
command mv -f -- "$tmpfile" "$cache_dir"/"$file" && exit
command rm -f -- "$cache_dir"/"$file"
command mv -f -- "$tmpfile" "$cache_dir"/"$file" && exit
@@ -358,15 +455,17 @@ END
exit 1
)
local ret=$?
local ret="$?"
command rm -rf -- "$tmpdir"
[ "$ret" = 0 ] || return
[ $# = 0 ] || "$@" "$daemon" "$version" 1
_gitstatus_install_daemon_found 1 "$@"
return
done <"$gitstatus_dir"/install.info
>&2 echo "[gitstatus] error: no gitstatusd found for $uname_s $uname_m"
>&"$e" printf 'There is no prebuilt \033[32mgitstatusd\033[0m for \033[1m%s\033[0m.\n' "$uname_s $uname_m"
>&"$e" printf '\n'
>&"$e" printf 'See: \033[4mhttps://github.com/romkatv/gitstatus#compiling\033[0m\n'
return 1
}

View File

@@ -1,29 +1,34 @@
# ae988158e1044abb1626a15d6a27751cd80c13be
# 3
#
# This file is used by ./install and indirectly by shell bindings.
#
# The first line is read by powerlevel10k instant prompt. It must
# be updated whenever the content of this file changes.
# be updated whenever the content of this file changes. The actual
# value doesn't matter as long as it's unique. Consecutive integers
# work fine.
# Official gitstatusd binaries.
uname_s_glob="cygwin_nt-10.0"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="c38342c7a70842067074710250fd8cebea87ae111f032277c2c70a77179b5355";
uname_s_glob="cygwin_nt-10.0"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="d30b455e371cd0895c9bd1ff87b8a27e6c3f3c2970b4e993e93fe1a6943962ad";
uname_s_glob="darwin"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="c71b30027b3c763faa3ff7ad09d66c84403851fafcf798bf5e629b98c2b8384a";
uname_s_glob="freebsd"; uname_m_glob="amd64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="a72d4c5da2f9594bf1c4153d841bf61a35cbcbb8b74818649b1375902e9d9534";
uname_s_glob="linux"; uname_m_glob="aarch64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="eb7f125d43c29f955239ef4014ab652b9162bbbb6c81c40f1d5ead46a209866e";
uname_s_glob="linux"; uname_m_glob="armv6l"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="051a9448d9cb4bb1d95e93cff51a6ab48a085465ec30eec40046977d4213feff";
uname_s_glob="linux"; uname_m_glob="armv7l"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="adaa47c8e8dec1e1e8686c3044ee0f45afda15deaa8388efcb4952747b66246e";
uname_s_glob="linux"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="c80355664e7361e11215e64b523ed75a3d39f72393fa2204fefa85eae0342a67";
uname_s_glob="linux"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="e33867063f091d3c31ede9916fef079ff8cd6fdcc70d051914f962ab3b8f36fd";
uname_s_glob="msys_nt-10.0"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="2cf6ff92a5c50e4181ceb402217162bebd5e52144eb52eacfef2f6d47d5c20d4";
uname_s_glob="msys_nt-10.0"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.0.0"; sha256="960c3d9d90d7b96257a9746f7168faffdf9b5fbda464e354e7b14c42cc473f15";
uname_s_glob="cygwin_nt-10.0"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="5a8a809dcebdb6aa9b47d37e086c0485424a9d9c136770eec3c26cedf5bb75e3";
uname_s_glob="cygwin_nt-10.0"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.1"; sha256="c84cade0d6b86e04c27a6055f45851f6b46d6b88ba58772f7ca8ef4d295c800f";
uname_s_glob="darwin"; uname_m_glob="arm64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="eae979e990ca37c56ee39fadd0c3f392cbbd0c6bdfb9a603010be60d9e48910a";
uname_s_glob="darwin"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="9fd3913ec1b6b856ab6e08a99a2343f0e8e809eb6b62ca4b0963163656c668e6";
uname_s_glob="freebsd"; uname_m_glob="amd64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="8e57ad642251e5acfa430aed82cd4ffe103db0bfadae4a15ccaf462c455d0442";
uname_s_glob="linux"; uname_m_glob="aarch64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="32b57eb28bf6d80b280e4020a0045184f8ca897b20b570c12948aa6838673225";
uname_s_glob="linux"; uname_m_glob="armv6l"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.1"; sha256="4bf5a0d0a082f544a48536ad3675930d5d2cc6a8cf906710045e0788f51192b3";
uname_s_glob="linux"; uname_m_glob="armv7l"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.1"; sha256="2b9deb29f86c8209114b71b94fc2e1ed936a1658808a1bee46f4a82fd6a1f8cc";
uname_s_glob="linux"; uname_m_glob="armv8l"; file="gitstatusd-${uname_s}-aarch64"; version="v1.5.4"; sha256="32b57eb28bf6d80b280e4020a0045184f8ca897b20b570c12948aa6838673225";
uname_s_glob="linux"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="56d55e2e9a202d3072fa612d8fa1faa61243ffc86418a7fa64c2c9d9a82e0f64";
uname_s_glob="linux"; uname_m_glob="ppc64le"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="1afd072c8c26ef6ec2d9ac11cef96c84cd6f10e859665a6ffcfb6112c758547e";
uname_s_glob="linux"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.4"; sha256="9633816e7832109e530c9e2532b11a1edae08136d63aa7e40246c0339b7db304";
uname_s_glob="msys_nt-10.0"; uname_m_glob="i686"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.1"; sha256="7f9b849fc52e7a95b9b933e25121ad5ae990a1871aad6616922ad7bcf1eebf20";
uname_s_glob="msys_nt-10.0"; uname_m_glob="x86_64"; file="gitstatusd-${uname_s}-${uname_m}"; version="v1.5.1"; sha256="5d3c626b5ee564dbc13ddba89752dc58b0efe925b26dbd8b2304849d9ba01732";
# Fallbacks to official gitstatusd binaries.
uname_s_glob="cygwin_nt-*"; uname_m_glob="i686"; file="gitstatusd-cygwin_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="c38342c7a70842067074710250fd8cebea87ae111f032277c2c70a77179b5355";
uname_s_glob="cygwin_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-cygwin_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="d30b455e371cd0895c9bd1ff87b8a27e6c3f3c2970b4e993e93fe1a6943962ad";
uname_s_glob="mingw32_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="2cf6ff92a5c50e4181ceb402217162bebd5e52144eb52eacfef2f6d47d5c20d4";
uname_s_glob="mingw32_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="960c3d9d90d7b96257a9746f7168faffdf9b5fbda464e354e7b14c42cc473f15";
uname_s_glob="mingw64_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="2cf6ff92a5c50e4181ceb402217162bebd5e52144eb52eacfef2f6d47d5c20d4";
uname_s_glob="mingw64_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="960c3d9d90d7b96257a9746f7168faffdf9b5fbda464e354e7b14c42cc473f15";
uname_s_glob="msys_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="2cf6ff92a5c50e4181ceb402217162bebd5e52144eb52eacfef2f6d47d5c20d4";
uname_s_glob="msys_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.0.0"; sha256="960c3d9d90d7b96257a9746f7168faffdf9b5fbda464e354e7b14c42cc473f15";
uname_s_glob="cygwin_nt-*"; uname_m_glob="i686"; file="gitstatusd-cygwin_nt-10.0-${uname_m}"; version="v1.5.2"; sha256="5a8a809dcebdb6aa9b47d37e086c0485424a9d9c136770eec3c26cedf5bb75e3";
uname_s_glob="cygwin_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-cygwin_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="c84cade0d6b86e04c27a6055f45851f6b46d6b88ba58772f7ca8ef4d295c800f";
uname_s_glob="mingw32_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="7f9b849fc52e7a95b9b933e25121ad5ae990a1871aad6616922ad7bcf1eebf20";
uname_s_glob="mingw32_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="5d3c626b5ee564dbc13ddba89752dc58b0efe925b26dbd8b2304849d9ba01732";
uname_s_glob="mingw64_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="7f9b849fc52e7a95b9b933e25121ad5ae990a1871aad6616922ad7bcf1eebf20";
uname_s_glob="mingw64_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="5d3c626b5ee564dbc13ddba89752dc58b0efe925b26dbd8b2304849d9ba01732";
uname_s_glob="msys_nt-*"; uname_m_glob="i686"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="7f9b849fc52e7a95b9b933e25121ad5ae990a1871aad6616922ad7bcf1eebf20";
uname_s_glob="msys_nt-*"; uname_m_glob="x86_64"; file="gitstatusd-msys_nt-10.0-${uname_m}"; version="v1.5.1"; sha256="5d3c626b5ee564dbc13ddba89752dc58b0efe925b26dbd8b2304849d9ba01732";

View File

@@ -5,7 +5,7 @@
# Usage: mbuild [-b git-ref] [kernel-arch]...
#
# Builds a bunch of gitstatusd-* binaries. Without arguments builds binaries
# for all platforms. git-ref defaults to src.
# for all platforms. git-ref defaults to master.
#
# Before using this script you need to set up build servers and list them
# in ~/.ssh/config. There should be a Host entry for every value of `assets`
@@ -94,9 +94,7 @@
setopt no_unset extended_glob pipe_fail prompt_percent typeset_silent \
no_prompt_subst no_prompt_bang pushd_silent warn_create_global
autoload -Uz is-at-least
if ! is-at-least 5.1 || [[ $ZSH_VERSION == 5.4.* ]]; then
if [[ $ZSH_VERSION != (5.<1->*|<6->.*) || $ZSH_VERSION == 5.4(|.*) ]]; then
print -ru2 -- "[error] unsupported zsh version: $ZSH_VERSION"
return 1
fi
@@ -111,12 +109,14 @@ local -rA assets=(
cygwin_nt-10.0-x86_64 build-windows-x86_64
msys_nt-10.0-i686 build-windows-x86_64
msys_nt-10.0-x86_64 build-windows-x86_64
darwin-arm64 build-macos-arm64
darwin-x86_64 build-macos-x86_64
freebsd-amd64 build-freebsd-amd64
linux-aarch64 build-linux-aarch64
linux-armv6l build-linux-armv7l
linux-armv7l build-linux-armv7l
linux-i686 build-linux-x86_64
linux-ppc64le build-linux-ppc64le
linux-x86_64 build-linux-x86_64
)
@@ -137,7 +137,7 @@ function usage() {
print -r -- 'usage: mbuild [-b REF] [KERNEL-ARCH]...'
}
local OPTARG opt git_ref=src
local OPTARG opt git_ref=master
local -i OPTIND
while getopts ":b:h" opt; do
case $opt in
@@ -151,7 +151,7 @@ done
shift $((OPTIND - 1))
(( $# )) || set -- ${(k)assets}
(( $# )) || set -- ${(ko)assets}
set -- ${(u)@}
local platform
@@ -180,14 +180,16 @@ local build='
function build-unix() {
local intro flags=(-sw)
case $2 in
darwin-*) intro='PATH="/usr/local/bin:$PATH"';;
linux-*) flags+=(-d docker);;
linux-ppc64le) ;;
linux-*) flags+=(-d docker);;
darwin-arm64) intro='PATH="/opt/homebrew/bin:$PATH"';;
darwin-*) intro='PATH="/usr/local/bin:$PATH"';;
esac
ssh $1 -- /bin/sh -uex <<<"
$intro
cd /tmp
$build ${2##*-} ${(j: :)${(@q)flags}}"
scp $1:/tmp/gitstatus/usrbin/gitstatusd-$2 $binaries/
scp $1:/tmp/gitstatus/usrbin/gitstatusd $binaries/gitstatusd-$2
}
function build-windows() {
@@ -200,15 +202,23 @@ function build-windows() {
local tmp env bin intro flags=(-w)
case $2 in
msys_nt-10.0-i686) bin='msys32/usr/bin';|
msys_nt-10.0-x86_64) bin='msys64/usr/bin';|
cygwin_nt-10.0-i686) bin='cygwin32/bin' ;|
cygwin_nt-10.0-x86_64) bin='cygwin64/bin' ;|
msys_nt-10.0-i686) bin='msys32/usr/bin';|
msys_nt-10.0-x86_64) bin='msys64/usr/bin';|
cygwin_nt-10.0-*)
tmp='/cygdrive/c/tmp'
;|
msys_nt-10.0-*)
flags+=(-s)
tmp='/c/tmp'
env='MSYSTEM=MSYS'
# TODO: fix this (some errors about PGP keys).
# flags+=(-s)
# intro='pacman -S --needed --noconfirm git; '
intro+='PATH="$PATH:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl"'
while true; do
# TODO: run autorebase only when getting an error that can be fixed by autorebasing.
break
local out
out="$(ssh $1 cmd.exe "$c/${bin%%/*}/autorebase.bat" 2>&1)"
[[ $out == *"The following DLLs couldn't be rebased"* ]] || break
@@ -219,6 +229,8 @@ function build-windows() {
done
() {
while true; do
# TODO: fix this (some errors about PGP keys).
break
local -i fd
exec {fd}< <(
ssh $1 $c/$bin/env.exe $env c:/$bin/bash.exe -l 2>&1 <<<"
@@ -229,7 +241,7 @@ function build-windows() {
while true; do
IFS= read -u $fd -r line || return 0
if [[ $line == *"warning: terminate MSYS2"* ]]; then
# At this point the machine is hosed. Rogue process with corrupted name
# At this point the machine is hosed. A rogue process with a corrupted name
# is eating all CPU. The top SSH connection won't terminate on its own.
ssh $1 powershell.exe <<<'Restart-Computer -Force' || true
sleep 30
@@ -243,12 +255,7 @@ function build-windows() {
}
done
} "$@"
intro='pacman -Syu --noconfirm; pacman -S --needed --noconfirm git; '
intro+='PATH="$PATH:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl"'
;;
cygwin_nt-10.0-*)
tmp='/cygdrive/c/tmp'
;;
;|
esac
ssh $1 $c/$bin/env.exe $env c:/$bin/bash.exe -l <<<"
@@ -258,20 +265,56 @@ function build-windows() {
cd -- $tmp
$build ${2##*-} ${(j: :)${(@q)flags}}
exit"
scp $1:$c/tmp/gitstatus/usrbin/gitstatusd-$2 $binaries/
scp $1:$c/tmp/gitstatus/usrbin/gitstatusd $binaries/gitstatusd-$2
chmod +x $binaries/gitstatusd-$2
}
if [[ -r /proc/version && "$(</proc/version)" == *Microsoft* ]]; then
() {
(( $# )) || return 0
print -ru2 -- "WARNING: lock files exist: $@"
(( $# )) && rm -- $@
} $locks/*(N)
function flock() {
local fd
sysopen -ro cloexec -u fd <(
exec </dev/null 2>/dev/null
(
trap '' TERM PIPE
local fd
while true; do
sysopen -wo create,excl -u fd -- $1 && break
sleep 1
done
exec {fd}>&-
while true; do
print || break
done
rm -- $1
) &!
)
local REPLY
IFS= read -ru $fd
}
else
function flock() {
: >>$1
zsystem flock $1
}
fi
function build() (
setopt xtrace
local platform=$1
local machine=$assets[$platform]
print -n >>$locks/$machine
zsystem flock $locks/$machine
flock $locks/$machine
build-${protocol[(k)$platform]} $machine $platform
local tmp=gitstatusd-$platform.tmp.$$.tar.gz
( cd -q -- $binaries; GZIP=-9 tar -czf $tmp gitstatusd-$platform )
( cd -q -- $binaries; tar --owner=0 --group=0 -I 'gzip -9' -cf $tmp gitstatusd-$platform )
mv -f -- $binaries/$tmp $binaries/gitstatusd-$platform.tar.gz
# Make sure the last command is a built-in (important for flock).
:
)
function mbuild() {
@@ -281,17 +324,24 @@ function mbuild() {
print -r -- "starting build for $platform on $assets[$platform] (pid $!)"
pids+=($platform $!)
done
local failed=()
for platform pid in $pids; do
print -rn -- "$platform => "
if wait $pid; then
print -r -- "ok"
else
print -r -- "error $?"
print -r -- "---------------------"
>&2 cat $logs/$platform
return 1
print -r -- "error"
failed+=$platform
fi
done
(( $#failed )) || return 0
print
print -r -- "Error logs:"
print
for platform in $failed; do
print -r -- " $platform => $logs/$platform"
done
return 1
}
# Copied from https://github.com/romkatv/run-process-tree.
@@ -349,4 +399,8 @@ function run-process-tree() {
}
mkdir -p -- $logs $locks $binaries
run-process-tree mbuild $@
() {
run-process-tree mbuild $@
exit
} "$@"

View File

@@ -37,7 +37,7 @@ namespace gitstatus {
//
// // Donates a block to the arena. When the time comes, it'll be freed with
// // free(p, size, userdata).
// void Donate(void* p, size_t size, void* userdata, void(*free)(void*, void*));
// void Donate(void* p, size_t size, void* userdata, void(*free)(void*, size_t, void*));
class Arena {
public:
struct Options {
@@ -62,7 +62,7 @@ class Arena {
//
// void* userdata;
// void (*alloc)(size_t size, size_t alignment, void* userdata);
// void (*free)(size_t size, void* userdata);
// void (*free)(void* p, size_t size, void* userdata);
};
// Requires: opt.min_block_size <= opt.max_block_size.

View File

@@ -23,7 +23,7 @@
#include <stdexcept>
// The argument must be an expression convertible to bool.
// Does nothing if the expression evalutes to true. Otherwise
// Does nothing if the expression evaluates to true. Otherwise
// it's equivalent to LOG(FATAL).
#define CHECK(cond...) \
static_cast<void>(0), (!!(cond)) ? static_cast<void>(0) : LOG(FATAL) << #cond << ": "

View File

@@ -106,32 +106,34 @@ bool ListDir(int dir_fd, Arena& arena, std::vector<char*>& entries, bool precomp
};
constexpr size_t kBufSize = 8 << 10;
entries.clear();
const size_t orig_size = entries.size();
while (true) {
char* buf = static_cast<char*>(arena.Allocate(kBufSize, alignof(linux_dirent64)));
// Save 256 bytes for the rainy day.
int n = syscall(SYS_getdents64, dir_fd, buf, kBufSize - 256);
if (n < 0) {
entries.clear();
entries.resize(orig_size);
return false;
}
if (n == 0) break;
for (int pos = 0; pos < n;) {
auto* ent = reinterpret_cast<linux_dirent64*>(buf + pos);
if (!Dots(ent->d_name)) entries.push_back(ent->d_name);
pos += ent->d_reclen;
// It's tempting to bail here if n + sizeof(linux_dirent64) + 512 <= n. After all, there
// was enough space for another entry but SYS_getdents64 didn't write it, so this must be
// the end of the directory listing, right? Unfortuatenly, no. SYS_getdents64 is finicky.
// It sometimes writes a partial list of entries even if the full list would fit.
}
if (n == 0) break;
// The following optimization relies on SYS_getdents64 always returning as many
// entries as would fit. This is not guaranteed by the specification and I don't
// know if this is true in practice. The optimization has no measurable effect on
// gitstatus performance, so it's turned off.
//
// if (n + sizeof(linux_dirent64) + 512 <= kBufSize) break;
}
if (case_sensitive) {
SortEntries<true>(entries.data(), entries.data() + entries.size());
SortEntries<true>(entries.data() + orig_size, entries.data() + entries.size());
} else {
SortEntries<false>(entries.data(), entries.data() + entries.size());
SortEntries<false>(entries.data() + orig_size, entries.data() + entries.size());
}
return true;
@@ -209,23 +211,24 @@ char* DirenvConvert(Arena& arena, struct dirent& ent, bool do_convert) {
bool ListDir(int dir_fd, Arena& arena, std::vector<char*>& entries, bool precompose_unicode,
bool case_sensitive) {
VERIFY((dir_fd = dup(dir_fd)) >= 0);
const size_t orig_size = entries.size();
dir_fd = dup(dir_fd);
if (dir_fd < 0) return false;
DIR* dir = fdopendir(dir_fd);
if (!dir) {
CHECK(!close(dir_fd)) << Errno();
return -1;
return false;
}
ON_SCOPE_EXIT(&) { CHECK(!closedir(dir)) << Errno(); };
entries.clear();
while (struct dirent* ent = (errno = 0, readdir(dir))) {
if (Dots(ent->d_name)) continue;
entries.push_back(DirenvConvert(arena, *ent, precompose_unicode));
}
if (errno) {
entries.clear();
entries.resize(orig_size);
return false;
}
StrSort(entries.data(), entries.data() + entries.size(), case_sensitive);
StrSort(entries.data() + orig_size, entries.data() + entries.size(), case_sensitive);
return true;
}

View File

@@ -25,11 +25,11 @@
namespace gitstatus {
// On error, clears entries and returns false. Does not throw.
// On error, leaves entries unchanged and returns false. Does not throw.
//
// On success, fills entries with the names of files from the specified directory and returns true.
// Every entry is a null-terminated string. At -1 offset is its d_type. All elements point into the
// arena. They are sorted either by strcmp or strcasecmp depending on case_sensitive.
// On success, appends names of files from the specified directory to entries and returns true.
// Every appended entry is a null-terminated string. At -1 offset is its d_type. All elements
// point into the arena. They are sorted either by strcmp or strcasecmp depending on case_sensitive.
//
// Does not close dir_fd.
//

View File

@@ -239,4 +239,12 @@ PushRemotePtr GetPushRemote(git_repository* repo, const git_reference* local) {
return PushRemotePtr(res.release());
}
CommitMessage GetCommitMessage(git_repository* repo, const git_oid& id) {
git_commit* commit;
VERIFY(!git_commit_lookup(&commit, repo, &id)) << GitError();
ON_SCOPE_EXIT(=) { git_commit_free(commit); };
return {.encoding = git_commit_message_encoding(commit) ?: "",
.summary = git_commit_summary(commit) ?: ""};
}
} // namespace gitstatus

View File

@@ -48,6 +48,15 @@ git_reference* Head(git_repository* repo);
// Returns the name of the local branch, or an empty string.
const char* LocalBranchName(const git_reference* ref);
struct CommitMessage {
// Can be empty, meaning "UTF-8".
std::string encoding;
// The first paragraph of the commit's message as a one-liner.
std::string summary;
};
CommitMessage GetCommitMessage(git_repository* repo, const git_oid& id);
struct Remote {
// Tip of the remote branch.
git_reference* ref;

View File

@@ -41,6 +41,10 @@ namespace {
using namespace std::string_literals;
void Truncate(std::string& s, size_t max_len) {
if (s.size() > max_len) s.resize(max_len);
}
void ProcessRequest(const Options& opts, RepoCache& cache, Request req) {
Timer timer;
ON_SCOPE_EXIT(&) { timer.Report("request"); };
@@ -118,7 +122,7 @@ void ProcessRequest(const Options& opts, RepoCache& cache, Request req) {
resp.Print(stats.num_untracked);
if (remote && remote->ref) {
const char* ref = git_reference_shorthand(remote->ref);
const char* ref = git_reference_name(remote->ref);
// Number of commits we are ahead of upstream. Non-negative integer.
resp.Print(CountRange(repo->repo(), ref + "..HEAD"s));
// Number of commits we are behind upstream. Non-negative integer.
@@ -152,7 +156,7 @@ void ProcessRequest(const Options& opts, RepoCache& cache, Request req) {
resp.Print(push_remote ? push_remote->url : "");
if (push_remote && push_remote->ref) {
const char* ref = git_reference_shorthand(push_remote->ref);
const char* ref = git_reference_name(push_remote->ref);
// Number of commits we are ahead of push remote. Non-negative integer.
resp.Print(CountRange(repo->repo(), ref + "..HEAD"s));
// Number of commits we are behind upstream. Non-negative integer.
@@ -167,6 +171,11 @@ void ProcessRequest(const Options& opts, RepoCache& cache, Request req) {
// The number of files in the index with assume-unchanged bit set.
resp.Print(stats.num_assume_unchanged);
CommitMessage msg = head_target ? GetCommitMessage(repo->repo(), *head_target) : CommitMessage();
Truncate(msg.summary, opts.max_commit_summary_length);
resp.Print(msg.encoding);
resp.Print(msg.summary);
resp.Dump("with git status");
}

View File

@@ -242,6 +242,7 @@ std::vector<const char*> ScanDirs(git_index* index, int root_fd, IndexDir* const
dir.st = st;
}
entries.clear();
arena.Reuse();
if (!ListDir(*dir_fd, arena, entries, caps.precompose_unicode, caps.case_sensitive)) {
AddUnmached("");

View File

@@ -53,9 +53,15 @@ long ParseInt(const char* s) {
return res;
}
size_t ParseSizeT(const char* s) {
static_assert(sizeof(long) <= sizeof(size_t), "");
long res = ParseLong(s);
return res >= 0 ? res : -1;
}
void PrintUsage() {
std::cout << "Usage: gitstatusd [OPTION]...\n"
<< "Print machine-readable status of the git repos for directores in stdin.\n"
<< "Print machine-readable status of the git repos for directories in stdin.\n"
<< "\n"
<< "OPTIONS\n"
<< " -l, --lock-fd=NUM [default=-1]\n"
@@ -72,7 +78,7 @@ void PrintUsage() {
<< " maximum performance.\n"
<< "\n"
<< " -v, --log-level=STR [default=INFO]\n"
<< " Don't write entires to log whose log level is below this. Log levels in\n"
<< " Don't write entries to log whose log level is below this. Log levels in\n"
<< " increasing order: DEBUG, INFO, WARN, ERROR, FATAL.\n"
<< "\n"
<< " -r, --repo-ttl-seconds=NUM [default=3600]\n"
@@ -81,12 +87,18 @@ void PrintUsage() {
<< " repo that's been closed is much slower than for a repo that hasn't been.\n"
<< " Negative value means infinity.\n"
<< "\n"
<< " -z, --max-commit-summary-length=NUM [default=256]\n"
<< " Truncate commit summary if it's longer than this many bytes.\n"
<< "\n"
<< " -s, --max-num-staged=NUM [default=1]\n"
<< " Report at most this many staged changes; negative value means infinity.\n"
<< "\n"
<< " -u, --max-num-unstaged=NUM [default=1]\n"
<< " Report at most this many unstaged changes; negative value means infinity.\n"
<< "\n"
<< " -c, --max-num-conflicted=NUM [default=1]\n"
<< " Report at most this many conflicted changes; negative value means infinity.\n"
<< "\n"
<< " -d, --max-num-untracked=NUM [default=1]\n"
<< " Report at most this many untracked files; negative value means infinity.\n"
<< "\n"
@@ -129,7 +141,7 @@ void PrintUsage() {
<< "\n"
<< " 1. Request ID. Any string. Can be empty.\n"
<< " 2. Path to the directory for which git stats are being requested.\n"
<< " If the first character is ':', it is removed and the remaning path\n"
<< " If the first character is ':', it is removed and the remaining path\n"
<< " is treated as GIT_DIR.\n"
<< " 3. (Optional) '1' to disable computation of anything that requires reading\n"
<< " git index; '0' for the default behavior of computing everything.\n"
@@ -170,6 +182,8 @@ void PrintUsage() {
<< " 25. Number of commits the current branch is behind push remote.\n"
<< " 26. Number of files in the index with skip-worktree bit set.\n"
<< " 27. Number of files in the index with assume-unchanged bit set.\n"
<< " 28. Encoding of the HEAD's commit message. Empty value means UTF-8.\n"
<< " 29. The first paragraph of the HEAD's commit message as one line.\n"
<< "\n"
<< "Note: Renamed files are reported as deleted plus new.\n"
<< "\n"
@@ -212,6 +226,8 @@ void PrintUsage() {
<< " '0'\n"
<< " '0'\n"
<< " '0'\n"
<< " ''\n"
<< " 'add a build server for darwin-arm64'\n"
<< "\n"
<< "EXIT STATUS\n"
<< "\n"
@@ -239,12 +255,13 @@ const char* Version() {
Options ParseOptions(int argc, char** argv) {
const struct option opts[] = {{"help", no_argument, nullptr, 'h'},
{"version", no_argument, nullptr, 'V'},
{"version-glob", no_argument, nullptr, 'G'},
{"version-glob", required_argument, nullptr, 'G'},
{"lock-fd", required_argument, nullptr, 'l'},
{"parent-pid", required_argument, nullptr, 'p'},
{"num-threads", required_argument, nullptr, 't'},
{"log-level", required_argument, nullptr, 'v'},
{"repo-ttl-seconds", required_argument, nullptr, 'r'},
{"max-commit-summary-length", required_argument, nullptr, 'z'},
{"max-num-staged", required_argument, nullptr, 's'},
{"max-num-unstaged", required_argument, nullptr, 'u'},
{"max-num-conflicted", required_argument, nullptr, 'c'},
@@ -257,7 +274,7 @@ Options ParseOptions(int argc, char** argv) {
{}};
Options res;
while (true) {
switch (getopt_long(argc, argv, "hVG:l:p:t:v:r:s:u:c:d:m:eUWD", opts, nullptr)) {
switch (getopt_long(argc, argv, "hVG:l:p:t:v:r:z:s:u:c:d:m:eUWD", opts, nullptr)) {
case -1:
if (optind != argc) {
std::cerr << "unexpected positional argument: " << argv[optind] << std::endl;
@@ -306,20 +323,23 @@ Options ParseOptions(int argc, char** argv) {
res.num_threads = n;
break;
}
case 'z':
res.max_commit_summary_length = ParseSizeT(optarg);
break;
case 's':
res.max_num_staged = ParseLong(optarg);
res.max_num_staged = ParseSizeT(optarg);
break;
case 'u':
res.max_num_unstaged = ParseLong(optarg);
res.max_num_unstaged = ParseSizeT(optarg);
break;
case 'c':
res.max_num_conflicted = ParseLong(optarg);
res.max_num_conflicted = ParseSizeT(optarg);
break;
case 'd':
res.max_num_untracked = ParseLong(optarg);
res.max_num_untracked = ParseSizeT(optarg);
break;
case 'm':
res.dirty_max_index_size = ParseLong(optarg);
res.dirty_max_index_size = ParseSizeT(optarg);
break;
case 'e':
res.recurse_untracked_dirs = true;

View File

@@ -27,6 +27,8 @@
namespace gitstatus {
struct Limits {
// Truncate commit summary if it's longer than this many bytes.
size_t max_commit_summary_length = 256;
// Report at most this many staged changes.
size_t max_num_staged = 1;
// Report at most this many unstaged changes.
@@ -60,7 +62,7 @@ struct Options : Limits {
// If non-negative, send signal 0 to the specified PID when not receiving any requests for one
// second; exit if signal sending fails.
int parent_pid = -1;
// Don't write entires to log whose log level is below this. Log levels in increasing order:
// Don't write entries to log whose log level is below this. Log levels in increasing order:
// DEBUG, INFO, WARN, ERROR, FATAL.
LogLevel log_level = INFO;
// Close git repositories that haven't been used for this long. This is meant to release resources

View File

@@ -155,7 +155,7 @@ IndexStats Repo::GetIndexStats(const git_oid* head, git_config* cfg) {
VERIFY(!git_repository_index(&git_index_, repo_)) << GitError();
// Query an attribute (doesn't matter which) to initialize repo's attribute
// cache. It's a workaround for synchronization bugs (data races) in libgit2
// that result from lazy cache initialization without synchrnonization.
// that result from lazy cache initialization without synchronization.
// Thankfully, subsequent cache reads and writes are properly synchronized.
const char* attr;
VERIFY(!git_attr_get(&attr, repo_, 0, "x", "x")) << GitError();

View File

@@ -155,6 +155,8 @@ void TagDb::ReadLooseTags() {
int dir_fd = open(dirname.c_str(), O_RDONLY | O_DIRECTORY | O_CLOEXEC);
if (dir_fd < 0) return;
ON_SCOPE_EXIT(&) { CHECK(!close(dir_fd)) << Errno(); };
// TODO: recursively traverse directories so that the file refs/tags/foo/bar gets interpreted
// as the tag foo/bar. See https://github.com/romkatv/gitstatus/issues/254.
(void)ListDir(dir_fd, loose_arena_, loose_tags_, /* precompose_unicode = */ false,
/* case_sensitive = */ true);
}
@@ -212,14 +214,30 @@ void TagDb::ParsePack() {
char* p = &pack_[0];
char* e = p + pack_.size();
if (*p == '#') {
char* eol = std::strchr(p, '\n');
if (!eol) return;
*eol = 0;
if (!std::strstr(p, " fully-peeled") || !std::strstr(p, " sorted")) return;
p = eol + 1;
// Usually packed-refs starts with the following line:
//
// # pack-refs with: peeled fully-peeled sorted
//
// However, some users can produce pack-refs without this line.
// See https://github.com/romkatv/powerlevel10k/issues/1428.
// I don't know how they do it. Without the header line we cannot
// assume that refs are sorted, which isn't a big deal because we
// can just sort them. What's worse is that refs cannot be assumed
// to be fully-peeled. We don't want to peel them, so we just drop
// all tags.
if (*p != '#') {
LOG(WARN) << "packed-refs doesn't have a header. Won't resolve tags.";
return;
}
char* eol = std::strchr(p, '\n');
if (!eol) return;
*eol = 0;
if (!std::strstr(p, " fully-peeled") || !std::strstr(p, " sorted")) {
LOG(WARN) << "packed-refs has unexpected header. Won't resolve tags.";
}
p = eol + 1;
name2id_.reserve(pack_.size() / 128);
id2name_.reserve(pack_.size() / 128);
@@ -249,7 +267,10 @@ void TagDb::ParsePack() {
id2name_.push_back(tag);
}
VERIFY(std::is_sorted(name2id_.begin(), name2id_.end(), ByName));
if (!std::is_sorted(name2id_.begin(), name2id_.end(), ByName)) {
// "sorted" in the header of packed-refs promises that this won't trigger.
std::sort(name2id_.begin(), name2id_.end(), ByName);
}
id2name_dirty_ = true;
GlobalThreadPool()->Schedule([this] {

View File

@@ -1,5 +1,7 @@
typeset -gr __p9k_wizard_columns=51
typeset -gr __p9k_wizard_lines=12
# Fewer than 47 columns will probably work. Haven't tried it.
typeset -gr __p9k_wizard_columns=47
# The bottleneck is ask_tails with nerd fonts. Everything else works fine with 12 lines.
typeset -gr __p9k_wizard_lines=14
typeset -gr __p9k_zd=${ZDOTDIR:-$HOME}
typeset -gr __p9k_zd_u=${${${(q)__p9k_zd}/#(#b)${(q)HOME}(|\/*)/'~'$match[1]}//\%/%%}
typeset -gr __p9k_zshrc=${${:-$__p9k_zd/.zshrc}:A}
@@ -16,13 +18,22 @@ function _p9k_can_configure() {
typeset -g __p9k_cfg_path=${__p9k_cfg_path_o:A}
typeset -g __p9k_cfg_path_u=${${${(q)__p9k_cfg_path_o}/#(#b)${(q)HOME}(|\/*)/'~'$match[1]}//\%/%%}
{
[[ -o multibyte ]] || { $0_error "multibyte option is not set"; return 1 }
[[ -e $__p9k_zd ]] || { $0_error "$__p9k_zd_u does not exist"; return 1 }
[[ -d $__p9k_zd ]] || { $0_error "$__p9k_zd_u is not a directory"; return 1 }
[[ -w $__p9k_zd ]] || { $0_error "$__p9k_zd_u is not writable"; return 1 }
[[ ! -d $__p9k_cfg_path ]] || { $0_error "$__p9k_cfg_path_u is a directory"; return 1 }
[[ ! -d $__p9k_zshrc ]] || { $0_error "$__p9k_zshrc_u is a directory"; return 1 }
local dir=${__p9k_cfg_path:h}
while [[ ! -e $dir && $dir != ${dir:h} ]]; do dir=${dir:h}; done
if [[ ! -d $dir ]]; then
$0_error "cannot create $__p9k_cfg_path_u because ${dir//\%/%%} is not a directory"
return 1
fi
if [[ ! -w $dir ]]; then
$0_error "cannot create $__p9k_cfg_path_u because ${dir//\%/%%} is readonly"
return 1
fi
[[ ! -e $__p9k_cfg_path || -f $__p9k_cfg_path || -h $__p9k_cfg_path ]] || {
$0_error "$__p9k_cfg_path_u is a special file"
return 1
@@ -44,10 +55,13 @@ function _p9k_can_configure() {
done
(( LINES >= __p9k_wizard_lines && COLUMNS >= __p9k_wizard_columns )) || {
$0_error "terminal size too small; must be at least $__p9k_wizard_columns x $__p9k_wizard_lines"
$0_error "terminal size too small; must be at least $__p9k_wizard_columns columns by $__p9k_wizard_lines lines"
return 1
}
[[ -t 0 && -t 1 ]] || { $0_error "no TTY"; return 2 }
[[ -t 0 && -t 1 ]] || {
$0_error "no TTY"
return 2
}
return 0
} always {
unfunction $0_error
@@ -59,11 +73,11 @@ function p9k_configure() {
_p9k_can_configure || return
(
set -- -f
source $__p9k_root_dir/internal/wizard.zsh
builtin source $__p9k_root_dir/internal/wizard.zsh
)
local ret=$?
case $ret in
0) source $__p9k_cfg_path; _p9k__force_must_init=1;;
0) builtin source $__p9k_cfg_path; _p9k__force_must_init=1;;
69) return 0;;
*) return $ret;;
esac

View File

@@ -1,6 +1,7 @@
typeset -gA icons
function _p9k_init_icons() {
[[ -n ${POWERLEVEL9K_MODE-} || ${langinfo[CODESET]} == (utf|UTF)(-|)8 ]] || local POWERLEVEL9K_MODE=ascii
[[ $_p9k__icon_mode == $POWERLEVEL9K_MODE/$POWERLEVEL9K_LEGACY_ICON_SPACING/$POWERLEVEL9K_ICON_PADDING ]] && return
typeset -g _p9k__icon_mode=$POWERLEVEL9K_MODE/$POWERLEVEL9K_LEGACY_ICON_SPACING/$POWERLEVEL9K_ICON_PADDING
@@ -51,6 +52,7 @@ function _p9k_init_icons() {
LINUX_DEBIAN_ICON '\uE271'$s # 
LINUX_RASPBIAN_ICON '\uE271'$s # 
LINUX_UBUNTU_ICON '\uE271'$s # 
LINUX_KALI_ICON '\uE271'$s # 
LINUX_CENTOS_ICON '\uE271'$s # 
LINUX_COREOS_ICON '\uE271'$s # 
LINUX_ELEMENTARY_ICON '\uE271'$s # 
@@ -67,6 +69,14 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON '\uE271'$s # 
LINUX_SLACKWARE_ICON '\uE271'$s # 
LINUX_VOID_ICON '\uE271'$s # 
LINUX_ARTIX_ICON '\uE271'$s # 
LINUX_RHEL_ICON '\uE271'$s # 
LINUX_AMZN_ICON '\uE271'$s # 
LINUX_ENDEAVOUROS_ICON '\uE271'$s # 
LINUX_ROCKY_ICON '\uE271'$s # 
LINUX_ALMALINUX_ICON '\uE271'$s # 
LINUX_GUIX_ICON '\uE271'$s # 
LINUX_NEON_ICON '\uE271'$s # 
SUNOS_ICON '\U1F31E'$q # 🌞
HOME_ICON '\uE12C'$s # 
HOME_SUB_ICON '\uE18D'$s # 
@@ -97,10 +107,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON '\uE20E ' #
VCS_GIT_BITBUCKET_ICON '\uE20E ' #
VCS_GIT_GITLAB_ICON '\uE20E ' #
VCS_GIT_AZURE_ICON '\uE20E ' #
VCS_GIT_ARCHLINUX_ICON '\uE20E ' #
VCS_GIT_CODEBERG_ICON '\uE20E ' #
VCS_GIT_DEBIAN_ICON '\uE20E ' #
VCS_GIT_FREEBSD_ICON '\uE20E ' #
VCS_GIT_FREEDESKTOP_ICON '\uE20E ' #
VCS_GIT_GNOME_ICON '\uE20E ' #
VCS_GIT_GNU_ICON '\uE20E ' #
VCS_GIT_KDE_ICON '\uE20E ' #
VCS_GIT_LINUX_ICON '\uE20E ' #
VCS_GIT_GITEA_ICON '\uE20E ' #
VCS_GIT_SOURCEHUT_ICON '\uE20E ' #
VCS_HG_ICON '\uE1C3 ' # 
VCS_SVN_ICON 'svn'$q
RUST_ICON 'R'
PYTHON_ICON '\uE63C'$s #  (doesn't always work)
CHEZMOI_ICON '\uE12C'$s # 
SWIFT_ICON 'Swift'
GO_ICON 'Go'
GOLANG_ICON 'Go'
@@ -117,6 +140,7 @@ function _p9k_init_icons() {
JAVA_ICON '\U2615' # ☕︎
LARAVEL_ICON ''
RANGER_ICON '\u2B50' # ⭐
YAZI_ICON '\u2B50' # ⭐
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON 'vim'
TERRAFORM_ICON 'tf'
@@ -130,6 +154,8 @@ function _p9k_init_icons() {
LUA_ICON 'lua'
PERL_ICON 'perl'
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON 'tw'
TASKWARRIOR_ICON 'task'
NIX_SHELL_ICON 'nix'
@@ -140,6 +166,11 @@ function _p9k_init_icons() {
PHP_ICON 'php'
HASKELL_ICON 'hs'
PACKAGE_ICON 'pkg'
JULIA_ICON 'jl'
SCALA_ICON 'scala'
TOOLBOX_ICON '\u2B22' # ⬢
ARCH_ICON 'arch'
HISTORY_ICON 'hist'
)
;;
'awesome-fontconfig')
@@ -180,6 +211,7 @@ function _p9k_init_icons() {
LINUX_DEBIAN_ICON '\uF17C'$s # 
LINUX_RASPBIAN_ICON '\uF17C'$s # 
LINUX_UBUNTU_ICON '\uF17C'$s # 
LINUX_KALI_ICON '\uF17C'$s # 
LINUX_CENTOS_ICON '\uF17C'$s # 
LINUX_COREOS_ICON '\uF17C'$s # 
LINUX_ELEMENTARY_ICON '\uF17C'$s # 
@@ -196,6 +228,14 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON '\uF17C'$s # 
LINUX_SLACKWARE_ICON '\uF17C'$s # 
LINUX_VOID_ICON '\uF17C'$s # 
LINUX_ARTIX_ICON '\uF17C'$s # 
LINUX_RHEL_ICON '\uF17C'$s # 
LINUX_AMZN_ICON '\uF17C'$s # 
LINUX_ENDEAVOUROS_ICON '\uF17C'$s # 
LINUX_ROCKY_ICON '\uF17C'$s # 
LINUX_ALMALINUX_ICON '\uF17C'$s # 
LINUX_GUIX_ICON '\uF17C'$s # 
LINUX_NEON_ICON '\uF17C'$s # 
SUNOS_ICON '\uF185 ' # 
HOME_ICON '\uF015'$s # 
HOME_SUB_ICON '\uF07C'$s # 
@@ -222,10 +262,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON '\uF113 ' # 
VCS_GIT_BITBUCKET_ICON '\uF171 ' # 
VCS_GIT_GITLAB_ICON '\uF296 ' # 
VCS_GIT_AZURE_ICON '\u2601 ' # ☁
VCS_GIT_ARCHLINUX_ICON '\uF1D3 ' # 
VCS_GIT_CODEBERG_ICON '\uF1D3 ' # 
VCS_GIT_DEBIAN_ICON '\uF1D3 ' # 
VCS_GIT_FREEBSD_ICON '\uF1D3 ' # 
VCS_GIT_FREEDESKTOP_ICON '\uF1D3 ' # 
VCS_GIT_GNOME_ICON '\uF1D3 ' # 
VCS_GIT_GNU_ICON '\uF1D3 ' # 
VCS_GIT_KDE_ICON '\uF1D3 ' # 
VCS_GIT_LINUX_ICON '\uF1D3 ' # 
VCS_GIT_GITEA_ICON '\uF1D3 ' # 
VCS_GIT_SOURCEHUT_ICON '\uF1D3 ' # 
VCS_HG_ICON '\uF0C3 ' # 
VCS_SVN_ICON 'svn'$q
RUST_ICON '\uE6A8' # 
PYTHON_ICON '\uE63C'$s # 
CHEZMOI_ICON '\uF015'$s # 
SWIFT_ICON 'Swift'
GO_ICON 'Go'
GOLANG_ICON 'Go'
@@ -234,7 +287,7 @@ function _p9k_init_icons() {
NORDVPN_ICON '\UF023' # 
EXECUTION_TIME_ICON '\uF253'$s # 
SSH_ICON 'ssh'
VPN_ICON '\uF023'
VPN_ICON '\uF023'
KUBERNETES_ICON '\U2388' # ⎈
DROPBOX_ICON '\UF16B'$s # 
DATE_ICON '\uF073 ' # 
@@ -242,6 +295,7 @@ function _p9k_init_icons() {
JAVA_ICON '\U2615' # ☕︎
LARAVEL_ICON ''
RANGER_ICON '\u2B50' # ⭐
YAZI_ICON '\u2B50' # ⭐
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON 'vim'
TERRAFORM_ICON 'tf'
@@ -255,6 +309,8 @@ function _p9k_init_icons() {
LUA_ICON 'lua'
PERL_ICON 'perl'
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON 'tw'
TASKWARRIOR_ICON 'task'
NIX_SHELL_ICON 'nix'
@@ -265,6 +321,11 @@ function _p9k_init_icons() {
PHP_ICON 'php'
HASKELL_ICON 'hs'
PACKAGE_ICON 'pkg'
JULIA_ICON 'jl'
SCALA_ICON 'scala'
TOOLBOX_ICON '\u2B22' # ⬢
ARCH_ICON 'arch'
HISTORY_ICON 'hist'
)
;;
'awesome-mapped-fontconfig')
@@ -310,6 +371,7 @@ function _p9k_init_icons() {
LINUX_DEBIAN_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_RASPBIAN_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_UBUNTU_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_KALI_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_CENTOS_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_COREOS_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_ELEMENTARY_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
@@ -326,6 +388,14 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_SLACKWARE_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_VOID_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_ARTIX_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_RHEL_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_AMZN_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_ENDEAVOUROS_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_ROCKY_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_ALMALINUX_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_GUIX_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
LINUX_NEON_ICON "${CODEPOINT_OF_AWESOME_LINUX:+\\u$CODEPOINT_OF_AWESOME_LINUX$s}"
SUNOS_ICON "${CODEPOINT_OF_AWESOME_SUN_O:+\\u$CODEPOINT_OF_AWESOME_SUN_O }"
HOME_ICON "${CODEPOINT_OF_AWESOME_HOME:+\\u$CODEPOINT_OF_AWESOME_HOME$s}"
HOME_SUB_ICON "${CODEPOINT_OF_AWESOME_FOLDER_OPEN:+\\u$CODEPOINT_OF_AWESOME_FOLDER_OPEN$s}"
@@ -352,10 +422,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON "${CODEPOINT_OF_AWESOME_GITHUB_ALT:+\\u$CODEPOINT_OF_AWESOME_GITHUB_ALT }"
VCS_GIT_BITBUCKET_ICON "${CODEPOINT_OF_AWESOME_BITBUCKET:+\\u$CODEPOINT_OF_AWESOME_BITBUCKET }"
VCS_GIT_GITLAB_ICON "${CODEPOINT_OF_AWESOME_GITLAB:+\\u$CODEPOINT_OF_AWESOME_GITLAB }"
VCS_GIT_AZURE_ICON '\u2601 ' # ☁
VCS_GIT_ARCHLINUX_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_CODEBERG_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_DEBIAN_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_FREEBSD_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_FREEDESKTOP_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_GNOME_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_GNU_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_KDE_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_LINUX_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_GITEA_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_GIT_SOURCEHUT_ICON "${CODEPOINT_OF_AWESOME_GIT:+\\u$CODEPOINT_OF_AWESOME_GIT }"
VCS_HG_ICON "${CODEPOINT_OF_AWESOME_FLASK:+\\u$CODEPOINT_OF_AWESOME_FLASK }"
VCS_SVN_ICON 'svn'$q
RUST_ICON '\uE6A8' # 
PYTHON_ICON '\U1F40D' # 🐍
CHEZMOI_ICON "${CODEPOINT_OF_AWESOME_HOME:+\\u$CODEPOINT_OF_AWESOME_HOME$s}"
SWIFT_ICON '\uE655'$s # 
PUBLIC_IP_ICON "${CODEPOINT_OF_AWESOME_GLOBE:+\\u$CODEPOINT_OF_AWESOME_GLOBE$s}"
LOCK_ICON "${CODEPOINT_OF_AWESOME_LOCK:+\\u$CODEPOINT_OF_AWESOME_LOCK}"
@@ -370,6 +453,7 @@ function _p9k_init_icons() {
JAVA_ICON '\U2615' # ☕︎
LARAVEL_ICON ''
RANGER_ICON '\u2B50' # ⭐
YAZI_ICON '\u2B50' # ⭐
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON 'vim'
TERRAFORM_ICON 'tf'
@@ -383,6 +467,8 @@ function _p9k_init_icons() {
LUA_ICON 'lua'
PERL_ICON 'perl'
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON 'tw'
TASKWARRIOR_ICON 'task'
NIX_SHELL_ICON 'nix'
@@ -393,6 +479,172 @@ function _p9k_init_icons() {
PHP_ICON 'php'
HASKELL_ICON 'hs'
PACKAGE_ICON 'pkg'
JULIA_ICON 'jl'
SCALA_ICON 'scala'
TOOLBOX_ICON '\u2B22' # ⬢
ARCH_ICON 'arch'
HISTORY_ICON 'hist'
)
;;
'nerdfont-v3')
# In this version of Nerd Fonts the Material icons are mapped to U+F0001-U+F19C3.
# The font may also have Material icons in the old range of U+F500-U+FD46 but
# powerlevel10k won't rely on them.
icons=(
RULER_CHAR '\u2500' # ─
LEFT_SEGMENT_SEPARATOR '\uE0B0' # 
RIGHT_SEGMENT_SEPARATOR '\uE0B2' # 
LEFT_SEGMENT_END_SEPARATOR ' ' #
LEFT_SUBSEGMENT_SEPARATOR '\uE0B1' # 
RIGHT_SUBSEGMENT_SEPARATOR '\uE0B3' # 
CARRIAGE_RETURN_ICON '\u21B5' # ↵
ROOT_ICON '\uE614'$q # 
SUDO_ICON '\uF09C'$s # 
RUBY_ICON '\uF219 ' # 
AWS_ICON '\uF270'$s # 
AWS_EB_ICON '\UF1BD'$q$q # 
BACKGROUND_JOBS_ICON '\uF013 ' # 
TEST_ICON '\uF188'$s # 
TODO_ICON '\u2611' # ☑
BATTERY_ICON '\UF240 ' # 
DISK_ICON '\uF0A0'$s # 
OK_ICON '\uF00C'$s # 
FAIL_ICON '\uF00D' # 
SYMFONY_ICON '\uE757' # 
NODE_ICON '\uE617 ' # 
NODEJS_ICON '\uE617 ' # 
MULTILINE_FIRST_PROMPT_PREFIX '\u256D\U2500' # ╭─
MULTILINE_NEWLINE_PROMPT_PREFIX '\u251C\U2500' # ├─
MULTILINE_LAST_PROMPT_PREFIX '\u2570\U2500 ' # ╰─
APPLE_ICON '\uF179' # 
WINDOWS_ICON '\uF17A'$s # 
FREEBSD_ICON '\UF30C ' # 
ANDROID_ICON '\uF17B' # 
LINUX_ARCH_ICON '\uF303' # 
LINUX_CENTOS_ICON '\uF304'$s # 
LINUX_COREOS_ICON '\uF305'$s # 
LINUX_DEBIAN_ICON '\uF306' # 
LINUX_RASPBIAN_ICON '\uF315' # 
LINUX_ELEMENTARY_ICON '\uF309'$s # 
LINUX_FEDORA_ICON '\uF30a'$s # 
LINUX_GENTOO_ICON '\uF30d'$s # 
LINUX_MAGEIA_ICON '\uF310' # 
LINUX_MINT_ICON '\uF30e'$s # 
LINUX_NIXOS_ICON '\uF313'$s # 
LINUX_MANJARO_ICON '\uF312'$s # 
LINUX_DEVUAN_ICON '\uF307'$s # 
LINUX_ALPINE_ICON '\uF300'$s # 
LINUX_AOSC_ICON '\uF301'$s # 
LINUX_OPENSUSE_ICON '\uF314'$s # 
LINUX_SABAYON_ICON '\uF317'$s # 
LINUX_SLACKWARE_ICON '\uF319'$s # 
LINUX_VOID_ICON '\UF32E'$s # 
LINUX_ARTIX_ICON '\UF31F'$s # 
LINUX_UBUNTU_ICON '\uF31b'$s # 
LINUX_KALI_ICON '\uF327'$s # 
LINUX_RHEL_ICON '\UF111B'$s # 󱄛
LINUX_AMZN_ICON '\uF270'$s # 
LINUX_ENDEAVOUROS_ICON '\UF322'$s # 
LINUX_ROCKY_ICON '\UF32B'$s # 
LINUX_ALMALINUX_ICON '\UF31D'$s # 
LINUX_GUIX_ICON '\UF325'$s # 
LINUX_NEON_ICON '\uF17C' # 
LINUX_ICON '\uF17C' # 
SUNOS_ICON '\uF185 ' # 
HOME_ICON '\uF015'$s # 
HOME_SUB_ICON '\uF07C'$s # 
FOLDER_ICON '\uF115'$s # 
ETC_ICON '\uF013'$s # 
NETWORK_ICON '\UF0378'$s # 󰍸
LOAD_ICON '\uF080 ' # 
SWAP_ICON '\uF464'$s # 
RAM_ICON '\uF0E4'$s # 
SERVER_ICON '\uF0AE'$s # 
VCS_UNTRACKED_ICON '\uF059'$s # 
VCS_UNSTAGED_ICON '\uF06A'$s # 
VCS_STAGED_ICON '\uF055'$s # 
VCS_STASH_ICON '\uF01C ' # 
VCS_INCOMING_CHANGES_ICON '\uF01A ' # 
VCS_OUTGOING_CHANGES_ICON '\uF01B ' # 
VCS_TAG_ICON '\uF02B ' # 
VCS_BOOKMARK_ICON '\uF461 ' # 
VCS_COMMIT_ICON '\uE729 ' # 
VCS_BRANCH_ICON '\uF126 ' # 
VCS_REMOTE_BRANCH_ICON '\uE728 ' # 
VCS_LOADING_ICON '' #
VCS_GIT_ICON '\uF1D3 ' # 
VCS_GIT_GITHUB_ICON '\uF113 ' # 
VCS_GIT_BITBUCKET_ICON '\uE703 ' # 
VCS_GIT_GITLAB_ICON '\uF296 ' # 
VCS_GIT_AZURE_ICON '\uEBE8 ' # 
VCS_GIT_ARCHLINUX_ICON '\uF303 ' # 
# v3.1 has \uF330.
VCS_GIT_CODEBERG_ICON '\uF1D3 ' # 
VCS_GIT_DEBIAN_ICON '\uF306 ' # 
VCS_GIT_FREEBSD_ICON '\UF30C ' # 
# v3.1 has \uF360.
VCS_GIT_FREEDESKTOP_ICON '\uF296 ' # 
# v3.1 has \uF361.
VCS_GIT_GNOME_ICON '\uF296 ' # 
VCS_GIT_GNU_ICON '\uE779 ' # 
# v3.1 has \uF332.
VCS_GIT_KDE_ICON '\uF296 ' # 
VCS_GIT_LINUX_ICON '\uF17C ' # 
# v3.1 has \uF339.
VCS_GIT_GITEA_ICON '\uF1D3 ' # 
VCS_GIT_SOURCEHUT_ICON '\uF1DB ' # 
VCS_HG_ICON '\uF0C3 ' # 
VCS_SVN_ICON '\uE72D'$q # 
RUST_ICON '\uE7A8'$q # 
PYTHON_ICON '\UE73C ' # 
CHEZMOI_ICON '\uF015'$s # 
SWIFT_ICON '\uE755' # 
GO_ICON '\uE626' # 
GOLANG_ICON '\uE626' # 
PUBLIC_IP_ICON '\UF0AC'$s # 
LOCK_ICON '\UF023' # 
NORDVPN_ICON '\UF023' # 
EXECUTION_TIME_ICON '\uF252'$s # 
SSH_ICON '\uF489'$s # 
VPN_ICON '\UF023' # 
KUBERNETES_ICON '\UF10FE' # 󱃾
DROPBOX_ICON '\UF16B'$s # 
DATE_ICON '\uF073 ' # 
TIME_ICON '\uF017 ' # 
JAVA_ICON '\uE738' # 
LARAVEL_ICON '\ue73f'$q # 
RANGER_ICON '\uF00b ' # 
YAZI_ICON '\uF00b ' # 
MIDNIGHT_COMMANDER_ICON 'mc' # mc
VIM_ICON '\uE62B' # 
TERRAFORM_ICON '\uF1BB ' # 
PROXY_ICON '\u2194' # ↔
DOTNET_ICON '\uE77F' # 
DOTNET_CORE_ICON '\uE77F' # 
AZURE_ICON '\uEBD8 ' # 
DIRENV_ICON '\u25BC' # ▼
FLUTTER_ICON 'F' # F
GCLOUD_ICON '\UF02AD' # 󰊭
LUA_ICON '\uE620' # 
PERL_ICON '\uE769' # 
NNN_ICON 'nnn' # nnn
LF_ICON 'lf' # lf
XPLR_ICON 'xplr' # xplr
TIMEWARRIOR_ICON '\uF49B' # 
TASKWARRIOR_ICON '\uF4A0 ' # 
NIX_SHELL_ICON '\uF313 ' # 
WIFI_ICON '\uF1EB ' # 
ERLANG_ICON '\uE7B1 ' # 
ELIXIR_ICON '\uE62D' # 
POSTGRES_ICON '\uE76E' # 
PHP_ICON '\uE608' # 
HASKELL_ICON '\uE61F' # 
PACKAGE_ICON '\UF03D7' # 󰏗
JULIA_ICON '\uE624' # 
SCALA_ICON '\uE737' # 
TOOLBOX_ICON '\uE20F'$s # 
ARCH_ICON '\uE266' # 
HISTORY_ICON '\uF1DA'$s # 
)
;;
'nerdfont-complete'|'nerdfont-fontconfig')
@@ -448,14 +700,23 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON '\uF317'$s # 
LINUX_SLACKWARE_ICON '\uF319'$s # 
LINUX_VOID_ICON '\uF17C' # 
LINUX_ARTIX_ICON '\uF17C' # 
LINUX_UBUNTU_ICON '\uF31b'$s # 
LINUX_KALI_ICON '\uF17C' # 
LINUX_RHEL_ICON '\uF316'$s # 
LINUX_AMZN_ICON '\uF270'$s # 
LINUX_ENDEAVOUROS_ICON '\uF17C' # 
LINUX_ROCKY_ICON '\uF17C' # 
LINUX_ALMALINUX_ICON '\uF17C' # 
LINUX_GUIX_ICON '\uF325'$s # 
LINUX_NEON_ICON '\uF17C' # 
LINUX_ICON '\uF17C' # 
SUNOS_ICON '\uF185 ' # 
HOME_ICON '\uF015'$s # 
HOME_SUB_ICON '\uF07C'$s # 
FOLDER_ICON '\uF115'$s # 
ETC_ICON '\uF013'$s # 
NETWORK_ICON '\uFBF1'$s #
NETWORK_ICON '\uF50D'$s #
LOAD_ICON '\uF080 ' # 
SWAP_ICON '\uF464'$s # 
RAM_ICON '\uF0E4'$s # 
@@ -476,10 +737,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON '\uF113 ' # 
VCS_GIT_BITBUCKET_ICON '\uE703 ' # 
VCS_GIT_GITLAB_ICON '\uF296 ' # 
VCS_GIT_AZURE_ICON '\uFD03 ' # ﴃ
VCS_GIT_ARCHLINUX_ICON '\uF303 ' # 
VCS_GIT_CODEBERG_ICON '\uF1D3 ' # 
VCS_GIT_DEBIAN_ICON '\uF306 ' # 
VCS_GIT_FREEBSD_ICON '\UF30C ' # 
VCS_GIT_FREEDESKTOP_ICON '\uF296 ' # 
VCS_GIT_GNOME_ICON '\uF296 ' # 
VCS_GIT_GNU_ICON '\uE779 ' # 
VCS_GIT_KDE_ICON '\uF296 ' # 
VCS_GIT_LINUX_ICON '\uF17C ' # 
VCS_GIT_GITEA_ICON '\uF1D3 ' # 
VCS_GIT_SOURCEHUT_ICON '\uF1DB ' # 
VCS_HG_ICON '\uF0C3 ' # 
VCS_SVN_ICON '\uE72D'$q # 
RUST_ICON '\uE7A8'$q # 
PYTHON_ICON '\UE73C ' # 
CHEZMOI_ICON '\uF015'$s # 
SWIFT_ICON '\uE755' # 
GO_ICON '\uE626' # 
GOLANG_ICON '\uE626' # 
@@ -496,6 +770,7 @@ function _p9k_init_icons() {
JAVA_ICON '\uE738' # 
LARAVEL_ICON '\ue73f'$q # 
RANGER_ICON '\uF00b ' # 
YAZI_ICON '\uF00b ' # 
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON '\uE62B' # 
TERRAFORM_ICON '\uF1BB ' # 
@@ -509,6 +784,8 @@ function _p9k_init_icons() {
LUA_ICON '\uE620' # 
PERL_ICON '\uE769' # 
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON '\uF49B' # 
TASKWARRIOR_ICON '\uF4A0 ' # 
NIX_SHELL_ICON '\uF313 ' # 
@@ -519,6 +796,11 @@ function _p9k_init_icons() {
PHP_ICON '\uE608' # 
HASKELL_ICON '\uE61F' # 
PACKAGE_ICON '\uF8D6' # 
JULIA_ICON '\uE624' # 
SCALA_ICON '\uE737' # 
TOOLBOX_ICON '\uE20F'$s # 
ARCH_ICON '\uE266' # 
HISTORY_ICON '\uF1DA'$s # 
)
;;
ascii)
@@ -557,6 +839,7 @@ function _p9k_init_icons() {
LINUX_DEBIAN_ICON 'debian'
LINUX_RASPBIAN_ICON 'pi'
LINUX_UBUNTU_ICON 'ubuntu'
LINUX_KALI_ICON 'kali'
LINUX_CENTOS_ICON 'centos'
LINUX_COREOS_ICON 'coreos'
LINUX_ELEMENTARY_ICON 'elementary'
@@ -573,6 +856,14 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON 'sabayon'
LINUX_SLACKWARE_ICON 'slack'
LINUX_VOID_ICON 'void'
LINUX_ARTIX_ICON 'artix'
LINUX_RHEL_ICON 'rhel'
LINUX_AMZN_ICON 'amzn'
LINUX_ENDEAVOUROS_ICON 'edvos'
LINUX_ROCKY_ICON 'rocky'
LINUX_ALMALINUX_ICON 'alma'
LINUX_GUIX_ICON 'guix'
LINUX_NEON_ICON 'neon'
SUNOS_ICON 'sunos'
HOME_ICON ''
HOME_SUB_ICON ''
@@ -599,10 +890,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON ''
VCS_GIT_BITBUCKET_ICON ''
VCS_GIT_GITLAB_ICON ''
VCS_GIT_AZURE_ICON ''
VCS_GIT_ARCHLINUX_ICON ''
VCS_GIT_CODEBERG_ICON ''
VCS_GIT_DEBIAN_ICON ''
VCS_GIT_FREEBSD_ICON ''
VCS_GIT_FREEDESKTOP_ICON ''
VCS_GIT_GNOME_ICON ''
VCS_GIT_GNU_ICON ''
VCS_GIT_KDE_ICON ''
VCS_GIT_LINUX_ICON ''
VCS_GIT_GITEA_ICON ''
VCS_GIT_SOURCEHUT_ICON ''
VCS_HG_ICON ''
VCS_SVN_ICON ''
RUST_ICON 'rust'
PYTHON_ICON 'py'
CHEZMOI_ICON 'chezmoi'
SWIFT_ICON 'swift'
GO_ICON 'go'
GOLANG_ICON 'go'
@@ -619,6 +923,7 @@ function _p9k_init_icons() {
JAVA_ICON 'java'
LARAVEL_ICON ''
RANGER_ICON 'ranger'
YAZI_ICON 'yazi'
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON 'vim'
TERRAFORM_ICON 'tf'
@@ -632,6 +937,8 @@ function _p9k_init_icons() {
LUA_ICON 'lua'
PERL_ICON 'perl'
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON 'tw'
TASKWARRIOR_ICON 'task'
NIX_SHELL_ICON 'nix'
@@ -642,6 +949,11 @@ function _p9k_init_icons() {
PHP_ICON 'php'
HASKELL_ICON 'hs'
PACKAGE_ICON 'pkg'
JULIA_ICON 'jl'
SCALA_ICON 'scala'
TOOLBOX_ICON 'toolbox'
ARCH_ICON 'arch'
HISTORY_ICON 'hist'
)
;;
*)
@@ -664,7 +976,7 @@ function _p9k_init_icons() {
TEST_ICON ''
TODO_ICON '\u2206' # ∆
BATTERY_ICON '\U1F50B' # 🔋
DISK_ICON 'hdd'
DISK_ICON 'hdd'
OK_ICON '\u2714' # ✔
FAIL_ICON '\u2718' # ✘
SYMFONY_ICON 'SF'
@@ -682,6 +994,7 @@ function _p9k_init_icons() {
LINUX_DEBIAN_ICON 'Deb'
LINUX_RASPBIAN_ICON 'RPi'
LINUX_UBUNTU_ICON 'Ubu'
LINUX_KALI_ICON 'Kal'
LINUX_CENTOS_ICON 'Cen'
LINUX_COREOS_ICON 'Cor'
LINUX_ELEMENTARY_ICON 'Elm'
@@ -698,6 +1011,14 @@ function _p9k_init_icons() {
LINUX_SABAYON_ICON 'Sab'
LINUX_SLACKWARE_ICON 'Sla'
LINUX_VOID_ICON 'Vo'
LINUX_ARTIX_ICON 'Art'
LINUX_RHEL_ICON 'RH'
LINUX_AMZN_ICON 'Amzn'
LINUX_ENDEAVOUROS_ICON 'Edv'
LINUX_ROCKY_ICON 'Roc'
LINUX_ALMALINUX_ICON 'Alma'
LINUX_GUIX_ICON 'Guix'
LINUX_NEON_ICON 'Neon'
SUNOS_ICON 'Sun'
HOME_ICON ''
HOME_SUB_ICON ''
@@ -724,10 +1045,23 @@ function _p9k_init_icons() {
VCS_GIT_GITHUB_ICON ''
VCS_GIT_BITBUCKET_ICON ''
VCS_GIT_GITLAB_ICON ''
VCS_GIT_AZURE_ICON ''
VCS_GIT_ARCHLINUX_ICON ''
VCS_GIT_CODEBERG_ICON ''
VCS_GIT_DEBIAN_ICON ''
VCS_GIT_FREEBSD_ICON ''
VCS_GIT_FREEDESKTOP_ICON ''
VCS_GIT_GNOME_ICON ''
VCS_GIT_GNU_ICON ''
VCS_GIT_KDE_ICON ''
VCS_GIT_LINUX_ICON ''
VCS_GIT_GITEA_ICON ''
VCS_GIT_SOURCEHUT_ICON ''
VCS_HG_ICON ''
VCS_SVN_ICON ''
RUST_ICON 'R'
PYTHON_ICON 'Py'
CHEZMOI_ICON 'Chez'
SWIFT_ICON 'Swift'
GO_ICON 'Go'
GOLANG_ICON 'Go'
@@ -744,6 +1078,7 @@ function _p9k_init_icons() {
JAVA_ICON '\U2615' # ☕︎
LARAVEL_ICON ''
RANGER_ICON '\u2B50' # ⭐
YAZI_ICON '\u2B50' # ⭐
MIDNIGHT_COMMANDER_ICON 'mc'
VIM_ICON 'vim'
TERRAFORM_ICON 'tf'
@@ -757,6 +1092,8 @@ function _p9k_init_icons() {
LUA_ICON 'lua'
PERL_ICON 'perl'
NNN_ICON 'nnn'
LF_ICON 'lf'
XPLR_ICON 'xplr'
TIMEWARRIOR_ICON 'tw'
TASKWARRIOR_ICON 'task'
NIX_SHELL_ICON 'nix'
@@ -767,6 +1104,11 @@ function _p9k_init_icons() {
PHP_ICON 'php'
HASKELL_ICON 'hs'
PACKAGE_ICON 'pkg'
JULIA_ICON 'jl'
SCALA_ICON 'scala'
TOOLBOX_ICON '\u2B22' # ⬢
ARCH_ICON 'arch'
HISTORY_ICON 'hist'
)
;;
esac
@@ -791,6 +1133,7 @@ function _p9k_init_icons() {
icons[LEFT_SEGMENT_END_SEPARATOR]+=' '
icons[MULTILINE_LAST_PROMPT_PREFIX]+=' '
icons[VCS_TAG_ICON]+=' '
icons[VCS_BOOKMARK_ICON]+=' '
icons[VCS_COMMIT_ICON]+=' '
icons[VCS_BRANCH_ICON]+=' '
icons[VCS_REMOTE_BRANCH_ICON]+=' '

View File

@@ -76,16 +76,6 @@ emulate zsh -o prompt_percent -c 'print -P "%F{#ff0000}red%F{green}%B bold green
---
bug: open a new tab and hit ctrl-p. an empty line will appear before prompt.
---
take a look at https://github.com/skywind3000/z.lua. it claims to have fzf support. would be nice
if alt-down showed two groups -- one for subdirs and another for directory history (sorted by
frequency of use? by last use? three sections? more key bindings?).
---
add `p10k explain` that prints something like this:
```text
@@ -163,7 +153,8 @@ Prompt connection should have matching options.
Add `POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_MIRROR_SEPARATOR`. If set, left segments get separated with
`POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR` followed by `POWERLEVEL9K_LEFT_SEGMENT_MIRROR_SEPARATOR`.
Each is drawn without background. The first with the foreground of left segment, the second with
the background of right segment. To insert space in between, embed it in one of these parameters.
the background of right segment. To insert space in between, embed it in
`POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_MIRROR_SEPARATOR`.
`POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR` is unused.
---
@@ -177,41 +168,6 @@ two filled separators similar to heads and tail. Figure out how to present this
---
Get rid of `saved_columns` in the wizard and always present all options as if horizontal space was
unlimited. `print_prompt` should print something like this if prompt is too wide:
Terminal window too narrow to display prompt.
Make it wider and press ENTER to refresh.
Terminal dimensions will need to be checked more often.
Try getting rid of the "press ENTER" requirement by trapping `SIGWINCH`. Might need to run `read -k`
with timeout in a loop.
Print all text with a helper function that keeps track of the number of lines remaining on screen.
`print_prompt` will then be able to show a similar message for Terminal window being too short. This
makes sense only for two-line prompts. This is probably OK.
If `print_prompt` can be told in advance how many prompts we are going to display, it might be able
to insert or avoid inserting `\n` in between, depending on terminal height. There is one screen
where one prompt is a one-liner while another is a two-liner. This is fine because there are only
two options. `print_prompt` can assume that all options will use the current prompt height.
Don't use `print_prompt` directly. Create `ask_prompt` and use it like this:
```zsh
ask_prompt \
1 "No frame" "left_frame=0 right_frame=0" \
2 "Left frame" "left_frame=1 right_frame=0" \
...
```
There are two prompt questions that don't fit this pattern: `ask_empty_line` and
`ask_transient_prompt`. The first is easy to adapt (`print_prompt` can print prompt twice if
`empty_line=1`) but the second will probably have to be hand-coded.
---
Optimize auto-wizard check.
```text
@@ -234,3 +190,8 @@ Respect `POWERLEVEL9K_VCS_STASH_ICON` overrides but not anything with segment na
Define `POWERLEVEL9K_VCS_*` parameters in config templates for all symbols used in
`my_git_formatter`. Add missing entries to `icons`. Use `$P9K_ICON[...]` within `my_git_formatter`.
Add a screen to the wizard to choose between clear and circled icons.
---
Add a screen to the wizard asking whether to set `POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'`.
Show it only if there is `$HOME/.git`. By default this parameter should be commented out.

File diff suppressed because it is too large Load Diff

View File

@@ -102,7 +102,7 @@ typeset -grA __p9k_pb_term_skip=(
# Usage: _p9k_parse_buffer <buffer> [token-limit]
#
# Parses the specified command line buffer and pupulates array P9K_COMMANDS
# Parses the specified command line buffer and populates array P9K_COMMANDS
# with commands from it. Terminates early and returns 1 if there are more
# tokens than the specified limit.
#
@@ -152,7 +152,7 @@ function _p9k_parse_buffer() {
local -r var="\$$id|\${$id}|\"\$$id\"|\"\${$id}\""
local -i e ic c=${2:-'1 << 62'}
local skip n s r state cmd prev
local skip n s r state token cmd prev
local -a aln alp alf v
if [[ -o interactive_comments ]]; then

579
internal/wizard.zsh Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -89,12 +89,15 @@ function _p9k_worker_invoke() {
}
function _p9k_worker_cleanup() {
eval "$__p9k_intro"
# __p9k_intro bugs out here in some cases for some reason.
emulate -L zsh
[[ $_p9k__worker_shell_pid == $sysparams[pid] ]] && _p9k_worker_stop
return 0
}
function _p9k_worker_stop() {
# See comments in _p9k_worker_cleanup.
emulate -L zsh
add-zsh-hook -D zshexit _p9k_worker_cleanup
[[ -n $_p9k__worker_resp_fd ]] && zle -F $_p9k__worker_resp_fd
[[ -n $_p9k__worker_resp_fd ]] && exec {_p9k__worker_resp_fd}>&-
@@ -178,7 +181,13 @@ function _p9k_worker_start() {
setopt monitor || return
{
[[ -n $_p9k__worker_resp_fd ]] && return
_p9k__worker_file_prefix=${TMPDIR:-/tmp}/p10k.worker.$EUID.$sysparams[pid].$EPOCHSECONDS
if [[ -n "$TMPDIR" && ( ( -d "$TMPDIR" && -w "$TMPDIR" ) || ! ( -d /tmp && -w /tmp ) ) ]]; then
local tmpdir=$TMPDIR
else
local tmpdir=/tmp
fi
_p9k__worker_file_prefix=$tmpdir/p10k.worker.$EUID.$sysparams[pid].$EPOCHSECONDS
sysopen -r -o cloexec -u _p9k__worker_resp_fd <(
exec 0</dev/null
@@ -198,7 +207,7 @@ function _p9k_worker_start() {
while syswrite $'\x05'; do zselect -t 1000; done
zf_rm -f $_p9k__worker_file_prefix.fifo
kill -- -$_p9k_worker_pgid
} &
}
exec =true) || return
_p9k__worker_pid=$sysparams[procsubstpid]
zle -F $_p9k__worker_resp_fd _p9k_worker_receive

View File

@@ -22,7 +22,7 @@
# Leading spaces before `local` are important. Otherwise Antigen will remove `local` (!!!).
# __p9k_trapint is to work around bugs in zsh: https://www.zsh.org/mla/workers/2020/msg00612.html.
# Likewise for `trap ":"` instead of the plain `trap ""`.
typeset -gr __p9k_intro_base='emulate -L zsh -o no_hist_expand -o extended_glob -o no_prompt_bang -o prompt_percent -o no_prompt_subst -o no_aliases -o no_bg_nice -o typeset_silent
typeset -gr __p9k_intro_base='emulate -L zsh -o no_hist_expand -o extended_glob -o no_prompt_bang -o prompt_percent -o no_prompt_subst -o no_aliases -o no_bg_nice -o typeset_silent -o no_rematch_pcre
(( $+__p9k_trapped )) || { local -i __p9k_trapped; trap : INT; trap "trap ${(q)__p9k_trapint:--} INT" EXIT }
local -a match mbegin mend
local -i MBEGIN MEND OPTIND
@@ -57,7 +57,7 @@ function _p9k_init_locale() {
if [[ $__p9k_dump_file != $__p9k_instant_prompt_dump_file ]] && (( ! $+functions[_p9k_preinit] )) && source $__p9k_dump_file 2>/dev/null && (( $+functions[_p9k_preinit] )); then
_p9k_preinit
fi
typeset -gr __p9k_sourced=12
typeset -gr __p9k_sourced=13
if [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]]; then
if [[ -w $__p9k_root_dir && -w $__p9k_root_dir/internal && -w $__p9k_root_dir/gitstatus ]]; then
local f
@@ -74,7 +74,7 @@ function _p9k_init_locale() {
done
fi
fi
source $__p9k_root_dir/internal/p10k.zsh || true
builtin source $__p9k_root_dir/internal/p10k.zsh || true
}
(( $+__p9k_instant_prompt_active )) && unsetopt prompt_cr prompt_sp || setopt prompt_cr prompt_sp