diff options
| author | krolyxon <me@krolyxon.com> | 2026-08-13 21:12:42 +0530 |
|---|---|---|
| committer | krolyxon <me@krolyxon.com> | 2026-08-13 21:12:42 +0530 |
| commit | f130f7e92715d76633e6739ca02d67aadd49cc3b (patch) | |
| tree | 22c9889a7f2b7774e803c56300d4190c7e98b6de /.config/hypr | |
| parent | 19f3cf8d636ee2f9272fb9fbee3089b1edf686a1 (diff) | |
Hyprland: switch to .lua files since .conf is getting deprecated
For the most part everything has been ported to .lua smoothly, the
screen rotation keybind doesn't work for now, i'll fix that later.
But everything else seems to be working fine.
Have gotten rid of split-monitor-workspaces for now to see if i really
need it in my current workflow, if need occurs, install this:
https://github.com/zjeffer/split-monitor-workspaces
Diffstat (limited to '.config/hypr')
| -rw-r--r-- | .config/hypr/hyprland.conf | 87 | ||||
| -rw-r--r-- | .config/hypr/hyprland.lua | 100 | ||||
| -rw-r--r-- | .config/hypr/source/appearance.conf | 77 | ||||
| -rw-r--r-- | .config/hypr/source/appearance.lua | 93 | ||||
| -rw-r--r-- | .config/hypr/source/environment_variables.conf | 25 | ||||
| -rw-r--r-- | .config/hypr/source/environment_variables.lua | 34 | ||||
| -rw-r--r-- | .config/hypr/source/input.conf | 27 | ||||
| -rw-r--r-- | .config/hypr/source/input.lua | 36 | ||||
| -rw-r--r-- | .config/hypr/source/keybinds.conf | 118 | ||||
| -rw-r--r-- | .config/hypr/source/keybinds.lua | 151 | ||||
| -rw-r--r-- | .config/hypr/source/permissions.conf | 12 | ||||
| -rw-r--r-- | .config/hypr/source/permissions.lua | 41 |
12 files changed, 455 insertions, 346 deletions
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf deleted file mode 100644 index 8165499..0000000 --- a/.config/hypr/hyprland.conf +++ /dev/null @@ -1,87 +0,0 @@ -source = $HOME/.cache/wal/colors-hyprland.conf -autogenerated = 0 - -# 1. PROGRAMS -$terminal = foot -$menu = fuzzel -$browser = zen-browser - -# 2. AUTOSTART -exec-once = (hyprpm reload -n & kanshi & waybar & swaync & gammastep & hypridle) -exec-once = ~/.local/bin/setwall -n -exec-once = systemctl --user start hyprpolkitagent - -plugin { - hyprsplit { - num_workspaces = 10 - persistent_workspaces = true - } -} - -# 3. ENVIRONMENT VARIABLES -source = ~/.config/hypr/source/environment_variables.conf - - -# 4. PLUGIN SETTINGS -plugin { - split-monitor-workspaces { - count = 10 - keep_focused = 1 - enable_notifications = 0 - enable_persistent_workspaces = 1 - } -} - -# 5. PERMISSIONS -source = ~/.config/hypr/source/permissions.conf - - -# 6. LOOK AND FEEL -source = ~/.config/hypr/source/appearance.conf - -# 7. INPUT -source = ~/.config/hypr/source/input.conf - -# 8. KEYBINDINGS -source = ~/.config/hypr/source/keybinds.conf - - -############################## -### 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 windowrules that are useful - -windowrule { - # Ignore maximize requests from all apps. You'll probably like this. - name = suppress-maximize-events - match:class = .* - - suppress_event = maximize -} - -windowrule { - # Fix some dragging issues with XWayland - name = fix-xwayland-drags - match:class = ^$ - match:title = ^$ - match:xwayland = true - match:float = true - match:fullscreen = false - match:pin = false - - no_focus = true -} - -# Hyprland-run windowrule -windowrule { - name = move-hyprland-run - - match:class = hyprland-run - - move = 20 monitor_h-120 - float = yes -} diff --git a/.config/hypr/hyprland.lua b/.config/hypr/hyprland.lua new file mode 100644 index 0000000..c93e8e6 --- /dev/null +++ b/.config/hypr/hyprland.lua @@ -0,0 +1,100 @@ + +terminal = "foot" +menu = "fuzzel" +browser = "librewolf" +mainMod = "SUPER" + +-- ----------------------------------------------------- +-- Path to home +-- ----------------------------------------------------- +HOME = os.getenv("HOME") + + +-- Theme (pywal) +require(os.getenv("HOME") .. "/.cache/wal/colors.lua") + + +-- ----------------------------------------------------- +-- Autostart +-- ----------------------------------------------------- + +hl.on("hyprland.start", function() + hl.exec_cmd("hyprpm reload -n") + hl.exec_cmd("kanshi") + hl.exec_cmd("waybar") + hl.exec_cmd("swaync") + hl.exec_cmd("gammastep") + hl.exec_cmd("hypridle") + hl.exec_cmd(os.getenv("HOME") .. "/.local/bin/setwall -n") + hl.exec_cmd("systemctl --user start hyprpolkitagent") +end) + +-------------------------------------------------- +-- Plugins +-------------------------------------------------- + +-- hl.config({ +-- plugin = { +-- hyprsplit = { +-- num_workspaces = 10, +-- persistent_workspaces = true, +-- }, +-- +-- ["split-monitor-workspaces"] = { +-- count = 10, +-- keep_focused = true, +-- enable_notifications = false, +-- enable_persistent_workspaces = true, +-- }, +-- }, +-- }) + +-- ----------------------------------------------------- +-- SOURCE FILES +-- ----------------------------------------------------- +require("source.environment_variables") +require("source.permissions") +require("source.appearance") +require("source.input") +require("source.keybinds") + + +-------------------------------------------------- +-- Window rules +-------------------------------------------------- + +hl.window_rule({ + name = "suppress-maximize-events", + + match = { + class = ".*", + }, + + suppress_event = "maximize", +}) + +hl.window_rule({ + name = "fix-xwayland-drags", + + match = { + class = "^$", + title = "^$", + xwayland = true, + float = true, + fullscreen = false, + pin = false, + }, + + no_focus = true, +}) + +hl.window_rule({ + name = "move-hyprland-run", + + match = { + class = "hyprland-run", + }, + + move = "20 monitor_h-120", + float = true, +}) diff --git a/.config/hypr/source/appearance.conf b/.config/hypr/source/appearance.conf deleted file mode 100644 index c18a94c..0000000 --- a/.config/hypr/source/appearance.conf +++ /dev/null @@ -1,77 +0,0 @@ -general { - gaps_in = 2 - gaps_out = 2 - border_size = 2 - resize_on_border = false - allow_tearing = false - # col.active_border = $color14 $color0 $color0 $color14 45deg # Gradient border - col.active_border = $color14 $color14 $color14 $color14 45deg - col.inactive_border = $color0 $color0 $color0 $color0 45deg - layout = master -} - -decoration { - # rounding = 8 - - - # blur { - # enabled = true - # size = 3 - # passes = 1 - # } - - - blur { - enabled = true - size = 3 - passes = 3 - new_optimizations = true - vibrancy = 0.1696 - ignore_opacity = true - } -} - -animations { - enabled = false - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - animation = windows, 1, 2, myBezier - animation = windowsOut, 1, 2, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 1, default -} - -# 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 - new_on_top = true - -} - -# https://wiki.hypr.land/Configuring/Variables/#misc -misc { - force_default_wallpaper = -1 # 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. :( - disable_splash_rendering = true - mouse_move_enables_dpms = true - key_press_enables_dpms = true - vrr = 0 # Disable adaptive sync -} - - diff --git a/.config/hypr/source/appearance.lua b/.config/hypr/source/appearance.lua new file mode 100644 index 0000000..55b8c9f --- /dev/null +++ b/.config/hypr/source/appearance.lua @@ -0,0 +1,93 @@ +-- source/appearance.lua + + +hl.config({ + -------------------------------------------------- + -- General + -------------------------------------------------- + general = { + gaps_in = 2, + gaps_out = 2, + border_size = 2, + + resize_on_border = false, + allow_tearing = false, + + layout = "master", + + -- Pywal colors + -- active_border = "$color14 $color14 $color14 $color14 45deg", + -- inactive_border = "$color0 $color0 $color0 $color0 45deg", + + -- Gradient example + -- active_border = "$color14 $color0 $color0 $color14 45deg", + }, + + -------------------------------------------------- + -- Decoration + -------------------------------------------------- + decoration = { + -- rounding = 8, + + blur = { + enabled = true, + size = 3, + passes = 3, + new_optimizations = true, + vibrancy = 0.1696, + ignore_opacity = true, + }, + }, + + -------------------------------------------------- + -- Animations + -------------------------------------------------- + animations = { + enabled = false, + + bezier = { + { + name = "myBezier", + points = {0.05, 0.9, 0.1, 1.05}, + }, + }, + + animation = { + {"windows", 1, 2, "myBezier"}, + {"windowsOut", 1, 2, "default", "popin 80%"}, + {"border", 1, 10, "default"}, + {"borderangle", 1, 8, "default"}, + {"fade", 1, 7, "default"}, + {"workspaces", 1, 1, "default"}, + }, + }, + + -------------------------------------------------- + -- Dwindle + -------------------------------------------------- + dwindle = { + preserve_split = true, + }, + + -------------------------------------------------- + -- Master + -------------------------------------------------- + master = { + new_status = "master", + new_on_top = true, + }, + + -------------------------------------------------- + -- Misc + -------------------------------------------------- + misc = { + force_default_wallpaper = -1, + disable_hyprland_logo = true, + disable_splash_rendering = true, + + mouse_move_enables_dpms = true, + key_press_enables_dpms = true, + + vrr = 0, + }, +}) diff --git a/.config/hypr/source/environment_variables.conf b/.config/hypr/source/environment_variables.conf deleted file mode 100644 index 6e64446..0000000 --- a/.config/hypr/source/environment_variables.conf +++ /dev/null @@ -1,25 +0,0 @@ -# See https://wiki.hypr.land/Configuring/Environment-variables/ -env = HYPRSHOT_DIR,/home/krolyxon/pix/ss/ -env = XCURSOR_SIZE,24 -env = HYPRCURSOR_SIZE,24 -# env = GTK_THEME,Tokyonight-Dark - -# XDG Specifications -env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_TYPE,wayland -env = XDG_SESSION_DESKTOP,Hyprland - -# Toolkit -env = GDK_BACKEND,wayland,x11,* # GTK: Use Wayland if available; if not, try X11 and then any other GDK backend. -env = QT_QPA_PLATFORM,wayland;xcb # Qt: Use Wayland if available, fall back to X11 if not -env = SDL_VIDEODRIVER,Wayland # Run SDL2 applications on Wayland. Remove or set to x11 if games that provide older versions of SDL cause compatibility issues -env = CLUTTER_BACKEND,wayland # Clutter applications to try and use the Wayland backend - -# Force NVIDIA as primary GPU -# env = __NV_PRIME_RENDER_OFFLOAD,1 -# env = __GLX_VENDOR_LIBRARY_NAME,nvidia -# env = __VK_LAYER_NV_optimus,NVIDIA_only -# env = GBM_BACKEND,nvidia-drm -# env = WLR_NO_HARDWARE_CURSORS,1 -# env = LIBVA_DRIVER_NAME,nvidia - diff --git a/.config/hypr/source/environment_variables.lua b/.config/hypr/source/environment_variables.lua new file mode 100644 index 0000000..4335859 --- /dev/null +++ b/.config/hypr/source/environment_variables.lua @@ -0,0 +1,34 @@ +-- source/environment_variables.lua + +-------------------------------------------------- +-- Environment Variables +-------------------------------------------------- +local envs = { + HYPRSHOT_DIR = "/home/krolyxon/pix/ss/", + XCURSOR_SIZE = "24", + HYPRCURSOR_SIZE = "24", + + XDG_CURRENT_DESKTOP = "Hyprland", + XDG_SESSION_TYPE = "wayland", + XDG_SESSION_DESKTOP = "Hyprland", + + GDK_BACKEND = "wayland,x11,*", + QT_QPA_PLATFORM = "wayland;xcb", + SDL_VIDEODRIVER = "Wayland", + CLUTTER_BACKEND = "wayland", +} + +for k, v in pairs(envs) do + hl.env(k, v) +end + +-------------------------------------------------- +-- NVIDIA (uncomment if needed) +-------------------------------------------------- + +-- hl.env("__NV_PRIME_RENDER_OFFLOAD", "1") +-- hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia") +-- hl.env("__VK_LAYER_NV_optimus", "NVIDIA_only") +-- hl.env("GBM_BACKEND", "nvidia-drm") +-- hl.env("WLR_NO_HARDWARE_CURSORS", "1") +-- hl.env("LIBVA_DRIVER_NAME", "nvidia") diff --git a/.config/hypr/source/input.conf b/.config/hypr/source/input.conf deleted file mode 100644 index 3febb3e..0000000 --- a/.config/hypr/source/input.conf +++ /dev/null @@ -1,27 +0,0 @@ -# https://wiki.hypr.land/Configuring/Variables/#input -input { - kb_layout = us - kb_variant = - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. - - touchpad { - natural_scroll = false - } - - repeat_delay = 300 - repeat_rate = 50 -} - -# 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 -} - diff --git a/.config/hypr/source/input.lua b/.config/hypr/source/input.lua new file mode 100644 index 0000000..e41e0ac --- /dev/null +++ b/.config/hypr/source/input.lua @@ -0,0 +1,36 @@ +-- source/input.lua + +-------------------------------------------------- +-- Global Input +-------------------------------------------------- + +hl.config({ + input = { + kb_layout = "us", + kb_variant = "", + kb_model = "", + kb_options = "", + kb_rules = "", + + follow_mouse = 1, + + -- -1.0 .. 1.0 + sensitivity = 0, + + touchpad = { + natural_scroll = false, + }, + + repeat_delay = 300, + repeat_rate = 50, + }, +}) + +-------------------------------------------------- +-- Per-device Configuration +-------------------------------------------------- + +hl.device({ + name = "epic-mouse-v1", + sensitivity = -0.5, +}) diff --git a/.config/hypr/source/keybinds.conf b/.config/hypr/source/keybinds.conf deleted file mode 100644 index eda98b1..0000000 --- a/.config/hypr/source/keybinds.conf +++ /dev/null @@ -1,118 +0,0 @@ -################### -### KEYBINDINGS ### -################### - -# See https://wiki.hypr.land/Configuring/Keywords/ -$mainMod = SUPER # Sets "Windows" key as main modifier - -# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more -bind = $mainMod, Return, exec, $terminal -bind = $mainMod SHIFT, X, killactive, -bind = $mainMod SHIFT, Q, exit, -bind = $mainMod, F, Fullscreen -bind = $mainMod SHIFT, F, Fullscreen, 1 -# bind = $mainMod SHIFT, R, togglefloating, -# Smart Float: Toggle float -> Resize to 90% -> Center -bind = $mainMod SHIFT, R, exec, if hyprctl -j activewindow | jq -e '.floating | not'; then hyprctl --batch "dispatch togglefloating; dispatch resizeactive exact 90% 90%; dispatch centerwindow"; else hyprctl dispatch togglefloating; fi -bind = $mainMod, R, exec, $menu -#bind = $mainMod SHIFT, P, pseudo, # dwindle -binde = $mainMod, tab, cyclenext, prev -bind = $mainMod, b, exec, killall waybar || waybar -bind = $mainMod, grave, exec, fuzzelunicode -bind = $mainMod, escape, exec, sysact - -# Applications -bind = $mainMod, W, exec, $browser -bind = ,PRINT, exec, hypr_screenshot.sh -bind = $mainMod SHIFT, P, exec, hypr_screenshot.sh - -# Music Controls -bind = $mainMod, m, exec, $terminal -e zsh -i -c "ncmpcpp" -bind = $mainMod, p, exec, mpc toggle -binde = $mainMod, period, exec, mpc seek +10 -binde = $mainMod, comma, exec, mpc seek -10 -bind = $mainMod SHIFT, period, exec, mpc next -bind = $mainMod SHIFT, comma, exec, mpc prev - -# Swap current focused window with master -bind = $mainMod, space, layoutmsg, swapwithmaster - -# Resize windows with h/j/k/l -binde = $mainMod, h, resizeactive, -30 0 -binde = $mainMod, l, resizeactive, 30 0 -binde = $mainMod, k, resizeactive, 0 -30 -binde = $mainMod, j, resizeactive, 0 30 - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, split-workspace, 1 -bind = $mainMod, 2, split-workspace, 2 -bind = $mainMod, 3, split-workspace, 3 -bind = $mainMod, 4, split-workspace, 4 -bind = $mainMod, 5, split-workspace, 5 -bind = $mainMod, 6, split-workspace, 6 -bind = $mainMod, 7, split-workspace, 7 -bind = $mainMod, 8, split-workspace, 8 -bind = $mainMod, 9, split-workspace, 9 -bind = $mainMod, 0, split-workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, split-movetoworkspacesilent, 1 -bind = $mainMod SHIFT, 2, split-movetoworkspacesilent, 2 -bind = $mainMod SHIFT, 3, split-movetoworkspacesilent, 3 -bind = $mainMod SHIFT, 4, split-movetoworkspacesilent, 4 -bind = $mainMod SHIFT, 5, split-movetoworkspacesilent, 5 -bind = $mainMod SHIFT, 6, split-movetoworkspacesilent, 6 -bind = $mainMod SHIFT, 7, split-movetoworkspacesilent, 7 -bind = $mainMod SHIFT, 8, split-movetoworkspacesilent, 8 -bind = $mainMod SHIFT, 9, split-movetoworkspacesilent, 9 -bind = $mainMod SHIFT, 0, split-movetoworkspacesilent, 10 - -# Example special workspace (scratchpad) -bind = $mainMod, S, togglespecialworkspace, magic -bind = $mainMod SHIFT, S, movetoworkspace, special:magic - -# Scratchpad like DWM -workspace = special:h, on-created-empty: $terminal -bind = $mainMod SHIFT, Return, togglespecialworkspace, h - - -# Accessibility: Zoom -cursor:zoom_disable_aa = true -# Zoom In -binded = SUPER, equal, Zoom In, exec, sh -c "hyprctl keyword cursor:zoom_factor \"$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {print $2 * 1.25}')\"" -# Zoom Out -binded = SUPER, minus, Zoom Out, exec, sh -c "hyprctl keyword cursor:zoom_factor \"$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {val = $2 / 1.25; if (val < 1.0) val = 1.0; print val}')\"" -# Reset Zoom -bindld = SUPER, BACKSPACE, Reset Zoom, exec, hyprctl keyword cursor:zoom_factor 1.0 - -# Screen Rotate -bindld = $mainMod CTRL, comma, Rotate Screen Anti-Clockwise, exec, hypr_screen_rotate.sh +90 -bindld = $mainMod CTRL, period, Rotate Screen Clockwise, exec, hypr_screen_rotate.sh -90 - -# --- Hyprshade (Visual Filters) --- -bindd = $mainMod CTRL, S, Shader Menu, exec, hypr_shader_menu.sh -bindld = $mainMod CTRL, X, Disable Shader, exec, hyprshade off -bindld = $mainMod CTRL, V, Vibrant Shader, exec, hyprshade on vibrance - -# 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 = , XF86MonBrightnessDown, exec, ~/.local/bin/brictl - -bindel = , XF86MonBrightnessUp, exec, ~/.local/bin/brictl + - - -# Requires playerctl -bindl = , XF86AudioNext, exec, playerctl next -bindl = , XF86AudioPause, exec, playerctl play-pause -bindl = , XF86AudioPlay, exec, playerctl play-pause -bindl = , XF86AudioPrev, exec, playerctl previous diff --git a/.config/hypr/source/keybinds.lua b/.config/hypr/source/keybinds.lua new file mode 100644 index 0000000..d71cc01 --- /dev/null +++ b/.config/hypr/source/keybinds.lua @@ -0,0 +1,151 @@ +--------------------- +---- KEYBINDINGS ---- +--------------------- +-- See https://wiki.hypr.land/Configuring/Basics/Binds/ for more + +hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal)) +hl.bind(mainMod .. " + SHIFT + X", hl.dsp.window.close()) +hl.bind(mainMod .. " + SHIFT + Q", hl.dsp.exit()) +hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" })) +hl.bind(mainMod .. " + SHIFT + F", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" })) + +-- bind = $mainMod SHIFT, R, togglefloating, +-- Smart Float: Toggle float -> Resize to 90% -> Center +hl.bind( + mainMod .. "+ SHIFT + R", + hl.dsp.exec_cmd([[ + if hyprctl activewindow | grep -q 'floating: 0'; then + W=$(hyprctl monitors -j | jq '.[] | select(.focused) | ((.width / .scale) * 0.9) | floor') + H=$(hyprctl monitors -j | jq '.[] | select(.focused) | ((.height / .scale) * 0.9) | floor') + hyprctl --batch "dispatch hl.dsp.window.float({action='set'}); dispatch hl.dsp.window.resize({x=${W}, y=${H}, relative=false})" + hyprctl dispatch "hl.dsp.window.center()" + else + hyprctl dispatch "hl.dsp.window.float({action='unset'})" + fi + ]]), + { description = "Smart Float" } +) + + +hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu)) +-- bind = $mainMod SHIFT, P, pseudo, # dwindle +-- (left commented out to mirror the original file) +hl.bind(mainMod .. " + Tab", hl.dsp.window.cycle_next({ next = false }), { repeating = true }) +hl.bind(mainMod .. " + b", hl.dsp.exec_cmd("killall waybar || waybar")) +hl.bind(mainMod .. " + grave", hl.dsp.exec_cmd("fuzzelunicode")) +hl.bind(mainMod .. " + escape", hl.dsp.exec_cmd("sysact")) + +-- Applications +hl.bind(mainMod .. " + W", hl.dsp.exec_cmd(browser)) +hl.bind("PRINT", hl.dsp.exec_cmd("hypr_screenshot.sh")) +hl.bind(mainMod .. " + SHIFT + P", hl.dsp.exec_cmd("hypr_screenshot.sh")) + +-- Music Controls +hl.bind(mainMod .. " + m", hl.dsp.exec_cmd(terminal .. " -e zsh -i -c \"ncmpcpp\"")) +hl.bind(mainMod .. " + p", hl.dsp.exec_cmd("mpc toggle")) +hl.bind(mainMod .. " + period", hl.dsp.exec_cmd("mpc seek +10"), { repeating = true }) +hl.bind(mainMod .. " + comma", hl.dsp.exec_cmd("mpc seek -10"), { repeating = true }) +hl.bind(mainMod .. " + SHIFT + period", hl.dsp.exec_cmd("mpc next")) +hl.bind(mainMod .. " + SHIFT + comma", hl.dsp.exec_cmd("mpc prev")) + +-- Swap current focused window with master +hl.bind(mainMod .. " + space", hl.dsp.layout("swapwithmaster")) + +-- Resize windows with h/j/k/l +hl.bind(mainMod .. " + h", hl.dsp.window.resize({ x = -30, y = 0, relative = true}), { repeating = true }) +hl.bind(mainMod .. " + l", hl.dsp.window.resize({ x = 30, y = 0, relative = true}), { repeating = true }) +hl.bind(mainMod .. " + k", hl.dsp.window.resize({ x = 0, y = -30, relative = true }), { repeating = true }) +hl.bind(mainMod .. " + j", hl.dsp.window.resize({ x = 0, y = 30, relative = true }), { repeating = true }) + + +-- ----------------------------------------------------- +-- Workspace switching +-- ----------------------------------------------------- + +for i = 1, 10 do + local key = i % 10 -- 10 maps to key 0 + + -- Switch to workspace + hl.bind( + mainMod .. " + " .. key, + hl.dsp.focus({ workspace = i }) + ) + + -- Move active window to workspace + hl.bind( + mainMod .. " + SHIFT + " .. key, + hl.dsp.window.move({ workspace = i, follow = false }) + ) +end + +-- Example special workspace (scratchpad) +hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic")) +hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) + +-- Scratchpad like DWM +hl.workspace_rule({ workspace = "special:h", on_created_empty = terminal }) +hl.bind(mainMod .. " + SHIFT + Return", hl.dsp.workspace.toggle_special("h")) + +-- --- Accessibility: Zoom --- +hl.config({ cursor = { zoom_disable_aa = true } }) + +hl.bind( + "SUPER + equal", + function() + local z = hl.get_config("cursor.zoom_factor") + hl.config({ cursor = { zoom_factor = z * 1.25 } }) + end, + { description = "Zoom In", repeating = true } +) + +hl.bind( + "SUPER + minus", + function() + local z = hl.get_config("cursor.zoom_factor") + local nz = z / 1.25 + if nz < 1.0 then nz = 1.0 end + hl.config({ cursor = { zoom_factor = nz } }) + end, + { description = "Zoom Out", repeating = true } +) + +hl.bind( + "SUPER + BACKSPACE", + function() + hl.config({ cursor = { zoom_factor = 1.0 } }) + end, + { description = "Reset Zoom", locked = true } +) + +-- Screen Rotate +hl.bind(mainMod .. " + CTRL + comma", hl.dsp.exec_cmd("hypr_screen_rotate.sh +90"), + { locked = true, desc = "Rotate Screen Anti-Clockwise" }) +hl.bind(mainMod .. " + CTRL + period", hl.dsp.exec_cmd("hypr_screen_rotate.sh -90"), + { locked = true, desc = "Rotate Screen Clockwise" }) + +-- --- Hyprshade (Visual Filters) --- +hl.bind(mainMod .. " + CTRL + S", hl.dsp.exec_cmd("hypr_shader_menu.sh"), { desc = "Shader Menu" }) +hl.bind(mainMod .. " + CTRL + X", hl.dsp.exec_cmd("hyprshade off"), { locked = true, desc = "Disable Shader" }) +hl.bind(mainMod .. " + CTRL + V", hl.dsp.exec_cmd("hyprshade on vibrance"), { locked = true, desc = "Vibrant Shader" }) + +-- 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(), { mouse = true }) +hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) + +-- 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("XF86MonBrightnessDown", hl.dsp.exec_cmd("~/.local/bin/brictl -"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("~/.local/bin/brictl +"), { 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 }) diff --git a/.config/hypr/source/permissions.conf b/.config/hypr/source/permissions.conf deleted file mode 100644 index 9de32d7..0000000 --- a/.config/hypr/source/permissions.conf +++ /dev/null @@ -1,12 +0,0 @@ -ecosystem { - enforce_permissions = 1 -} - -permission = /usr/(bin|local/bin)/grim, screencopy, allow -permission = /usr/(bin|local/bin)/hyprlock, screencopy, allow -permission = /usr/(bin|local/bin)/hyprpicker , screencopy, allow -permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow -permission = /usr/(bin|local/bin)/hyprpm, plugin, allow -permission = ${lib.escapeRegex (lib.getExe config.programs.hyprlock.package)}, screencopy, allow - - diff --git a/.config/hypr/source/permissions.lua b/.config/hypr/source/permissions.lua new file mode 100644 index 0000000..c33fb51 --- /dev/null +++ b/.config/hypr/source/permissions.lua @@ -0,0 +1,41 @@ +hl.config({ + ecosystem = { + enforce_permissions = true, + }, +}) + +hl.permission({ + binary = "/usr/(bin|local/bin)/grim", + type = "screencopy", + mode = "allow", +}) + +hl.permission({ + binary = "/usr/(bin|local/bin)/hyprlock", + type = "screencopy", + mode = "allow", +}) + +hl.permission({ + binary = "/usr/(bin|local/bin)/hyprpicker", + type = "screencopy", + mode = "allow", +}) + +hl.permission({ + binary = "/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", + type = "screencopy", + mode = "allow", +}) + +hl.permission({ + binary = "/usr/(bin|local/bin)/hyprpm", + type = "plugin", + mode = "allow", +}) + +hl.permission({ + binary = "${lib.escapeRegex (lib.getExe config.programs.hyprlock.package)}", + type = "screencopy", + mode = "allow", +}) |
