2.7 KiB
My ZSH config
This is my daily driver for my shell, it's heavily customized and relies on a lot of ZSH features
It is enhanced by a few things which are submodules of this repo:
- Powerlevel10k
- zsh-autosuggestions
- zsh-synthax-highlighting
Some custom prompts depend on these binaries in your path:
- jq (for JSON parsing)
- sqlite (if using the youtube RSS plugin [depends on newsboat cache database])
- curl (for fetching external API data)
- busctl (for dbus interactions)
While i do attempt to make this usable widely, don't rely on it. If you want to use this and have it work as you want it, it's expected that you can read manual pages and know at least a bit of shell scripting.
These variables should be set in your .zshenv or your profiles/environment files
ZDOTDIR
This environment variable should be set to the root of your repository (usually ~/.config/zsh or ~/.zsh)
zstyles
:custom:preferences prompt
Because font support detection is a bit complicated, the prompt
variable in this zstyle allows you to manually toggle on a specific prompt (now only p9k is available)
:custom:prompts:weather location
This should be your location in the woeid
format. https://en.wikipedia.org/wiki/WOEID
The weather is fetched from MetaWeather (props to them for having a API that is authentication-free) every 12h. It is not updated live in the prompt because i don't really expect people to have their terminal open for 12h but it can be updated manually by deleting the disk cache stored at $CACHEPATH/weather
and unsetting the _cprompts_weather
variable in this specific order.
:custom:prompts:covid country
This is a country slug for your country. This is used in the covid_19()
prompt which shows you the daily actively infected people. It behaves the same as the weather one except that it is updated every 24h and is fetched from Covid19API which has a really nice JSON api which is completly free and requires no authentication.
:custom:prompts:mpv socket
This should be the location of the mpv socket that is available via the input-ipc-server
. It will check if the socket exists, and if it does it will use it.
NOTE: While this is fast, it has it's drawbacks. It currently relies on lots of assumptions and that should be understood. JSON parsing is done assuming that the title is a string and that the string has no special characters.
:custom:prompts:mail glob
This should be a glob pattern that would match any new mails. This works the best with the Mailbox format as every new mail is a file. mbox or spoolfiles may be supported in the distant future, but i don't plan to do that.