-
Notifications
You must be signed in to change notification settings - Fork 87
Plugins
PowerKit includes 45 native plugins plus support for external plugins that allow you to add custom content from shell commands.
# Enable plugins (comma-separated)
set -g @powerkit_plugins "datetime,battery,cpu,memory,hostname,git"Plugins for monitoring system resources and hardware status.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| battery | Battery level with charge state | All | pmset/upower |
| cpu | CPU usage with thresholds | All | sysctl/top |
| memory | Memory usage with thresholds | All | vm_stat/free |
| swap | Swap memory usage with thresholds | All | sysctl/vm_stat/proc |
| disk | Disk usage with thresholds | All | df |
| loadavg | System load average | All | uptime |
| uptime | System uptime | All | uptime |
| temperature | CPU temperature | macOS | powerkit-temperature |
| fan | Fan speed monitoring | All | hwmon/osx-cpu-temp |
| gpu | GPU usage and temperature | All | nvidia-smi/sysfs/powerkit-gpu |
| iops | Disk I/O operations | All | iostat |
| hostname | System hostname | All | - |
| volume | System volume level | macOS | osascript |
Plugins for network monitoring and connectivity status.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| netspeed | Upload/download speed | All | ifstat/netstat |
| wifi | WiFi SSID and signal strength | All | airport/nmcli |
| vpn | VPN connection status | All | tun/tap interfaces |
| ping | Network latency with thresholds | All | ping |
| external_ip | Public IP address | All | ipify API |
| ssh | SSH session indicator | All | - |
| weather | Weather from wttr.in | All | wttr.in API |
Plugins for media playback and audio control.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| nowplaying | Current music track | macOS | powerkit-nowplaying |
| audiodevices | Audio output device | macOS | SwitchAudioSource |
| camera | Camera usage indicator | macOS | lsof |
| microphone | Microphone mute status | macOS | powerkit-microphone |
| bluetooth | Bluetooth status and devices | All | blueutil/bluetoothctl |
| brightness | Screen brightness | Linux | sysfs/brightnessctl |
Plugins for development tools and services.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| git | Branch and modified files | All | git |
| github | Notifications, PRs, issues | All | gh CLI |
| gitlab | Merge requests, todos | All | glab CLI |
| bitbucket | Pull requests count | All | API |
| jira | Assigned issues count | All | API |
| kubernetes | Context and namespace | All | kubectl |
| terraform | Workspace indicator | All | terraform |
| cloud | Cloud provider profile | All | AWS/Azure/GCP |
| cloudstatus | Service status monitoring | All | status APIs |
| packages | Pending package updates | All | brew/apt/yum/pacman |
| chezmoi | Pending dotfile changes | All | chezmoi |
| yadm | yadm dotfile status | All | yadm |
Plugins for time management and productivity.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| datetime | Date/time with 15 format presets | All | - |
| timezones | Multi-timezone display | All | - |
| pomodoro | Timer with work/break phases | All | - |
| bitwarden | Vault lock status | All | bw CLI |
| smartkey | Custom environment variable display | All | - |
Plugins for financial data monitoring.
| Plugin | Description | Platform | Documentation |
|---|---|---|---|
| crypto | Cryptocurrency prices | All | CoinGecko API |
| stocks | Stock prices | All | Yahoo Finance API |
-
brightness- Screen brightness (sysfs/brightnessctl/light/xbacklight)
These plugins work on both macOS and Linux. On macOS, they require native binaries (downloaded on-demand):
| Plugin | macOS Backend | Linux Backend |
|---|---|---|
temperature |
powerkit-temperature | /sys/class/hwmon |
microphone |
powerkit-microphone | pactl/amixer |
nowplaying |
powerkit-nowplaying | playerctl |
gpu |
powerkit-gpu | nvidia-smi/sysfs |
These plugins use different tools on each platform:
| Plugin | macOS Backend | Linux Backend |
|---|---|---|
volume |
osascript | pactl/amixer |
camera |
lsof | /sys/class/video4linux |
audiodevices |
SwitchAudioSource | pactl |
fan |
osx-cpu-temp/iStats | hwmon/dell_smm/thinkpad |
bluetooth |
blueutil | bluetoothctl |
wifi |
airport | nmcli/iwconfig |
battery |
pmset | upower/sysfs |
swap |
sysctl/vm_stat | /proc/meminfo |
All other plugins work identically on both macOS and Linux.
External plugins allow you to add custom content to the status bar using shell commands. They integrate seamlessly with native plugins and support full theming.
external("icon"|"content"|"accent"|"accent_icon"|"ttl")| Parameter | Description | Example |
|---|---|---|
icon |
Nerd Font icon to display |
"", "", ""
|
content |
Static text or shell command |
"Hello", "$(whoami)", "#(date)"
|
accent |
Background color for content |
"info-base", "ok-base", "#7aa2f7"
|
accent_icon |
Background color for icon |
"info-base-lighter", "ok-base-lighter"
|
ttl |
Cache duration in seconds |
"60", "300", "0" (no cache) |
| Type | Syntax | Description |
|---|---|---|
| Static text | "Hello World" |
Displayed as-is |
| Command substitution | "$(command)" |
Executed by shell, cached |
| tmux format | "#(command)" |
Converted to $() internally |
You can use any of these color values:
-
Theme colors:
ok-base,info-base,warning-base,error-base,window-active-base -
Color variants:
ok-base-lighter,info-base-darker,window-active-base-lightest, etc. -
Hex colors:
"#7aa2f7","#bb9af7","#f7768e"
# Show current user with green background
external(""|"$(whoami)"|"ok-base"|"ok-base-lighter"|"3600")
# Show uptime with blue background
external(""|"$(uptime -p | sed 's/up //')"|"info-base"|"info-base-lighter"|"60")
# Static message with purple background
external(""|"Production"|"window-active-base"|"window-active-base-lighter"|"0")
# Git branch (alternative to git plugin)
external(""|"$(git branch --show-current 2>/dev/null || echo 'N/A')"|"warning-base"|"warning-base-lighter"|"30")
# Docker container count
external(""|"$(docker ps -q 2>/dev/null | wc -l | tr -d ' ')"|"info-base"|"info-base-lighter"|"30")
# Node.js version
external(""|"$(node -v 2>/dev/null || echo 'N/A')"|"ok-base"|"ok-base-lighter"|"3600")
# Current Kubernetes namespace
external(""|"$(kubectl config view --minify -o jsonpath='{..namespace}' 2>/dev/null)"|"info-base"|"info-base-lighter"|"60")External plugins are added to @powerkit_plugins alongside native plugins:
# Mix native and external plugins
set -g @powerkit_plugins "cpu,memory,external(\"\"|\"$(hostname -s)\"|\"info-base\"|\"info-base-lighter\"|\"3600\"),git"
# Multiple external plugins
set -g @powerkit_plugins "datetime,external(\"\"|\"$(whoami)\"|\"ok-base\"|\"ok-base-lighter\"|\"3600\"),external(\"\"|\"$(uptime -p)\"|\"info-base\"|\"info-base-lighter\"|\"60\"),hostname"-
Use appropriate TTL: For static info like hostname, use high TTL (3600+). For dynamic data, use lower TTL (30-60).
-
Test commands first: Run your commands in terminal to ensure they work before adding to config.
-
Handle errors: Use
|| echo 'fallback'to provide fallback values when commands fail. -
Keep it short: Status bar space is limited. Truncate long outputs in your commands.
-
Escape quotes: Use
\"for quotes inside the external plugin definition.
Each native plugin supports individual configuration via @powerkit_plugin_<name>_<option>. Common options include:
| Option | Description |
|---|---|
icon |
Custom icon for the plugin |
cache_ttl |
Cache duration in seconds |
warning_threshold |
Threshold for warning state |
critical_threshold |
Threshold for error state |
show_only_on_threshold |
Only show when threshold exceeded |
See individual plugin documentation for specific options.
- Configuration - All configuration options
- Developing Plugins - Create custom plugins
- Plugin Contract - How plugins work internally
- macOS Binaries - Native binary downloads