Files
dotfiles/dot_config/niri/config.kdl
T
Prad NukalaandClaude Fable 5 2142bdf9cb feat(arch-layer,scripts): linux-gated desktop configs + package install scripts
niri (exact_config.d, scripts), noctalia (plugins excluded — runtime
state with embedded token), fontconfig, mimeapps.list,
niri-dynamic-workspaces, systemd user unit files (enable-state not
managed; only nirinit enabled by run_once), niri-launch vendored from
/usr/bin (unowned hand-written script, shellcheck warnings pre-existing).

Scripts: packages (pacman --needed + paru, brew on darwin, root-safe,
keyed on packages.yaml hash), gh extensions (idempotent), user services
(linux), post (tpm clone, bat cache, fc-cache). All shellcheck-clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 14:56:09 -04:00

196 lines
5.1 KiB
KDL

// ============================================================================
// NIRI CONFIGURATION - Base for iNiR (ii)
// ============================================================================
// Minimal base config - customize to your needs
// Wiki: https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
// ============================================================================
hotkey-overlay {
skip-at-startup
}
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
include "config.d/10-input-and-cursor.kdl"
include "config.d/20-layout-and-overview.kdl"
include "config.d/30-window-rules.kdl"
include "config.d/40-environment.kdl"
include "config.d/50-startup.kdl"
include "config.d/60-animations.kdl"
include "config.d/70-binds.kdl"
include "config.d/80-layer-rules.kdl"
include "config.d/90-outputs.kdl"
// ============================================================================
// Layer rules added by iNiR (required for backdrop in overview)
// ============================================================================
input {
keyboard {
xkb {
layout "us"
}
repeat-delay 400
repeat-rate 50
}
touchpad {
natural-scroll
tap
tap-button-map "left-right-middle"
}
mod-key "Super"
mod-key-nested "Alt"
}
// ============================================================================
// LAYOUT
// ============================================================================
layout {
background-color "transparent"
default-column-width { proportion 0.5; }
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
focus-ring {
width 1.5
active-color "#7fc8ff"
inactive-color "transparent"
}
border {
off
width 1.5
active-color "#ffc87f"
inactive-color "transparent"
urgent-color "#9b0000"
}
shadow {
off
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
tab-indicator {
place-within-column
hide-when-single-tab
position "left" // Can be "left", "right", "top", or "bottom"
}
}
gestures {
hot-corners {
off
}
}
cursor {
xcursor-theme "capitaine-cursors-light"
xcursor-size 24
hide-when-typing
}
overview {
zoom 0.4
workspace-shadow { off; }
}
// ============================================================================
// WINDOW RULES
// ============================================================================
window-rule {
geometry-corner-radius 8
clip-to-geometry true
}
// ============================================================================
// ANIMATIONS
// ============================================================================
// Tuned to complement quickshell's expressive Material motion curves
// QS uses ~500ms for main movements, ~400ms enter, ~200ms exit
animations {
workspace-switch {
spring damping-ratio=0.78 stiffness=1350 epsilon=0.0001
}
window-open {
spring damping-ratio=0.82 stiffness=1125 epsilon=0.0001
}
window-close {
spring damping-ratio=0.88 stiffness=2025 epsilon=0.0001
}
horizontal-view-movement {
spring damping-ratio=0.80 stiffness=1238 epsilon=0.0001
}
window-movement {
spring damping-ratio=0.85 stiffness=1463 epsilon=0.0001
}
window-resize {
spring damping-ratio=0.88 stiffness=1575 epsilon=0.0001
}
config-notification-open-close {
spring damping-ratio=0.90 stiffness=1800 epsilon=0.0001
}
screenshot-ui-open {
spring damping-ratio=0.85 stiffness=1688 epsilon=0.0001
}
}
// ============================================================================
// ENVIRONMENT
// ============================================================================
environment {
XDG_CURRENT_DESKTOP "niri"
XDG_MENU_PREFIX "plasma-" // Required for Dolphin/KDE app file associations
QT_QPA_PLATFORM "wayland"
ELECTRON_OZONE_PLATFORM_HINT "auto"
QT_LOGGING_RULES "quickshell.dbus.properties=false"
// Qt theming: kde platform reads colors from kdeglobals (requires plasma-integration pkg)
// The installer falls back to qt6ct only if plasma-integration is not installed
QT_QPA_PLATFORMTHEME "kde"
QT_STYLE_OVERRIDE "Darkly"
// Quickshell Python virtual environment
INIR_VENV "$HOME/.local/state/quickshell/.venv"
ILLOGICAL_IMPULSE_VIRTUAL_ENV "$HOME/.local/state/quickshell/.venv"
}
// ============================================================================
// STARTUP — commands live in config.d/50-startup.kdl
// ============================================================================
// Noctalia v5: allows notification actions and window activation from Noctalia.
debug {
honor-xdg-activation-with-invalid-serial
}
// ============================================================================
// KEYBINDINGS
// ============================================================================
include "./noctalia.kdl"
prefer-no-csd