diff options
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", +}) |
