Take full control of your system's kernel on the Linux desktop. Tune performance, battery life, and more.
RvKernel Manager is a native GTK 4 application written in C. It is the desktop port of RvKernel-Manager, the Android kernel manager, bringing the same idea to regular Linux systems: a clean interface to tweak and monitor a wide range of kernel parameters.
- Dashboard: live CPU usage per core, memory/ZRAM/swap pressure, uptime, distro, kernel version and hardware summary.
- CPU: per-cluster cpufreq control: governor selection, min/max frequency limits, energy performance preference (EPP), live frequencies.
- GPU: DRM driver detection plus generic devfreq control (governor, min/max frequency) for supported GPUs.
- Battery: capacity, status, voltage, temperature, power draw, health, cycle count and charge-threshold control where the kernel supports it.
- Memory: vm tunables (
swappiness,vfs_cache_pressure,dirty_ratio,dirty_background_ratio), ZRAM size/algorithm/usage and TCP congestion-control selection. - About: version info, license and links.
- Linux with GTK 4 (>= 4.10 recommended)
gtk4-devel/libgtk-4-devbuild packages- Root privileges are required to launch: the app talks directly to
sysfs/procfs. Started as a regular user it re-execs itself through
polkit's
pkexec(an authentication prompt appears) and exits with an error ifpkexecis not installed. Running it viasudoworks too.
make # builds bin/rvkernel-manager
make run # build (if needed) and launch
./bin/rvkernel-managerInstall system-wide:
sudo make install PREFIX=/usr/localBuild-time options live in Kconfig with their defaults; configs/config
holds the chosen values. .config is generated by merging the two, and a
missing or stale .config is regenerated automatically at build time.
Never hand-edit .config. Use a config target or edit configs/config
and let it regenerate.
make config # line-oriented config dialog (Kconfig)
make menuconfig # menu-driven TUI (needs `dialog`)
make mrproper # clean build artifacts and .configThe full set of options:
| Option | Effect |
|---|---|
CONFIG_DEBUG |
diagnostic logging (see below) |
CONFIG_CC_CLANG |
build with clang instead of gcc |
CONFIG_LTO |
clang LTO (full or thin) |
CONFIG_CCACHE |
prefix compiles with ccache |
Enable diagnostic logging in .config:
CONFIG_DEBUG=y
With CONFIG_DEBUG=y every compile gets -DCONFIG_DEBUG and the app emits
timestamped messages on stderr: startup and privilege handling,
sysfs/procfs access, page construction, refresh ticks and each applied
setting. Set it to n (or remove it) for a silent binary; all logging is
compiled out. Changing .config triggers a full rebuild.
The compiler is chosen with CONFIG_CC_CLANG/CONFIG_CC_GCC, and clang
builds can enable LTO (CONFIG_LTO, thin or full). An explicit CC= on
the command line or in the environment overrides the compiler choice.
src/
├── main.c entry point, pkexec self-elevation
├── application.[ch] GtkApplication bootstrap + actions
├── ui/ presentation layer
│ ├── window.[ch] main window, header bar, toasts, refresh timer
│ ├── sidebar.[ch] navigation list bound to the page stack
│ ├── theme/style.[ch] application CSS (light + dark palettes)
│ ├── components/
│ │ ├── widgets.[ch] reusable card/row/dropdown builders
│ │ └── circular_progress_indicator.[ch]
│ │ animated usage rings on the dashboard
│ └── pages/
│ ├── pages.[ch] page refresh plumbing
│ ├── page_dashboard.c dashboard page
│ ├── page_cpu.c cpufreq controls
│ ├── page_gpu.c DRM/devfreq controls
│ ├── page_battery.c battery monitoring + charge limit
│ ├── page_memory.c vm tunables / zram / tcp cc
│ └── page_about.c about page
├── core/ business logic (no UI types)
│ ├── system_info.[ch] host/kernel/memory snapshots, cpu usage sampler
│ ├── cpu.[ch] cpufreq policy discovery + setters
│ ├── gpu.[ch] drm cards + devfreq devices
│ ├── battery.[ch] power_supply parsing + charge control
│ └── memory.[ch] vm sysctls, zram, tcp congestion control
└── util/
├── sysfs.[ch] sysfs/procfs read/write helpers
├── log.[ch] diagnostic logging (CONFIG_DEBUG)
└── format.[ch] string tokenizing + human formatting