First of all, you should know that it is very easy to configure CPU operating modes on Linux.
For instance, I have a small laptop running Ubuntu with an Intel Core i3.
The Linux kernel includes a cpufreq module that interacts with the processor driver. This small module can be controlled in various ways through several available solutions. Note that most tools mentioned here focus strictly on the processor, except for TLP which can do more by managing disks, PCI buses, USB, etc.
indicator-cpu-freq (dated)
See Ubuntu documentation (https://doc.ubuntu-fr.org/indicator-cpufreq)
See the project source repository (https://launchpad.net/indicator-cpufreq)
Visiting the repository reveals the project is no longer actively maintained. While still functional, it has some bugs and provides a system tray notification icon (does not work with Wayland). In my setup, it provides two presets: a performance mode and a powersave mode.
To install: sudo apt install indicator-cpufreq or click here apt://indicator-cpufreq
cpufreq (modern project)
See the source repository (https://github.com/konkor/cpufreq)
This project was born out of crowdfunding, is open source, and licensed under GPLv3.

It provides an overview of the current configuration and allows you to manually set the governor profile.
It offers several interfaces:
cpufreq-application To launch the GUIcpufreqctl Command line toolcpufreq-indicator Provides a notification tray iconcpufreq-preferences Opens application preferencescpufreq-service Runs as a background daemon service
Without detailing every component, there is one prerequisite to fully benefit from it.
You should uninstall the irqbalance package: sudo apt purge irq-balance and reboot.
This package is installed by default as it is useful on servers to balance IRQ interrupts across CPU cores, but it prevents customized CPU frequency scaling. https://github.com/konkor/cpufreq/issues/48
The key benefit of this tool is the ability to define fine-grained consumption and performance profiles for your CPU.
TLP
See Ubuntu docs (https://doc.ubuntu-fr.org/tlp)
See the full documentation in English (https://linrunner.de/en/tlp/docs/tlp-configuration.html)
I will not go into extensive detail since I haven't used it extensively, but it is a very solid existing solution.
You can also combine TLP with the other tools mentioned in this article:
https://askubuntu.com/questions/556894/tlp-dont-change-cpu-frequency
Essentially, you need to disable TLP's CPU frequency scaling features.
And now, our main topic!
auto-cpufreq
See the source repository (https://github.com/AdnanHodzic/auto-cpufreq)
This tool intelligently optimizes CPU power states on the fly. It is designed to replace earlier tools (except TLP, which requires dedicated configuration as noted above).
To install via the Snap Store:sudo snap install auto-cpufreq
Or install from source:git clone https://github.com/AdnanHodzic/auto-cpufreq.gitcd auto-cpufreq && sudo ./auto-cpufreq-installer
Usage
Usage: auto-cpufreq [OPTIONS]
Options:
--monitor Monitor and suggest CPU optimizations
--live Monitor and make suggested CPU optimizations
--install / --remove Install/remove daemon for automatic CPU optimizations
--log View live CPU optimization log made by daemon
--help Show this message and exit.--monitor allows you to preview suggestions
--live applies recommendations live
--install installs the tool as a background system daemon, starting automatically at boot
If you prefer invoking the script as a daemon, you can also use auto-cpufreq --daemon
You can inspect what the tool does by reviewing the source code here:
https://github.com/AdnanHodzic/auto-cpufreq/blob/master/source/core.py
I noticed a function that manages Bluetooth by preventing automatic activation, though it is not active in the Snap package version.
Otherwise, there is no configuration file needed—it is essentially a "run and forget" tool.
However, the author is open to configuration support: https://github.com/AdnanHodzic/auto-cpufreq/issues/26
Feel free to contribute if this feature interests you.
Note that this tool does not support AMD processors.
https://github.com/AdnanHodzic/auto-cpufreq/issues/17
Feel free to contribute to the repository if you appreciate the project and have the skills.