Power-profiles-daemons is a free and open source project designed to handle system power profiles over D-Bus. The two major Linux desktop environment, GNOME and KDE Plasma, are nicely integrated with it, allowing the user to easily manage power profiles from their dedicated power manager interfaces, but it is also possible to switch profiles and retrieve information about them from the command line, using a dedicated utility.
In this tutorial we learn how to install power-profiles-daemon, and how to use it to manage power profiles on Linux.
In this tutorial you will learn:
- How to install power-profile-daemons on the major Linux distributions
- How to switch power profile when using GNOME or KDE Plasma
- How to manage power profiles from the command line
- How to run a single command under a power profile
|Category||Requirements, Conventions or Software Version Used|
|Other||Administrative privileges are needed to install required packages|
|Conventions||# – requires given linux-commands to be executed with root privileges either directly as a root user or by use of
Power-profiles-daemon is free and open source software. Its source code is available on gitlab, and it is packaged in the official repositories of the most used Linux distributions. If you are using recent versions of GNOME or KDE Plasma, chances are the package is already installed. If for some reason, it is not the case, it can be easily installed. The installation command varies depending on the system we are using:
$ sudo apt install power-profiles-daemon
|Fedora/Fedora-based distributions (RHEL, Rocky Linux, etc…)||
$ sudo dnf install power-profiles-daemon
$ sudo pacman -S power-profiles-daemon
The power-profiles-daemon package includes a systemd service unit. To start the service, and make sure it is automatically started on boot, we need to run the following command:
$ sudo systemctl enable --now power-profiles-daemon
If the service fails to start it may be due to incompatibilities with other running services such as tlp, which are also used to manage power settings. Make sure you stop and disable them if you want to use power-profiles-daemon.
The power profiles
The power-profiles-daemon utility makes use three power profiles:
The first two are always available, while the third is available only on specific systems. As we already said, if we are using GNOME or KDE Plasma, we can check the power profile currently in use, and eventually change it, right from the dedicated graphical interfaces.
In recent versions of GNOME, for example, we can do it right from the gnome-shell menu, without launching the full-fledged settings application:
Similarly, on Kde Plasma, we can switch power profiles right from the power manager widget:
Furthermore, by using the power-manager section of the Plasma desktop settings, we have the chance to associate a power profile with a specific system state (On AC Power, On battery, On Line Battery):
Switching power profile from the command line
At the moment of writing none of the less know Linux desktop environment, such as Xfce, is integrated with power-profiles-daemon. When working in such environments (or even in more minimal ones), however, we can still manage power profiles by using a command line utility:
powerprofilesctl. The tool can be used to retrieve information about the available profiles and get or set the current one.
To get the power profile currently in use we just need to invoke “powerprofilesctl” and specify the “get” action. When invoked this way, the tool returns just the name of the profile:
$ powerprofilesctl get balanced
To retrieve the list of all the available profiles and information about the driver used to implement them, instead, we can use the “list” action, or just invoke powerprofilesctl without any argument:
$ powerprofilesctl list performance: Driver: intel_pstate Degraded: no * balanced: Driver: intel_pstate power-saver: Driver: intel_pstate
As you can see, all the power profiles are available on my machine. They are implemented by using the “intel_pstate” driver.
In order to change the power profile in use, we need to use the “set” action, and pass the name of the profile we want to use as argument. Supposing we want to switch to the “power-saver” profile, for example, we would run:
$ powerprofilesctl set power-saver
Notice that since the utility runs over of D-Bus and makes use of specific polkit authorizations, we don’t need to launch it with escalated privileges.
Launching a single command with a specific power profile
One very nice feature of powerprofilesctl, is the ability to launch a single command with a specific power profile. Imagine, for example, we are using the “balanced” profile, but we want to build some code from source, using all the available machine power. By using the “launch” action, we may switch to the “performance” profile just to perform such task. Supposing we need to use the “make” command in such fashion, we would run:
$ powerprofilesctl launch --profile performance make
In this tutorial we learned how to use power-profiles-daemon to manage power profiles over DBus. We saw how to install the power-profiles-daemon package on some of the most used Linux distributions, how it is nicely integrated both in GNOME and KDE Plasma, and how its possible to manage power profiles from the command line using the “powerprofilesctl” utility, which can also be used to run a single command under a specific power profiles. command.