π Perfdeck
A modern, lightweight, and customizable TUI performance monitor for your terminal.
Features β’ Installation β’ Usage β’ Configuration β’ Contributing
π‘ Why Perfdeck?
Traditional performance monitors often overwhelm users with information or lack the flexibility to show exactly what you need. Perfdeck solves this by providing:
- Consolidation: View output from multiple diagnostic tools (like
top,vmstat,netstat) in one place. - Focus: A clean, tabbed interface lets you switch between different metrics without terminal clutter.
- Visibility: Real-time sparklines provide an immediate "at-a-glance" health check of your system's core resources.
- Flexibility: Don't like the defaults? Bring your own shell commands via a simple TOML file.
β¨ Features
- π Blazing Fast: Written in Go with minimal CPU and memory overhead.
- π Tabbed Navigation: Organize your monitoring tools into logical, navigable views.
- π Live Sparklines: Visual summaries for Load, CPU, Memory, and Network.
- π¨ Adaptive Themes: Seamlessly toggle between Light and Dark modes.
- βοΈ Deeply Configurable: Custom commands, refresh intervals, and environment-specific settings.
- π§ Cross-Platform: Intelligent defaults for both Linux and macOS.
πΈ Screenshots
Dark Mode (Default)
Light Mode
π Installation
π¦ Pre-built Binaries
Download the latest pre-compiled binaries from the Releases page.
π οΈ Using go install
go install github.com/sumant1122/perfdeck@latest
[!NOTE] Ensure your
GOPATH/binis in yourPATH(e.g.,export PATH=$PATH:$(go env GOPATH)/bin) so you can run theperfdeckcommand from any directory.
π¨ From Source
git clone https://github.com/sumant1122/perfdeck.git
cd perfdeck
make build
# Binary will be in the project root
π Usage
Simply run the command to start monitoring with default system tools:
perfdeck
β¨οΈ Key Bindings
| Key | Action |
|---|---|
Tab / Shift+Tab |
Next / Previous Tab |
j / k (or β/β) |
Scroll through command output |
t |
Toggle Light/Dark theme |
v |
Display version information |
q / Esc / Ctrl+C |
Exit Perfdeck |
βοΈ Configuration
Perfdeck is designed to be personalized. To create your own configuration, create a file named perfdeck.toml in one of the following locations (searched in this order):
$PERFDECK_CONFIG(full path to the file)~/.config/perfdeck/config.toml- The current directory (
./perfdeck.toml)
π Example perfdeck.toml
Create the file with your favorite editor and add the following content to customize your tabs and refresh intervals:
# Interval for updating the sparklines and default tabs
global_refresh_interval = "5s"
[[tab]]
title = "Process Explorer"
cmd = ["top", "-b", "-n", "1"]
refresh_interval = "2s" # Specific interval for this tab
[[tab]]
title = "Network Connections"
cmd = ["ss", "-tulpn"]
π macOS Support
Perfdeck works great on macOS! While many Linux-native tools (like mpstat or free) are not available by default, you can easily add macOS-equivalent commands to your perfdeck.toml.
Example macOS-friendly tabs:
[[tab]]
title = "Memory (vm_stat)"
cmd = ["vm_stat"]
[[tab]]
title = "Disk I/O (iostat)"
cmd = ["iostat", "-w", "1", "-c", "2"]
[[tab]]
title = "Battery Status"
cmd = ["pmset", "-g", "batt"]
π Development
We utilize a simple Makefile for a streamlined development experience:
make run: Start the application in development mode.make build: Compile the binary.make test: Execute the test suite.make lint: Run the golangci-lint (if installed).
π€ Contributing
We love contributions! Whether it's a bug report, a new feature idea, or a documentation improvement, please feel free to:
- Check out the Contributing Guidelines.
- Open an Issue.
- Submit a Pull Request.
π License
Distributed under the MIT License. See LICENSE for details.