From e4df7507ac6c82b2731e8ba86f5cef46ab93a322 Mon Sep 17 00:00:00 2001 From: Stephan Date: Sun, 23 Aug 2026 11:32:54 -0700 Subject: [PATCH] replaced hyprland config with lua --- hypr/hyprland.conf | 25 --- hypr/hyprland.lua | 29 +++ hypr/hyprland/animations.conf | 34 ---- hypr/hyprland/animations.lua | 112 +++++++++++ hypr/hyprland/autostart.conf | 15 -- hypr/hyprland/autostart.lua | 17 ++ hypr/hyprland/bindings.conf | 104 ---------- hypr/hyprland/bindings.lua | 108 ++++++++++ hypr/hyprland/env.conf | 32 --- hypr/hyprland/env.lua | 32 +++ hypr/hyprland/input.conf | 42 ---- hypr/hyprland/looknfeel.conf | 72 ------- hypr/hyprland/looknfeel.lua | 88 +++++++++ hypr/hyprland/monitors.conf | 9 - hypr/hyprland/monitors.lua | 34 ++++ hypr/hyprland/windowrules.conf | 15 -- hypr/hyprland/windowrules.lua | 32 +++ hypr/hyprland2.conf | 349 +++++++++++++++++++++++++++++++++ hypr/scripts/monitor_setup.sh | 4 +- hypr/scripts/monitor_setup2.sh | 94 +++++++++ 20 files changed, 897 insertions(+), 350 deletions(-) delete mode 100644 hypr/hyprland.conf create mode 100644 hypr/hyprland.lua delete mode 100644 hypr/hyprland/animations.conf create mode 100644 hypr/hyprland/animations.lua delete mode 100644 hypr/hyprland/autostart.conf create mode 100644 hypr/hyprland/autostart.lua delete mode 100644 hypr/hyprland/bindings.conf create mode 100644 hypr/hyprland/bindings.lua delete mode 100644 hypr/hyprland/env.conf create mode 100644 hypr/hyprland/env.lua delete mode 100644 hypr/hyprland/input.conf delete mode 100644 hypr/hyprland/looknfeel.conf create mode 100644 hypr/hyprland/looknfeel.lua delete mode 100644 hypr/hyprland/monitors.conf create mode 100644 hypr/hyprland/monitors.lua delete mode 100644 hypr/hyprland/windowrules.conf create mode 100644 hypr/hyprland/windowrules.lua create mode 100644 hypr/hyprland2.conf create mode 100755 hypr/scripts/monitor_setup2.sh diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf deleted file mode 100644 index b9bcb92..0000000 --- a/hypr/hyprland.conf +++ /dev/null @@ -1,25 +0,0 @@ -#██ ██ ██ ██ █████▄ █████▄ ██ ▄████▄ ███ ██ ████▄ -#██████ ▀██▀ ██▄▄█▀ ██▄▄██▄ ██ ██▄▄██ ██ ▀▄██ ██ ██ -#██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ████▀ - -################### -### MY PROGRAMS ### -################### - -$terminal = ghostty -$fileManager = thunar -$menu = rofi -show drun -$browser = librewolf -$browser2 = google-chrome-stable - -# Configurations - -source = ~/.config/hypr/hyprland/animations.conf -source = ~/.config/hypr/hyprland/autostart.conf -source = ~/.config/hypr/hyprland/bindings.conf -source = ~/.config/hypr/hyprland/env.conf -source = ~/.config/hypr/hyprland/input.conf -source = ~/.config/hypr/hyprland/looknfeel.conf -source = ~/.config/hypr/hyprland/monitors.conf -source = ~/.config/hypr/hyprland/windowrules.conf - diff --git a/hypr/hyprland.lua b/hypr/hyprland.lua new file mode 100644 index 0000000..69e85d0 --- /dev/null +++ b/hypr/hyprland.lua @@ -0,0 +1,29 @@ + + +--██ ██ ██ ██ █████▄ █████▄ ██ ▄████▄ ███ ██ ████▄ +--██████ ▀██▀ ██▄▄█▀ ██▄▄██▄ ██ ██▄▄██ ██ ▀▄██ ██ ██ +--██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ████▀ + +--################## +--## MY PROGRAMS ### +--################## + +-- Generated by hyprlang2lua. Review TODOs before reloading Hyprland. + +local terminal = "ghostty" +local fileManager = "thunar" +local menu = "rofi -show drun" +local browser = "librewolf" +local browser2 = "google-chrome-stable" + +-- Configurations + +require("hyprland.animations") +require("hyprland.autostart") +require("hyprland.bindings") +require("hyprland.env") +require("hyprland.looknfeel") +require("hyprland.monitors") +require("hyprland.windowrules") + + diff --git a/hypr/hyprland/animations.conf b/hypr/hyprland/animations.conf deleted file mode 100644 index b5cc7a7..0000000 --- a/hypr/hyprland/animations.conf +++ /dev/null @@ -1,34 +0,0 @@ -#▄████▄ ███ ██ ██ ██▄ ▄██ ▄████▄ ██████ ██ ▄████▄ ███ ██ ▄█████ -#██▄▄██ ██ ▀▄██ ██ ██ ▀▀ ██ ██▄▄██ ██ ██ ██ ██ ██ ▀▄██ ▀▀▀▄▄▄ -#██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ - -animations { - - enabled = true - - bezier = water, 0.22, 0.9, 0.36, 1.0 - bezier = flow, 0.25, 0.1, 0.25, 1.0 - bezier = ripple, 0.33, 0.0, 0.2, 1.0 - bezier = stream, 0.4, 0.0, 0.4, 1.0 - bezier = cascade, 0.19, 1.0, 0.22, 1.0 - bezier = md3_standard, 0.2, 0, 0, 1 - bezier = md3_accel, 0.3, 0, 0.8, 0.15 - bezier = overshot, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 3.0, water - animation = windowsIn, 1, 2.5, cascade,slide - animation = windowsOut, 1, 2.4, stream,slide - animation = windowsMove,1, 1.6, flow - animation = fade, 1, 2.4, water - animation = fadeIn, 1, 2.0, cascade - animation = fadeOut, 1, 1.8, ripple - animation = fadeDim, 1, 2.0, water - animation = fadeSwitch, 1, 1.4, flow - animation = layersIn, 1, 1.5, overshot, popin 80% - animation = layersOut, 1, 1.3, md3_accel, popin 90% - animation = layers, 1, 1.5, md3_standard - animation = workspaces, 1, 1.5, flow - animation = specialWorkspace, 1, 2.5, water - animation = border, 1, 2.9, water - animation = borderangle,1, 3.5, flow -} diff --git a/hypr/hyprland/animations.lua b/hypr/hyprland/animations.lua new file mode 100644 index 0000000..07fe130 --- /dev/null +++ b/hypr/hyprland/animations.lua @@ -0,0 +1,112 @@ +--▄████▄ ███ ██ ██ ██▄ ▄██ ▄████▄ ██████ ██ ▄████▄ ███ ██ ▄█████ +--██▄▄██ ██ ▀▄██ ██ ██ ▀▀ ██ ██▄▄██ ██ ██ ██ ██ ██ ▀▄██ ▀▀▀▄▄▄ +--██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ + +hl.curve("water", { type = "bezier", points = { { 0.22, 0.9 }, { 0.36, 1.0 } } }) +hl.curve("flow", { type = "bezier", points = { { 0.25, 0.1 }, { 0.25, 1.0 } } }) +hl.curve("ripple", { type = "bezier", points = { { 0.33, 0.0 }, { 0.2, 1.0 } } }) +hl.curve("stream", { type = "bezier", points = { { 0.4, 0.0 }, { 0.4, 1.0 } } }) +hl.curve("cascade", { type = "bezier", points = { { 0.19, 1.0 }, { 0.22, 1.0 } } }) +hl.curve("md3_standard", { type = "bezier", points = { { 0.2, 0 }, { 0, 1 } } }) +hl.curve("md3_accel", { type = "bezier", points = { { 0.3, 0 }, { 0.8, 0.15 } } }) +hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } }) +hl.animation({ + leaf = "windows", + enabled = true, + speed = 3.0, + bezier = "water", +}) +hl.animation({ + leaf = "windowsIn", + enabled = true, + speed = 2.5, + bezier = "cascade", + style = "slide", +}) +hl.animation({ + leaf = "windowsOut", + enabled = true, + speed = 2.4, + bezier = "stream", + style = "slide", +}) +hl.animation({ + leaf = "windowsMove", + enabled = true, + speed = 1.6, + bezier = "flow", +}) +hl.animation({ + leaf = "fade", + enabled = true, + speed = 2.4, + bezier = "water", +}) +hl.animation({ + leaf = "fadeIn", + enabled = true, + speed = 2.0, + bezier = "cascade", +}) +hl.animation({ + leaf = "fadeOut", + enabled = true, + speed = 1.8, + bezier = "ripple", +}) +hl.animation({ + leaf = "fadeDim", + enabled = true, + speed = 2.0, + bezier = "water", +}) +hl.animation({ + leaf = "fadeSwitch", + enabled = true, + speed = 1.4, + bezier = "flow", +}) +hl.animation({ + leaf = "layersIn", + enabled = true, + speed = 1.5, + bezier = "overshot", + style = "popin 80%", +}) +hl.animation({ + leaf = "layersOut", + enabled = true, + speed = 1.3, + bezier = "md3_accel", + style = "popin 90%", +}) +hl.animation({ + leaf = "layers", + enabled = true, + speed = 1.5, + bezier = "md3_standard", +}) +hl.animation({ + leaf = "workspaces", + enabled = true, + speed = 1.5, + bezier = "flow", +}) +hl.animation({ + leaf = "specialWorkspace", + enabled = true, + speed = 2.5, + bezier = "water", +}) +hl.animation({ + leaf = "border", + enabled = true, + speed = 2.9, + bezier = "water", +}) +hl.animation({ + leaf = "borderangle", + enabled = true, + speed = 3.5, + bezier = "flow", +}) diff --git a/hypr/hyprland/autostart.conf b/hypr/hyprland/autostart.conf deleted file mode 100644 index f790519..0000000 --- a/hypr/hyprland/autostart.conf +++ /dev/null @@ -1,15 +0,0 @@ -#▄████▄ ██ ██ ██████ ▄████▄ ▄█████ ██████ ▄████▄ █████▄ ██████ -#██▄▄██ ██ ██ ██ ██ ██ ▀▀▀▄▄▄ ██ ██▄▄██ ██▄▄██▄ ██ -#██ ██ ▀████▀ ██ ▀████▀ █████▀ ██ ██ ██ ██ ██ ██ - -exec-once = wl-paste --type text --watch cliphist store -exec-once = wl-paste --type image --watch cliphist store -#exec-once = waybar & disown -exec-once = librewolf & disown -exec-once = swaync & disown -exec-once = hypridle & disown -exec-once = seventeenlands & disown -exec-once = hyprctl dispatch exec [workspace 3 silent] signal-desktop -exec-once = hyprctl dispatch exec [workspace 3 silent] discord -exec-once = hyprctl dispatch exec [workspace 3 silent] thunderbird -#exec-once = hyprctl dispatch exec "[workspace 5 silent] steam" diff --git a/hypr/hyprland/autostart.lua b/hypr/hyprland/autostart.lua new file mode 100644 index 0000000..7cec534 --- /dev/null +++ b/hypr/hyprland/autostart.lua @@ -0,0 +1,17 @@ +--▄████▄ ██ ██ ██████ ▄████▄ ▄█████ ██████ ▄████▄ █████▄ ██████ +--██▄▄██ ██ ██ ██ ██ ██ ▀▀▀▄▄▄ ██ ██▄▄██ ██▄▄██▄ ██ +--██ ██ ▀████▀ ██ ▀████▀ █████▀ ██ ██ ██ ██ ██ ██ + +hl.on("hyprland.start", function() + hl.exec_cmd("wl-paste --type text --watch cliphist store") + hl.exec_cmd("wl-paste --type image --watch cliphist store") + -- hl.exec_cmd("waybar & disown") + hl.exec_cmd("librewolf") + hl.exec_cmd("swaync") + hl.exec_cmd("hypridle") + hl.exec_cmd("seventeenlands") + hl.exec_cmd("signal-desktop") + hl.exec_cmd("discord") + hl.exec_cmd("thunderbird") + -- hl.exec_cmd("hyprctl dispatch exec \"[workspace 5 silent] steam\"") +end) diff --git a/hypr/hyprland/bindings.conf b/hypr/hyprland/bindings.conf deleted file mode 100644 index 17c7cfb..0000000 --- a/hypr/hyprland/bindings.conf +++ /dev/null @@ -1,104 +0,0 @@ -#██ ▄█▀ ██████ ██ ██ █████▄ ██ ███ ██ ████▄ ██ ███ ██ ▄████ ▄█████ -#████ ██▄▄ ▀██▀ ██▄▄██ ██ ██ ▀▄██ ██ ██ ██ ██ ▀▄██ ██ ▄▄▄ ▀▀▀▄▄▄ -#██ ▀█▄ ██▄▄▄▄ ██ ██▄▄█▀ ██ ██ ██ ████▀ ██ ██ ██ ▀███▀ █████▀ - -# See https://wiki.hyprland.org/Configuring/Keywords/ -$mainMod = SUPER # Sets "Windows" key as main modifier - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, A, exec, ~/.config/hypr/scripts/status.sh -bind = $mainMod, B, exec, $browser -bind = $mainModu SHIFT, B, exec, $browser2 -bind = $mainMod, C, killactive, -bind = $mainMod, E, exec, $fileManager -bind = $mainMod, F, togglefloating, -#bind = $mainMod, J, togglesplit, # dwindle -bind = $mainMod, J, layoutmsg, togglesplit dwindle -bind = $mainMod, L, exec, hyprlock -bind = $mainMod, M, exit, -bind = $mainMod, N, exec, swaync-client -t -sw -bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, S, exec, $terminal -e ~/.config/hypr/scripts/statmon/target/release/statmon -bind = $mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only, -bind = $mainMod, Q, exec, ~/.config/hypr/scripts/power-menu.sh -bind = $mainMod, U, exec, ~/.config/hypr/scripts/update-sys.sh up -bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy -bind = $mainMod, W, exec, ~/.config/hypr/scripts/wifi-menu.sh -bind = $mainMod SHIFT, W, exec, ~/.config/hypr/scripts/bt-menu.sh -bind = $mainMod, return, exec, $terminal -bind = $mainMod, space, exec, $menu -bind = $mainMod, backslash, exec, ~/.config/hypr/scripts/monitor_setup.sh -bind = $mainMod, slash, exec, $terminal -e btop - - -# 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, movetoworkspacesilent, 1 -bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 -bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 -bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 -bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 -bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 -bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 -bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 -bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 -bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 - -# Example special workspace (scratchpad) -#bind = $mainMod, S, togglespecialworkspace, magic -#bind = $mainMod SHIFT, S, movetoworkspace, special:magic - -bind = SUPER_ALT_CTRL, L, exec, hyprctl keyword monitor "eDP-1,preferred,auto,1" - -#Mouse Key Assignements -#bind = , code:191, exec, $terminal -#bind = , code:198, exec, $terminal - - -# Lid Open & Closed -#bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh -# trigger when the switch is turning on -#bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh - -# 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 s 10%+ -bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- - -# Requires playerctl -bindl = , XF86AudioNext, exec, playerctl next -bindl = , XF86AudioPause, exec, playerctl play-pause -bindl = , XF86AudioPlay, exec, playerctl play-pause -bindl = , XF86AudioPrev, exec, playerctl previous - -# --- Mouse Side Button Remaps --- -bind = , mouse:276, sendshortcut, , ESCAPE, active -bind = , mouse:275, sendshortcut, , RETURN, active diff --git a/hypr/hyprland/bindings.lua b/hypr/hyprland/bindings.lua new file mode 100644 index 0000000..373ea48 --- /dev/null +++ b/hypr/hyprland/bindings.lua @@ -0,0 +1,108 @@ +--██ ▄█▀ ██████ ██ ██ █████▄ ██ ███ ██ ████▄ ██ ███ ██ ▄████ ▄█████ +--████ ██▄▄ ▀██▀ ██▄▄██ ██ ██ ▀▄██ ██ ██ ██ ██ ▀▄██ ██ ▄▄▄ ▀▀▀▄▄▄ +--██ ▀█▄ ██▄▄▄▄ ██ ██▄▄█▀ ██ ██ ██ ████▀ ██ ██ ██ ▀███▀ █████▀ + +-- See https://wiki.hyprland.org/Configuring/Keywords/ +local mainMod = "SUPER" -- Sets "Windows" key as main modifier + +local terminal = "ghostty" +local fileManager = "thunar" +local menu = "rofi -show drun" +local browser = "librewolf" +local browser2 = "google-chrome-stable" + +-- Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +hl.bind(mainMod .. " + A", hl.dsp.exec_cmd("~/.config/hypr/scripts/status.sh")) +hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser)) +hl.bind(mainMod .. " + SHIFT + B", hl.dsp.exec_cmd(browser2)) +hl.bind(mainMod .. " + C", hl.dsp.window.close()) +hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager)) +hl.bind(mainMod .. " + F", hl.dsp.window.float({ action = "toggle" })) +--bind = $mainMod, J, togglesplit, # dwindle +hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit dwindle")) +hl.bind(mainMod .. " + L", hl.dsp.exec_cmd("hyprlock")) +hl.bind(mainMod .. " + M", hl.dsp.exit()) +hl.bind(mainMod .. " + N", hl.dsp.exec_cmd("swaync-client -t -sw")) +hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) +hl.bind(mainMod .. " + S", hl.dsp.exec_cmd(terminal .. " -e ~/.config/hypr/scripts/statmon/target/release/statmon")) +hl.bind(mainMod .. " + SHIFT + S", hl.dsp.exec_cmd("hyprshot -m region --clipboard-only,")) +hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd("~/.config/hypr/scripts/power-menu.sh")) +hl.bind(mainMod .. " + U", hl.dsp.exec_cmd("~/.config/hypr/scripts/update-sys.sh up")) +hl.bind(mainMod .. " + V", hl.dsp.exec_cmd("cliphist list | rofi -dmenu | cliphist decode | wl-copy")) +hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("~/.config/hypr/scripts/wifi-menu.sh")) +hl.bind(mainMod .. " + SHIFT + W", hl.dsp.exec_cmd("~/.config/hypr/scripts/bt-menu.sh")) +hl.bind(mainMod .. " + return", hl.dsp.exec_cmd(terminal)) +hl.bind(mainMod .. " + space", hl.dsp.exec_cmd(menu)) +--hl.bind(mainMod .. " + backslash", hl.dsp.exec_cmd("~/.config/hypr/scripts/monitor_setup.sh")) +hl.bind(mainMod .. " + slash", hl.dsp.exec_cmd(terminal .. " -e btop")) + +-- Move focus with mainMod + arrow keys +hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" })) +hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" })) +hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" })) +hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" })) + +-- Switch workspaces with mainMod + [0-9] +hl.bind(mainMod .. " + 1", hl.dsp.focus({ workspace = 1 })) +hl.bind(mainMod .. " + 2", hl.dsp.focus({ workspace = 2 })) +hl.bind(mainMod .. " + 3", hl.dsp.focus({ workspace = 3 })) +hl.bind(mainMod .. " + 4", hl.dsp.focus({ workspace = 4 })) +hl.bind(mainMod .. " + 5", hl.dsp.focus({ workspace = 5 })) +hl.bind(mainMod .. " + 6", hl.dsp.focus({ workspace = 6 })) +hl.bind(mainMod .. " + 7", hl.dsp.focus({ workspace = 7 })) +hl.bind(mainMod .. " + 8", hl.dsp.focus({ workspace = 8 })) +hl.bind(mainMod .. " + 9", hl.dsp.focus({ workspace = 9 })) +hl.bind(mainMod .. " + 0", hl.dsp.focus({ workspace = 10 })) + +-- Move active window to a workspace with mainMod + SHIFT + [0-9] +hl.bind(mainMod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1, follow = false })) +hl.bind(mainMod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2, follow = false })) +hl.bind(mainMod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3, follow = false })) +hl.bind(mainMod .. " + SHIFT + 4", hl.dsp.window.move({ workspace = 4, follow = false })) +hl.bind(mainMod .. " + SHIFT + 5", hl.dsp.window.move({ workspace = 5, follow = false })) +hl.bind(mainMod .. " + SHIFT + 6", hl.dsp.window.move({ workspace = 6, follow = false })) +hl.bind(mainMod .. " + SHIFT + 7", hl.dsp.window.move({ workspace = 7, follow = false })) +hl.bind(mainMod .. " + SHIFT + 8", hl.dsp.window.move({ workspace = 8, follow = false })) +hl.bind(mainMod .. " + SHIFT + 9", hl.dsp.window.move({ workspace = 9, follow = false })) +hl.bind(mainMod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10, follow = false })) + +-- Example special workspace (scratchpad) +--bind = $mainMod, S, togglespecialworkspace, magic +--bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +---hl.bind("SUPER_ALT_CTRL + L", hl.dsp.exec_cmd("hyprctl keyword monitor \"eDP-1,preferred,auto,1\"")) + +--Mouse Key Assignements +--bind = , code:191, exec, $terminal +--bind = , code:198, exec, $terminal + +-- Lid Open & Closed +--bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh +-- trigger when the switch is turning on +--bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh + +-- Scroll through existing workspaces with mainMod + scroll +hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) +hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" })) + +-- Move/resize windows with mainMod + LMB/RMB and dragging +hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag()) +hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize()) + +-- Laptop multimedia keys for volume and LCD brightness +hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true }) +hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true }) +hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true }) +hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 10%+"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 10%-"), { locked = true, repeating = true }) + +-- Requires playerctl +hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) +hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) + +-- --- Mouse Side Button Remaps --- +hl.bind("mouse:276", hl.dsp.send_shortcut({ mods = "", key = "ESCAPE", window = "active" })) +hl.bind("mouse:275", hl.dsp.send_shortcut({ mods = "", key = "RETURN", window = "active" })) diff --git a/hypr/hyprland/env.conf b/hypr/hyprland/env.conf deleted file mode 100644 index a5f68ec..0000000 --- a/hypr/hyprland/env.conf +++ /dev/null @@ -1,32 +0,0 @@ -#██████ ███ ██ ██ ██ ██ ██ ▄████▄ █████▄ ██ ▄████▄ █████▄ ██ ██████ ▄█████ -#██▄▄ ██ ▀▄██ ██▄▄██ ██▄▄██ ██▄▄██ ██▄▄██▄ ██ ██▄▄██ ██▄▄██ ██ ██▄▄ ▀▀▀▄▄▄ -#██▄▄▄▄ ██ ██ ▀██▀ ▀██▀ ██ ██ ██ ██ ██ ██ ██ ██▄▄█▀ ██████ ██▄▄▄▄ █████▀ - -# GTK Theme -env = GTK_THEME,adw-gtk3-dark - -# Cursor size -env = XCURSOR_SIZE,20 -env = HYPRCURSOR_SIZE,20 - -# Language Settings -env = LANG,en_US.UTF-8 -env = LC_ALL,en_US.UTF-8 -env = LANGUAGE,en_US.UTF-8 - -# Editor -env = EDITOR,nvim - -# Force all apps to use Wayland -env = GDK_BACKEND,wayland,x11 -env = QT_QPA_PLATFORM,wayland;xcb -env = QT_STYLE_OVERRIDE,kvantum -env = SDL_VIDEODRIVER,wayland -env = MOZ_ENABLE_WAYLAND,1 -env = ELECTRON_OZONE_PLATFORM_HINT,wayland -env = OZONE_PLATFORM,wayland -env = XDG_SESSION_TYPE,wayland - -# Allow better support for screen sharing (Google Meet, Discord, etc) -env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_DESKTOP,Hyprland diff --git a/hypr/hyprland/env.lua b/hypr/hyprland/env.lua new file mode 100644 index 0000000..6397ed9 --- /dev/null +++ b/hypr/hyprland/env.lua @@ -0,0 +1,32 @@ +--██████ ███ ██ ██ ██ ██ ██ ▄████▄ █████▄ ██ ▄████▄ █████▄ ██ ██████ ▄█████ +--██▄▄ ██ ▀▄██ ██▄▄██ ██▄▄██ ██▄▄██ ██▄▄██▄ ██ ██▄▄██ ██▄▄██ ██ ██▄▄ ▀▀▀▄▄▄ +--██▄▄▄▄ ██ ██ ▀██▀ ▀██▀ ██ ██ ██ ██ ██ ██ ██ ██▄▄█▀ ██████ ██▄▄▄▄ █████▀ + +-- GTK Theme +hl.env("GTK_THEME", "adw-gtk3-dark") + +-- Cursor size +hl.env("XCURSOR_SIZE", "20") +hl.env("HYPRCURSOR_SIZE", "20") + +-- Language Settings +hl.env("LANG", "en_US.UTF-8") +hl.env("LC_ALL", "en_US.UTF-8") +hl.env("LANGUAGE", "en_US.UTF-8") + +-- Editor +hl.env("EDITOR", "nvim") + +-- Force all apps to use Wayland +hl.env("GDK_BACKEND", "wayland,x11") +hl.env("QT_QPA_PLATFORM", "wayland;xcb") +hl.env("QT_STYLE_OVERRIDE", "kvantum") +hl.env("SDL_VIDEODRIVER", "wayland") +hl.env("MOZ_ENABLE_WAYLAND", "1") +hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland") +hl.env("OZONE_PLATFORM", "wayland") +hl.env("XDG_SESSION_TYPE", "wayland") + +-- Allow better support for screen sharing (Google Meet, Discord, etc) +hl.env("XDG_CURRENT_DESKTOP", "Hyprland") +hl.env("XDG_SESSION_DESKTOP", "Hyprland") diff --git a/hypr/hyprland/input.conf b/hypr/hyprland/input.conf deleted file mode 100644 index 763140c..0000000 --- a/hypr/hyprland/input.conf +++ /dev/null @@ -1,42 +0,0 @@ -#██ ███ ██ █████▄ ██ ██ ██████ -#██ ██ ▀▄██ ██▄▄█▀ ██ ██ ██ -#██ ██ ██ ██ ▀████▀ ██ - -# hide cursor after n sec -cursor { - inactive_timeout = 5 -} - -input { - kb_options = caps:none #deactivate capslock - - # Change speed of keyboard repeat - # repeat_rate = 40 - # repeat_delay = 600 - accel_profile = flat - #force_no_accel = true - - follow_mouse = 1 - numlock_by_default = true - - # Increase sensitity for mouse/trackpack (default: 0) - sensitivity = 0 #0.35 - - touchpad { - # Use natural (inverse) scrolling - natural_scroll = false #true - - # Use two-finger clicks for right-click instead of lower-right corner - clickfinger_behavior = true - - # Control the speed of your scrolling - scroll_factor = 0.4 - } -} - -misc { - key_press_enables_dpms = true # key press will trigger wake - mouse_move_enables_dpms = true # mouse move will trigger wake -} - - diff --git a/hypr/hyprland/looknfeel.conf b/hypr/hyprland/looknfeel.conf deleted file mode 100644 index caf47ce..0000000 --- a/hypr/hyprland/looknfeel.conf +++ /dev/null @@ -1,72 +0,0 @@ -#██ ▄████▄ ▄████▄ ██ ▄█▀ ▄▀▀▄ ██████ ██████ ██████ ██ -#██ ██ ██ ██ ██ ████ ▄▀▀▄ ▄ ██▄▄ ██▄▄ ██▄▄ ██ -#██████ ▀████▀ ▀████▀ ██ ▀█▄ ▀▄▄▀▀▄ ██ ██▄▄▄▄ ██▄▄▄▄ ██████ - -general { - gaps_in = 0 - gaps_out = 0 - - border_size = 1 - - # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors - col.active_border = rgba(ff9100ff) - 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.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = false - - layout = dwindle -} - -# https://wiki.hyprland.org/Configuring/Variables/#decoration -decoration { - rounding = 10 - rounding_power = 2 - - # Change transparency of focused and unfocused windows - active_opacity = 1.0 - inactive_opacity = 0.9 - - shadow { - enabled = false - range = 4 - render_power = 3 - color = rgba(1a1a1aee) - } - - # https://wiki.hyprland.org/Configuring/Variables/#blur - blur { - enabled = true - size = 7 - passes = 4 - ignore_opacity = true - noise = 0.0117 - contrast = 0.8916 - brightness = 0.8172 - xray = false - new_optimizations = true - special = true - popups = true - } -} - -# App launcher -#layerrule = blur, rofi -#layerrule = ignorezero, rofi -#layerrule = animation slide bottom, rofi - -# Top bar -#layerrule = blur, waybar -#layerrule = ignorezero, waybar - -dwindle { - preserve_split = true # You probably want this -} - -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. :( -} diff --git a/hypr/hyprland/looknfeel.lua b/hypr/hyprland/looknfeel.lua new file mode 100644 index 0000000..db48136 --- /dev/null +++ b/hypr/hyprland/looknfeel.lua @@ -0,0 +1,88 @@ +--██ ▄████▄ ▄████▄ ██ ▄█▀ ▄▀▀▄ ██████ ██████ ██████ ██ +--██ ██ ██ ██ ██ ████ ▄▀▀▄ ▄ ██▄▄ ██▄▄ ██▄▄ ██ +--██████ ▀████▀ ▀████▀ ██ ▀█▄ ▀▄▄▀▀▄ ██ ██▄▄▄▄ ██▄▄▄▄ ██████ + +hl.config({ + cursor = { + inactive_timeout = 5, + }, + input = { + kb_options = "caps:none", --deactivate capslock + -- Change speed of keyboard repeat + -- repeat_rate = 40 + -- repeat_delay = 600 + accel_profile = "flat", + --force_no_accel = true + follow_mouse = 1, + numlock_by_default = true, + -- Increase sensitity for mouse/trackpack (default: 0) + sensitivity = 0, --0.35 + touchpad = { + -- Use natural (inverse) scrolling + natural_scroll = false, --true + -- Use two-finger clicks for right-click instead of lower-right corner + clickfinger_behavior = true, + -- Control the speed of your scrolling + scroll_factor = 0.4, + }, + }, + misc = { + key_press_enables_dpms = true, -- key press will trigger wake + mouse_move_enables_dpms = true, -- mouse move will trigger wake + 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. :( + }, + general = { + gaps_in = 0, + gaps_out = 0, + border_size = 1, + -- https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col = { + active_border = "rgba(ff9100ff)", + 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.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false, + layout = "dwindle", + }, + -- https://wiki.hyprland.org/Configuring/Variables/#decoration + decoration = { + rounding = 10, + rounding_power = 2, + -- Change transparency of focused and unfocused windows + active_opacity = 1.0, + inactive_opacity = 0.9, + shadow = { + enabled = false, + range = 4, + render_power = 3, + color = "rgba(1a1a1aee)", + }, + -- https://wiki.hyprland.org/Configuring/Variables/#blur + blur = { + enabled = true, + size = 7, + passes = 4, + ignore_opacity = true, + noise = 0.0117, + contrast = 0.8916, + brightness = 0.8172, + xray = false, + new_optimizations = true, + special = true, + popups = true, + }, + }, + -- App launcher + --layerrule = blur, rofi + --layerrule = ignorezero, rofi + --layerrule = animation slide bottom, rofi + -- Top bar + --layerrule = blur, waybar + --layerrule = ignorezero, waybar + dwindle = { + preserve_split = true, -- You probably want this + }, + }) diff --git a/hypr/hyprland/monitors.conf b/hypr/hyprland/monitors.conf deleted file mode 100644 index f52f480..0000000 --- a/hypr/hyprland/monitors.conf +++ /dev/null @@ -1,9 +0,0 @@ -#██▄ ▄██ ▄████▄ ███ ██ ██ ██████ ▄████▄ █████▄ ▄█████ -#██ ▀▀ ██ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██▄▄██▄ ▀▀▀▄▄▄ -#██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ - -monitor = , preferred, auto, 1 - -# Lid switch bindings -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, 1 diff --git a/hypr/hyprland/monitors.lua b/hypr/hyprland/monitors.lua new file mode 100644 index 0000000..69a1204 --- /dev/null +++ b/hypr/hyprland/monitors.lua @@ -0,0 +1,34 @@ +--██▄ ▄██ ▄████▄ ███ ██ ██ ██████ ▄████▄ █████▄ ▄█████ +--██ ▀▀ ██ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██▄▄██▄ ▀▀▀▄▄▄ +--██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ + +hl.monitor({ + output = "", + mode = "preferred", + position = "auto", + scale = "1", +}) + +-- Default monitor config for full resolution on external monitor +hl.monitor({ + output = "DP-5", + mode = "7680x2160@120", + position = "auto", + scale = 1, +}) + +hl.monitor({ + output = "DP-6", + mode = "7680x2160@120", + position = "auto", + scale = 1, +}) + + +-- Lid switch bindings +-- Modern Lua Lid Switch triggers running your script +--hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd("~/.config/hypr/scripts/monitor_setup2.sh"), { locked = true }) +--hl.bind("switch:off:Lid Switch", hl.dsp.exec_cmd("~/.config/hypr/scripts/monitor_setup2.sh"), { locked = true }) +-- Native Lua Lid Switch bindings +hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd("hyprctl eval 'hl.monitor({ output = \"eDP-1\", disabled = true })'"), { locked = true }) +hl.bind("switch:off:Lid Switch", hl.dsp.exec_cmd("hyprctl eval 'hl.monitor({ output = \"eDP-1\", mode = \"preferred\", position = \"auto\", scale = 1 })'"), { locked = true }) diff --git a/hypr/hyprland/windowrules.conf b/hypr/hyprland/windowrules.conf deleted file mode 100644 index cf12b74..0000000 --- a/hypr/hyprland/windowrules.conf +++ /dev/null @@ -1,15 +0,0 @@ -#██ ██ ██ ███ ██ ████▄ ▄████▄ ██ ██ █████▄ ██ ██ ██ ██████ ▄█████ -#██ ▄█▄ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██ ▄█▄ ██ ██▄▄██▄ ██ ██ ██ ██▄▄ ▀▀▀▄▄▄ -# ▀██▀██▀ ██ ██ ██ ████▀ ▀████▀ ▀██▀██▀ ██ ██ ▀████▀ ██████ ██▄▄▄▄ █████▀ - -# Fix some dragging issues with XWayland -windowrule = match:class ^$, match:title ^$, match:xwayland 1, match:float 0, match:fullscreen 0, match:pin 0, no_focus on - -# Prevent apps from auto-maximizing themselves -windowrule = suppress_event maximize, match:class .* - -# 97% opacity when focused, 90% when unfocused -windowrule = opacity 0.97 0.9, match:class .* - -# Runelite specific rule -#windowrule = match:class ^(net-runelite-client-RuneLite)$, float on, size 1600 850, center on diff --git a/hypr/hyprland/windowrules.lua b/hypr/hyprland/windowrules.lua new file mode 100644 index 0000000..8ac4a5d --- /dev/null +++ b/hypr/hyprland/windowrules.lua @@ -0,0 +1,32 @@ +--██ ██ ██ ███ ██ ████▄ ▄████▄ ██ ██ █████▄ ██ ██ ██ ██████ ▄█████ +--██ ▄█▄ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██ ▄█▄ ██ ██▄▄██▄ ██ ██ ██ ██▄▄ ▀▀▀▄▄▄ +-- ▀██▀██▀ ██ ██ ██ ████▀ ▀████▀ ▀██▀██▀ ██ ██ ▀████▀ ██████ ██▄▄▄▄ █████▀ + +-- Fix some dragging issues with XWayland +hl.window_rule({ + match = { + class = "^$", + title = "^$", + xwayland = 1, + float = 0, + fullscreen = 0, + pin = 0, + }, + no_focus = true, +}) + +-- Prevent apps from auto-maximizing themselves +hl.window_rule({ + match = { + class = ".*", + }, + suppress_event = "maximize", +}) + +-- 97% opacity when focused, 90% when unfocused +hl.window_rule({ + match = { + class = ".*", + }, + opacity = "0.97 0.9", +}) diff --git a/hypr/hyprland2.conf b/hypr/hyprland2.conf new file mode 100644 index 0000000..fc2b793 --- /dev/null +++ b/hypr/hyprland2.conf @@ -0,0 +1,349 @@ +#██ ██ ██ ██ █████▄ █████▄ ██ ▄████▄ ███ ██ ████▄ +#██████ ▀██▀ ██▄▄█▀ ██▄▄██▄ ██ ██▄▄██ ██ ▀▄██ ██ ██ +#██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ████▀ + +################### +### MY PROGRAMS ### +################### + +$terminal = ghostty +$fileManager = thunar +$menu = rofi -show drun +$browser = librewolf +$browser2 = google-chrome-stable + +# Configurations + +#source = ~/.config/hypr/hyprland/animations.conf +#source = ~/.config/hypr/hyprland/autostart.conf +#source = ~/.config/hypr/hyprland/bindings.conf +#source = ~/.config/hypr/hyprland/env.conf +#source = ~/.config/hypr/hyprland/input.conf +#source = ~/.config/hypr/hyprland/looknfeel.conf +#source = ~/.config/hypr/hyprland/monitors.conf +#source = ~/.config/hypr/hyprland/windowrules.conf + + +#▄████▄ ███ ██ ██ ██▄ ▄██ ▄████▄ ██████ ██ ▄████▄ ███ ██ ▄█████ +#██▄▄██ ██ ▀▄██ ██ ██ ▀▀ ██ ██▄▄██ ██ ██ ██ ██ ██ ▀▄██ ▀▀▀▄▄▄ +#██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ + +animations { + + enabled = true + + bezier = water, 0.22, 0.9, 0.36, 1.0 + bezier = flow, 0.25, 0.1, 0.25, 1.0 + bezier = ripple, 0.33, 0.0, 0.2, 1.0 + bezier = stream, 0.4, 0.0, 0.4, 1.0 + bezier = cascade, 0.19, 1.0, 0.22, 1.0 + bezier = md3_standard, 0.2, 0, 0, 1 + bezier = md3_accel, 0.3, 0, 0.8, 0.15 + bezier = overshot, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 3.0, water + animation = windowsIn, 1, 2.5, cascade,slide + animation = windowsOut, 1, 2.4, stream,slide + animation = windowsMove,1, 1.6, flow + animation = fade, 1, 2.4, water + animation = fadeIn, 1, 2.0, cascade + animation = fadeOut, 1, 1.8, ripple + animation = fadeDim, 1, 2.0, water + animation = fadeSwitch, 1, 1.4, flow + animation = layersIn, 1, 1.5, overshot, popin 80% + animation = layersOut, 1, 1.3, md3_accel, popin 90% + animation = layers, 1, 1.5, md3_standard + animation = workspaces, 1, 1.5, flow + animation = specialWorkspace, 1, 2.5, water + animation = border, 1, 2.9, water + animation = borderangle,1, 3.5, flow +} +#▄████▄ ██ ██ ██████ ▄████▄ ▄█████ ██████ ▄████▄ █████▄ ██████ +#██▄▄██ ██ ██ ██ ██ ██ ▀▀▀▄▄▄ ██ ██▄▄██ ██▄▄██▄ ██ +#██ ██ ▀████▀ ██ ▀████▀ █████▀ ██ ██ ██ ██ ██ ██ + +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store +#exec-once = waybar & disown +exec-once = librewolf & disown +exec-once = swaync & disown +exec-once = hypridle & disown +exec-once = seventeenlands & disown +exec-once = hyprctl dispatch exec [workspace 3 silent] signal-desktop +exec-once = hyprctl dispatch exec [workspace 3 silent] discord +exec-once = hyprctl dispatch exec [workspace 3 silent] thunderbird +#exec-once = hyprctl dispatch exec "[workspace 5 silent] steam" +#██ ▄█▀ ██████ ██ ██ █████▄ ██ ███ ██ ████▄ ██ ███ ██ ▄████ ▄█████ +#████ ██▄▄ ▀██▀ ██▄▄██ ██ ██ ▀▄██ ██ ██ ██ ██ ▀▄██ ██ ▄▄▄ ▀▀▀▄▄▄ +#██ ▀█▄ ██▄▄▄▄ ██ ██▄▄█▀ ██ ██ ██ ████▀ ██ ██ ██ ▀███▀ █████▀ + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, A, exec, ~/.config/hypr/scripts/status.sh +bind = $mainMod, B, exec, $browser +bind = $mainMod SHIFT, B, exec, $browser2 +bind = $mainMod, C, killactive, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, F, togglefloating, +#bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, J, layoutmsg, togglesplit dwindle +bind = $mainMod, L, exec, hyprlock +bind = $mainMod, M, exit, +bind = $mainMod, N, exec, swaync-client -t -sw +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, S, exec, $terminal -e ~/.config/hypr/scripts/statmon/target/release/statmon +bind = $mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only, +bind = $mainMod, Q, exec, ~/.config/hypr/scripts/power-menu.sh +bind = $mainMod, U, exec, ~/.config/hypr/scripts/update-sys.sh up +bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy +bind = $mainMod, W, exec, ~/.config/hypr/scripts/wifi-menu.sh +bind = $mainMod SHIFT, W, exec, ~/.config/hypr/scripts/bt-menu.sh +bind = $mainMod, return, exec, $terminal +bind = $mainMod, space, exec, $menu +bind = $mainMod, backslash, exec, ~/.config/hypr/scripts/monitor_setup.sh +bind = $mainMod, slash, exec, $terminal -e btop + + +# 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, movetoworkspacesilent, 1 +bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +#bind = $mainMod, S, togglespecialworkspace, magic +#bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +bind = SUPER_ALT_CTRL, L, exec, hyprctl keyword monitor "eDP-1,preferred,auto,1" + +#Mouse Key Assignements +#bind = , code:191, exec, $terminal +#bind = , code:198, exec, $terminal + + +# Lid Open & Closed +#bindl = , switch:off:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh +# trigger when the switch is turning on +#bindl = , switch:on:Lid Switch, exec, ~/.config/hypr/scripts/monitor_setup.sh + +# 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 s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# --- Mouse Side Button Remaps --- +bind = , mouse:276, sendshortcut, , ESCAPE, active +bind = , mouse:275, sendshortcut, , RETURN, active +#██████ ███ ██ ██ ██ ██ ██ ▄████▄ █████▄ ██ ▄████▄ █████▄ ██ ██████ ▄█████ +#██▄▄ ██ ▀▄██ ██▄▄██ ██▄▄██ ██▄▄██ ██▄▄██▄ ██ ██▄▄██ ██▄▄██ ██ ██▄▄ ▀▀▀▄▄▄ +#██▄▄▄▄ ██ ██ ▀██▀ ▀██▀ ██ ██ ██ ██ ██ ██ ██ ██▄▄█▀ ██████ ██▄▄▄▄ █████▀ + +# GTK Theme +env = GTK_THEME,adw-gtk3-dark + +# Cursor size +env = XCURSOR_SIZE,20 +env = HYPRCURSOR_SIZE,20 + +# Language Settings +env = LANG,en_US.UTF-8 +env = LC_ALL,en_US.UTF-8 +env = LANGUAGE,en_US.UTF-8 + +# Editor +env = EDITOR,nvim + +# Force all apps to use Wayland +env = GDK_BACKEND,wayland,x11 +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_STYLE_OVERRIDE,kvantum +env = SDL_VIDEODRIVER,wayland +env = MOZ_ENABLE_WAYLAND,1 +env = ELECTRON_OZONE_PLATFORM_HINT,wayland +env = OZONE_PLATFORM,wayland +env = XDG_SESSION_TYPE,wayland + +# Allow better support for screen sharing (Google Meet, Discord, etc) +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_DESKTOP,Hyprland +#██ ███ ██ █████▄ ██ ██ ██████ +#██ ██ ▀▄██ ██▄▄█▀ ██ ██ ██ +#██ ██ ██ ██ ▀████▀ ██ + +# hide cursor after n sec +cursor { + inactive_timeout = 5 +} + +input { + kb_options = caps:none #deactivate capslock + + # Change speed of keyboard repeat + # repeat_rate = 40 + # repeat_delay = 600 + accel_profile = flat + #force_no_accel = true + + follow_mouse = 1 + numlock_by_default = true + + # Increase sensitity for mouse/trackpack (default: 0) + sensitivity = 0 #0.35 + + touchpad { + # Use natural (inverse) scrolling + natural_scroll = false #true + + # Use two-finger clicks for right-click instead of lower-right corner + clickfinger_behavior = true + + # Control the speed of your scrolling + scroll_factor = 0.4 + } +} + +misc { + key_press_enables_dpms = true # key press will trigger wake + mouse_move_enables_dpms = true # mouse move will trigger wake +} + + +#██ ▄████▄ ▄████▄ ██ ▄█▀ ▄▀▀▄ ██████ ██████ ██████ ██ +#██ ██ ██ ██ ██ ████ ▄▀▀▄ ▄ ██▄▄ ██▄▄ ██▄▄ ██ +#██████ ▀████▀ ▀████▀ ██ ▀█▄ ▀▄▄▀▀▄ ██ ██▄▄▄▄ ██▄▄▄▄ ██████ + +general { + gaps_in = 0 + gaps_out = 0 + + border_size = 1 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(ff9100ff) + 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.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 10 + rounding_power = 2 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 0.9 + + shadow { + enabled = false + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 7 + passes = 4 + ignore_opacity = true + noise = 0.0117 + contrast = 0.8916 + brightness = 0.8172 + xray = false + new_optimizations = true + special = true + popups = true + } +} + +# App launcher +#layerrule = blur, rofi +#layerrule = ignorezero, rofi +#layerrule = animation slide bottom, rofi + +# Top bar +#layerrule = blur, waybar +#layerrule = ignorezero, waybar + +dwindle { + preserve_split = true # You probably want this +} + +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. :( +} +#██▄ ▄██ ▄████▄ ███ ██ ██ ██████ ▄████▄ █████▄ ▄█████ +#██ ▀▀ ██ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██▄▄██▄ ▀▀▀▄▄▄ +#██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ ██ ██ █████▀ + +monitor = , preferred, auto, 1 + +# Lid switch bindings +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, 1" +#██ ██ ██ ███ ██ ████▄ ▄████▄ ██ ██ █████▄ ██ ██ ██ ██████ ▄█████ +#██ ▄█▄ ██ ██ ██ ▀▄██ ██ ██ ██ ██ ██ ▄█▄ ██ ██▄▄██▄ ██ ██ ██ ██▄▄ ▀▀▀▄▄▄ +# ▀██▀██▀ ██ ██ ██ ████▀ ▀████▀ ▀██▀██▀ ██ ██ ▀████▀ ██████ ██▄▄▄▄ █████▀ + +# Fix some dragging issues with XWayland +windowrule = match:class ^$, match:title ^$, match:xwayland 1, match:float 0, match:fullscreen 0, match:pin 0, no_focus on + +# Prevent apps from auto-maximizing themselves +windowrule = suppress_event maximize, match:class .* + +# 97% opacity when focused, 90% when unfocused +windowrule = opacity 0.97 0.9, match:class .* + +# Runelite specific rule +#windowrule = match:class ^(net-runelite-client-RuneLite)$, float on, size 1600 850, center on diff --git a/hypr/scripts/monitor_setup.sh b/hypr/scripts/monitor_setup.sh index 2bfe404..c58fc55 100755 --- a/hypr/scripts/monitor_setup.sh +++ b/hypr/scripts/monitor_setup.sh @@ -53,7 +53,7 @@ LAPTOP_RES=$(get_capped_res "$LAPTOP") # Case 1: Laptop Only if [ -z "$EXTERNAL" ]; then - notify-send -t 3000 "Monitor Setup" "Laptop Mode: $LAPTOP_RES" + notify-send -t 7000 "Monitor Setup" "Laptop Mode: $LAPTOP_RES" hyprctl keyword monitor "$LAPTOP,$LAPTOP_RES,auto,1" for ws in {1..5}; do @@ -65,7 +65,7 @@ fi # Case 2: External + Open Lid if [ "$LID_STATE" = "open" ]; then - notify-send -t 3000 "Monitor Setup" "Dual Mode\nExternal: $EXT_RES (VRR On)" + notify-send -t 7000 "Monitor Setup" "Dual Mode\nExternal: $EXT_RES (VRR On)" hyprctl keyword monitor "$LAPTOP,$LAPTOP_RES,0x0,1" hyprctl keyword monitor "$EXTERNAL,$EXT_RES,auto,1,vrr,1" diff --git a/hypr/scripts/monitor_setup2.sh b/hypr/scripts/monitor_setup2.sh new file mode 100755 index 0000000..52a9323 --- /dev/null +++ b/hypr/scripts/monitor_setup2.sh @@ -0,0 +1,94 @@ +#!/bin/bash +# ~/.config/hypr/scripts/monitor_setup.sh + +notify-send -t 3000 "Monitor Setup" "Detecting display configuration..." + +LAPTOP="eDP-1" +LID_STATE=$(grep -q "open" /proc/acpi/button/lid/LID/state && echo "open" || echo "closed") +MONITORS=$(hyprctl monitors -j) + +if [[ $(echo "$MONITORS" | jq 'length') -eq 0 ]]; then + notify-send "Monitor Error" "No monitors detected." + exit 1 +fi + +EXTERNAL=$(echo "$MONITORS" | jq -r '.[] | select(.name != "'$LAPTOP'") | .name' | head -1) + +get_capped_res() { + local monitor=$1 + local modes=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$monitor\") | .availableModes[]?") + + if [[ -z "$modes" ]]; then + echo "preferred" + return + fi + + local max_pixels=0 + local max_refresh=0 + local best_mode="preferred" + + while IFS= read -r mode; do + local width=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $1}') + local height=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $2}') + local refresh=$(echo "$mode" | awk -F'@' '{print $2}' | sed 's/Hz//') + + if (( $(echo "$refresh > 120.1" | bc -l) )); then + continue + fi + + local pixels=$((width * height)) + + if [[ $pixels -gt $max_pixels || ($pixels -eq $max_pixels && $(echo "$refresh > $max_refresh" | bc -l) -eq 1) ]]; then + max_pixels=$pixels + max_refresh=$refresh + best_mode="${width}x${height}@${refresh}" + fi + done <<< "$modes" + + echo "$best_mode" +} + +EXT_RES=$(get_capped_res "$EXTERNAL") +LAPTOP_RES=$(get_capped_res "$LAPTOP") + +# Case 1: Laptop Only +if [ -z "$EXTERNAL" ]; then + notify-send -t 7000 "Monitor Setup" "Laptop Mode: $LAPTOP_RES" + + hyprctl --batch \ + "eval 'hl.monitor({ output = \"$LAPTOP\", mode = \"$LAPTOP_RES\", position = \"auto\", scale = 1 })' ; \ + eval 'hl.dsp.workspace_move_to_monitor(1, \"$LAPTOP\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(2, \"$LAPTOP\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(3, \"$LAPTOP\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(4, \"$LAPTOP\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(5, \"$LAPTOP\")'" + exit 0 +fi + +# Case 2: External + Open Lid +if [ "$LID_STATE" = "open" ]; then + notify-send -t 7000 "Monitor Setup" "Dual Mode\nExternal: $EXT_RES" + + hyprctl --batch \ + "eval 'hl.monitor({ output = \"$LAPTOP\", mode = \"$LAPTOP_RES\", position = \"0x0\", scale = 1 })' ; \ + eval 'hl.monitor({ output = \"$EXTERNAL\", mode = \"$EXT_RES\", position = \"auto\", scale = 1 })' ; \ + eval 'hl.dsp.workspace_move_to_monitor(1, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(2, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(3, \"$LAPTOP\")'" + +# Case 3: External Only (Clamshell) +else + notify-send -t 3000 "Monitor Setup" "Clamshell Mode\nExternal: $EXT_RES" + + hyprctl --batch \ + "eval 'hl.monitor({ output = \"$EXTERNAL\", mode = \"$EXT_RES\", position = \"0x0\", scale = 1 })' ; \ + eval 'hl.dsp.dpms(\"off\", \"$LAPTOP\")' ; + eval 'hl.monitor({ output = \"$LAPTOP\", disabled = true })' ; \ + eval 'hl.dsp.workspace_move_to_monitor(1, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(2, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(3, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(4, \"$EXTERNAL\")' ; \ + eval 'hl.dsp.workspace_move_to_monitor(5, \"$EXTERNAL\")'" +fi + +hyprctl eval 'hl.dsp.focus({ workspace = "1" })'