EnvyControl is a program aimed to provide an easy way to switch GPU modes on Nvidia Optimus systems (i.e laptops with hybrid Intel + Nvidia or AMD + Nvidia graphics configurations) under Linux.
EnvyControl is free and open-source software released under the MIT license.
This software is provided 'as-is' without any express or implied warranty.
Keep it mind any custom X.org configuration may get deleted or overwritten when switching modes, please review this README and the source code before proceeding.
EnvyControl should work on any distribution of Linux, see tested distros.
If you're using Ubuntu or its derivatives please follow these instructions.
- GDM
- SDDM
- LightDM
If your display manager isn't currently supported by EnvyControl you might have to manually configure it.
Latest changes in GDM now require NVreg_PreserveVideoMemoryAllocations
kernel parameter to be set to 1 as well as nvidia-suspend
services to be enabled for Wayland sessions to appear.
# 1. Re-run EnvyControl 2.2+ (either nvidia or hybrid mode)
sudo envycontrol -s nvidia
# 2. Now enable the required Nvidia services
sudo systemctl enable nvidia-{suspend,resume,hibernate}
# 3. Reboot
Please run sudo envycontrol --reset-sddm
.
Arch Linux (AUR)
yay -S envycontrol
.- Run
sudo envycontrol -s <MODE>
to switch graphics modes.
- Clone this repository with
git clone https://github.com/bayasdev/envycontrol.git
or download the latest tarball from the releases page. - Run
sudo python envycontrol.py -s <MODE>
from the root of the repository to switch to a different graphics mode.
- From the root of the cloned repository run
sudo pip install .
- Now you can run
sudo envycontrol -s <MODE>
from any directory to switch graphics modes.
usage: envycontrol.py [-h] [-v] [-s MODE] [-q] [--dm DISPLAY_MANAGER] [--reset_sddm]
options:
-h, --help show this help message and exit
-v, --version show this program's version number and exit
-s MODE, --switch MODE
switch the graphics mode, supported modes: integrated, hybrid, nvidia
-q, --query query the current graphics mode set by EnvyControl
--dm DISPLAY_MANAGER Manually specify your Display Manager. This is required only for systems without systemd. Supported DMs: gdm, sddm, lightdm
--reset_sddm restore original SDDM Xsetup file
Read a detailed explanation about EnvyControl graphics modes here.
Set current graphics mode to integrated
(power off the Nvidia dGPU):
sudo envycontrol -s integrated
Set current graphics mode to nvidia
(automatic display manager setup)
sudo envycontrol -s nvidia
Set current graphics mode to nvidia
and setup SDDM
display manager
sudo envycontrol -s nvidia --dm sddm
Query the current graphics mode:
envycontrol --query
The GPU profile selector extension provides a simple way to switch between graphics modes in a few clicks, you can get it from here.
Make sure to have EnvyControl installed globally!
-
Also read fixes for some common problems
- Make customizable options available as switches (eg: RTD3, composition pipeline, etc).
- Nvidia mode on Wayland (Nvidia needs to fix their Linux drivers first).
- Plasma applet.
- COPR package.
Feel free to open an issue, don't forget to provide some basic info such as:
- Linux distribution
- Linux kernel version and type
- Desktop Environment or Window Manager as well as your Display Manager
- Nvidia driver version
- EnvyControl version