CachyOS Settings
Alongside our optimized kernels and repositories, we also provide settings that further improve the desktop experience, as well as some
helper scripts for QoL improvements. All these configurations and scripts are under the cachyos-settings package.
Check out the CachyOS Settings repository to read more about all the configurations and scripts we provide.
Scripts and Tools
Section titled “Scripts and Tools”Here is how you can generate a bug report using the cachyos-bugreport.sh script:
- Open a terminal and run the following command:
Terminal window sudo cachyos-bugreport.shOutput Example
Terminal window sudo cachyos-bugreport.sh[sudo] password for array:Starting with bugreportRedacting personal information...Do you want to upload this log to https://paste.cachyos.org? [Y]es/[N]o: YUploading Log% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 130.3k 100 10 100 130.3k 7 96934 00:01 00:01 117.7k# A URL will be provided here after the upload is complete. - The script will generate a log file in your home directory containing system information and logs that can be useful for debugging. It will also ask if you want to upload the log to our pastebin service, which can be helpful when reporting bugs.
DLSS Swapper
Section titled “DLSS Swapper”Might come in handy in some cases. Specially for the Proton version provided by Valve.
What it does is try to update the DLSS DLLs and presets to the latest available version, which can be useful for some games that require a specific version of DLSS to work properly.
How? by injecting environment variables to the game process:
dlss-swapper Environment Variables
export PROTON_ENABLE_NGX_UPDATER=1export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latestexport DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latestdlss-swapper-dll Environment Variables
export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=onexport DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latestexport DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest- What is the difference between
dlss-swapperanddlss-swapper-dll?dlss-swapperupdates the DLSS DLLs and presets to the latest available versions provided by NGX Updater anddlss-swapper-dllrelies on the DLLs already present in the game’s directory.
Tiny script that enables the performance profile from powerprofilesctl for the target process (Can be used for games or any other process) and disables the screen saver while the process is running.
Q&A:
How to use
Let’s say you want to use game-performance for a Steam game. You can do that by adding the game-performance command as a launch option for the game in Steam:
- Open Steam and go to your Library.
- Right-click on the game you want to use
game-performancewith and select “Properties”. - In the “General” tab, find the “Launch Options” section and add the following command:
Terminal window game-performance %command% - Close the properties tab and launch the game.
Usage outside of Steam
Since game-performance is just a wrapper script, you can use it to launch any process with the performance profile enabled. Just run the following command in the terminal:
game-performance <command>Does game-performance provide any benefit for a old CPU?
Generally no. You should avoid it for old CPUs as it can cause more harm than good.
Why it’s not enabled by default?
Enabling the performance profile may not be ideal for all users and can cause increased power consumption and heat generation. By not enabling it by default, we give users the choice to enable it when they need it, without forcing it on everyone.
kerver is a script that shares a brief summary of:
- Your current kernel version
- Checks x86_64 support and CPU compiler optimizations
- Current I/O scheduler
- Summary of CPU, I/O and sched-ext scheduler (if active).
Usage
kerverOutput Example
kerver
Check kernel version:
Linux version 6.19.8-1-hC (linux-hC@hC) (clang version 22.1.1, LLD 22.1.1) #1 SMP PREEMPT_DYNAMIC Sun, 15 Mar 2026 16:27:53 +0000Linux CatchyOS 6.19.8-1-hC #1 SMP PREEMPT_DYNAMIC Sun, 15 Mar 2026 16:27:53 +0000 x86_64 GNU/Linux
Check x86_64 support:
x86-64-v3 (supported, searched) x86-64-v2 (supported, searched)
Check CPU config:
CONFIG_X86_NATIVE_CPU=y# CONFIG_GENERIC_CPU is not set# CONFIG_MZEN4 is not set
Current disk schedulers:
sda: none mq-deadline kyber [adios] bfqsdb: none mq-deadline kyber [adios] bfq
Check available schedulers:
BORE CPU Scheduler modification 6.6.2 by Masahito Suzukircu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.io scheduler mq-deadline registeredio scheduler kyber registeredAdaptive Deadline I/O Scheduler 3.2.0 by Masahito Suzukiio scheduler adios registeredio scheduler bfq registeredsched_ext: BPF scheduler "bpfland_1.1.0_gc505008f_x86_64_unknown_linux_gnu" enabled with options scx_bpflandA simple CLI tool that allows you to upload text to our pastebin service. It can be useful for sharing logs and other text content when reporting bugs or seeking help.
Here are some examples of how to use paste-cachyos
journalctl log of systemd-resolved
journalctl -u systemd-resolved.service | paste-cachyosA simple script meant to try to reduce latency and improve performance for PCI sound cards by changing the PCI latency timer.
Available both in binary and systemd service format. The systemd service will automatically apply the changes at boot, while the binary can be used to apply the changes on demand.
Single use for the current session
sudo pci-latencyEnabling systemd service
systemctl enable pci-latency.serviceDisabling systemd service
systemctl disable pci-latency.servicesbctl-batch-sign is a helper script designed to make it easier for users to sign files needed for secure boot support.
The obvious case in which this script helps a lot is when dual booting Windows as there are a lot of files by Windows that needs to be signed in EFI.
Brief summary when executing the script:
- Scans for unsigned files using
sbctl verify- If necessary, signs the detected files using
sbctl sign
- If necessary, signs the detected files using
- Avoids files that belong to Windows, GRUB or by file extension:
.muiand.dll
Check our Secure Boot Setup section for more information.
Lua script that shows the top memory consuming processes by their RAM usage, SWAP and KSM (Kernel Same-page Merging) sharing.
Before using
# Install lua-luv to run the script:sudo pacman -S lua-luvUsage
topmemOutput Example
topmem
MEMORY Top 10 processes SWAP KSM1333M node 0M 0M811M exe 0M 0M759M VQ6B1EUZqoCU04zoRU= --cha... 0M 0M681M node 0M 0M531M zed-editor 0M 0M484M brave 0M 0M424M qs 0M 0M408M mdx-language-server 0M 0M395M Telegram 0M 0M365M VQ6B1EUZqoCU04zoRU= --cha... 0M 0MForces the use of Zink (OpenGL over Vulkan) for the target process by setting the appropriate environment variables.
Environment variables used
MESA_LOADER_DRIVER_OVERRIDE=zinkGALLIUM_DRIVER=zink__GLX_VENDOR_LIBRARY_NAME=mesa__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.jsonCan be useful in Steam for some games that have better performance or compatibility with Zink.
Usage
zink-run <command>Creation of overrides
Section titled “Creation of overrides”What is an override?
An override is a configuration file that you create to change the default settings provided by cachyos-settings. This allows you to customize your system without modifying the original files, which can be useful for maintaining compatibility with future updates of cachyos-settings.
sysctl
Section titled “sysctl”We provide a lot of sysctl tweaks that aim to improve overall desktop performance. Each sysctl entry is well documented in the file 70-cachyos-settings.conf.
To make changes to any of these values, copy the original entry and make a new file under /etc/sysctl.d/ with the modified value.
Example sysctl override
-
Take a look at the original value from
cachyos-settingsTerminal window cat /usr/lib/sysctl.d/70-cachyos-settings.conf# Only experimental!# Let Realtime tasks run as long they need# sched: RT throttling activatedkernel.sched_rt_runtime_us=-1 -
Make a new file in
/etc/sysctl.dto make changes to the sysctl settingsReverting kernel.sched_rt_runtime_us= to its default value sudo micro /etc/sysctl.d/99-kernel-sched-rt.conf # If the file doesn't exist, this command creates and lets you edit the filekernel.sched_rt_runtime_us=950000 -
Save the file by pressing
CTRL + Sand exit the editor by pressingCTRL + Q. -
After making changes to sysctl settings, make sure to apply the changes:
Terminal window sudo sysctl --system
udev Rules
Section titled “udev Rules”Same goes for udev rules. You can create your own overrides by making a new file under /etc/udev/rules.d/ with the same name as the original file.
Example udev rule override
-
Check the original CachyOS udev rule:
Terminal window cat /usr/lib/udev/rules.d/60-ioschedulers.rulesOutput:
Terminal window # HDDACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", \ATTR{queue/scheduler}="bfq"# SSDACTION=="add|change", KERNEL=="sd[a-z]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", \ATTR{queue/scheduler}="mq-deadline"# NVMe SSDACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/rotational}=="0", \ATTR{queue/scheduler}="none"Now imagine you want to change the I/O scheduler for SSDs and NVMe to
kyberinstead ofmq-deadlineandnone, respectively. You can do that by creating an override file. -
Create a new file in
/etc/udev/rules.dto override the original rule:Terminal window sudo micro /etc/udev/rules.d/60-ioschedulers.rules # If the file doesn't exist, this command creates and lets you edit the file# HDDACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", \ATTR{queue/scheduler}="bfq"# SSDACTION=="add|change", KERNEL=="sd[a-z]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", \ATTR{queue/scheduler}="kyber"# NVMe SSDACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/rotational}=="0", \ATTR{queue/scheduler}="kyber" -
Save the file by pressing
CTRL + Sand exit the editor by pressingCTRL + Q. -
After making changes to udev rules, make sure to reload the rules and trigger them:
Terminal window sudo udevadm control --reload-rulessudo udevadm trigger