chore(hypr): migrate Hyprland configuration to Lua

This commit is contained in:
2026-08-19 15:40:38 +02:00
parent a754efd301
commit fe99bff5a8
14 changed files with 313 additions and 571 deletions
-93
View File
@@ -1,93 +0,0 @@
source = ./bindings/media.conf
source = ./bindings/tiling.conf
source = ./bindings/utilities.conf
# Lid Switch
#bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor eDP-1, disable
#bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor eDP-1, preferred, auto, auto
# Applications
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
bindd = $mainMod, B, Launch Browser, exec, firefox
bindd = $mainMod SHIFT, B, Launch Browser (Private window), exec, firefox --private-window
bindd = $mainMod, M, Spotify, exec, flatpak run com.spotify.Client
bindd = $mainMod, T, System Monitor, exec, $terminal btop
bindd = $mainMod, I, Todoist, exec, todoist
bindd = $mainMod, O, Obsidian, exec, obsidian
bindd = $mainMod, G, Telegram, exec, Telegram
bindd = $mainMod SHIFT, G, Signal, exec, signal-desktop --password-store="gnome-libsecret"
bindd = $mainMod, F, WhatsApp, exec, omarchy-launch-webapp https://web.whatsapp.com
bindd = $mainMod SHIFT, F, Element, exec, element-desktop --password-store="gnome-libsecret"
bindd = $mainMod, A, Gemini, exec, omarchy-launch-webapp https://gemini.google.com
bindd = $mainMod SHIFT, A, Perplexity, exec, omarchy-launch-webapp https://perplexity.ai
bindd = $mainMod, H, Home Assistant, exec, omarchy-launch-webapp https://ha.vektron.casa
bindd = $mainMod, S, Audio Settings, exec, $terminal wiremix --tab configuration
bind = $mainMod, return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT ALT, Q, exit,
bind = $mainMod, E, exec, $fileManager
#bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
#bind = $mainMod, J, togglesplit, # dwindle
bindd = $mainMod, L, Lock screen, exec, ~/.config/hypr/scripts/lock-screen
## Move focus with mainMod + arrow keys
#bind = $mainMod, left, movefocus, l
#bind = $mainMod, right, movefocus, r
#bind = $mainMod, up, movefocus, u
#bind = $mainMod, down, movefocus, d
#
## Switch workspaces with mainMod + [0-9]
#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 active window to a workspace with mainMod + SHIFT + [0-9]
#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
#
## Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
#
## Scroll through existing workspaces with mainMod + scroll
#bind = $mainMod, mouse_down, workspace, e+1
#bind = $mainMod, mouse_up, workspace, e-1
#
## Move/resize windows with mainMod + LMB/RMB and dragging
#bindm = $mainMod, mouse:272, movewindow
#bindm = $mainMod, mouse:273, resizewindow
#
## Laptop multimedia keys for volume and LCD brightness
#bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
#bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
#bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
#bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
#bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
#bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
#
## Requires playerctl
#bindl = , XF86AudioNext, exec, playerctl next
#bindl = , XF86AudioPause, exec, playerctl play-pause
#bindl = , XF86AudioPlay, exec, playerctl play-pause
#bindl = , XF86AudioPrev, exec, playerctl previous
+30
View File
@@ -0,0 +1,30 @@
require("bindings.media")
require("bindings.tiling")
require("bindings.utilities")
local terminal = "kitty"
local fileManager = "nautilus"
local menu = "wofi --show drun"
hl.bind("SUPER + B", hl.dsp.exec_cmd("firefox"), { description = "Launch Browser" })
hl.bind("SUPER + SHIFT + B", hl.dsp.exec_cmd("firefox --private-window"), { description = "Launch Browser (Private window)" })
hl.bind("SUPER + M", hl.dsp.exec_cmd("flatpak run com.spotify.Client"), { description = "Spotify" })
hl.bind("SUPER + T", hl.dsp.exec_cmd(terminal .. " btop"), { description = "System Monitor" })
hl.bind("SUPER + I", hl.dsp.exec_cmd("todoist"), { description = "Todoist" })
hl.bind("SUPER + O", hl.dsp.exec_cmd("obsidian"), { description = "Obsidian" })
hl.bind("SUPER + G", hl.dsp.exec_cmd("Telegram"), { description = "Telegram" })
hl.bind("SUPER + SHIFT + G", hl.dsp.exec_cmd("signal-desktop --password-store=\"gnome-libsecret\""), { description = "Signal" })
hl.bind("SUPER + F", hl.dsp.exec_cmd("omarchy-launch-webapp https://web.whatsapp.com"), { description = "WhatsApp" })
hl.bind("SUPER + SHIFT + F", hl.dsp.exec_cmd("element-desktop --password-store=\"gnome-libsecret\""), { description = "Element" })
hl.bind("SUPER + A", hl.dsp.exec_cmd("omarchy-launch-webapp https://gemini.google.com"), { description = "Gemini" })
hl.bind("SUPER + SHIFT + A", hl.dsp.exec_cmd("omarchy-launch-webapp https://perplexity.ai"), { description = "Perplexity" })
hl.bind("SUPER + H", hl.dsp.exec_cmd("omarchy-launch-webapp https://ha.vektron.casa"), { description = "Home Assistant" })
hl.bind("SUPER + S", hl.dsp.exec_cmd(terminal .. " wiremix --tab configuration"), { description = "Audio Settings" })
hl.bind("SUPER + return", hl.dsp.exec_cmd(terminal))
hl.bind("SUPER + Q", hl.dsp.window.close())
hl.bind("SUPER + SHIFT + ALT + Q", hl.dsp.exec_cmd("hyprctl dispatch exit"))
hl.bind("SUPER + E", hl.dsp.exec_cmd(fileManager))
hl.bind("SUPER + R", hl.dsp.exec_cmd(menu))
hl.bind("SUPER + P", hl.dsp.window.pseudo())
hl.bind("SUPER + L", hl.dsp.exec_cmd("~/.config/hypr/scripts/lock-screen"), { description = "Lock screen" })
-25
View File
@@ -1,25 +0,0 @@
# Only display the OSD on the currently focused monitor
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
# Laptop multimedia keys for volume and LCD brightness (with OSD)
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower
# Precise 1% multimedia adjustments with Alt modifier
bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1
bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1
bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, $osdclient --brightness +1
bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, $osdclient --brightness -1
# Requires playerctl
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous
# Switch audio output with Super + Mute
bindld = SUPER, XF86AudioMute, Switch audio output, exec, omarchy-cmd-audio-switch
+20
View File
@@ -0,0 +1,20 @@
local osdclient = "swayosd-client --monitor \"$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')\""
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd(osdclient .. " --output-volume raise"), { description = "Volume up", locked = true, repeating = true })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd(osdclient .. " --output-volume lower"), { description = "Volume down", locked = true, repeating = true })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd(osdclient .. " --output-volume mute-toggle"), { description = "Mute", locked = true, repeating = true })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd(osdclient .. " --input-volume mute-toggle"), { description = "Mute microphone", locked = true, repeating = true })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd(osdclient .. " --brightness raise"), { description = "Brightness up", locked = true, repeating = true })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd(osdclient .. " --brightness lower"), { description = "Brightness down", locked = true, repeating = true })
hl.bind("ALT + XF86AudioRaiseVolume", hl.dsp.exec_cmd(osdclient .. " --output-volume +1"), { description = "Volume up precise", locked = true, repeating = true })
hl.bind("ALT + XF86AudioLowerVolume", hl.dsp.exec_cmd(osdclient .. " --output-volume -1"), { description = "Volume down precise", locked = true, repeating = true })
hl.bind("ALT + XF86MonBrightnessUp", hl.dsp.exec_cmd(osdclient .. " --brightness +1"), { description = "Brightness up precise", locked = true, repeating = true })
hl.bind("ALT + XF86MonBrightnessDown", hl.dsp.exec_cmd(osdclient .. " --brightness -1"), { description = "Brightness down precise", locked = true, repeating = true })
hl.bind("XF86AudioNext", hl.dsp.exec_cmd(osdclient .. " --playerctl next"), { description = "Next track", locked = true })
hl.bind("XF86AudioPause", hl.dsp.exec_cmd(osdclient .. " --playerctl play-pause"), { description = "Pause", locked = true })
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd(osdclient .. " --playerctl play-pause"), { description = "Play", locked = true })
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd(osdclient .. " --playerctl previous"), { description = "Previous track", locked = true })
hl.bind("SUPER + XF86AudioMute", hl.dsp.exec_cmd("omarchy-cmd-audio-switch"), { description = "Switch audio output", locked = true })
-74
View File
@@ -1,74 +0,0 @@
# Close windows
bindd = SUPER, Q, Close active window, killactive,
#bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-cmd-close-all-windows
# Control tiling
bindd = SUPER, J, Toggle split, layoutmsg, togglesplit # dwindle
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
bindd = SUPER, V, Toggle floating, togglefloating,
bindd = SHIFT, F11, Force full screen, fullscreen, 0
bindd = ALT, F11, Full width, fullscreen, 1
bindd = SUPER SHIFT, RETURN, Full width, fullscreen, 1
bindd = SUPER, numbersign, 1:1 split, layoutmsg, splitratio -2
bindd = SUPER, numbersign, 1:1 split, layoutmsg, splitratio 0.9
# Move focus with SUPER + arrow keys
bindd = SUPER, left, Move focus left, movefocus, l
bindd = SUPER, right, Move focus right, movefocus, r
bindd = SUPER, up, Move focus up, movefocus, u
bindd = SUPER, down, Move focus down, movefocus, d
# Switch workspaces with SUPER + [0-9]
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
# Move active window to a workspace with SUPER + SHIFT + [0-9]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
# Tab between workspaces
bindd = SUPER, TAB, Next workspace, workspace, e+1
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
# Cycle through applications on active workspace
bindd = ALT, Tab, Cycle to next window, cyclenext
bindd = ALT SHIFT, Tab, Cycle to prev window, cyclenext, prev
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop
# Resize active window
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key
bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
# Scroll through existing workspaces with SUPER + scroll
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindmd = SUPER, mouse:272, Move window, movewindow
bindmd = SUPER, mouse:273, Resize window, resizewindow
+46
View File
@@ -0,0 +1,46 @@
hl.bind("SUPER + Q", hl.dsp.window.close(), { description = "Close active window" })
hl.bind("SUPER + J", hl.dsp.layout("togglesplit"), { description = "Toggle split" })
hl.bind("SUPER + P", hl.dsp.window.pseudo(), { description = "Pseudo window" })
hl.bind("SUPER + V", hl.dsp.window.float({ action = "toggle" }), { description = "Toggle floating" })
hl.bind("SHIFT + F11", hl.dsp.window.fullscreen(0), { description = "Force full screen" })
hl.bind("ALT + F11", hl.dsp.window.fullscreen(1), { description = "Full width" })
hl.bind("SUPER + SHIFT + RETURN", hl.dsp.window.fullscreen(1), { description = "Full width" })
hl.bind("SUPER + numbersign", hl.dsp.layout("splitratio -2"), { description = "1:1 split" })
hl.bind("SUPER + numbersign", hl.dsp.layout("splitratio 0.9"), { description = "1:1 split" })
hl.bind("SUPER + left", hl.dsp.focus({ direction = "left" }), { description = "Move focus left" })
hl.bind("SUPER + right", hl.dsp.focus({ direction = "right" }), { description = "Move focus right" })
hl.bind("SUPER + up", hl.dsp.focus({ direction = "up" }), { description = "Move focus up" })
hl.bind("SUPER + down", hl.dsp.focus({ direction = "down" }), { description = "Move focus down" })
for i = 1, 10 do
local key_code = 9 + i
hl.bind("SUPER + code:" .. tostring(key_code), hl.dsp.focus({ workspace = i }), { description = "Switch to workspace " .. tostring(i) })
hl.bind("SUPER + SHIFT + code:" .. tostring(key_code), hl.dsp.window.move({ workspace = i }), { description = "Move window to workspace " .. tostring(i) })
end
hl.bind("SUPER + TAB", hl.dsp.focus({ workspace = "e+1" }), { description = "Next workspace" })
hl.bind("SUPER + SHIFT + TAB", hl.dsp.focus({ workspace = "e-1" }), { description = "Previous workspace" })
hl.bind("SUPER + CTRL + TAB", hl.dsp.focus({ workspace = "previous" }), { description = "Former workspace" })
hl.bind("SUPER + SHIFT + left", hl.dsp.window.swap({ direction = "left" }), { description = "Swap window to the left" })
hl.bind("SUPER + SHIFT + right", hl.dsp.window.swap({ direction = "right" }), { description = "Swap window to the right" })
hl.bind("SUPER + SHIFT + up", hl.dsp.window.swap({ direction = "up" }), { description = "Swap window up" })
hl.bind("SUPER + SHIFT + down", hl.dsp.window.swap({ direction = "down" }), { description = "Swap window down" })
hl.bind("ALT + TAB", hl.dsp.exec_cmd("hyprctl dispatch cyclenext"), { description = "Cycle to next window" })
hl.bind("ALT + SHIFT + TAB", hl.dsp.exec_cmd("hyprctl dispatch cyclenext prev"), { description = "Cycle to prev window" })
hl.bind("ALT + TAB", hl.dsp.exec_cmd("hyprctl dispatch bringactivetotop"), { description = "Reveal active window on top" })
hl.bind("ALT + SHIFT + TAB", hl.dsp.exec_cmd("hyprctl dispatch bringactivetotop"), { description = "Reveal active window on top" })
hl.bind("SUPER + code:20", hl.dsp.window.resize({ x = -100, y = 0 }), { description = "Expand window left" })
hl.bind("SUPER + code:21", hl.dsp.window.resize({ x = 100, y = 0 }), { description = "Shrink window left" })
hl.bind("SUPER + SHIFT + code:20", hl.dsp.window.resize({ x = 0, y = -100 }), { description = "Shrink window up" })
hl.bind("SUPER + SHIFT + code:21", hl.dsp.window.resize({ x = 0, y = 100 }), { description = "Expand window down" })
hl.bind("SUPER + mouse_down", hl.dsp.focus({ workspace = "e+1" }), { description = "Scroll active workspace forward" })
hl.bind("SUPER + mouse_up", hl.dsp.focus({ workspace = "e-1" }), { description = "Scroll active workspace backward" })
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { description = "Move window", mouse = true })
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { description = "Resize window", mouse = true })
-49
View File
@@ -1,49 +0,0 @@
# Menus
bindd = SUPER, SPACE, Launch apps, exec, walker -p "Start…"
bindd = SUPER CTRL, E, Emoji picker, exec, walker -m Emojis
bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system
bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
bindd = , XF86Calculator, Calculator, exec, gnome-calculator
bindd = SUPER, N, Notification center, exec, swaync-client -op
# Aesthetics
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
# Notifications
bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all
bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Toggle idling
bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle
# Toggle nightlight
bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight
# Control Apple Display brightness
bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-cmd-apple-display-brightness -5000
bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-brightness +5000
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000
# Screenshots
bindd = , PRINT, Screenshot of region, exec, ~/.config/hypr/scripts/cmd-screenshot region
bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.config/hypr/scripts/cmd-screenshot windows
bindd = CTRL, PRINT, Screenshot of display, exec, ~/.config/hypr/scripts/cmd-screenshot fullscreen
# Screen recordings
bindd = ALT, PRINT, Screen record a region, exec, omarchy-cmd-screenrecord region
bindd = ALT SHIFT, PRINT, Screen record a region with audio, exec, omarchy-cmd-screenrecord region audio
bindd = CTRL ALT, PRINT, Screen record display, exec, omarchy-cmd-screenrecord output
bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-cmd-screenrecord output audio
# Color picker
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
# File sharing
bindd = CTRL SUPER, S, Share, exec, omarchy-menu share
+37
View File
@@ -0,0 +1,37 @@
hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("walker -p \"Start…\""), { description = "Launch apps" })
hl.bind("SUPER + CTRL + E", hl.dsp.exec_cmd("walker -m Emojis"), { description = "Emoji picker" })
hl.bind("SUPER + ALT + SPACE", hl.dsp.exec_cmd("omarchy-menu"), { description = "Omarchy menu" })
hl.bind("SUPER + ESCAPE", hl.dsp.exec_cmd("omarchy-menu system"), { description = "Power menu" })
hl.bind("XF86PowerOff", hl.dsp.exec_cmd("omarchy-menu system"), { description = "Power menu", locked = true })
hl.bind("SUPER + K", hl.dsp.exec_cmd("omarchy-menu-keybindings"), { description = "Show key bindings" })
hl.bind("XF86Calculator", hl.dsp.exec_cmd("gnome-calculator"), { description = "Calculator" })
hl.bind("SUPER + N", hl.dsp.exec_cmd("swaync-client -op"), { description = "Notification center" })
hl.bind("SUPER + SHIFT + SPACE", hl.dsp.exec_cmd("omarchy-toggle-waybar"), { description = "Toggle top bar" })
hl.bind("SUPER + CTRL + SPACE", hl.dsp.exec_cmd("omarchy-theme-bg-next"), { description = "Next background in theme" })
hl.bind("SUPER + SHIFT + CTRL + SPACE", hl.dsp.exec_cmd("omarchy-menu theme"), { description = "Pick new theme" })
hl.bind("SUPER + BACKSPACE", hl.dsp.exec_cmd("hyprctl dispatch setprop \"address:$(hyprctl activewindow -j | jq -r '.address')\" opaque toggle"), { description = "Toggle window transparency" })
hl.bind("SUPER + COMMA", hl.dsp.exec_cmd("makoctl dismiss"), { description = "Dismiss last notification" })
hl.bind("SUPER + SHIFT + COMMA", hl.dsp.exec_cmd("makoctl dismiss --all"), { description = "Dismiss all notifications" })
hl.bind("SUPER + CTRL + COMMA", hl.dsp.exec_cmd("makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send 'Silenced notifications' || notify-send 'Enabled notifications'"), { description = "Toggle silencing notifications" })
hl.bind("SUPER + CTRL + I", hl.dsp.exec_cmd("omarchy-toggle-idle"), { description = "Toggle locking on idle" })
hl.bind("SUPER + CTRL + N", hl.dsp.exec_cmd("omarchy-toggle-nightlight"), { description = "Toggle nightlight" })
hl.bind("CTRL + F1", hl.dsp.exec_cmd("omarchy-cmd-apple-display-brightness -5000"), { description = "Apple Display brightness down" })
hl.bind("CTRL + F2", hl.dsp.exec_cmd("omarchy-cmd-apple-display-brightness +5000"), { description = "Apple Display brightness up" })
hl.bind("SHIFT + CTRL + F2", hl.dsp.exec_cmd("omarchy-cmd-apple-display-brightness +60000"), { description = "Apple Display full brightness" })
hl.bind("PRINT", hl.dsp.exec_cmd("~/.config/hypr/scripts/cmd-screenshot region"), { description = "Screenshot of region" })
hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("~/.config/hypr/scripts/cmd-screenshot windows"), { description = "Screenshot of window" })
hl.bind("CTRL + PRINT", hl.dsp.exec_cmd("~/.config/hypr/scripts/cmd-screenshot fullscreen"), { description = "Screenshot of display" })
hl.bind("ALT + PRINT", hl.dsp.exec_cmd("omarchy-cmd-screenrecord region"), { description = "Screen record a region" })
hl.bind("ALT + SHIFT + PRINT", hl.dsp.exec_cmd("omarchy-cmd-screenrecord region audio"), { description = "Screen record a region with audio" })
hl.bind("CTRL + ALT + PRINT", hl.dsp.exec_cmd("omarchy-cmd-screenrecord output"), { description = "Screen record display" })
hl.bind("CTRL + ALT + SHIFT + PRINT", hl.dsp.exec_cmd("omarchy-cmd-screenrecord output audio"), { description = "Screen record display with audio" })
hl.bind("SUPER + PRINT", hl.dsp.exec_cmd("pkill hyprpicker || hyprpicker -a"), { description = "Color picker" })
hl.bind("CTRL + SUPER + S", hl.dsp.exec_cmd("omarchy-menu share"), { description = "Share" })
-288
View File
@@ -1,288 +0,0 @@
$terminal = kitty
$fileManager = nautilus
$menu = wofi --show drun
source = ~/.config/hypr/bindings.conf
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/rules.conf
exec-once = uwsm app -- hyprpaper
exec-once = uwsm app -- waybar
exec-once = uwsm app -- hypridle
exec-once = systemctl --user start hyprpolkitagent
exec-once = eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
exec-once = uwsm app -- nautilus --gapplication-service
exec-once = uwsm app -- swayosd-server
exec-once = uwsm app -- elephant
exec-once = uwsm app -- walker --gapplication-service
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 4
gaps_out = 8
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
# col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
# col.active_border = rgba(33ccffee) rgba(f50087ee) 45deg
col.active_border = rgba(33ccffee)
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
dwindle {
force_split = 2
smart_resizing = false
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 4
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 0.8
shadow {
enabled = true
range = 3
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 8
passes = 2
vibrancy = 0.1696
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
bezier = easeOutQuint, 0.23, 1, 0.32, 1
bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
bezier = linear, 0, 0, 1, 1
bezier = almostLinear, 0.5, 0.5, 0.75, 1
bezier = quick, 0.15, 0, 0.1, 1
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
# NAME, ONOFF, SPEED, CURVE, [STYLE]
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = borderangle, 1, 20, quick
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
animation = zoomFactor, 1, 7, quick
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}
cursor {
inactive_timeout = 3
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = de
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
}
}
# See https://wiki.hypr.land/Configuring/Gestures
gesture = 3, horizontal, workspace
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
#$mainMod = SUPER # Sets "Windows" key as main modifier
#
#bindd = $mainMod, B, Launch Browser, exec, flatpak run app.zen_browser.zen
#
## Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
#bind = $mainMod, return, exec, $terminal
#bind = $mainMod, Q, killactive,
#bind = $mainMod, M, exit,
#bind = $mainMod, E, exec, $fileManager
#bind = $mainMod, V, togglefloating,
#bind = $mainMod, R, exec, $menu
#bind = $mainMod, P, pseudo, # dwindle
#bind = $mainMod, J, togglesplit, # dwindle
#
## Move focus with mainMod + arrow keys
#bind = $mainMod, left, movefocus, l
#bind = $mainMod, right, movefocus, r
#bind = $mainMod, up, movefocus, u
#bind = $mainMod, down, movefocus, d
#
## Switch workspaces with mainMod + [0-9]
#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 active window to a workspace with mainMod + SHIFT + [0-9]
#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
#
## Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
#
## Scroll through existing workspaces with mainMod + scroll
#bind = $mainMod, mouse_down, workspace, e+1
#bind = $mainMod, mouse_up, workspace, e-1
#
## Move/resize windows with mainMod + LMB/RMB and dragging
#bindm = $mainMod, mouse:272, movewindow
#bindm = $mainMod, mouse:273, resizewindow
#
## Laptop multimedia keys for volume and LCD brightness
#bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
#bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
#bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
#bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
#bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
#bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
#
## Requires playerctl
#bindl = , XF86AudioNext, exec, playerctl next
#bindl = , XF86AudioPause, exec, playerctl play-pause
#bindl = , XF86AudioPlay, exec, playerctl play-pause
#bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppress_event maximize
# Fix some dragging issues with XWayland
windowrule = no_focus true,match:class ^$,match:title ^$,match:xwayland true,match:float true,match:fullscreen false,match:pin false
+126
View File
@@ -0,0 +1,126 @@
require("monitors")
require("bindings")
require("rules")
hl.on("hyprland.start", function ()
hl.exec_cmd("uwsm app -- hyprpaper")
hl.exec_cmd("uwsm app -- waybar")
hl.exec_cmd("uwsm app -- hypridle")
hl.exec_cmd("systemctl --user start hyprpolkitagent")
hl.exec_cmd("eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)")
hl.exec_cmd("uwsm app -- nautilus --gapplication-service")
hl.exec_cmd("uwsm app -- swayosd-server")
hl.exec_cmd("uwsm app -- elephant")
hl.exec_cmd("uwsm app -- walker --gapplication-service")
end)
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
hl.config({
general = {
gaps_in = 4,
gaps_out = 8,
border_size = 2,
col = {
active_border = "rgba(33ccffee)",
inactive_border = "rgba(595959aa)",
},
resize_on_border = false,
allow_tearing = false,
layout = "dwindle",
},
dwindle = {
force_split = 2,
smart_resizing = false,
preserve_split = true,
},
decoration = {
rounding = 4,
rounding_power = 2,
active_opacity = 1.0,
inactive_opacity = 0.8,
shadow = {
enabled = true,
range = 3,
render_power = 3,
color = "rgba(1a1a1aee)",
},
blur = {
enabled = true,
size = 8,
passes = 2,
vibrancy = 0.1696,
},
},
animations = {
enabled = true,
},
master = {
new_status = "master",
},
misc = {
force_default_wallpaper = 0,
disable_hyprland_logo = true,
},
cursor = {
inactive_timeout = 3,
},
input = {
kb_layout = "de",
kb_variant = "",
kb_model = "",
kb_options = "",
kb_rules = "",
follow_mouse = 1,
sensitivity = 0,
touchpad = {
natural_scroll = true,
},
},
})
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } })
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } })
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } })
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } })
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } })
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
hl.animation({ leaf = "borderangle", enabled = true, speed = 20, bezier = "quick" })
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, bezier = "easeOutQuint" })
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, bezier = "easeOutQuint", style = "popin 87%" })
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace",
})
hl.device({
name = "epic-mouse-v1",
sensitivity = -0.5,
})
-21
View File
@@ -1,21 +0,0 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
# List current monitors and resolutions possible: hyprctl monitors
# Format: monitor = [port], resolution, position, scale
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
env = GDK_SCALE,1
monitor=eDP-1,1920x1080,auto,1
monitor=,preferred,auto,auto
monitor=desc:Xiaomi Corporation Mi Monitor,3440x1440@60,auto,1
# Good compromise for 27" or 32" 4K monitors (but fractional!)
# env = GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667
# Straight 1x setup for low-resolution displays like 1080p or 1440p
# env = GDK_SCALE,1
# monitor=,preferred,auto,1
# Example for Framework 13 w/ 6K XDR Apple display
# monitor = DP-5, 6016x3384@60, auto, 2
# monitor = eDP-1, 2880x1920@120, auto, 2
+22
View File
@@ -0,0 +1,22 @@
hl.env("GDK_SCALE", "1")
hl.monitor({
output = "eDP-1",
mode = "1920x1080",
position = "auto",
scale = 1
})
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = "auto"
})
hl.monitor({
output = "desc:Xiaomi Corporation Mi Monitor",
mode = "3440x1440@60",
position = "auto",
scale = 1
})
-21
View File
@@ -1,21 +0,0 @@
layerrule = blur true, match:namespace waybar
layerrule = blur_popups true, match:namespace waybar
layerrule = ignore_alpha 0, match:namespace waybar
layerrule = blur true, match:namespace swaync-control-center
layerrule = blur true, match:namespace swaync-notification-window
layerrule = ignore_alpha 0, match:namespace swaync-control-center
layerrule = ignore_alpha 0, match:namespace swaync-notification-window
layerrule = ignore_alpha 0.5, match:namespace swaync-control-center
layerrule = ignore_alpha 0.5, match:namespace swaync-notification-window
layerrule = blur true, match:namespace swayosd
layerrule = ignore_alpha 0, match:namespace swayosd
layerrule = blur true, match:namespace walker
layerrule = ignore_alpha 0, match:namespace walker
layerrule = ignore_alpha 0.5, match:namespace walker
windowrule = opacity 0.85 0.8,match:class ^chrome-gemini\.google\.com.*
windowrule = opacity 0.85 0.8,match:class ^chrome-perplexity\.ai.*
windowrule = float true,match:class ^org\.gnome\.Calculator$
windowrule = size 360 616,match:class ^org\.gnome\.Calculator$
windowrule = move (monitor_w*10/monitor_h>=21?monitor_w*5/6-180:monitor_w*3/4-180) (monitor_h/2-308),match:class ^org\.gnome\.Calculator$
+32
View File
@@ -0,0 +1,32 @@
hl.layer_rule({ match = { namespace = "waybar" }, blur = true })
hl.layer_rule({ match = { namespace = "waybar" }, blur_popups = true })
hl.layer_rule({ match = { namespace = "waybar" }, ignore_alpha = 0 })
hl.layer_rule({ match = { namespace = "swaync-control-center" }, blur = true })
hl.layer_rule({ match = { namespace = "swaync-notification-window" }, blur = true })
hl.layer_rule({ match = { namespace = "swaync-control-center" }, ignore_alpha = 0 })
hl.layer_rule({ match = { namespace = "swaync-notification-window" }, ignore_alpha = 0 })
hl.layer_rule({ match = { namespace = "swaync-control-center" }, ignore_alpha = 0.5 })
hl.layer_rule({ match = { namespace = "swaync-notification-window" }, ignore_alpha = 0.5 })
hl.layer_rule({ match = { namespace = "swayosd" }, blur = true })
hl.layer_rule({ match = { namespace = "swayosd" }, ignore_alpha = 0 })
hl.layer_rule({ match = { namespace = "walker" }, blur = true })
hl.layer_rule({ match = { namespace = "walker" }, ignore_alpha = 0 })
hl.layer_rule({ match = { namespace = "walker" }, ignore_alpha = 0.5 })
hl.window_rule({ match = { class = "^chrome-gemini\\.google\\.com.*" }, opacity = "0.85 0.8" })
hl.window_rule({ match = { class = "^chrome-perplexity\\.ai.*" }, opacity = "0.85 0.8" })
hl.window_rule({ match = { class = "^org\\.gnome\\.Calculator$" }, float = true })
hl.window_rule({ match = { class = "^org\\.gnome\\.Calculator$" }, size = "360 616" })
hl.window_rule({ match = { class = "^org\\.gnome\\.Calculator$" }, move = "(monitor_w*10/monitor_h>=21?monitor_w*5/6-180:monitor_w*3/4-180) (monitor_h/2-308)" })
hl.window_rule({ match = { class = ".*" }, suppress_event = "maximize" })
hl.window_rule({
match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false },
no_focus = true
})