- Python 71.3%
- Shell 28.7%
| assets | ||
| tests | ||
| .gitignore | ||
| CHANGELOG.md | ||
| freqdisp | ||
| install.sh | ||
| LICENSE | ||
| README.md | ||
CPU frequency display
Terminal CPU frequency and utilization display for Linux, macOS, and BSD. It supports large core-count and NUMA-heavy hosts while remaining a single Python script with no third-party Python dependencies.
Supported platforms
- Linux: Debian/Ubuntu, Proxmox VE, Fedora/RHEL, OpenWrt, Alpine, Arch,
openSUSE, Gentoo, and other distributions. CPU utilization comes from
/proc/stat; frequency comes from Linux CPUFreq policy sysfs with/proc/cpuinfoas a fallback. - macOS: Intel and Apple silicon CPU discovery, per-core utilization through the public Mach host API, and Apple silicon performance-level counts.
- FreeBSD: per-core utilization and frequency through
sysctl. - OpenBSD, NetBSD, and DragonFly BSD: CPU discovery and best-effort frequency
display through
sysctl. Per-core utilization may be unavailable.
On Apple silicon, macOS does not expose a public live per-core frequency value.
In that case freqdisp shows -- for frequency while utilization and CPU
topology continue to update.
Quick start
The release-pinned installer is served by the LeafWolf Forgejo instance:
curl -fsSL https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh |
FREQDISP_REF=v1.1.0 sh
With wget:
wget -qO- https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh |
FREQDISP_REF=v1.1.0 sh
With FreeBSD fetch:
fetch -q -o - https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh |
FREQDISP_REF=v1.1.0 sh
To inspect the installer before running it:
curl -fsSLO https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh
chmod +x install.sh
FREQDISP_REF=v1.1.0 ./install.sh
OpenWrt
The full python3 package includes the required curses module:
opkg update
opkg install python3 curl ca-bundle
curl -fsSL https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh |
FREQDISP_REF=v1.1.0 sh
CPU frequency availability still depends on the device kernel and its CPUFreq driver. The display falls back cleanly when a router does not expose CPUFreq.
macOS
Install Python 3 first if python3 is not already available:
brew install python
curl -fsSL https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/tag/v1.1.0/install.sh |
FREQDISP_REF=v1.1.0 sh
freqdisp
Installation layout
The installer defaults to:
- script:
~/.local/share/freqdisp/freqdisp - launcher:
~/.local/bin/freqdisp - config:
~/.local/share/freqdisp/.freqdisp.json
It adds ~/.local/bin to the current shell's profile. Set
FREQDISP_SKIP_PATH_UPDATE=1 to leave shell profiles unchanged. The installer
refuses to replace an existing launcher unless it is a symbolic link created by
a previous installation.
The app saves the current display mode and grouping choice whenever you press
1, 2, 3, or 4.
Versioning and custom installs
freqdisp --version prints the installed version. By default, the installer
queries Forgejo for the newest tag and downloads the immutable commit behind
that tag. To install the current development branch instead:
curl -fsSL https://git.leafwolf.net/HalfVulpes/cpufrequencydisplay/raw/branch/master/install.sh |
FREQDISP_REF=master sh
For a different LeafWolf-compatible Forgejo host, set
FREQDISP_FORGEJO_URL. FREQDISP_REF accepts a safe tag name, commit ID, or
master.
Manual run and tests
chmod +x ./freqdisp
./freqdisp
Run the local test suite without any hosted CI service:
python3 -m unittest discover -s tests -v
sh tests/test_installer.sh
