While we don’t necessarily label Nitrux as a “gaming-centric” or “gaming-focused” distribution, that doesn’t mean it can’t be used for that purpose. So, continuing from the last tutorial, where we checked how to get games, we’ll look at extra tools to enhance the gaming experience with hardware information, real-time statistics, overclocking utilities, and goodies we’ve implemented and added to our distribution.
Difficulty: ★☆☆☆☆
📜 Table of Contents
Hardware Information
CPU-X is a system profiling (Information) and monitoring application (Resource usage). It can detect the Processor (CPU), Memory (RAM), and Chipset (Motherboard).
- 🔰 Information: CPU-X is available from AppImageHub.com through the NX Software Center.
Performance Optimization
GameMode is a daemon/lib combo for Linux that allows games to request a set of optimizations be temporarily applied to the host OS and a game process. GameMode was designed primarily as a stop-gap solution to problems with the Intel and AMD CPU powersave or on-demand governors but is now host to a range of optimization features and configurations.
GameMode includes support for optimizations, including:
- CPU governor
- I/O priority
- Process niceness
- Kernel scheduler (SCHED_ISO)
- Screensaver inhibiting
- GPU performance mode (NVIDIA and AMD), GPU overclocking (NVIDIA)
- CPU core pinning or parking
- Custom scripts
We have included GameMode and the Plasma integration since Nitrux since 2.9.0. The GameMode Plasma integration will display the processes using it in the system tray. Additionally, we create the group gamemode
and add the default user to it to avoid permission issues when GameMode applies the settings from its configuration file.
Disclaimer: We do not develop GameMode or the Plasma integration. Please create an issue at their respective bug tracker to report problems with this software.
We’ve also focused on optimizing performance and responsiveness by implementing advanced memory management and kernel tweaks.
- Reduced memory compaction overhead. Reduced CPU overhead and improved overall system responsiveness, especially in memory-intensive applications, lead to more stable performance by avoiding sudden spikes in CPU usage caused by proactive compaction.
- Improve performance in contended lock scenarios. By allowing more aggressive page locking, we improve performance in scenarios with contention for memory pages, which can occur in applications with high memory usage and multi-threaded environments.
- Enable THP (Transparent Hugepages) for all memory locations. This will improve performance for applications with considerable memory usage and access patterns that benefit from larger pages.
- Disable memory page fragmentation. In workloads like gaming, this change can provide benefits such as reduced CPU overhead, improved system responsiveness, and more predictable performance.
- Increase Linux autotuning TCP buffer limits. These TCP buffer settings enhance high-speed network performance by dynamically adjusting buffer sizes to improve throughput, reduce packet loss, prevent congestion, and ensure smooth data transfers, all while efficiently managing system memory.
- Increase the maximum number of packets queued for processing before they are dropped. It improves the handling of burst traffic, reduces packet drops, and enhances performance and stability on high-speed networks during heavy loads.
- Reuse Time-Wait TCP connections to reduce the number of open TCP connections. Efficiently manage network connections, reducing open TCP connections, freeing up system resources, and improving performance.
- Control the boost applied to the watermark (the minimum number of free pages the kernel tries to maintain). Maintain higher free memory to ensure the system doesn’t stall due to memory shortages.
- Change dirty page settings to reduce I/O disk access. Allow for efficient memory usage without frequent disk access.
- We have optimized RCU settings.
- Enable expedited RCU grace periods, improving system responsiveness in specific scenarios.
- Offload all RCU (Read-Copy-Update) callbacks to kernel threads, reducing interrupt contention on CPUs.
- Enable “lazy” RCU mode, delaying some operations to optimize performance.
- Enable additional security checks for user copy operations.
- Disable the 32-bit VDSO (Virtual Dynamic Shared Object) on 64-bit systems.
- Enable support for AMD GCN 2.0 (CIK) GPUs in the AMDGPU driver.
- Change the update mode for the virtual memory in the AMDGPU driver to improve performance in specific workloads.
- Disable the High Precision Event Timer (HPET) for systems where it may cause issues.
Performance Statistics
MangoHud is a “Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load, and more.”
- 🔰 Information: Using our launchers in the applications menu, MangoHud is automatically installed from Flathub when installing Steam, Bottles, or HGL.
- 🔰 Information: Check MangoHud documentation for supported environment variables.
- ⚠️ Important: MangoHud will not display statistics for AMD GPUs unless the PCI bus is added to the configuration, i.e., the bus where the GPU is can look like this
03:00.0
. Use the commandlspci | grep VGA
and replace the PCI bus accordingly. This is not a bug or issue with Nitrux and is not caused by Nitrux. - ⚠️ Important: MangoHud will not display voltage statistics or fan percentages on NVIDIA Optimus laptops. This is not a bug or issue with Nitrux and is not caused by Nitrux.
Do the following when using MangoHud in software like Steam, Bottles, or HGL.
Using MangoHud in Steam (Flatpak)
- Search for the keyword “runtime” in Steam and download all of them.
- For each game, right-click the game title, then click “Properties,” in the section “General,” scroll down to “Launch Options,” and add the following options to enable MangoHud and GameMode; these parameters are all a single line.
- Basic MangoHud parameters.
MANGOHUD=1 MANGOHUD_CONFIG=gamemode,preset=3 gamemoderun %command%
-
- Basic MangoHud parameters for AMD GPUs: change the PCI bus address accordingly.
MANGOHUD=1 MANGOHUD_CONFIG=gamemode,pci_dev='0000\:03\:00.0',preset=3 gamemoderun %command%
- As mentioned in this issue at the MangoHud repository, MangoHud stopped preloading the GameMode library, resulting in MangoHud displaying GameMode as “OFF” when adding this option to the configuration options. Add the following parameter before the MangoHud parameters to solve this issue.
LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libgamemode.so.0 /usr/lib/x86_64-linux-gnu/libgamemodeauto.so.0" [MangoHud params...]
Using MangoHud in Heroic Games Launcher and Bottles (Flatpak)
- Enable MangoHud:
- To use MangoHud, enable it on a per-game or per-bottle basis using the application settings.
- Alternatively, add the following environment variables in their respective settings menus.
- Variable name:
MANGOHUD
- Value:
1
- Variable name:
MANGOHUD_CONFIG
- Value:
gamemode,preset=3
- When using AMD GPUs, remove the single quotes in the PCI bus address:
gamemode,pci_dev=0000\:03\:00.0,preset=3
- Don’t forget to change the PCI bus address accordingly.
- When using AMD GPUs, remove the single quotes in the PCI bus address:
- Variable name:
- Alternatively, add the following environment variables in their respective settings menus.
- To use MangoHud, enable it on a per-game or per-bottle basis using the application settings.
- Enable GameMode:
- Check “Use GameMode” in the settings of individual games or the application’s global settings.
- Check the toggle “Feral GameMode” in the settings of an individual bottle.
Disclaimer: We do not develop MangoHud. To report problems with this software, please create an issue at their respective bug tracker.
Overclocking Utilities
GreenWithEnvy is a “System utility designed to provide information, control the fans, and overclock your NVIDIA card.”
- 🔰 Information: Users can download GreenWithEnvy from Flathub; see Software Management.
- 🔰 Information: Check the Notes for the latest release of Nitrux to enable the Plasma X11 session since GreenWithEnvy does not work in Wayland.
NVIDIA_OC is a simple Rust CLI tool designed to overclock NVIDIA GPUs on Linux. This tool was developed to support X11 and Wayland environments, addressing a gap in existing overclocking tools that only support X11.
To use this utility, see the example in the image below.
- 🔰 Information: We have included NVIDIA_OC in Nitrux since 3.6.0. When adjusting the values, be aware that these will be applied immediately, so be careful.
CoreCtrl is a “Free and Open Source GNU/Linux application that allows you to control with ease your computer hardware using application profiles.”
- 🔰 Information: We have included CoreCtrl in Nitrux since 3.5.0. We strongly recommend selecting “Advanced” and choosing an appropriate maximum frequency for the GPU. Since the AMDGPU driver can overlock the GPU too much, it can reset the GPU, crash the graphical session, or completely halt the computer. See this bug report in the Linux kernel bug tracker and this issue in the AMDGPU bug tracker. This is not a bug or problem with Nitrux and is not caused by Nitrux.
Disclaimer: We do not develop GreenWithEnvy or CoreCtrl. Please create an issue at their respective bug tracker to report problems with this software.
Visual Enhancement Utilities
vkBasalt is a Vulkan post-processing layer that enhances the visual graphics of games.
Currently, the built-in effects are:
- Contrast Adaptive Sharpening
- Denoised Luma Sharpening
- Fast Approximate Anti-Aliasing
- Enhanced Subpixel Morphological Anti-Aliasing
- 3D color LookUp Table
It is also possible to use Reshade Fx shaders.
- 🔰 Information: When installing Steam, Bottles, or HGL, using our launchers in the applications menu, vKBasalt is automatically installed from Flathub.
Using vkBasalt in Steam (Flatpak)
- For each game, right-click the game title, then click “Properties,” in the section “General,” scroll down to “Launch Options,” and add the following options to enable MangoHud and GameMode; these parameters are all a single line.
- Basic vkBasalt parameters.
ENABLE_VKBASALT=1 [Other parameters...] %command%
Using vkBasalt in Heroic Games Launcher and Bottles (Flatpak)
- Enable vkBasalt in Bottles:
- Check the toggle “Post-processing Effects” in the settings of an individual bottle.
- Enable vkBasalt in Heroic Games Launcher:
- Add the following environment variable in their respective game settings menu.
-
- Variable name:
ENABLE_VKBASALT
- Value:
1
- Variable name:
-
- Add the following environment variable in their respective game settings menu.
Using Resolution Scaling Technologies in Nitrux
Recent game titles include support for hardware-based scaling technologies such as AMD FidelityFX™ Super Resolution, NVIDIA Deep Learning Super Sample, or Intel® Xe Super Sampling (XeSS). Most games have settings in their in-game menus to toggle these features; however, for those that don’t, it’s possible to use some of these technologies by using environment variables available in compatibility layers like Proton-GE. Other game titles use internal scaling methods, i.e., resolution scaling sliders, primarily dependent on the game engine and not comparable to these solutions.
Download Proton-GE and refer to the previous tutorial for the steps. Then, depending on the platform, add the following environment variables.
For AMD FidelityFX™ Super Resolution:
- To enable FSR 1.0, use the following environment variables:
WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_STRENGTH=1 WINE_FULLSCREEN_FSR_MODE=quality
- 🔰 Information: Accepted values for FSR_MODE are ultra, quality, balanced, and performance; accepted values for FSR_STRENGTH range from 0-5, where the higher value means minimum sharpening but more performance. To use FSR, games must be launched on fullscreen. FSR can also be used for non-AMD graphics cards. After enabling FSR, change the in-game resolution to be lower than the desktop.
- Game titles provide FSR 2.0+ and FSR 3.0 as built-in features.
For NVIDIA Deep Learning Super Sample:
- DXVK-NVAPI is on by default in Proton 9.0 on a per-game basis. Non-NVIDIA graphics cards can use DXVK-NVAPI. However, there’s little value to gain from doing this.
- For games where it isn’t enabled, add the following environment variable,
PROTON_FORCE_NVAPI=1
For Intel® Xe Super Sampling (XeSS):
- Game titles must provide XeSS support.
Peripheral Management
Razer Peripherals/Devices
Since Nitrux 3.4.1, OpenRazer, the driver used by applications such as RazerGenie, has been included by default. OpenRazer is “a collection of Linux drivers for Razer devices—providing kernel drivers, DBus services, and Python bindings to interact with the DBus interface.”
- RazerGenie is a “Qt application for configuring your Razer devices under GNU/Linux. RazerGenie is using OpenRazer to provide control over Razer peripherals.”
- 🔰 Information: Users can download RazerGenie from Flathub; see Software Management.
Xbox Accessories
Since Nitrux 3.5.0, we include the xpadneo and xone drivers for Xbox One and Xbox One X|S accessories, which include support for wireless controllers. Previously, only wired controllers worked as we relied on the HID driver in the kernel (xpad); this driver also supports Xbox 360 controllers.
- xpadneo, an Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S).
- xone, a Linux kernel driver for Xbox One and Xbox Series X|S accessories. It is a modern replacement for the xpad driver and aims to be compatible with Microsoft’s Game Input Protocol (GIP).
- 🔰 Information: Since Nitrux 3.6.0, we include the necessary firmware files for one by default, and usage requires no additional steps for this driver.
- xpad, a driver for Xbox controllers included in the kernel, doesn’t fully support the newer controllers, though (the button mappings are incorrect, and the LEDs never sync).
- 🔰 Information: This driver is necessary to use Xbox 360 controllers. However, it’s blacklisted by default because it can conflict with xone. To revert this, run the following commands.
- ⚠️ Important: The commands below create, copy, edit, or move files in the root directory; see XFS Features and Root Immutability in Nitrux.
- 🔰 Information: This driver is necessary to use Xbox 360 controllers. However, it’s blacklisted by default because it can conflict with xone. To revert this, run the following commands.
sudo overlayroot-chroot sed -i 's/^blacklist xpad/# blacklist xpad/' /etc/modprobe.d/xone-blacklist.conf sync exit sudo reboot
Disclaimer: We do not develop OpenRazer, the xpadneo, or xone drivers. Please create an issue at their respective bug tracker to report problems with this software.
Support for Additional Devices
Additionally, thanks to Fabian Bornschein’s work, Nitrux supports the following controllers using udev rules.
8Bitdo (2dc8)
- 8Bitdo F30 P1
- 8Bitdo F30 P2
- 8Bitdo N30
- 8Bitdo SF30
- 8Bitdo SN30
- 8Bitdo F30 Pro
- 8Bitdo N30 Pro
- 8Bitdo SF30 Pro
- 8Bitdo SN30 Pro
- 8BitDo SN30 Pro+; Bluetooth; USB
- 8Bitdo F30 Arcade
- 8Bitdo N30 Arcade
- 8Bitdo ZERO
- 8Bitdo Retro-Bit xRB8-64
- 8BitDo Pro 2; Bluetooth; USB (2dc8:6003)
- 8BitDo Pro 2 Wired; USB (2dc8:3106), (2dc8:3010) (Setup Instructions)
- 8BitDo Ultimate Wired Controller for Xbox; USB (2dc8:2003)
Alpha Imaging Technology Corp. (114d)
- VR Set (114d:8a12)
ASTRO Gaming (9886)
- ASTRO Gaming C40 Controller; USB (9886:0025)
Betop (11c0)
- Betop PS4 Fun Controller (11c0:4001)
Hori (0f0d)
- Hori RAP4 (0f0d:008a)
- Hori HORIPAD 4 FPS (0f0d:0055)
- Hori HORIPAD 4 FPS Plus (0f0d:0066)
- Hori HORIPAD S; USB (0f0d:00c1)
- Hori Nintendo Switch HORIPAD Wired Controller; USB (0f0d:00c1)
- Hori Pokkén Tournament DX Pro Pad for Nintendo Switch; USB (0f0d:0092)
HTC (0bb4)
- Unknown (0bb4:2c87)
- Unknown (0bb4:0306)
- Unknown (0bb4:0309)
- Unknown (0bb4:030a)
- Unknown (0bb4:030b)
- Unknown (0bb4:030c)
- Unknown (0bb4:030e)
- HTC VIVE Cosmos; USB (0bb4:030e)(057e:0315)(057e:0323)
Logitech (046d)
- Logitech F310 Gamepad; USB (046d:c216)
- Logitech F710 Wireless Gamepad; USB (046d:c21f) #EXPERIMENTAL
Mad Catz (0738)
- Mad Catz Street Fighter V Arcade FightPad PRO (0738:8250)
- Mad Catz Street Fighter V Arcade FightStick TE S+ (0738:8384)
Nacon (146b)
- Nacon PS4 Revolution Pro Controller (146b:0d01)
Nintendo (057e)
- Nintendo Switch Pro Controller; Bluetooth; USB (057e:2009)
- Nintendo GameCube Controller / Adapter; USB (057e:0337)
- Nintendo Switch Joy-Con Charging Grip (057e:200e)
- Nintendo Switch Joy-Con (L); Bluetooth (057e:2006)
- Nintendo Switch Joy-Con (R); Bluetooth (057e:2007)
NVIDIA (0955)
- NVIDIA Shield Portable (2013 – NVIDIA_Controller_v01.01 – In-Home Streaming only) (0955:7203)
- NVIDIA Shield Controller (2017 – NVIDIA_Controller_v01.04); Bluetooth (0955:7214)
- NVIDIA Shield Controller (2015 – NVIDIA_Controller_v01.03); USB (0955:7210)
Performance Designed Products LLC [PDP] (0e6f)
- PDP Afterglow Deluxe+ Wired Controller; USB (0e6f:0188)
- PDP Nintendo Switch Faceoff Wired Pro Controller; USB (0e6f:0180)
- PDP Wired Fight Pad Pro for Nintendo Switch; USB (0e6f:0185)
Personal Communication Systems, Inc. (0810)
- Personal Communication Systems, Inc. Twin USB Gamepad; USB (0810:e301)
Pid.Codes (1209)
- EdgeTX, OpenTX Generic [radio controller] Joystick; USB (1209:4f54)
PowerA (20d6)
- PowerA Wired Controller for Nintendo Switch; USB (20d6:a711)
- PowerA Wireless Controller for Nintendo Switch; Bluetooth (NA)
- PowerA Zelda Wired Controller for Nintendo Switch; USB (20d6:a713)
Razer (1532)
- Razer Raiju PS4 Controller (1532:1000)
- Razer Panthera Arcade Stick (1532:0401)
- Razer Raion PS4 Fightpad (1532:1100)
Sony (054c)
- Sony PlayStation Strikepack; USB (054c:05c5)
- Sony PlayStation DualShock 3; Bluetooth; USB + Motion Sensors (054c:0268)
- Sony PlayStation DualShock 4; Bluetooth; USB (054c:05c4)
- Sony PlayStation DualShock 4 Slim; Bluetooth; USB (054c:09cc)
- Sony PlayStation DualShock 4 Wireless Adapter; USB (054c:0ba0)
- Sony DualSense Wireless-Controller; Bluetooth; USB (054c:0ce6)
- Sony DualSense Edge Wireless-Controller; Bluetooth; USB (054c:0df2)
- PlayStation VR (054c:09af)
Valve (28de)
- Valve USB devices (28de:*)
- Valve Steam Controller (28de:*)
- Valve HID devices; Bluetooth; USB (28de:*)
- Unknown-VR (28de:1043)
- Unknown-VR (28de:1142)
- Unknown-VR (28de:2000)
- Unknown-VR (28de:2010)
- Unknown-VR (28de:2011)
- Unknown-VR (28de:2012)
- Unknown-VR (28de:2021)
- Unknown-VR (28de:2022)
- Unknown-VR (28de:2050)
- Unknown-VR (28de:2101)
- Unknown-VR (28de:2102)
- Unknown-VR (28de:2150)
- Unknown-VR (28de:2300)
- Unknown-VR (28de:2301)
Zeroplus Technology Corporation (0c12)
- Armor PS4 Armor 3 Pad; USB (0c12:0e10)
- EMiO PS4 Elite Controller; USB (0c12:1cf6)
- Hit Box Arcade HIT BOX PS4/PC version; USB (0c12:0ef6)
- Nyko Xbox Controller; USB (0c12:8801)
- Unknown-Brand Xbox Controller; USB (0c12:8802)
- Unknown-Brand Xbox Controller; USB (0c12:8810)
Using VRR (Variable Refresh Rate) in Nitrux
Variable Refresh Rate (VRR) is a display technology that allows a monitor or TV to dynamically adjust its refresh rate to match the frame rate output by a GPU (Graphics Processing Unit). This real-time video provides smoother gameplay and visual experiences, particularly in gaming, where frame rates can fluctuate depending on the complexity of the scene or the workload on the GPU.
Support for VRR will depend on the monitor and the GPU. To enable VRR, go to System Settings→Display and Monitor→Adaptable sync and select “Automatic” or “Always,” and to disable VRR, select “Disable.”
- 🔰 Information: As discussed in this issue at the AMDGPU bug tracker, adaptive sync may not work correctly unless VSync is enabled within the in-game settings and the game runs in fullscreen mode. Additionally, changing the power profile to 3D_fullscreen for AMD GPUs alleviates further dips in performance; otherwise, the window manager may display the output at half the actual framerate, i.e., the window manager is displaying 60 FPS while the game runs at 120 FPS.
- 🔰 Information: The monitor must be plugged in via DisplayPort. Some displays that implement (part of) the HDMI 2.1 specification also support VRR over HDMI.
- 🔰 Information: Although tearing is much less noticeable at higher refresh rates, FreeSync monitors often have a limited range for their VRR of 90Hz, which can be much lower than their max refresh rate.
- 🔰 Information: When selecting Automatic, KWin Wayland will use VRR for fullscreen windows, and when selecting Always, It will use VRR all the time.
Cloud Gaming
Cloud gaming, also known as game streaming or gaming as a service, refers to playing video games where the game’s processing and rendering are done on remote servers in the cloud rather than on a local device (like a console or PC). Players access the games online, streaming the content to their devices. Below, we list two of the most well-known services.
- 🔰 Information: Depending on the service, there might be a “free” as in no cost tier. However, access to the best streaming options does have a cost.
NVIDIA GeForce Now
GeForce Now is NVIDIA’s cloud gaming service that lets you stream games from its servers to your device. This means you can play AAA games on hardware that would typically not handle such games. To use this service in Nitrux, all you need is a web browser, but for the sake of organization, we recommend using Heroic Games Launcher, which users can install from the applications menu.
- Open Heroic Games Launcher→Library→ Add Game.
- Enter the Title, and in BrowserURL, enter the address: https://play.geforcenow.com/, then click Finish.
Xbox Cloud Gaming
Xbox Cloud Gaming allows you to play and access various Xbox Game Pass games on various devices. The feature streams the games via the cloud instead of downloading them directly, so you can pick them up and play them almost instantly just about anywhere as long as you have a stable internet connection. To use this service in Nitrux, all you need is a web browser, but for the sake of organization, we recommend using Heroic Games Launcher, which users can install from the applications menu.
- Open Heroic Games Launcher→ Library→Add Game.
- Enter the Title, and in BrowserURL, enter the following address: https://www.xbox.com/play, then click Finish.
That’s it; this concludes today’s tutorial.