Repository navigation
Releases: YOUNES-2-wq/cachymonitor
Release list
v1.4.3 — NVIDIA GPU through NVML (Linux)
Linux: the NVIDIA GPU is now read through NVML when nvidia-smi is missing (for example inside a Flatpak sandbox). Nothing changes when nvidia-smi is available.
Nothing changes on Windows: the installer is still the one from v1.4.1.
v1.4.2 — MangoHud logging helper (Linux)
Linux: if MangoHud isn't writing a log, CachyMonitor now explains why and offers an Enable MangoHud logging button (it adds autostart_log=1 to the config, with a backup). README updated.
Nothing changes on Windows: the installer is still the one from v1.4.1.
v1.4.1 — Controller card on Windows, lighter installer
The Controller card comes to Windows 11
Version 1.4.0 added the CONTROLLER card (model, wired or Bluetooth connection,
battery level), but only on Linux. It now works on Windows 11 too, and this is the
first Windows release since 1.3.2.
Why two ways of reading: Windows has no equivalent of /sys. Xbox controllers go
through XInput, which gives four battery levels but neither the model nor a percentage.
Sony controllers aren't exposed as XInput controllers: they're read as raw HID,
which gives the model and the exact battery level, decoded the same way as the Linux
hid-playstation and hid-sony drivers do.
Hardware actually tested
| Controller | Status |
|---|---|
| DualSense (PS5) over Bluetooth | Tested |
| DualSense (PS5) over USB-C | Tested |
| DualShock 4 | Written from the documentation, untested |
| Xbox controllers (XInput) | Written from the documentation, untested |
The DualSense's two connections behave very differently: over Bluetooth, the controller
only sends a reduced report with no battery on its own, so it has to be requested; over
USB, it refuses that request but streams its reports continuously. Both methods were
needed, and only testing with the real controller could show it.
If you have an Xbox controller or a DualShock 4, your feedback is very valuable:
python scripts/test_controllers.py shows exactly what the app reads, and its output is
enough to fix any case that doesn't work.
Installer: smaller, faster, fewer antivirus false positives
The installer goes from 46 to 32 MB, and the app no longer unpacks itself into a
temporary folder every time it starts. This comes from a packaging change (PyInstaller
--onedir instead of --onefile): the old mode's self-extracting bootloader triggered
four heuristic antivirus detections out of about seventy engines, without any malware
family being named. Nothing changes for you: everything is still wrapped in the installer.
Windows may still show "Windows protected your PC" the first time you run the
installer. This is not a virus detection, just the lack of reputation of a new,
unsigned file: click More info, then Run anyway. The full source code is in this
repository.
Install
winget install cachymonitoror use the installer below. To update an existing install: winget upgrade cachymonitor.
On Linux, nothing changes from 1.4.0: the cachymonitor package is on the AUR.
Reminder: on Windows, MSI Afterburner and RivaTuner (RTSS) are still needed
for temperature, power draw and FPS. Both are free.
v1.4.0 — Controller card (Linux)
New: the Controller card
For each connected controller, CachyMonitor shows:
- its model (DualSense, Xbox, Switch Pro...);
- its connection: wired (USB) or Bluetooth;
- its battery level, with a coloured battery icon (green / orange / red) and a charging indicator.
Tested with a DualSense (PS5) over Bluetooth. Xbox, Switch Pro and DualShock 4 controllers go through the same kernel mechanisms and should work: your feedback is welcome in the Discussions.
Availability
- Linux:
paru -S cachymonitor(AUR) or from source. - Windows: no controller support yet, so no new installer. The Windows version stays at 1.3.2 (
winget install cachymonitor).
v1.3.2 — Internal cleanup
Maintenance release, no functional change.
The Windows port's code was reviewed and cleaned up before being submitted to package managers: CPU readers split by platform instead of internal branches, a common interface for both session readers, plausibility bounds and PowerShell calls factored out, and some waste removed from the code path that runs ten times per second (ctypes signatures set again on every read, shared memory mapped twice, needless path decoding, PATH scanned every second).
For installation, the MSI Afterburner and RivaTuner requirements, and what has been tested, see the v1.3.0 notes.
v1.3.1 — Version metadata
Maintenance release, no functional change.
- The executable now carries its Windows metadata (version, publisher, description, license), visible in Properties > Details. They were missing in v1.3.0.
- The version number is now read from the code at build time: the code, the executable and the installer can no longer show different versions.
For everything else (installation, MSI Afterburner and RivaTuner requirements, what has been tested), see the v1.3.0 notes.
v1.3.0 — CachyMonitor comes to Windows 11
CachyMonitor is now on Windows 11
The same gaming monitor, now on Linux and Windows 11, from one single file.
Install
Download CachyMonitor-Setup-1.3.0.exe below and double-click it. The setup wizard lets you install for all users or just for you, creates shortcuts and uninstalls cleanly from Settings > Apps. No need to install Python or PySide6: everything is bundled in the executable.
Windows may show a blue "Windows protected your PC" warning. This is not a virus: the installer isn't digitally signed, because a certificate costs several hundred euros a year, which is a lot for a free project. Click More info, then Run anyway. The source code is fully readable, and the installer can be rebuilt with packaging\windows\build.ps1.
Requirements: MSI Afterburner and RivaTuner
Read this before wondering why some values are empty. Windows doesn't expose hardware sensors the way the Linux kernel does. So CachyMonitor reads the ones from MSI Afterburner (free) and RivaTuner (RTSS), which is installed automatically with it.
| To get | You need |
|---|---|
| CPU temperature, power draw and real clock speed | MSI Afterburner |
| FPS and session statistics (1% low, 0.1% low...) | RivaTuner (RTSS) |
| CPU usage, RAM, processor name | nothing, works everywhere |
| GPU, VRAM, GPU temperature | nothing on NVIDIA; Afterburner otherwise |
Just install Afterburner and leave it running. Without it, the app is still usable (CPU, RAM, GPU and VRAM usage are shown), but temperature, power draw and FPS stay at —.
The numbers come from the same source as the RivaTuner on-screen display: the FPS shown is exactly the one you see in game. RTSS is sampled every 100 ms, the same rate as MangoHud's log_interval on Linux. At one sample per second, the 0.1% low would be meaningless.
Tested on a single machine
AMD Ryzen 5 5600 + NVIDIA RTX 3060, on Windows 11 Pro 24H2, and nothing else.
On a Radeon, an Intel CPU or an integrated GPU, the code exists but has never been run: it's written from the documentation. The app won't crash if a sensor is missing (that value will just show —), but I have no way of knowing how it actually behaves.
If you try it, tell me how it goes, even in one sentence: Discussions. Two scripts in scripts/ help with diagnosis: test_afterburner.py lists the sensors Afterburner publishes, and test_rtss.py inspects RivaTuner's memory.
What Windows gets
Everything the Linux version could do: session statistics (1% low, 0.1% low, average), frametime graph, CPU/GPU bottleneck detection, light/dark/system theme, and a French or English interface.
Under the hood
A single cachymonitor.py for both systems: IS_WINDOWS switches each reader, while the interface, themes, languages and statistics are fully shared. The statistics are computed in game_stats(), so both platforms produce the same numbers.
Linux
No change in behaviour. The sources are still /proc, /sys, nvidia-smi and MangoHud logs.
v1.2.0 — English interface + language selector
CachyMonitor speaks English (and French)
The interface used to be French only. It is now English by default, and switches to French automatically when the desktop is in French.
You can also pick the language by hand in Options > Language: System / English / Français. The change is applied live, without restarting, and is remembered between sessions.
Adding a language means adding one entry to the TRANSLATIONS dictionary at the top of cachymonitor.py. Translation contributions are very welcome.
Fixes
- Theme drop-down. Breeze and Adwaita opened the list as a menu centred on the current entry: pick the last theme and the list opened upwards, over a translucent background that was hard to read. The list now always drops down under the field, on a solid background.
- Installing on Debian / Ubuntu / Mint / Pop!_OS. There is no
python3-pyside6package on Debian-family distros: PySide6 is split into one package per Qt module. The README now lists the only three CachyMonitor needs:sudo apt install python3-pyside6.qtcore python3-pyside6.qtgui python3-pyside6.qtwidgets
All three points were reported by Bestia on GamingOnLinux. Thank you for taking the time to install it, test it and write it up.
Install
See the README. One Python file, one dependency (PySide6), nothing to compile.
v1.1.0 — Light theme and Options panel
Light theme
CachyMonitor now offers a light theme in addition to the existing dark theme, with three modes to choose from:
- System (default): follows your desktop's light/dark theme, live. Switch KDE or GNOME to light and the window follows without restarting;
- Dark: the original theme;
- Light.
The switch happens live: the graph history and the current game session are kept.
The light theme isn't just inverted colours: the accent colours are darkened, because a yellow or green designed for black becomes unreadable on white.
Options panel
The settings (refresh interval, FPS target, theme, always-on-top) are grouped in a collapsible panel. The header only keeps the title and the button, so the screen stays dedicated to the measurements. The chosen theme and the panel state are remembered between sessions.
Display fixes
- Elements drawn by the desktop style (spin box arrows, checkbox ticks, drop-down arrow) now follow the app's theme. Before, a desktop in dark theme made them invisible in the light theme.
- Labels painted a strip of the main background colour over the cards. The bug already existed; it's fixed in both themes.
Install
CachyMonitor is a single Python file, with PySide6 as its only dependency.
# 1. the dependency (Arch / CachyOS)
sudo pacman -S pyside6
# 2. the app
git clone https://github.com/YOUNES-2-wq/cachymonitor.git
python3 cachymonitor/cachymonitor.py
The commands for Fedora, Ubuntu/Debian and openSUSE are in the README.
Once the AUR reopens: paru -S cachymonitor.
Reminder: only the Ryzen 5 5600 + RTX 3060 setup is actually tested. The Intel and AMD GPU code paths are written from the kernel documentation and have never been run. Your feedback is welcome.
CachyMonitor v1.0.0
First stable release of CachyMonitor, the system monitor designed for gaming on CachyOS / Linux.
What CachyMonitor does
- In-game panel based on MangoHud logs: live FPS, 1% low, 0.1% low, average, frametime and CPU vs GPU bottleneck, with a frametime graph (spikes = micro-stutters).
- Live gauges for CPU / GPU / RAM / VRAM with clock speeds, power draw, temperatures and trend graphs.
- Lightweight: a single Python file, one dependency (PySide6). Everything is drawn with QPainter.
- Multi-vendor hardware detection (AMD / Intel / NVIDIA); see the compatibility note below.
Tested
Verified on AMD Ryzen 5 5600 + NVIDIA RTX 3060, CachyOS / KDE Plasma / Wayland.
The AMD GPU and Intel code paths are written from the kernel documentation but not yet tested on that hardware. Your feedback is welcome in the Discussions.
Install
sudo pacman -S pyside6
python3 cachymonitor.pyBuilds on the excellent MangoHud for in-game data.