Files
2026-06-23 23:58:58 -05:00

669 lines
28 KiB
Plaintext

# ███████╗ ██████╗ ██████╗██╗ ██████╗ ██████╗██╗ ██╗██████╗ ███████╗██████╗ ███████╗███████╗███╗ ██╗ ██████╗
# ██╔════╝██╔═══██╗██╔════╝██║██╔═══██╗ ██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗██╔════╝██╔════╝████╗ ██║██╔════╝
# ███████╗██║ ██║██║ ██║██║ ██║█████╗██║ ╚████╔╝ ██████╔╝█████╗ ██████╔╝█████╗ █████╗ ██╔██╗ ██║██║ ███╗
# ╚════██║██║ ██║██║ ██║██║ ██║╚════╝██║ ╚██╔╝ ██╔══██╗██╔══╝ ██╔══██╗██╔══╝ ██╔══╝ ██║╚██╗██║██║ ██║
# ███████║╚██████╔╝╚██████╗██║╚██████╔╝ ╚██████╗ ██║ ██████╔╝███████╗██║ ██║███████╗███████╗██║ ╚████║╚██████╔╝
# ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═══╝ ╚═════╝
#
# T H E O P E R A T I N G S Y S T E M
#
# HYPRLAND | Linara OS [2026-05-30]
#
# Tested on: Hyprland 0.55.2 (v0.55.2, commit 39d7e20)
# Libraries: Hyprgraphics 0.5.1 | Hyprutils 0.13.1 | Hyprcursor 0.1.13
# Hyprlang 0.6.8 | Aquamarine 0.12.0
#
# Reload config without logout: hyprctl reload
# Inspect running windows: hyprctl clients
# Check active keybinds: hyprctl binds
#==============================================================================#
# #
# 1. MONITORS #
# #
#==============================================================================#
# Syntax: monitor = name, resolution, position, scale
#
# Examples:
# monitor = ,preferred,auto,1 # any monitor, native res, scale 1
# monitor = eDP-1,1920x1080@60,0x0,1 # exact: name, res@Hz, position, scale
# monitor = HDMI-A-1,2560x1440,1920x0,1 # second monitor to the right
# monitor = HDMI-A-1,disable # turn off a monitor
#
# Find monitor names: hyprctl monitors
monitor=,preferred,auto,1.2
#==============================================================================#
# #
# 2. ENVIRONMENT #
# #
#==============================================================================#
# Syntax: env = VARIABLE,value
# These are set BEFORE autostart apps launch — apps inherit them.
# Changing env requires full Hyprland restart (not just hyprctl reload).
# Cursor & scaling
env = XCURSOR_SIZE,24
env = DPI_SCALE,1.0
# Session
env = XDG_CURRENT_DESKTOP="Hyprland";
env = XDG_SESSION_TYPE="wayland";
env = XDG_SESSION_DESKTOP="Hyprland";
# Qt
env = QT_AUTO_SCREEN_SCALE_FACTOR="1";
env = QT_QPA_PLATFORM="wayland";
env = QT_QPA_PLATFORMTHEME="gtk3";
#env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
# Mozilla (Librewolf / Firefox)
env = MOZ_ENABLE_WAYLAND, 1
env = MOZ_DBUS_REMOTE,1
# GTK
env = GDK_BACKEND,wayland
env = GTK_USE_PORTAL,1
env = GTK_USE_PORTAL="1"
# Misc
env = WLR_NO_HARDWARE_CURSORS,1
xwayland {
force_zero_scaling = true
}
#==============================================================================#
# #
# 3. AUTOSTART #
# #
#==============================================================================#
# exec-once = command # runs ONCE at Hyprland startup
# exec = command # runs at startup AND on every hyprctl reload
#
# Examples:
# exec-once = sleep 5 && myapp # delayed start
# exec-once = bash -c "cmd1; cmd2" # multiple commands
# exec-once = [workspace 3 silent] librewolf # start on workspace 3
# --- Wallpaper ---
exec-once = hyprpaper -c ~/.config/hypr/LibreOS/hyprpaper/hyprpaper.conf
# --- Panel ---
# waybar must start BEFORE pipewire daemons
# Otherwise it cannot write to the pulse file
# and throws a memory allocation error
exec-once = killall waybar; sleep 3 && waybar -c ~/.config/hypr/LibreOS/waybar/config -s ~/.config/hypr/LibreOS/waybar/style.css
# --- Sound ---
#exec-once = paplay ~/.config/hypr/LibreOS/audio/welcome-to-socio-cybernetic-operating-system.wav
exec-once = ffplay -nodisp -autoexit -af "volume=0.3" ~/.config/hypr/LibreOS/audio/welcome-to-socio-cybernetic-operating-system.wav
exec-once = bash /usr/bin/artix-pipewire-launcher restart
# --- Network ---
#exec-once = connmand
exec-once = connman-gtk
# --- Apps ---
exec-once = qterminal
exec-once = [workspace 2 silent] qterminal -e '/usr/share/scripts/nekoray.sh'
# --- Screen sharing helper ---
exec-once = xwaylandvideobridge
# --- Allow nekoray to run as root ---
exec-once = xhost +SI:localuser:root
#exec-once = alacritty --config-file ~/.config/hypr/LibreOS/alacritty/alacritty.toml
#exec-once = QT_QPA_PLATFORM=xcb obs
#==============================================================================#
# #
# 4. INPUT #
# #
#==============================================================================#
# kb_layout — comma-separated layouts (us,ru,de...)
# kb_options — xkb options, e.g.:
# grp:alt_shift_toggle — Alt+Shift switches layout
# grp:caps_toggle — CapsLock switches layout
# caps:escape — CapsLock acts as Escape (vim users)
#
# repeat_rate / repeat_delay — key repeat speed:
# repeat_rate = 25 # chars per second when holding key
# repeat_delay = 600 # ms before repeat starts
input {
kb_layout = us,ru
kb_variant =
kb_model =
kb_options = grp:alt_shift_toggle
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = false
}
numlock_by_default = true
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
#==============================================================================#
# #
# 5. APPEARANCE #
# #
#==============================================================================#
# Colors use rgba(RRGGBBAA) or rgb(RRGGBB) hex format.
# Gradient borders: list 2+ colors + angle:
# col.active_border = rgba(00f0ffff) rgba(ff2bd6ff) 45deg
# --- Gaps, borders, colors ---
# SCE palette: cyan #00f0ff | magenta #ff2bd6 | amber #ffae5c
general {
gaps_in = 4 # gap between windows
gaps_out = 8 # gap between windows and screen edge
border_size = 1
col.active_border = rgba(d8dee8ff) rgba(afc8e9ff) 45deg
col.inactive_border = rgba(2f343fff)
layout = dwindle # dwindle | master
resize_on_border = true # drag window edge to resize, no keybind needed
}
# --- Window decorations ---
decoration {
rounding = 12 # corner radius in px, 0 = square corners
# Slightly dim unfocused windows — focus is instantly visible
dim_inactive = true
dim_strength = 0.12
# Inactive windows slightly transparent — depth effect with blur
active_opacity = 1.0
inactive_opacity = 0.94
blur {
enabled = true
size = 6 # blur radius — higher = more blur, more GPU
passes = 2 # blur quality — higher = smoother, more GPU
vibrancy = 0.17 # saturate colors behind blur — glassy look
popups = true # also blur context menus / tooltips
}
}
# --- Animations ---
# Syntax: animation = NAME, ONOFF(0/1), SPEED, CURVE [,STYLE]
# Custom curve: bezier = name, x0, y0, x1, y1 (cubic-bezier like CSS)
# Disable all animations: set enabled = false (good for weak GPU)
# Philosophy: FAST and snappy. Animations should be felt, not waited for.
animations {
enabled = true
# Curves
bezier = linear, 0, 0, 1, 1
bezier = snappy, 0.16, 1, 0.3, 1 # fast start, soft landing
bezier = overshot, 0.13, 0.99, 0.29, 1.08 # tiny bounce at the end
bezier = smoothOut, 0.36, 0, 0.66, -0.56 # accelerate away
# Windows: quick pop with a slight overshoot
animation = windows, 1, 3, overshot, popin 85%
animation = windowsOut, 1, 3, smoothOut, popin 85%
animation = windowsMove, 1, 3, snappy
# Fade: fast
animation = fade, 1, 4, snappy
animation = fadeDim, 1, 4, snappy
# Borders
animation = borderangle, 1, 100, linear, loop
animation = border, 1, 5, snappy
# Borders
animation = borderangle, 1, 100, linear, loop
animation = border, 1, 5, snappy
# Workspaces: quick slide
animation = workspaces, 1, 4, snappy, slide
# Layers (wofi, notifications): pop in fast
animation = layers, 1, 3, snappy, popin 90%
}
# --- Layer rules (blur for panel & launcher) ---
# Makes waybar and wofi translucent-glassy instead of flat
layerrule = blur on, match:namespace waybar
layerrule = ignore_alpha 0.3, match:namespace waybar
layerrule = blur on, match:namespace wofi
layerrule = ignore_alpha 0.3, match:namespace wofi
layerrule = blur on, match:namespace notifications
layerrule = ignore_alpha 0.3, match:namespace notifications
#==============================================================================#
# #
# 6. LAYOUT & MISC #
# #
#==============================================================================#
dwindle {
#pseudotile = true # master switch for pseudotiling. Bound to mainMod + P below
preserve_split = true # you probably want this
# force_split = 2 # always split to the right/bottom
}
# Disable "app not responding" dialog
# When rendering in Blender, this dialog can ruin the whole render
misc {
enable_anr_dialog = false
# Other useful misc options:
# disable_hyprland_logo = true # no anime girl on empty workspace
# disable_splash_rendering = true # no splash text
# mouse_move_enables_dpms = true # wake screen on mouse move
}
#gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
#workspace_swipe = false
#}
#==============================================================================#
# #
# 7. WINDOW RULES #
# #
#==============================================================================#
# NEW SYNTAX (Hyprland 0.53+): windowrule = RULE [args], match:FIELD value
#
# Matchers:
# match:class regex — by window class (find with: hyprctl clients)
# match:title regex — by window title
# match:class a, match:title b — combine: both must match
#
# Boolean rules need "on" / "off":
# float on — floating mode
# pin on — visible on all workspaces (floating only)
# center on — center on screen (floating only)
# no_anim on — disable animations
# no_blur on — disable blur
#
# Value rules:
# workspace N — open on workspace N (add "silent" to not switch)
# size W H — set size (floating only)
# max_size W H — maximum size
# opacity 0.9 — transparency (add "override" for exact value)
# idle_inhibit focus — block screen sleep while focused (video players)
# --- Workspace assignment ---
# ws1 Terminal | ws2 Browser | ws3 Code | ws4 3D/Editors | ws5 Messengers
# ws6 Graphics | ws7 Office/Media | ws8 OBS/VM | ws9 Torrents | ws10 Nekoray
# Terminals
windowrule = workspace 1, match:class ^(qterminal)$
# Browsers
windowrule = workspace 2, match:class ^(librewolf)$
windowrule = workspace 2, match:class ^(firefox)$
windowrule = workspace 2, match:class ^(chromium)$
windowrule = workspace 2, match:class ^(Brave-browser)$
windowrule = workspace 2, match:class ^(Tor Browser)$
# Code editors
windowrule = workspace 3, match:class ^(codium)$
windowrule = workspace 3, match:class ^(VSCodium)$
windowrule = workspace 3, match:class ^(code)$
# 3D / Text editors
windowrule = workspace 4, match:class ^(blender)$
windowrule = workspace 4, match:class ^(sublime_text)$
# Messengers
windowrule = workspace 5, match:class ^(vesktop)$
windowrule = workspace 5, match:class ^(discord)$
windowrule = workspace 5, match:class ^(org.telegram.desktop)$
windowrule = workspace 5, match:class ^(Signal)$
windowrule = workspace 5, match:class ^(Element)$
windowrule = workspace 5, match:class ^(thunderbird)$
# Graphics
windowrule = workspace 6, match:class ^(Gimp.*)$
windowrule = workspace 6, match:class ^(org.inkscape.Inkscape)$
windowrule = workspace 6, match:class ^(krita)$
windowrule = workspace 6, match:class ^(darktable)$
# Office / Media production
windowrule = workspace 7, match:class ^(libreoffice.*)$
windowrule = workspace 7, match:class ^(org.kde.kdenlive)$
windowrule = workspace 7, match:class ^(Audacity)$
# OBS / Virtualization
windowrule = workspace 8, match:class ^(com.obsproject.Studio)$
windowrule = workspace 8, match:class ^(virt-manager)$
windowrule = workspace 8, match:class ^(VirtualBox Machine)$
windowrule = workspace 8, match:class ^(VirtualBox Manager)$
# Torrents / Downloads
windowrule = workspace 9 silent, match:class ^(org.qbittorrent.qBittorrent)$
windowrule = workspace 9 silent, match:class ^(transmission-gtk)$
# Notes / Knowledge base
windowrule = workspace 4, match:class ^(obsidian)$
windowrule = workspace 4, match:class ^(trilium)$
windowrule = workspace 4, match:class ^(Joplin)$
windowrule = workspace 4, match:class ^(Logseq)$
# Music / Audio
windowrule = workspace 7, match:class ^(Spotify)$
windowrule = workspace 7, match:class ^(strawberry)$
windowrule = workspace 7, match:class ^(org.gnome.Rhythmbox3)$
# Dev tools
windowrule = workspace 3, match:class ^(jetbrains-.*)$
windowrule = workspace 3, match:class ^(Godot)$
windowrule = workspace 3, match:class ^(DBeaver)$
windowrule = workspace 3, match:class ^(Postman)$
# Video calls
windowrule = workspace 5, match:class ^(Zoom)$
windowrule = workspace 5, match:class ^(Slack)$
windowrule = workspace 5, match:class ^(teams-for-linux)$
# Gaming
windowrule = workspace 9, match:class ^(steam)$
windowrule = workspace 9, match:class ^(lutris)$
windowrule = workspace 9, match:class ^(heroic)$
# Security research
windowrule = workspace 8, match:class ^(org.wireshark.Wireshark)$
windowrule = workspace 8, match:class ^(burp-StartBurp)$
windowrule = workspace 8, match:class ^(ZAP)$
# Crypto wallets
windowrule = workspace 10, match:class ^(monero-wallet-gui)$
windowrule = workspace 10, match:class ^(electrum)$
# Proxy (silent, no focus steal)
windowrule = workspace 10 silent, no_initial_focus on, match:class ^([Nn]ekoray)$
# --- Floating windows ---
# File manager
windowrule = float on, size 1000 600, center on, match:class ^(thunar)$
# System utilities
windowrule = float on, size 800 500, center on, match:class ^(org.pulseaudio.pavucontrol)$
windowrule = float on, size 800 500, center on, match:class ^(pavucontrol)$
windowrule = float on, center on, match:class ^(blueman-manager)$
windowrule = float on, center on, match:class ^(nm-connection-editor)$
windowrule = float on, center on, match:class ^(connman-gtk)$
windowrule = float on, match:class ^(galculator)$
windowrule = float on, match:class ^(qalculate-gtk)$
windowrule = float on, size 900 600, center on, match:title ^(htop|btop)$
# Image viewers
windowrule = float on, match:class ^(imv)$
windowrule = float on, match:class ^(feh)$
windowrule = float on, center on, match:class ^(org.gnome.Loupe)$
# Video players
windowrule = float on, pin on, match:class ^(mpv)$
windowrule = float on, match:class ^(vlc)$
# Picture-in-Picture (browser video popout) — pin to all workspaces
windowrule = float on, pin on, no_initial_focus on, match:title ^(Picture-in-Picture)$
# Screenshots
windowrule = float on, no_anim on, match:class ^(flameshot)$
# Password manager
windowrule = float on, center on, match:class ^(org.keepassxc.KeePassXC)$
# Authentication agents (polkit password prompts)
windowrule = float on, center on, pin on, match:class ^(polkit-gnome-authentication-agent-1)$
windowrule = float on, center on, pin on, match:class ^(lxqt-policykit-agent)$
# Steam (friends list and dialogs float, main window tiled)
windowrule = float on, match:class ^(steam)$, match:title ^(Friends List)$
windowrule = float on, match:class ^(steam)$, match:title ^(Steam Settings)$
# Archive managers
windowrule = float on, center on, match:class ^(org.kde.ark)$
windowrule = float on, center on, match:class ^(file-roller)$
windowrule = float on, center on, match:class ^(xarchiver)$
# System tools (disk/partition managers — float to see them over docs)
windowrule = float on, center on, size 1100 700, match:class ^(GParted)$
windowrule = float on, center on, match:class ^(gnome-disks)$
windowrule = float on, center on, match:class ^(timeshift-gtk)$
windowrule = float on, center on, match:class ^(org.gnome.baobab)$
windowrule = float on, center on, match:class ^(system-config-printer)$
# Audio routing / effects
windowrule = float on, center on, size 1000 600, match:class ^(qpwgraph)$
windowrule = float on, center on, match:class ^(com.github.wwmm.easyeffects)$
windowrule = float on, center on, match:class ^(helvum)$
# Color pickers / small utils
windowrule = float on, match:class ^(hyprpicker)$
windowrule = float on, match:class ^(gcolor3)$
windowrule = float on, center on, match:class ^(gnome-calculator)$
windowrule = float on, center on, match:class ^(kcalc)$
# Document readers — keep tiled, but inhibit sleep while reading fullscreen
windowrule = idle_inhibit fullscreen, match:class ^(org.pwmt.zathura)$
windowrule = idle_inhibit fullscreen, match:class ^(evince)$
windowrule = idle_inhibit fullscreen, match:class ^(okular)$
# Video — never let screen sleep during playback
windowrule = idle_inhibit focus, match:class ^(mpv)$
windowrule = idle_inhibit focus, match:class ^(vlc)$
windowrule = idle_inhibit fullscreen, match:class ^(librewolf)$
windowrule = idle_inhibit fullscreen, match:class ^(firefox)$
# Games — fullscreen + no sleep + immediate frames (reduces input lag)
windowrule = idle_inhibit always, match:class ^(steam_app_.*)$
windowrule = immediate on, match:class ^(steam_app_.*)$
windowrule = idle_inhibit always, match:class ^(gamescope)$
windowrule = immediate on, match:class ^(gamescope)$
windowrule = fullscreen on, match:class ^(gamescope)$
# Wine / Windows apps — often misbehave when tiled
windowrule = float on, match:class ^(wine)$
windowrule = float on, match:title ^(Wine System Tray)$
# OBS projector windows float
windowrule = float on, match:title ^(Windowed Projector.*)$
# qBittorrent dialogs (main window on ws9, dialogs float)
windowrule = float on, center on, match:class ^(org.qbittorrent.qBittorrent)$, match:title ^(.*(Options|Add|Delete|Rename).*)$
# Firefox/Librewolf extension + bookmark popups
windowrule = float on, match:class ^(librewolf)$, match:title ^(Extension.*)$
windowrule = float on, match:class ^(librewolf)$, match:title ^(Library)$
# Generic dialogs by title (catch-all for many apps)
windowrule = float on, center on, match:title ^(Confirm.*)$
windowrule = float on, center on, match:title ^(Error)$
windowrule = float on, center on, match:title ^(Warning)$
windowrule = float on, center on, match:title ^(Authentication Required)$
windowrule = float on, center on, match:title ^(Preferences)$
windowrule = float on, center on, match:title ^(Settings)$
windowrule = float on, center on, match:title ^(About.*)$
# --- File dialogs ---
windowrule = float on, match:title ^(Open File)$
windowrule = float on, match:title ^(Save File)$
windowrule = float on, match:title ^(Open Folder)$
windowrule = float on, match:title ^(Save As)$
windowrule = float on, match:title ^(File Upload)$
windowrule = float on, match:class ^(xdg-desktop-portal-gtk)$
windowrule = float on, match:class ^(xdg-desktop-portal-kde)$
# Thunar dialogs (copy progress, rename, properties)
windowrule = float on, center on, match:class ^(thunar)$, match:title ^(File Operation Progress)$
windowrule = float on, center on, match:class ^(thunar)$, match:title ^(Rename.*)$
windowrule = float on, center on, match:class ^(thunar)$, match:title ^(.*Properties)$
# --- Hide xwaylandvideobridge (screen sharing helper, must be invisible) ---
windowrule = opacity 0.0 override, no_anim on, no_blur on, max_size 1 1, match:class ^(xwaylandvideobridge)$
#==============================================================================#
# #
# 8. KEYBINDINGS #
# #
#==============================================================================#
# Syntax: bind = MODS, KEY, DISPATCHER, [PARAMS]
#
# Bind flags (letter after "bind"):
# bind = ... # normal
# bindm = ... # mouse bind (hold to drag)
# bindl = ... # works even on lockscreen
# bindr = ... # triggers on key RELEASE
# binde = ... # repeats when held (good for resize/volume)
#
# Examples:
# bind = $mainMod, T, exec, qterminal # launch app
# bind = $mainMod SHIFT, F, fullscreen, 0 # two modifiers
# binde = , XF86AudioRaiseVolume, exec, ... # repeat while held
# bind = $mainMod, G, togglegroup # tabbed window group
#
# Key names: letters, numbers, left/right/up/down, RETURN, SPACE, Print,
# XF86Audio*, mouse:272 (LMB), mouse:273 (RMB), mouse_down/up (wheel)
$mainMod = SUPER
# --- Application launch ---
bind = $mainMod, RETURN, exec, qterminal
bind = $mainMod, B, exec, thunar
bind = $mainMod, D, exec, wofi --show drun --allow-images --allow-markup -c ~/.config/hypr/LibreOS/wofi/ -s ~/.config/hypr/LibreOS/wofi/style.css
bind = $mainMod, O, exec, QT_QPA_PLATFORM=xcb obs
bind = $mainMod, V, exec, dbus-launch vscodium
bind = $mainMod SHIFT, I, exec, dbus-launch flatpak run com.github.zadam.trilium
#bind = $mainMod, RETURN, exec, alacritty --config-file ~/.config/hypr/LibreOS/alacritty/alacritty.toml
# --- Window management ---
bind = $mainMod, Q, killactive,
bind = $mainMod, F, togglefloating,
bind = $mainMod, P, pseudo, # dwindle
#bind = $mainMod, I, togglesplit, # dwindle
# --- Session ---
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod CTRL, P, exec, poweroff
bind = $mainMod CTRL, R, exec, reboot
# --- Screenshots ---
bind = , Print, exec, grim ~/screen-"$(date +%s)".png
bind = $mainMod, Print, exec, grim -g "$(slurp)" ~/screen-"$(date +%s)".png
# --- Focus switching ---
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# --- Move floating windows ---
bind = $mainMod ALT, right, moveactive, 50 0
bind = $mainMod ALT, left, moveactive, -50 0
bind = $mainMod ALT, up, moveactive, 0 -50
bind = $mainMod ALT, down, moveactive, 0 50
# --- Resize windows ---
bind = $mainMod CTRL, left, resizeactive,-50 0
bind = $mainMod CTRL, right, resizeactive,50 0
bind = $mainMod CTRL, up, resizeactive,0 -50
bind = $mainMod CTRL, down, resizeactive,0 50
# --- Move/resize with mouse ---
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
#==============================================================================#
# #
# 9. WORKSPACES #
# #
#==============================================================================#
# Dispatchers:
# workspace N — go to workspace N
# movetoworkspace N — move window AND follow it
# movetoworkspacesilent N — move window, stay where you are
# workspace e+1 / e-1 — next / previous existing workspace
# --- Switch workspace ---
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# --- Move window to workspace ---
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# --- Scroll through workspaces ---
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod, n, workspace, e-1
bind = $mainMod, m, workspace, e+1
#==============================================================================#
# #
# 10. MEDIA KEYS #
# #
#==============================================================================#
# Tip: use "binde" instead of "bind" for volume/brightness —
# then holding the key repeats the action.
# --- Volume ---
bind = ,XF86AudioMute,exec, amixer -D pulse set 'Master' toggle
bind = ,XF86AudioLowerVolume,exec, amixer -D pulse set 'Master' 5%-
bind = ,XF86AudioRaiseVolume,exec, amixer -D pulse set 'Master' 5%+
bind = ,XF86AudioMicMute,exec, amixer -D pulse set 'Capture' toggle
# --- Brightness ---
bind = ,XF86MonBrightnessUp, exec, brightnessctl set +10%
bind = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-
#==============================================================================#
# #
# 11. EXTRA / PLUGINS #
# #
#==============================================================================#
# --- Kando menu ---
#windowrule = no_blur on, opaque on, no_border on, no_anim on, match:class kando
#windowrule = float on, pin on, size 100% 100%, match:class kando
bind = CTRL, Space, global, menu.kando.Kando:example-menu
# --- Source additional config files ---
# Split config into multiple files, e.g. keybinds.conf, colors.conf:
# source = ~/.config/hypr/myColors.conf