Arch: CachyOS + Niri + Noctalia + Steam + OBS + Code
I've used Nobara for almost 6 months, and now I've transitioned to Niri. So far I can say that I don't miss it. Below is my guide on how to set it up including the apps I've used on Nobara.
First, install cachyos using the settings here.
Install yay and flatpak:
# Install required dependencies
sudo pacman -S --needed base-devel git
# Clone yay repository
cd ~
git clone https://aur.archlinux.org/yay.git
# Build and install yay
cd yay
makepkg -si
# Clean up
cd ..
rm -rf yay
sudo pacman -S flatpak
Install requirements:
sudo pacman -S bluez bluez-utils && sudo systemctl start bluetooth.service && sudo systemctl enable bluetooth.servicesudo pacman -S xdg-desktop-portal-gnome && gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' && gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'sudo pacman -S steamsudo pacman -S discordyay -S obsidian google-chromesudo pacman -S obs-studiosudo pacman -S vlcyay -S fsearchyay -S visual-studio-code-binsudo pacman -S podman podman-composesudo pacman -S gnome-keyring( & set it up in vscode: Configure Runtime Arguments and add"password-store":"gnome-libsecret")sudo pacman -S dbeaverflatpak install flathub io.missioncenter.MissionCentersudo pacman -S filelightyay -S github-desktop-binsudo pacman -S grim slurpsudo pacman -S wl-clipboardsudo pacman -S swappycurl -fsSL https://tailscale.com/install.sh | sh
Noctalia changes:
Begin by reading the FAQ For Noctalia: https://docs.noctalia.dev/getting-started/faq/
- Add your wallpaper and profile picture.
- Add dock
- Set location
- Set opacity
- Change the size of the dock (in accordance with the value you put for struts in niri)
- Fix the icons by adding
QT_QPA_PLATFORMTHEME=gtk3to/etc/environment(as root)
Niri changes
Note: before you quit niri and log back in, run niri validate to make sure the config is still working, otherwise niri is going to start with a blank config.
Change your keyboard layout:
input {
keyboard {
xkb {
layout "gb"
}
numlock
}
}
Add your displays:
output "DP-1" {
mode "3440x1440@165.001"
position x=0 y=0
}
output "HDMI-A-1" {
mode "1920x1080"
position x=720 y=1440
}
You can find their info with the command niri msg outputs
Add key bindings
// Core Noctalia binds
Mod+Space { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "toggle"; }
Mod+S { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "controlCenter" "toggle"; }
Mod+Comma { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "settings" "toggle"; }
// Audio controls
XF86AudioRaiseVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "increase"; }
XF86AudioLowerVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "decrease"; }
XF86AudioMute { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "muteOutput"; }
// Brightness controls
XF86MonBrightnessUp { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "increase"; }
XF86MonBrightnessDown { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "decrease"; }
// Screenshot region to clipboard
Mod+Shift+S { spawn "sh" "-c" "grim -g \"$(slurp)\" - | wl-copy"; }
// Screenshot region with editing (Swappy)
Mod+Print { spawn "sh" "-c" "grim -g \"$(slurp)\" - | swappy -f -"; }
Make sure you remove previosu entries for Mod+Space, XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute, Mod+Print
First, make room for the dock at the bottom of the screen
layout {
gaps 7
struts {
left 0
right 0
top 0
bottom 40
}
}
Startup script with windows in the right place
Note: to find chrome app, use:
grep -il bitwarden ~/.local/share/applications/chrome-*.desktop
In my case I want the following:
First screen (large): Workspace 1:
- Todoist (50% width) /home/ioan/.local/share/applications/chrome-knaiokfnmjjldlfhlioejgcompgenfhb-Default.desktop
- Chrome ( 75% width)
- Claude ( 75% width) /home/ioan/.local/share/applications/chrome-fmpnliohjhemenmnlpbfagaolkdacoja-Default.desktop
Workspace 2:
- Vscode main projects (75% width) opens /home/ioan/Documents/repos/ps2mono with code)
- Terminal allacrity (50% default)
Workspace 3:
- Vscode secondary projects (75% width) (has code open /home/ioan/Documents/repos/mysql-downloader/)
Workspace 4:
- SSH sessions running in vscode (flatcar project) (opens /home/ioan/Documents/repos/flatcar with code) (75% width)
Workspace 5:
- Gaming + my app in another browser session chrome http://ps2immersion.com/ (game off by default) (35% width)
Secondary screen (small): Workspace 1:
- Bitwarden (chrome app) (35% width) /home/ioan/.local/share/applications/chrome-fflifmfnonladkgkdehllhbcghakccgh-Default.desktop
- Chrome (75% width)
- Terminal allacrity (default) (50% width)
Workspace 2:
- Discord (60% width)
- Obsidian (60% width) /home/ioan/Documents/Obsidian/SaMearga
Find the script below.
Discord servers:

