Skip to content

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.

Here is how you can generate a bug report using the cachyos-bugreport.sh script:

  1. Open a terminal and run the following command:
    Terminal window
    sudo cachyos-bugreport.sh
    Output Example
    Terminal window
    sudo cachyos-bugreport.sh
    [sudo] password for array:
    Starting with bugreport
    Redacting personal information...
    Do you want to upload this log to https://paste.cachyos.org? [Y]es/[N]o: Y
    Uploading Log
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 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.
  2. 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.

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
Terminal window
export PROTON_ENABLE_NGX_UPDATER=1
export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
export DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
dlss-swapper-dll Environment Variables
Terminal window
export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=on
export DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
export DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
  • What is the difference between dlss-swapper and dlss-swapper-dll?
    • dlss-swapper updates the DLSS DLLs and presets to the latest available versions provided by NGX Updater and dlss-swapper-dll relies 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:

  1. Open Steam and go to your Library.
  2. Right-click on the game you want to use game-performance with and select “Properties”.
  3. In the “General” tab, find the “Launch Options” section and add the following command:
    Terminal window
    game-performance %command%
  4. 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:

Terminal window
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
Open a terminal and execute the following command:
kerver
Output Example
Terminal window
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 +0000
Linux 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] bfq
sdb: none mq-deadline kyber [adios] bfq
Check available schedulers:
BORE CPU Scheduler modification 6.6.2 by Masahito Suzuki
rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
io scheduler mq-deadline registered
io scheduler kyber registered
Adaptive Deadline I/O Scheduler 3.2.0 by Masahito Suzuki
io scheduler adios registered
io scheduler bfq registered
sched_ext: BPF scheduler "bpfland_1.1.0_gc505008f_x86_64_unknown_linux_gnu" enabled with options scx_bpfland

A 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

Sharing a pacman update output
Terminal window
sudo pacman -Syu | paste-cachyos

Example

journalctl log of systemd-resolved
Terminal window
journalctl -u systemd-resolved.service | paste-cachyos

A 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
Terminal window
sudo pci-latency
Enabling systemd service
Terminal window
systemctl enable pci-latency.service
Disabling systemd service
Terminal window
systemctl disable pci-latency.service

sbctl-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
  • Avoids files that belong to Windows, GRUB or by file extension: .mui and .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
Terminal window
# Install lua-luv to run the script:
sudo pacman -S lua-luv
Usage
Terminal window
topmem
Output Example
Terminal window
topmem
MEMORY Top 10 processes SWAP KSM
1333M node 0M 0M
811M exe 0M 0M
759M VQ6B1EUZqoCU04zoRU= --cha... 0M 0M
681M node 0M 0M
531M zed-editor 0M 0M
484M brave 0M 0M
424M qs 0M 0M
408M mdx-language-server 0M 0M
395M Telegram 0M 0M
365M VQ6B1EUZqoCU04zoRU= --cha... 0M 0M

Forces the use of Zink (OpenGL over Vulkan) for the target process by setting the appropriate environment variables.

Environment variables used
Terminal window
MESA_LOADER_DRIVER_OVERRIDE=zink
GALLIUM_DRIVER=zink
__GLX_VENDOR_LIBRARY_NAME=mesa
__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json

Can be useful in Steam for some games that have better performance or compatibility with Zink.

Usage
Terminal window
zink-run <command>

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.

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
  1. Take a look at the original value from cachyos-settings

    Terminal window
    cat /usr/lib/sysctl.d/70-cachyos-settings.conf
    # Only experimental!
    # Let Realtime tasks run as long they need
    # sched: RT throttling activated
    kernel.sched_rt_runtime_us=-1
  2. Make a new file in /etc/sysctl.d to make changes to the sysctl settings

    Reverting 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 file
    kernel.sched_rt_runtime_us=950000
  3. Save the file by pressing CTRL + S and exit the editor by pressing CTRL + Q.

  4. After making changes to sysctl settings, make sure to apply the changes:

    Terminal window
    sudo sysctl --system

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
  1. Check the original CachyOS udev rule:

    Terminal window
    cat /usr/lib/udev/rules.d/60-ioschedulers.rules
    Output:
    Terminal window
    # HDD
    ACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", \
    ATTR{queue/scheduler}="bfq"
    # SSD
    ACTION=="add|change", KERNEL=="sd[a-z]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", \
    ATTR{queue/scheduler}="mq-deadline"
    # NVMe SSD
    ACTION=="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 kyber instead of mq-deadline and none, respectively. You can do that by creating an override file.

  2. Create a new file in /etc/udev/rules.d to 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
    # HDD
    ACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", \
    ATTR{queue/scheduler}="bfq"
    # SSD
    ACTION=="add|change", KERNEL=="sd[a-z]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", \
    ATTR{queue/scheduler}="kyber"
    # NVMe SSD
    ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/rotational}=="0", \
    ATTR{queue/scheduler}="kyber"
  3. Save the file by pressing CTRL + S and exit the editor by pressing CTRL + Q.

  4. After making changes to udev rules, make sure to reload the rules and trigger them:

    Terminal window
    sudo udevadm control --reload-rules
    sudo udevadm trigger