aboutsummaryrefslogtreecommitdiff
path: root/common/home
diff options
context:
space:
mode:
Diffstat (limited to 'common/home')
-rw-r--r--common/home/mosder/.bashrc2
-rw-r--r--common/home/mosder/.config/hypr/conf/vars.lua30
-rw-r--r--common/home/mosder/.config/hypr/hyprland.conf280
-rw-r--r--common/home/mosder/.config/hypr/hyprland.lua274
-rwxr-xr-xcommon/home/mosder/.config/hypr/scripts/equalize-windows.sh87
-rwxr-xr-xcommon/home/mosder/.config/hypr/scripts/zoom.sh4
6 files changed, 307 insertions, 370 deletions
diff --git a/common/home/mosder/.bashrc b/common/home/mosder/.bashrc
index 94b896e..635815b 100644
--- a/common/home/mosder/.bashrc
+++ b/common/home/mosder/.bashrc
@@ -7,7 +7,7 @@ PS1='\[\e[0;35m\][\u@\h \W]\$\[\e[0m\] '
alias sudo='sudo '
alias vim='nvim'
alias bashcfg='vim ~/.bashrc'
-alias hyprcfg='vim ~/.config/hypr/hyprland.conf'
+alias hyprcfg='vim ~/.config/hypr/hyprland.lua'
alias die='shutdown -h 0'
alias grepfind='sudo find / | grep'
alias rfm='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"'
diff --git a/common/home/mosder/.config/hypr/conf/vars.lua b/common/home/mosder/.config/hypr/conf/vars.lua
new file mode 100644
index 0000000..5489d35
--- /dev/null
+++ b/common/home/mosder/.config/hypr/conf/vars.lua
@@ -0,0 +1,30 @@
+-------------------
+---- VARIABLES ----
+-------------------
+
+-- Shared between hyprland.lua and every file it requires.
+-- Get them with: local vars = require("conf.vars")
+
+return {
+ -- Files and locations
+ scripts_dir = os.getenv("HOME") .. "/.config/hypr/scripts",
+ log_file = os.getenv("HOME") .. "/.hypr.log",
+
+ -- Used programs
+ browser = "brave --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-features=UseChromeOSDirectVideoDecoder",
+ discord = "discord --enable-features=UseOzonePlatform --ozone-platform=wayland",
+ terminal = "wezterm",
+ editor = "nvim",
+ steam = "steam",
+ file_manager = "thunar",
+ menu = "wofi",
+ lockscreen = "hyprlock",
+ status_bar = "waybar",
+ wallpaper_manager = "hyprpaper",
+ idle_manager = "hypridle",
+ automount = "udiskie",
+ osd = "swayosd",
+ notification_daemon = "dunst",
+ color_picker = "hyprpicker",
+ screenshot = "hyprshot",
+}
diff --git a/common/home/mosder/.config/hypr/hyprland.conf b/common/home/mosder/.config/hypr/hyprland.conf
deleted file mode 100644
index 05b8a49..0000000
--- a/common/home/mosder/.config/hypr/hyprland.conf
+++ /dev/null
@@ -1,280 +0,0 @@
-#################
-### VARIABLES ###
-#################
-
-# Files and locations
-$SCRIPTS_DIR = $HOME/.config/hypr/scripts
-$LOG_FILE = $HOME/.hypr.log
-
-# Used programs
-$BROWSER = brave --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-features=UseChromeOSDirectVideoDecoder
-$DISCORD = discord --enable-features=UseOzonePlatform --ozone-platform=wayland
-$TERMINAL = wezterm
-$EDITOR = nvim
-$STEAM = steam
-$FILE_MANAGER = thunar
-$MENU = wofi
-$LOCKSCREEN = hyprlock
-$STATUS_BAR = waybar
-$WALLPAPER_MANAGER = hyprpaper
-$IDLE_MANAGER = hypridle
-$AUTOMOUNT = udiskie
-$OSD = swayosd
-$NOTIFICATION_DAEMON = dunst
-$COLOR_PICKER = hyprpicker
-$SCREENSHOT = hyprshot
-
-#####################
-### ENV VARIABLES ###
-#####################
-
-source = ~/.config/hypr/conf/env.conf
-
-# Gtk - nwglook
-env = GTK_THEME, catppuccin-mocha-mauve-standard+default
-
-# Qt - adwaita dark
-env = QT_QPA_PLATFORM, wayland
-env = QT_QPA_PLATFORMTHEME, qt5ct
-
-# Cursor
-env = XCURSOR_THEME, rose-pine-cursor
-env = XCURSOR_SIZE, 24
-env = HYPRCURSOR_THEME, rose-pine-hyprcursor
-env = HYPRCURSOR_SIZE, 24
-
-# Misc
-env = EDITOR, $EDITOR
-env = MAX_ZOOM, 3
-
-################
-### MONITORS ###
-################
-
-source = ~/.config/hypr/conf/monitors.conf
-
-#################
-### AUTOSTART ###
-#################
-
-source = ~/.config/hypr/conf/autostart.conf
-
-# Utils
-exec-once = systemctl --user start hyprpolkitagent
-exec-once = $STATUS_BAR
-exec-once = $WALLPAPER_MANAGER
-exec-once = $IDLE_MANAGER
-exec-once = $AUTOMOUNT
-exec-once = $OSD-server
-
-# Programs
-exec-once = [workspace 1 silent] $BROWSER
-exec-once = [workspace 2 silent] $DISCORD
-exec-once = [workspace 3 silent] $TERMINAL
-
-# Use lockscreen as login
-exec-once = $LOCKSCREEN
-
-##################
-### CATEGORIES ###
-##################
-
-general {
- gaps_in = 1
- gaps_out = 1
-
- col.active_border = rgb(df00ff) rgb(ff10f0) 45deg
- col.inactive_border = rgba(595959aa)
-
- no_focus_fallback = true
-}
-
-animations {
- bezier = easeOutQuint, 0.23, 1, 0.32, 1
- bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
- bezier = linear, 0, 0, 1, 1
- bezier = almostLinear, 0.5, 0.5, 0.75, 1
- bezier = quick, 0.15, 0, 0.1, 1
-
- animation = global, 1, 7.5, default
- animation = border, 1, 4.04, easeOutQuint
- animation = windows, 1, 3.59, easeOutQuint
- animation = windowsIn, 1, 3.07, easeOutQuint, popin 87%
- animation = windowsOut, 1, 1.11, linear, popin 87%
- animation = fadeIn, 1, 1.29, almostLinear
- animation = fadeOut, 1, 1.09, almostLinear
- animation = fade, 1, 2.27, quick
- animation = layers, 1, 2.85, easeOutQuint
- animation = layersIn, 1, 3, easeOutQuint, fade
- animation = layersOut, 1, 1.12, linear, fade
- animation = fadeLayersIn, 1, 1.34, almostLinear
- animation = fadeLayersOut, 1, 1.04, almostLinear
- animation = workspaces, 1, 1.45, almostLinear, fade
- animation = workspacesIn, 1, 0.9, almostLinear, fade
- animation = workspacesOut, 1, 1.45, almostLinear, fade
- animation = zoomFactor, 1, 5.25, quick
-}
-
-input {
- kb_layout = pl
-
- kb_options = caps:escape
-
- numlock_by_default = true
-
- repeat_rate = 40
- repeat_delay = 400
-
- follow_mouse = 2
-}
-
-misc {
- disable_hyprland_logo = true
-
- focus_on_activate = false
-
- middle_click_paste = false
-}
-
-cursor:zoom_rigid = true
-
-ecosystem:no_donation_nag = true
-
-dwindle {
- force_split = 2
- preserve_split = true
-}
-
-source = ~/.config/hypr/conf/categories.conf
-
-#############
-### BINDS ###
-#############
-
-# General
-bind = SUPER, Q, killactive,
-bind = SUPER, V, layoutmsg, togglesplit
-bind = SUPER SHIFT, F, togglefloating
-bindm = SUPER, mouse:273, resizewindow
-bind = SUPER, N, exec, dunstctl close-all
-bind = SUPER, slash, exec, $LOCKSCREEN
-bind = ALT, SPACE, exec, pkill $MENU || $MENU
-
-# Launch programs
-bind = SUPER, T, exec, $TERMINAL
-bind = SUPER, F, exec, $FILE_MANAGER
-bind = SUPER, C, exec, $TERMINAL start -- $EDITOR
-bind = SUPER, B, exec, $BROWSER
-bind = SUPER, D, exec, $DISCORD
-bind = SUPER, S, exec, $STEAM
-bind = SUPER SHIFT, P, exec, $COLOR_PICKER -a
-bind = SUPER SHIFT, M, exec, $SCRIPTS_DIR/zoom.sh
-
-# Take screenshots
-bind = SUPER SHIFT, S, exec, $SCREENSHOT -m region --clipboard-only
-
-# Passthru keybinds to VMs
-bind = SUPER, P, exec, notify-send "Entered passthru submap"
-bind = SUPER, P, submap, passthru
-submap = passthru
-bind = SUPER, P, submap, reset
-submap = reset
-
-# Move focus
-bind = ALT, Tab, cyclenext
-bind = SUPER, left, movefocus, l
-bind = SUPER, down, movefocus, d
-bind = SUPER, up, movefocus, u
-bind = SUPER, right, movefocus, r
-bind = SUPER, H, movefocus, l
-bind = SUPER, J, movefocus, d
-bind = SUPER, K, movefocus, u
-bind = SUPER, L, movefocus, r
-
-# Swap windows
-bind = SUPER SHIFT, left, swapwindow, l
-bind = SUPER SHIFT, down, swapwindow, d
-bind = SUPER SHIFT, up, swapwindow, u
-bind = SUPER SHIFT, right, swapwindow, r
-bind = SUPER SHIFT, H, swapwindow, l
-bind = SUPER SHIFT, J, swapwindow, d
-bind = SUPER SHIFT, K, swapwindow, u
-bind = SUPER SHIFT, L, swapwindow, r
-
-# Equalize windows
-bind = SUPER ALT, H, exec, $SCRIPTS_DIR/equalize-windows.sh l
-bind = SUPER ALT, V, exec, $SCRIPTS_DIR/equalize-windows.sh u
-
-# Resize windows manually
-bind = SUPER, R, exec, notify-send "Entered resize submap"
-bind = SUPER, R, submap, resize
-submap = resize
-binde = , left, resizeactive, -10 0
-binde = , down, resizeactive, 0 10
-binde = , up, resizeactive, 0 -10
-binde = , right, resizeactive, 10 0
-binde = , H, resizeactive, -10 0
-binde = , J, resizeactive, 0 10
-binde = , K, resizeactive, 0 -10
-binde = , L, resizeactive, 10 0
-bind = , Escape, submap, reset
-bind = , Return, submap, reset
-bind = CTRL_L, C, submap, reset
-bind = SUPER, R, submap, reset
-submap = reset
-
-# Switch workspaces
-bind = SUPER, 1, workspace, 1
-bind = SUPER, 2, workspace, 2
-bind = SUPER, 3, workspace, 3
-bind = SUPER, 4, workspace, 4
-bind = SUPER, 5, workspace, 5
-bind = SUPER, 6, workspace, 6
-bind = SUPER, 7, workspace, 7
-bind = SUPER, 8, workspace, 8
-bind = SUPER, 9, workspace, 9
-bind = SUPER, 0, workspace, 10
-
-# Move active window to a workspace
-bind = SUPER SHIFT, 1, movetoworkspace, 1
-bind = SUPER SHIFT, 2, movetoworkspace, 2
-bind = SUPER SHIFT, 3, movetoworkspace, 3
-bind = SUPER SHIFT, 4, movetoworkspace, 4
-bind = SUPER SHIFT, 5, movetoworkspace, 5
-bind = SUPER SHIFT, 6, movetoworkspace, 6
-bind = SUPER SHIFT, 7, movetoworkspace, 7
-bind = SUPER SHIFT, 8, movetoworkspace, 8
-bind = SUPER SHIFT, 9, movetoworkspace, 9
-bind = SUPER SHIFT, 0, movetoworkspace, 10
-
-# Move current workspace to another monitor
-bind = SUPER, M, movecurrentworkspacetomonitor, +1
-
-# Volume controls
-bindel = , XF86AudioRaiseVolume, exec, $OSD-client --output-volume raise --max-volume 95
-bindel = , XF86AudioLowerVolume, exec, $OSD-client --output-volume lower
-bindel = , XF86AudioMute, exec, $OSD-client --output-volume mute-toggle
-bindel = , XF86AudioMicMute, exec, $OSD-client --input-volume mute-toggle
-
-# Player controls
-bindl = , XF86AudioNext, exec, $OSD-client --playerctl next
-bindl = , XF86AudioPause, exec, $OSD-client --playerctl play-pause
-bindl = , XF86AudioPlay, exec, $OSD-client --playerctl play-pause
-bindl = , XF86AudioPrev, exec, $OSD-client --playerctl previous
-
-source = ~/.config/hypr/conf/binds.conf
-
-##############################
-### WINDOWS AND WORKSPACES ###
-##############################
-
-source = ~/.config/hypr/conf/rules.conf
-
-# Force discord to stay at 2nd workspace
-windowrule = workspace 2 silent, match:class ^(discord)$
-
-# Force steam to stay at 5th workspace
-windowrule = workspace 5 silent, match:class ^(steam)$
-
-# Ignore maximize requests from apps
-windowrule = suppress_event maximize, match:class .*
diff --git a/common/home/mosder/.config/hypr/hyprland.lua b/common/home/mosder/.config/hypr/hyprland.lua
new file mode 100644
index 0000000..4e54a39
--- /dev/null
+++ b/common/home/mosder/.config/hypr/hyprland.lua
@@ -0,0 +1,274 @@
+-------------------
+---- VARIABLES ----
+-------------------
+
+-- Files, locations and used programs live in conf/vars.lua so that every
+-- required file can get to them as well.
+local vars = require("conf.vars")
+
+-----------------------
+---- ENV VARIABLES ----
+-----------------------
+
+require("conf.env")
+
+-- Gtk - nwglook
+hl.env("GTK_THEME", "catppuccin-mocha-mauve-standard+default")
+
+-- Qt - adwaita dark
+hl.env("QT_QPA_PLATFORM", "wayland")
+hl.env("QT_QPA_PLATFORMTHEME", "qt5ct")
+
+-- Cursor
+hl.env("XCURSOR_THEME", "rose-pine-cursor")
+hl.env("XCURSOR_SIZE", "24")
+hl.env("HYPRCURSOR_THEME", "rose-pine-hyprcursor")
+hl.env("HYPRCURSOR_SIZE", "24")
+
+-- Misc
+hl.env("EDITOR", vars.editor)
+hl.env("MAX_ZOOM", "3")
+
+------------------
+---- MONITORS ----
+------------------
+
+require("conf.monitors")
+
+-------------------
+---- AUTOSTART ----
+-------------------
+
+require("conf.autostart")
+
+hl.on("hyprland.start", function()
+ -- Utils
+ hl.exec_cmd("systemctl --user start hyprpolkitagent")
+ hl.exec_cmd(vars.status_bar)
+ hl.exec_cmd(vars.wallpaper_manager)
+ hl.exec_cmd(vars.idle_manager)
+ hl.exec_cmd(vars.automount)
+ hl.exec_cmd(vars.osd .. "-server")
+
+ -- Programs
+ hl.dispatch(hl.dsp.exec_cmd(vars.browser, { workspace = "1 silent" }))
+ hl.dispatch(hl.dsp.exec_cmd(vars.discord, { workspace = "2 silent" }))
+ hl.dispatch(hl.dsp.exec_cmd(vars.terminal, { workspace = "3 silent" }))
+
+ -- Use lockscreen as login
+ hl.exec_cmd(vars.lockscreen)
+end)
+
+--------------------
+---- CATEGORIES ----
+--------------------
+
+hl.config({
+ general = {
+ gaps_in = 1,
+ gaps_out = 1,
+
+ col = {
+ active_border = { colors = { "rgb(df00ff)", "rgb(ff10f0)" }, angle = 45 },
+ inactive_border = "rgba(595959aa)",
+ },
+
+ no_focus_fallback = true,
+ },
+
+ animations = {
+ enabled = true,
+ },
+
+ input = {
+ kb_layout = "pl",
+
+ kb_options = "caps:escape",
+
+ numlock_by_default = true,
+
+ repeat_rate = 40,
+ repeat_delay = 400,
+
+ follow_mouse = 2,
+ },
+
+ misc = {
+ disable_hyprland_logo = true,
+
+ focus_on_activate = false,
+
+ middle_click_paste = false,
+ },
+
+ cursor = {
+ zoom_rigid = true,
+ },
+
+ ecosystem = {
+ no_donation_nag = true,
+ },
+
+ dwindle = {
+ force_split = 2,
+ preserve_split = true,
+ },
+})
+
+hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } })
+hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } })
+hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
+hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } })
+hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } })
+
+hl.animation({ leaf = "global", enabled = true, speed = 7.5, bezier = "default" })
+hl.animation({ leaf = "border", enabled = true, speed = 4.04, bezier = "easeOutQuint" })
+hl.animation({ leaf = "windows", enabled = true, speed = 3.59, bezier = "easeOutQuint" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 3.07, bezier = "easeOutQuint", style = "popin 87%" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.11, bezier = "linear", style = "popin 87%" })
+hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.29, bezier = "almostLinear" })
+hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.09, bezier = "almostLinear" })
+hl.animation({ leaf = "fade", enabled = true, speed = 2.27, bezier = "quick" })
+hl.animation({ leaf = "layers", enabled = true, speed = 2.85, bezier = "easeOutQuint" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 3, bezier = "easeOutQuint", style = "fade" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.12, bezier = "linear", style = "fade" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.34, bezier = "almostLinear" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.04, bezier = "almostLinear" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 1.45, bezier = "almostLinear", style = "fade" })
+hl.animation({ leaf = "workspacesIn", enabled = true, speed = 0.9, bezier = "almostLinear", style = "fade" })
+hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.45, bezier = "almostLinear", style = "fade" })
+hl.animation({ leaf = "zoomFactor", enabled = true, speed = 5.25, bezier = "quick" })
+
+require("conf.categories")
+
+---------------
+---- BINDS ----
+---------------
+
+-- General
+hl.bind("SUPER + Q", hl.dsp.window.close())
+hl.bind("SUPER + V", hl.dsp.layout("togglesplit"))
+hl.bind("SUPER + SHIFT + F", hl.dsp.window.float({ action = "toggle" }))
+hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true })
+hl.bind("SUPER + N", hl.dsp.exec_cmd("dunstctl close-all"))
+hl.bind("SUPER + slash", hl.dsp.exec_cmd(vars.lockscreen))
+hl.bind("ALT + space", hl.dsp.exec_cmd("pkill " .. vars.menu .. " || " .. vars.menu))
+
+-- Launch programs
+hl.bind("SUPER + T", hl.dsp.exec_cmd(vars.terminal))
+hl.bind("SUPER + F", hl.dsp.exec_cmd(vars.file_manager))
+hl.bind("SUPER + C", hl.dsp.exec_cmd(vars.terminal .. " start -- " .. vars.editor))
+hl.bind("SUPER + B", hl.dsp.exec_cmd(vars.browser))
+hl.bind("SUPER + D", hl.dsp.exec_cmd(vars.discord))
+hl.bind("SUPER + S", hl.dsp.exec_cmd(vars.steam))
+hl.bind("SUPER + SHIFT + P", hl.dsp.exec_cmd(vars.color_picker .. " -a"))
+hl.bind("SUPER + SHIFT + M", hl.dsp.exec_cmd(vars.scripts_dir .. "/zoom.sh"))
+
+-- Take screenshots
+hl.bind("SUPER + SHIFT + S", hl.dsp.exec_cmd(vars.screenshot .. " -m region --clipboard-only"))
+
+-- Passthru keybinds to VMs
+hl.bind("SUPER + P", function()
+ hl.dispatch(hl.dsp.exec_cmd('notify-send "Entered passthru submap"'))
+ hl.dispatch(hl.dsp.submap("passthru"))
+end)
+hl.define_submap("passthru", function()
+ hl.bind("SUPER + P", hl.dsp.submap("reset"))
+end)
+
+-- Move focus
+hl.bind("ALT + Tab", hl.dsp.window.cycle_next())
+hl.bind("SUPER + left", hl.dsp.focus({ direction = "l" }))
+hl.bind("SUPER + down", hl.dsp.focus({ direction = "d" }))
+hl.bind("SUPER + up", hl.dsp.focus({ direction = "u" }))
+hl.bind("SUPER + right", hl.dsp.focus({ direction = "r" }))
+hl.bind("SUPER + H", hl.dsp.focus({ direction = "l" }))
+hl.bind("SUPER + J", hl.dsp.focus({ direction = "d" }))
+hl.bind("SUPER + K", hl.dsp.focus({ direction = "u" }))
+hl.bind("SUPER + L", hl.dsp.focus({ direction = "r" }))
+
+-- Swap windows
+hl.bind("SUPER + SHIFT + left", hl.dsp.window.swap({ direction = "l" }))
+hl.bind("SUPER + SHIFT + down", hl.dsp.window.swap({ direction = "d" }))
+hl.bind("SUPER + SHIFT + up", hl.dsp.window.swap({ direction = "u" }))
+hl.bind("SUPER + SHIFT + right", hl.dsp.window.swap({ direction = "r" }))
+hl.bind("SUPER + SHIFT + H", hl.dsp.window.swap({ direction = "l" }))
+hl.bind("SUPER + SHIFT + J", hl.dsp.window.swap({ direction = "d" }))
+hl.bind("SUPER + SHIFT + K", hl.dsp.window.swap({ direction = "u" }))
+hl.bind("SUPER + SHIFT + L", hl.dsp.window.swap({ direction = "r" }))
+
+-- Resize windows manually
+hl.bind("SUPER + R", function()
+ hl.dispatch(hl.dsp.exec_cmd('notify-send "Entered resize submap"'))
+ hl.dispatch(hl.dsp.submap("resize"))
+end)
+hl.define_submap("resize", function()
+ hl.bind("left", hl.dsp.window.resize({ x = -10, y = 0, relative = true }), { repeating = true })
+ hl.bind("down", hl.dsp.window.resize({ x = 0, y = 10, relative = true }), { repeating = true })
+ hl.bind("up", hl.dsp.window.resize({ x = 0, y = -10, relative = true }), { repeating = true })
+ hl.bind("right", hl.dsp.window.resize({ x = 10, y = 0, relative = true }), { repeating = true })
+ hl.bind("H", hl.dsp.window.resize({ x = -10, y = 0, relative = true }), { repeating = true })
+ hl.bind("J", hl.dsp.window.resize({ x = 0, y = 10, relative = true }), { repeating = true })
+ hl.bind("K", hl.dsp.window.resize({ x = 0, y = -10, relative = true }), { repeating = true })
+ hl.bind("L", hl.dsp.window.resize({ x = 10, y = 0, relative = true }), { repeating = true })
+ hl.bind("Escape", hl.dsp.submap("reset"))
+ hl.bind("Return", hl.dsp.submap("reset"))
+ hl.bind("CTRL + C", hl.dsp.submap("reset"))
+ hl.bind("SUPER + R", hl.dsp.submap("reset"))
+end)
+
+-- Switch workspaces
+-- Move active window to a workspace
+for i = 1, 10 do
+ local key = i % 10 -- 10 maps to key 0
+ hl.bind("SUPER + " .. key, hl.dsp.focus({ workspace = i }))
+ hl.bind("SUPER + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
+end
+
+-- Move current workspace to another monitor
+hl.bind("SUPER + M", hl.dsp.workspace.move({ monitor = "+1" }))
+
+-- Volume controls
+hl.bind(
+ "XF86AudioRaiseVolume",
+ hl.dsp.exec_cmd(vars.osd .. "-client --output-volume raise --max-volume 95"),
+ { locked = true, repeating = true }
+)
+hl.bind(
+ "XF86AudioLowerVolume",
+ hl.dsp.exec_cmd(vars.osd .. "-client --output-volume lower"),
+ { locked = true, repeating = true }
+)
+hl.bind(
+ "XF86AudioMute",
+ hl.dsp.exec_cmd(vars.osd .. "-client --output-volume mute-toggle"),
+ { locked = true, repeating = true }
+)
+hl.bind(
+ "XF86AudioMicMute",
+ hl.dsp.exec_cmd(vars.osd .. "-client --input-volume mute-toggle"),
+ { locked = true, repeating = true }
+)
+
+-- Player controls
+hl.bind("XF86AudioNext", hl.dsp.exec_cmd(vars.osd .. "-client --playerctl next"), { locked = true })
+hl.bind("XF86AudioPause", hl.dsp.exec_cmd(vars.osd .. "-client --playerctl play-pause"), { locked = true })
+hl.bind("XF86AudioPlay", hl.dsp.exec_cmd(vars.osd .. "-client --playerctl play-pause"), { locked = true })
+hl.bind("XF86AudioPrev", hl.dsp.exec_cmd(vars.osd .. "-client --playerctl previous"), { locked = true })
+
+require("conf.binds")
+
+--------------------------------
+---- WINDOWS AND WORKSPACES ----
+--------------------------------
+
+require("conf.rules")
+
+-- Force discord to stay at 2nd workspace
+hl.window_rule({ match = { class = "^(discord)$" }, workspace = "2 silent" })
+
+-- Force steam to stay at 5th workspace
+hl.window_rule({ match = { class = "^(steam)$" }, workspace = "5 silent" })
+
+-- Ignore maximize requests from apps
+hl.window_rule({ match = { class = ".*" }, suppress_event = "maximize" })
diff --git a/common/home/mosder/.config/hypr/scripts/equalize-windows.sh b/common/home/mosder/.config/hypr/scripts/equalize-windows.sh
deleted file mode 100755
index cd43729..0000000
--- a/common/home/mosder/.config/hypr/scripts/equalize-windows.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/bash
-
-ITERS=3
-
-# get address of the window to return to
-address=$(hyprctl activewindow | awk -F" " 'NR==1 {print $2}')
-
-# define move directions
-dir1=$1
-dir2=r
-if [[ $dir1 == u ]]; then
- dir2=d
-fi
-
-# move max to the left/top
-prev_window=""
-window=$(hyprctl activewindow | awk -F" " 'NR==1 {print $2}')
-while [[ $window != $prev_window ]]; do
- hyprctl dispatch movefocus $dir1
- prev_window=$window
- window=$(hyprctl activewindow | awk -F" " 'NR==1 {print $2}')
-done
-
-# get start location
-at=$(hyprctl activewindow | awk -F" " 'NR==4 {print $2}')
-if [[ $dir1 == l ]]; then
- start_location=$(echo $at | awk -F"," '{print $1}')
-else
- start_location=$(echo $at | awk -F"," '{print $2}')
-fi
-
-# count windows in the line
-window_count=0
-prev_window=""
-while [[ $window != $prev_window ]]; do
- hyprctl dispatch movefocus $dir2
- prev_window=$window
- window=$(hyprctl activewindow | awk -F" " 'NR==1 {print $2}')
- window_count=$(($window_count+1))
-done
-
-# get end location
-at=$(hyprctl activewindow | awk -F" " 'NR==4 {print $2}')
-size=$(hyprctl activewindow | awk -F" " 'NR==5 {print $2}')
-if [[ $dir1 == l ]]; then
- at=$(echo $at | awk -F"," '{print $1}')
- size=$(echo $size | awk -F"," '{print $1}')
-else
- at=$(echo $at | awk -F"," '{print $2}')
- size=$(echo $size | awk -F"," '{print $2}')
-fi
-end_location=$(($at+$size))
-
-# calculate full size and size per window
-full_size=$(($end_location - $start_location))
-size_per_window=$(($full_size / $window_count))
-
-# set sizes
-i=0
-while [[ $i -lt $ITERS ]]; do
- i=$(($i+1))
- window=0
- while [[ $window -lt $window_count ]]; do
- window=$(($window+1))
- size=$(hyprctl activewindow | awk -F" " 'NR==5 {print $2}')
- if [[ $dir1 == l ]]; then
- #other_side=$(echo $size | awk -F"," '{print $2}')
- #hyprctl dispatch resizeactive exact $size_per_window $other_side
- size=$(echo $size | awk -F"," '{print $1}')
- diff=$(($size_per_window - $size))
- hyprctl dispatch resizeactive $diff 0
- else
- #other_side=$(echo $size | awk -F"," '{print $1}')
- #hyprctl dispatch resizeactive exact $other_side $size_per_window
- size=$(echo $size | awk -F"," '{print $2}')
- diff=$(($size_per_window - $size))
- hyprctl dispatch resizeactive 0 $diff
- fi
- hyprctl dispatch movefocus $dir1
- done
- temp=$dir1
- dir1=$dir2
- dir2=$temp
-done
-
-# return to starting window
-hyprctl dispatch focuswindow address:0x$address
diff --git a/common/home/mosder/.config/hypr/scripts/zoom.sh b/common/home/mosder/.config/hypr/scripts/zoom.sh
index 433f899..1bb07f6 100755
--- a/common/home/mosder/.config/hypr/scripts/zoom.sh
+++ b/common/home/mosder/.config/hypr/scripts/zoom.sh
@@ -1,9 +1,9 @@
#!/bin/bash
-ZOOM=$(hyprctl getoption cursor:zoom_factor | grep float | awk -F" " '{print $2}')
+ZOOM=$(hyprctl repl 'hl.get_config("cursor.zoom_factor")')
ZOOM=$(echo "scale=0; ($ZOOM+1)/1" | bc)
if [[ $ZOOM -gt $MAX_ZOOM ]]; then
ZOOM=1
fi
-hyprctl -q keyword cursor:zoom_factor $ZOOM
+hyprctl -q eval "hl.config({ cursor = { zoom_factor = $ZOOM } })"