You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A graphical user interface for configuring GPU related environment variables and more for Linux gaming. Originally designed just for me and my friends, but seeing that it could be useful for other Linux users i have decided to Open Source it.
3
+
> **My AMD Adrenaline / NVIDIA Settings Linux Alternative**
4
+
5
+
A graphical interface for configuring GPU, CPU, Disk, and Kernel performance settings for Linux gaming. Initially made for personal use, now open-sourced so others can benefit from it too.
@@ -23,90 +25,38 @@ A graphical user interface for configuring GPU related environment variables and
23
25
24
26
## What you can do?:
25
27
26
-
- CPU Management
27
-
- Governor Selection: Choose from available CPU governors
28
+
###CPU Management:
29
+
- Governor Selection: Choose from available CPU governors.
28
30
- Adjust the maximum and minimum CPU frequencies within the permitted range.
29
-
- Scheduler Configuration: Select CPU pluggable schedulers (requires [scx](https://github.com/sched-ext/scx) and `Linux Kernel >= 6.12` or a `Custom Patched Kernel`)
30
-
- GPU Configuration
31
-
- Mesa Drivers: Configure Mesa Drivers specific environment variables
32
-
- NVIDIA Drivers: Configure NVIDIA Proprietary Drivers specific environment variables
33
-
- Render Selection: Choose the renderers for both OpenGL and Vulkan applications
34
-
- Set a frame limit for both OpenGL and Vulkan applications, Texture Filters and MidMap LOD Bias for Vulkan only (requires [mangohud](https://github.com/flightlessmango/MangoHud))
35
-
- All those GPU settings will be added to the `volt` script
36
-
- Disk Configuration
31
+
- Scheduler Configuration: Select, start and stop CPU pluggable schedulers (requires [scx](https://github.com/sched-ext/scx) and `Linux Kernel >= 6.12` or a `Custom Patched Kernel`).
32
+
### GPU Configuration:
33
+
- Mesa Drivers: Configure Mesa Drivers specific environment variables.
34
+
- NVIDIA Drivers: Configure NVIDIA Proprietary Drivers specific environment variables.
35
+
- Dynamic Render Selection: Select renderers for both OpenGL and Vulkan applications. The program dynamically sets the required environment variables depending on your GPU.
36
+
- Configure various MangoHud options.
37
+
- Configure lsfg-vk settings
38
+
- All GPU settings are automatically added to the `volt` script.
39
+
### Disk Configuration:
37
40
- Change Disks Schedulers
38
-
- Kernel Configuration
39
-
- Choose /proc/sys/vm/compaction_proactiveness value
40
-
- Choose /proc/sys/vm/watermark_boost_factor value
41
-
- Choose /proc/sys/vm/watermark_scale_factor value
42
-
- Choose /proc/sys/vm/extfrag_threshold value
43
-
- Choose /proc/sys/vm/compact_unevictable_allowed value
44
-
- Choose /proc/sys/vm/defrag_mode value
45
-
- Choose /proc/sys/vm/min_free_kbytes value
46
-
- Choose /proc/sys/vm/overcommit_memory value
47
-
- Choose /proc/sys/vm/overcommit_ratio value
48
-
- Choose /proc/sys/vm/admin_reserve_kbytes value
49
-
- Choose /proc/sys/vm/user_reserve_kbytes value
50
-
- Choose /proc/sys/vm/max_map_count value
51
-
- Choose /proc/sys/vm/mmap_min_addr value
52
-
- Choose /proc/sys/vm/page_lock_unfairness value
53
-
- Choose /proc/sys/vm/swappiness value
54
-
- Choose /proc/sys/vm/page-cluster value
55
-
- Choose /proc/sys/vm/vfs_cache_pressure value
56
-
- Choose /proc/sys/vm/percpu_pagelist_high_fraction value
57
-
- Choose /proc/sys/vm/zone_reclaim_mode value
58
-
- Choose /proc/sys/vm/min_unmapped_ratio value
59
-
- Choose /proc/sys/vm/min_slab_ratio value
60
-
- Choose /proc/sys/vm/numa_stat value
61
-
- Choose /proc/sys/vm/oom_kill_allocating_task value
62
-
- Choose /proc/sys/vm/oom_dump_tasks value
63
-
- Choose /proc/sys/vm/panic_on_oom value
64
-
- Choose /proc/sys/vm/dirty_ratio value
65
-
- Choose /proc/sys/vm/dirty_background_ratio value
66
-
- Choose /proc/sys/vm/dirty_bytes value
67
-
- Choose /proc/sys/vm/dirty_background_bytes value
68
-
- Choose /proc/sys/vm/dirty_expire_centisecs value
69
-
- Choose /proc/sys/vm/dirty_writeback_centisecs value
70
-
- Choose /proc/sys/vm/dirtytime_expire_seconds value
71
-
- Choose /proc/sys/vm/laptop_mode value
72
-
- Choose /proc/sys/vm/nr_hugepages value
73
-
- Choose /proc/sys/vm/nr_overcommit_hugepages value
74
-
- Choose /proc/sys/vm/hugetlb_optimize_vmemmap value
75
-
- Choose /proc/sys/vm/stat_interval value
76
-
- Choose /sys/kernel/mm/transparent_hugepage/enabled value
77
-
- Choose /sys/kernel/mm/transparent_hugepage/shmem_enabled value
78
-
- Choose /sys/kernel/mm/transparent_hugepage/defrag value
79
-
- Choose /sys/class/rtc/rtc0/max_user_freq value
80
-
- Choose /proc/sys/kernel/numa_balancing value
81
-
- Choose /proc/sys/kernel/randomize_va_space value
82
-
- Choose /proc/sys/kernel/perf_event_paranoid value
83
-
- Choose /proc/sys/kernel/sched_cfs_bandwidth_slice_us value
84
-
- Choose /proc/sys/kernel/sched_autogroup_enabled value
85
-
- Choose /proc/sys/kernel/sched_rt_runtime_us value
86
-
- Choose /proc/sys/kernel/sched_rt_period_us value
87
-
- Choose /proc/sys/kernel/sched_schedstats value
88
-
- Choose /proc/sys/kernel/timer_migration value
89
-
- Choose /proc/sys/kernel/watchdog value
90
-
- Choose /proc/sys/kernel/nmi_watchdog value
91
-
- Choose /proc/sys/kernel/hung_task_timeout_secs value
92
-
- Choose /proc/sys/kernel/pid_max value
93
-
- Choose /proc/sys/fs/file-max value
94
-
- Choose /proc/sys/net/core/rmem_max value
95
-
- Choose /proc/sys/net/core/wmem_max value
96
-
- Choose /proc/sys/net/ipv4/tcp_fastopen value
97
-
- Choose /proc/sys/net/ipv4/tcp_window_scaling value
98
-
- Choose /proc/sys/net/ipv4/tcp_timestamps value
99
-
100
-
- Launch Options: add custom Launch Options to the `volt` that will be passed to the program executed, example:
41
+
### Configure Kernel Parameters related to:
42
+
- CPU
43
+
- Memory
44
+
- Disk
45
+
- System
46
+
- Network
47
+
- Security
48
+
### Add custom launch options to the `volt` script:
49
+
50
+
These will be passed to the executed program. Example:
101
51
```
102
52
gamemoderun PROTON_USE_WINED3D=1
103
53
```
104
-
- Extras
105
-
- Useful Links for the average Linux Gamer
106
-
- Useful Programs for the average Linux Gamer
107
-
- Options
108
-
- Options for the program itself
109
-
- Create or Delete Profiles, all of them with its own settings, witch you can apply trough the program or systray.
54
+
###Extras:
55
+
- Useful Links and Programs for the average Linux Gamer.
56
+
### Options:
57
+
- Configure settings specific to the volt-gui program itself.
58
+
### Create or Delete Profiles:
59
+
- Each profile has its own set of configurations, which can be applied through the program or system tray.
110
60
111
61
## Build/Test Requirements:
112
62
@@ -122,29 +72,34 @@ A graphical user interface for configuring GPU related environment variables and
122
72
- ccache (optional, for optimizing compiling times)
123
73
124
74
## Additional requirements for some Options:
75
+
125
76
If this software is not provided, its options will be locked.
126
77
127
78
-[scx](https://github.com/sched-ext/scx) in the case you want to make use of the CPU Pluggable Schedulers
128
-
-[mangohud](https://github.com/flightlessmango/MangoHud) in the case you want to make use of the Render Pipeline Settings. Both the native or the Flatpak version satisfy the dependency.
79
+
-[mangohud](https://github.com/flightlessmango/MangoHud) in the case you want to make use of the MangoHud Settings. Both the native or the Flatpak version satisfy the dependency.
80
+
-[lsfg-vk](https://github.com/PancakeTAS/lsfg-vk) in the case you want to make use of the LS Frame Gen Settings. Both the native or the Flatpak version satisfy the dependency.
129
81
-`glxinfo` its required to use the OpenGL Render Selector.
130
82
-`vulkaninfo` and the `vulkan mesa layer` are required to use the Vulkan Render Selector.
131
83
132
84
## Installation:
133
85
134
86
### Quick Install:
87
+
135
88
1. Run one of the builds scripts avaliable to create the application:
136
-
89
+
137
90
Using Pyinstaller:
91
+
138
92
```bash
139
93
./make-pyinstaller.sh
140
94
```
141
-
95
+
142
96
Using Nuitka:
97
+
143
98
```bash
144
99
./make-nuitka.sh
145
100
```
146
101
147
-
*Note: Both use a Python virtual environment to avoid system wide package installation using pip*
102
+
_Note: Both use a Python virtual environment to avoid system wide package installation using pip_
148
103
149
104
2. Install the application system wide:
150
105
```bash
@@ -156,6 +111,7 @@ If this software is not provided, its options will be locked.
156
111
- Create a desktop entry at `/usr/share/applications/volt-gui.desktop`
157
112
158
113
### Removal:
114
+
159
115
1. To uninstall volt-gui:
160
116
```bash
161
117
sudo ./remove.sh
@@ -167,20 +123,23 @@ If this software is not provided, its options will be locked.
167
123
- Remove the desktop entry `/usr/share/applications/volt-gui.desktop`
168
124
169
125
## Testing volt-gui:
126
+
170
127
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.
171
128
172
129
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:
130
+
173
131
```
174
132
./test.sh -c
175
133
```
176
134
177
135
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:
136
+
178
137
```
179
138
./test.sh
180
139
```
181
140
182
-
> [!NOTE]
183
-
> 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.
141
+
> [!NOTE]
142
+
> 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.
184
143
185
144
## How to use `volt-gui`:
186
145
@@ -201,11 +160,13 @@ volt glxgears
201
160
When using a Launcher to play your game, you can just add it to the game launch options, like this:
202
161
203
162
Steam (Native):
163
+
204
164
```
205
165
volt %command%
206
166
```
207
167
208
168
Lutris (Native):
169
+
209
170
```
210
171
volt
211
172
```
@@ -220,26 +181,30 @@ volt flatpak run net.pcsx2.PCSX2
220
181
221
182
## Render Selector explained:
222
183
223
-
-`Select OpenGL Renderer` Selects the GPU/Renderer that will be used to render OpenGL programs. Those GPUs are obtained trough `glxinfo`.
224
-
-`Select Vulkan Renderer` Selects the GPU/Renderer that will be used to render Vulkan programs. Those GPUs are obtained trough `vulkaninfo`, also for this to work on some distros you might need to install some additional dependencies like `vulkan-mesa-layers` on Arch Linux. More info its provided on the Welcome Window that opens once you open volt-gui.
184
+
-`Select OpenGL Renderer` Selects the GPU/Renderer that will be used to render OpenGL programs. Those GPUs/Renderers are obtained trough `glxinfo`.
185
+
-`Select Vulkan Renderer` Selects the GPU/Renderer that will be used to render Vulkan programs. Those GPUs/Renderers are obtained trough `vulkaninfo`, also for this to work on some distros you might need to install some additional dependencies like `vulkan-mesa-layers` on Arch Linux. More info its provided on the Welcome Window that opens once you open volt-gui.
225
186
226
187
## Technical References:
227
188
228
-
Documentation used:
189
+
Based on documentation and references from:
229
190
230
191
-[Arch Linux Wiki - Improving performance](https://wiki.archlinux.org/title/Improving_performance)
231
192
-[Arch Linux Wiki - Gaming](https://wiki.archlinux.org/title/Gaming#Improving_performance)
- Additionally, sometimes i had to read code from Open Source projects to check how some options work.
242
206
243
207
## Contributing:
244
208
245
-
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](#buildtest-requirements), [Installation](#installation) and [Testing volt-gui](#testing-volt-gui).
209
+
Contributions are welcome. Please ensure compatibility with supported Python versions and follow the existing code structure.
210
+
Read: [Build/Test Requirements](#buildtest-requirements), [Installation](#installation), and [Testing volt-gui](#testing-volt-gui) before contributing.
0 commit comments