Warning
This program its WIP, bugs are expected.
A graphical user interface for configuring GPU related environment variables and more for Linux gaming. Originally designed just for me and my friends, but seing that it could be useful for other Linux users i have decided to Open Source it.
- What you can do?
- Build/Test Requirements
- Installation
- Testing volt-gui
- How to use volt-gui
- How to use the volt script
- Render Selector explained
- Technical References
- Contributing
-
CPU Management
- Governor Selection: Choose from available CPU governors
- Scheduler Configuration: Select CPU pluggable schedulers (requires scx and
Linux Kernel >= 6.12
or aCustom Patched Kernel
)
-
GPU Configuration
- Mesa Drivers: Configure Mesa Drivers specific environment variables
- NVIDIA Drivers: Configure NVIDIA Proprietary Drivers specific environment variables
- Render Selection: Choose the renderers for both OpenGL and Vulkan applications
- Set a frame limit for both OpenGL and Vulkan applications, Texture Filters and MidMap LOD Bias for Vulkan only (requires mangohud)
- All those GPU settings will be added to the
volt
script
-
Disk Configuration
- Change Disks Schedulers
-
Kernel Configuration
- Choose /proc/sys/vm/compaction_proactiveness value
- Choose /proc/sys/vm/watermark_boost_factor value
- Choose /proc/sys/vm/min_free_kbytes value
- Choose /proc/sys/vm/max_map_count value
- Choose /proc/sys/vm/swappiness value
- Choose /proc/sys/vm/dirty_ratio value
- Choose /proc/sys/vm/dirty_background_ratio value
- Choose /proc/sys/vm/dirty_expire_centisecs value
- Choose /proc/sys/vm/dirty_writeback_centisecs value
- Choose /proc/sys/vm/vfs_cache_pressure value
- Choose /sys/kernel/mm/transparent_hugepage/enabled value
- Choose /sys/kernel/mm/transparent_hugepage/shmem_enabled value
- Choose /sys/kernel/mm/transparent_hugepage/defrag value
- Choose /proc/sys/vm/zone_reclaim_mode value
- Choose /proc/sys/vm/page_lock_unfairness value
- Choose /proc/sys/kernel/sched_cfs_bandwidth_slice_us value
- Choose /proc/sys/kernel/sched_autogroup_enabled value
- Choose /proc/sys/kernel/watchdog value
- Choose /proc/sys/kernel/nmi_watchdog value
- Choose /proc/sys/vm/laptop_mode value
-
Launch Options: add custom Launch Options to the
volt
that will be passed to the program executed, example:gamemoderun PROTON_USE_WINED3D=1
-
Extras
- Useful Links for the average Linux Gamer
- Useful Programs for the average Linux Gamer
-
Options
- Options for the program itself
-
Create or Delete Profiles, all of them with its own settings, witch you can apply trough the program or systray.
- Python 3.9 or higher
- Pip
- The
python3-venv
package its required on Debian/Debian based distros. - Linux operating system
- C/C++ Compiler
- patchelf
- ccache (optional, for optimizing compiling times)
If this software is not provided, its options will be locked.
- scx in the case you want to make use of the CPU Pluggable Schedulers
- mangohud in the case you want to make use of the Render Pipeline Settings. Both the native or the Flatpak version satisfy the dependency.
-
Run one of the builds scripts avaliable to create the application:
Using Pyinstaller:
./build-pyinstaller.sh
Using Nuitka:
./build-nuitka.sh
Note: Both use a Python virtual environment to avoid system wide package installation using pip
-
Install the application system wide:
sudo ./install.sh
This will:
- Copy the executable to
/usr/local/bin/
- Copy the
volt-helper
script to/usr/local/bin/
- Create a desktop entry at
/usr/share/applications/volt-gui.desktop
- Copy the executable to
- To uninstall volt-gui:
This will:
sudo ./remove.sh
- Remove the
volt-gui
executable from/usr/local/bin/
- Remove the
volt-helper
script from/usr/local/bin/
- Remove the
volt
bash script from/usr/local/bin/
- Remove the desktop entry
/usr/share/applications/volt-gui.desktop
- Remove the
In the case you want to contribute to the project you can use the provided test.sh
script to test the changes you made. This script will create a Python virtual environment if one does not already exist. This way, you don't have to install the program dependencies systemwide.
The first time you run it, use the -c flag that will also copy the volt-helper
to /usr/local/bin/
, as the program requires it for appliying the settings:
./test.sh -c
After this unless you make changes to the volt-helper
, or the script have been updated, just run it without the flag to avoid unnecessary overwrites of the script:
./test.sh
Note
You can use the remove.sh
script to remove the volt-helper
. The py_env
folder should be deleted in the case you created it with your system python, and you want to use a python version that its inside a distrobox
box, or vice versa.
Simply launch volt-gui from your application menu or run volt-gui
from the terminal.
The GPU
and Launch Options
settings are saved on the volt
script. Here are some examples of its usage:
When using the terminal or a custom desktop entry:
volt glxgears
When using a Launcher to play your game, you can just add it to the game launch options, like this:
Steam (Native):
volt %command%
Lutris (Native):
volt
When using the terminal or a custom desktop entry:
volt flatpak run net.pcsx2.PCSX2
OpenGL Provider
Select a OpenGL provider between the NVIDIA Proprietary Drivers and Mesa Drivers.Mesa Select GPU
In this case “select” means the GPU will be first in the reported physical devices list, It applies to OpenGL and Vulkan and only GPUs using the Mesa Drivers. Something to add its that theOpenGL Provider
andVulkan ICD
settings have priority over this.Vulkan ICD
Selects the Vulkan Installable Client Driver, obtained from/usr/share/vulkan/icd.d/
.
Documentation used:
- Arch Linux Wiki - Improving performance
- Arch Linux Wiki - Gaming
- sched-ext tutorial - CachyOs Wiki
- sched-ext scx Github - Readme
- MangoHud Github - Readme
- Mesa Documentation - Environment Variables
- FreeDesktop - Dri Configuration Options
- NVIDIA 570 Drivers - Documentation
- NVIDIA 470 Drivers - Documentation
- NVIDIA 390 Drivers - Documentation
Contributions are welcome. Please ensure any changes maintain compatibility with the supported Python versions and follow the existing code structure. You might want to read: Build/Test Requirements, Installation and Testing volt-gui.