669 lines
28 KiB
Plaintext
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
|