Commit 75d629a

Ansari <ping@ansari.wtf>
2026-05-27 09:09:59
hyprlang->lua:migration
1 parent 8d8bff9
.config/hypr/modules/autostarts.conf → .config/hypr/hyprlang-deprecated/modules/autostarts.conf
File renamed without changes
.config/hypr/hyprlang-deprecated/modules/colors.conf
@@ -0,0 +1,102 @@
+$image = /home/robin/.assets/wallpapers/ferrari.jpg
+
+$background = rgba(19120aff)
+
+$error = rgba(ffb4abff)
+
+$error_container = rgba(93000aff)
+
+$inverse_on_surface = rgba(382f25ff)
+
+$inverse_primary = rgba(865300ff)
+
+$inverse_surface = rgba(f0e0d1ff)
+
+$on_background = rgba(f0e0d1ff)
+
+$on_error = rgba(690005ff)
+
+$on_error_container = rgba(ffdad6ff)
+
+$on_primary = rgba(472a00ff)
+
+$on_primary_container = rgba(351e00ff)
+
+$on_primary_fixed = rgba(2b1700ff)
+
+$on_primary_fixed_variant = rgba(663e00ff)
+
+$on_secondary = rgba(472a00ff)
+
+$on_secondary_container = rgba(ffdab3ff)
+
+$on_secondary_fixed = rgba(2b1700ff)
+
+$on_secondary_fixed_variant = rgba(633f0fff)
+
+$on_surface = rgba(f0e0d1ff)
+
+$on_surface_variant = rgba(d9c3adff)
+
+$on_tertiary = rgba(00344bff)
+
+$on_tertiary_container = rgba(002638ff)
+
+$on_tertiary_fixed = rgba(001e2dff)
+
+$on_tertiary_fixed_variant = rgba(004c6bff)
+
+$outline = rgba(a18d7aff)
+
+$outline_variant = rgba(534434ff)
+
+$primary = rgba(ffbd6eff)
+
+$primary_container = rgba(f49a02ff)
+
+$primary_fixed = rgba(ffddb9ff)
+
+$primary_fixed_dim = rgba(ffb963ff)
+
+$scrim = rgba(000000ff)
+
+$secondary = rgba(f1bd82ff)
+
+$secondary_container = rgba(633f0fff)
+
+$secondary_fixed = rgba(ffddb9ff)
+
+$secondary_fixed_dim = rgba(f1bd82ff)
+
+$shadow = rgba(000000ff)
+
+$source_color = rgba(f49a02ff)
+
+$surface = rgba(19120aff)
+
+$surface_bright = rgba(41372eff)
+
+$surface_container = rgba(261e15ff)
+
+$surface_container_high = rgba(31281fff)
+
+$surface_container_highest = rgba(3d3329ff)
+
+$surface_container_low = rgba(221a11ff)
+
+$surface_container_lowest = rgba(140d06ff)
+
+$surface_dim = rgba(19120aff)
+
+$surface_tint = rgba(ffb963ff)
+
+$surface_variant = rgba(534434ff)
+
+$tertiary = rgba(8ad2ffff)
+
+$tertiary_container = rgba(00baffff)
+
+$tertiary_fixed = rgba(c6e7ffff)
+
+$tertiary_fixed_dim = rgba(81cfffff)
+
.config/hypr/modules/decorations.conf → .config/hypr/hyprlang-deprecated/modules/decorations.conf
File renamed without changes
.config/hypr/modules/keybinds.conf → .config/hypr/hyprlang-deprecated/modules/keybinds.conf
@@ -4,8 +4,6 @@ bind = $mainMod SHIFT, W, killactive
 bind = $mainMod, M, exit,
 bind = $mainMod, f, togglefloating
 bind = $mainMod CTRL, f , fullscreen
-bind = $mainMod, P, pseudo, # dwindle
-bind = $mainMod, J, togglesplit # dwindle
 bind = ALT, TAB, cyclenext,visible
 bind = ALT, TAB, bringactivetotop
 bind = $mainMod CTRL,     w,swapwindow, u
@@ -20,11 +18,12 @@ bind = CTRLALT,     T,      exec, $terminal
 bind = $mainMod,    E,      exec, $fileManager
 bind = $mainMod,    B,      exec, $browser
 bind = $mainMod,    L,      exec, $swaylock
-bind = $mainMod,    R,		exec, $swaybartoggle
+bind = $mainMod,    R,		  exec, $swaybartoggle
 bind = $mainMod,    V,      exec, $cliphistMenu
 bind = $mainMod,    period, exec, $emojiMenu
 bind = $mainMod     SHIFT,S,exec, $screenshotMenu
 bind = $mainMod,    S,      exec, $cycleSpecial
+bind = $mainMod,    U,      exec, $handyToggle
 
 # Switch workspaces with mainMod + [0-9]
 bind = $mainMod, 1, workspace, 1
.config/hypr/modules/vars.conf → .config/hypr/hyprlang-deprecated/modules/vars.conf
@@ -9,6 +9,7 @@ $screenshotMenu = $HOME/.wraith/scripts/screenshot.sh
 $cycleSpecial = $HOME/.wraith/scripts/cycle-special-workspace.sh
 $swaybartoggle = $HOME/.wraith/scripts/waybar-swaync.sh
 $swaylock = swaylock --config ~/.config/sway/swaylock.conf
+$handyToggle = handy --toggle-transcription
 
 env = LIBVA_DRIVER_NAME,nvidia
 env = __GLX_VENDOR_LIBRARY_NAME,nvidia
.config/hypr/modules/windows.conf → .config/hypr/hyprlang-deprecated/modules/windows.conf
File renamed without changes
.config/hypr/hyprlang-deprecated/hyprland.conf
@@ -0,0 +1,16 @@
+source = ./modules/vars.conf
+source = ./modules/windows.conf
+source = ./modules/autostarts.conf
+source = ./modules/keybinds.conf
+source = ./modules/colors.conf
+source = ./modules/decorations.conf
+
+dwindle {
+    preserve_split = true # You probably want this
+}
+
+misc {
+		allow_session_lock_restore = true
+}
+
+permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
.config/hypr/modules/autostart.lua
@@ -0,0 +1,15 @@
+hl.on("hyprland.start", function()
+	hl.exec_cmd("hyprctl setcursor ArcStarry 25")
+	hl.exec_cmd("wl-paste --type text --watch cliphist store")
+	hl.exec_cmd("wl-paste --type image --watch cliphist store")
+	hl.exec_cmd("/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1")
+	hl.exec_cmd("waybar")
+	hl.exec_cmd("swaync")
+	hl.exec_cmd("hypridle")
+	hl.exec_cmd("awww-daemon")
+	hl.dsp.focus({ workspace = "Code" })
+
+	-- autostart applications
+	hl.exec_cmd("$(awk -F= '/^Exec/ {print $2; exit}' ~/.local/share/applications/Beeper.desktop)")
+	hl.exec_cmd("thunderbird")
+end)
.config/hypr/modules/decoration.lua
@@ -0,0 +1,61 @@
+hl.config({
+	general = {
+		gaps_in = 3,
+		gaps_out = 10,
+		border_size = 1,
+		col = {
+			active_border = primary,
+			inactive_border = on_primary,
+		},
+		resize_on_border = true,
+		allow_tearing = false,
+		layout = "dwindle",
+	},
+
+	decoration = {
+		rounding = 5,
+		rounding_power = 2,
+		active_opacity = 1.0,
+		inactive_opacity = 1.0,
+
+		shadow = {
+			enabled = true,
+			range = 4,
+			render_power = 3,
+			color = surface_dim,
+		},
+
+		blur = {
+			enabled = true,
+			size = 3,
+			passes = 1,
+			vibrancy = 0.1696,
+		},
+	},
+
+	animations = { enabled = true },
+})
+
+-- ── Animations ────────────────────────────────────────────────────────
+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.0 } } })
+hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } })
+hl.curve("workspaceEaseInOutCubic", { type = "bezier", points = { { 0.65, 0 }, { 0.35, 1 } } })
+hl.curve("bouncyWorkspaceBeizer", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+
+hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
+hl.animation({ leaf = "windows", enabled = true, speed = 4.79, bezier = "easeOutQuint" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, bezier = "easeOutQuint", style = "popin 87%" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
+hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
+hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
+hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
+hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 7, bezier = "bouncyWorkspaceBeizer", style = "slide" })
.config/hypr/modules/env.lua
@@ -0,0 +1,7 @@
+hl.env("LIBVA_DRIVER_NAME", "nvidia")
+hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
+
+hl.env("PATH", os.getenv("PATH") .. ":" .. os.getenv("HOME") .. "/.wraith/bin")
+hl.env("SSH_AUTH_SOCK", os.getenv("HOME") .. "/.ssh/agent.sock")
+hl.env("TERMINAL", "ghostty")
+hl.env("EDITOR", "nvim")
.config/hypr/modules/input.lua
@@ -0,0 +1,17 @@
+hl.config({
+	input = {
+		kb_layout = "us",
+		kb_variant = "",
+		kb_model = "",
+		kb_options = "",
+		kb_rules = "",
+
+		follow_mouse = 1,
+
+		sensitivity = 0,
+
+		touchpad = {
+			natural_scroll = false,
+		},
+	},
+})
.config/hypr/modules/keybinds.lua
@@ -0,0 +1,104 @@
+local vars = require("modules.vars")
+local mod = "SUPER"
+
+-- Window management ─────────────────────────────────────────────────
+hl.bind(mod .. " + SHIFT + W", hl.dsp.window.close())
+hl.bind(mod .. " + M", hl.dsp.exit())
+hl.bind(mod .. " + F", hl.dsp.window.float({ action = "toggle" }))
+hl.bind(mod .. " + CTRL + F", hl.dsp.window.fullscreen())
+
+hl.bind("ALT + TAB", function()
+	hl.dispatch(hl.dsp.window.cycle_next("visible"))
+	hl.dispatch(hl.dsp.window.bring_to_top())
+end)
+
+-- Swap windows (CTRL + WASD)
+hl.bind(mod .. " + CTRL + W", hl.dsp.window.swap({ direction = "u" }))
+hl.bind(mod .. " + CTRL + A", hl.dsp.window.swap({ direction = "l" }))
+hl.bind(mod .. " + CTRL + S", hl.dsp.window.swap({ direction = "d" }))
+hl.bind(mod .. " + CTRL + D", hl.dsp.window.swap({ direction = "r" }))
+
+-- Scripts and apps ──────────────────────────────────────────────────
+hl.bind(mod .. " + SPACE", hl.dsp.exec_cmd(vars.menu))
+hl.bind(mod .. " + T", hl.dsp.exec_cmd(vars.terminal))
+hl.bind(mod .. " + E", hl.dsp.exec_cmd(vars.fileManager))
+hl.bind(mod .. " + B", hl.dsp.exec_cmd(vars.browser))
+hl.bind(mod .. " + L", hl.dsp.exec_cmd(vars.swaylock))
+hl.bind(mod .. " + R", hl.dsp.exec_cmd(vars.swaybarToggle))
+hl.bind(mod .. " + V", hl.dsp.exec_cmd(vars.cliphistMenu))
+hl.bind(mod .. " + period", hl.dsp.exec_cmd(vars.emojiMenu))
+hl.bind(mod .. " + SHIFT + S", hl.dsp.exec_cmd(vars.screenshotMenu))
+hl.bind(mod .. " + S", hl.dsp.exec_cmd(vars.cycleSpecial))
+hl.bind(mod .. " + U", hl.dsp.exec_cmd(vars.handyToggle))
+
+-- Workspaces: switch ────────────────────────────────────────────────
+for i = 1, 9 do
+	hl.bind(mod .. " + " .. i, hl.dsp.focus({ workspace = i }))
+	hl.bind(mod .. " + SHIFT + " .. i, hl.dsp.window.move({ workspace = i, follow = false }))
+end
+
+-- Mouse: move / resize ──────────────────────────────────────────────
+hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
+hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
+
+-- ── Monitor → workspace range map ─────────────────────────────────────
+local MONITOR_WS = {
+	["HDMI-A-2"] = { min = 1, max = 3 },
+	["DP-1"] = { min = 4, max = 6 },
+	["HDMI-A-1"] = { min = 7, max = 9 },
+}
+
+-- Returns { min, max } for the focused monitor
+local function current_range()
+	local mon = hl.get_active_monitor()
+	local range = mon and MONITOR_WS[mon.name]
+	if not range then
+		-- fallback: unknown monitor, allow full 1-9 range
+		return { min = 1, max = 9 }
+	end
+	return range
+end
+
+-- ── Navigation helpers ────────────────────────────────────────────────
+
+-- Go to next ws, stop at monitor's max
+local function ws_next()
+	local ws = hl.get_active_workspace()
+	local range = current_range()
+	if ws and ws.id < range.max then
+		hl.dispatch(hl.dsp.focus({ workspace = ws.id + 1 }))
+	end
+end
+
+-- Go to prev ws, stop at monitor's min
+local function ws_prev()
+	local ws = hl.get_active_workspace()
+	local range = current_range()
+	if ws and ws.id > range.min then
+		hl.dispatch(hl.dsp.focus({ workspace = ws.id - 1 }))
+	end
+end
+
+-- Scroll wheel on desktop (SUPER + scroll)
+hl.bind(mod .. " + mouse_up", function()
+	ws_next()
+end)
+hl.bind(mod .. " + mouse_down", function()
+	ws_prev()
+end)
+
+-- Side mouse buttons (no modifier needed)
+hl.bind("mouse:275", function()
+	ws_prev()
+end) -- back button  → prev
+hl.bind("mouse:276", function()
+	ws_next()
+end) -- forward button → next
+
+-- Keybard (SUPER + TAB / SUPER + SHIFT + TAB )
+hl.bind(mod .. " + TAB", function()
+	ws_next()
+end)
+hl.bind(mod .. " + SHIFT + TAB", function()
+	ws_prev()
+end)
.config/hypr/modules/layout.lua
@@ -0,0 +1,11 @@
+hl.config({
+	dwindle = {
+		preserve_split = true,
+	},
+
+	binds = {
+		workspace_back_and_forth = false,
+		allow_workspace_cycles = true,
+		pass_mouse_when_bound = false,
+	},
+})
.config/hypr/modules/misc.lua
@@ -0,0 +1,9 @@
+hl.config({
+	misc = {
+		disable_hyprland_logo = true,
+		disable_splash_rendering = true,
+		mouse_move_enables_dpms = true,
+		allow_session_lock_restore = true,
+		initial_workspace_tracking = 1,
+	},
+})
.config/hypr/modules/monitors.lua
@@ -0,0 +1,22 @@
+hl.monitor({
+	output = "HDMI-A-2",
+	mode = "1920x1080@100",
+	position = "-1080x0",
+	scale = 1,
+	transform = 1,
+})
+
+hl.monitor({
+	output = "DP-1",
+	mode = "1920x1080@144",
+	position = "0x420",
+	scale = 1,
+})
+
+hl.monitor({
+	output = "HDMI-A-1",
+	mode = "1920x1080@100",
+	position = "1920x0",
+	scale = 1,
+	transform = 3,
+})
.config/hypr/modules/rules.lua
@@ -0,0 +1,77 @@
+-- ── Workspace ─────────────────────────────────────
+hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-2" })
+hl.workspace_rule({ workspace = "2", monitor = "HDMI-A-2" })
+hl.workspace_rule({ workspace = "3", monitor = "HDMI-A-2" })
+
+hl.workspace_rule({ workspace = "4", monitor = "DP-1", default_name = "AI", persistent = true })
+hl.workspace_rule({ workspace = "5", monitor = "DP-1", default_name = "Code", persistent = true })
+hl.workspace_rule({ workspace = "6", monitor = "DP-1", default_name = "Research", persistent = true })
+
+hl.workspace_rule({ workspace = "7", monitor = "HDMI-A-1" })
+hl.workspace_rule({ workspace = "8", monitor = "HDMI-A-1" })
+hl.workspace_rule({ workspace = "9", monitor = "HDMI-A-1", default_name = "Communication", persistent = true })
+
+-- ── Window ─────────────────────────────────────
+
+hl.window_rule({
+	match = { tag = "floating-window" },
+	float = true,
+	center = true,
+	size = "875 600",
+})
+
+local floating_apps = {
+	"imv",
+	"mpv",
+	"nwg-look",
+	"localsend",
+	"zenity",
+	"xdg-desktop-portal-gtk",
+	"Termius",
+	"rustdesk",
+	"com.mitchellh.ghostty",
+	"org.telegram.desktop",
+	"org.pulseaudio.pavucontrol",
+	"org.wraith.*",
+	"org.gnome.*",
+}
+
+for _, cls in ipairs(floating_apps) do
+	hl.window_rule({ match = { initial_class = cls }, tag = "+floating-window" })
+end
+
+hl.window_rule({
+	match = {
+		title =
+		"^(Open.*Files?|Open [Ff]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to (?:open|save).*|[Cc]hoose.*)",
+	},
+	tag = "+floating-window",
+})
+
+hl.window_rule({
+	match = {
+		title =
+		"^(Settings|Preferences|Options|About|Help|License|Shortcuts|Keybindings|Update|Updates|Checking for updates|Extensions|Add-ons|Choose a Font|About .*)$",
+	},
+	tag = "+floating-window",
+})
+
+hl.window_rule({
+	match = { initial_class = "code|code-oss|Code-Insiders" },
+	workspace = "name:Code",
+})
+
+hl.window_rule({
+	match = { initial_class = "chrome-gemini\\.google\\.com.*|chrome-claude\\.ai.*|chrome-chatgpt\\.com.*" },
+	workspace = "name:AI",
+})
+
+hl.window_rule({
+	match = { initial_class = "Beeper|org.mozilla.Thunderbird" },
+	workspace = "name:Communication silent",
+})
+
+hl.window_rule({
+	match = { initial_class = "chrome-music\\.youtube\\..*" },
+	workspace = "special:music",
+})
.config/hypr/modules/vars.lua
@@ -0,0 +1,16 @@
+local home = os.getenv("HOME")
+local scripts = home .. "/.wraith/scripts"
+
+return {
+	terminal = "uwsm-app -- xdg-terminal-exec",
+	fileManager = "smart-launch -n --tui 'file-manager' 'yazi'",
+	browser = "librewolf",
+	menu = "rofi -show drun",
+	cliphistMenu = "cliphist list | rofi -dmenu -p '' -no-show-icons| cliphist decode | wl-copy",
+	emojiMenu = "rofimoji -a type copy type-numerical",
+	screenshotMenu = scripts .. "/screenshot.sh",
+	cycleSpecial = scripts .. "/cycle-special-workspace.sh",
+	swaybarToggle = scripts .. "/waybar-swaync.sh",
+	swaylock = "swaylock --config " .. home .. "/.config/sway/swaylock.conf",
+	handyToggle = "handy --toggle-transcription",
+}
.config/hypr/hypridle.conf
@@ -1,7 +1,7 @@
 general {
     lock_cmd = pidof swaylock || swaylock --config ~/.config/sway/swaylock.conf --fade=0.3
     before_sleep_cmd = loginctl lock-session               # lock before suspend.
-    after_sleep_cmd = hyprctl dispatch dpms on             # to avoid having to press a key twice to turn on the display.
+    after_sleep_cmd = hyprctl dispatch 'hl.dsp.dpms(true)' # to avoid having to press a key twice to turn on the display.
     inhibit_sleep = 3                                      # wait until screen is locked
 }
 
@@ -12,11 +12,11 @@ listener {
 
 listener {
     timeout = 910                                           
-    on-timeout = hyprctl dispatch dpms off                   
-    on-resume = hyprctl dispatch dpms on && brightnessctl -r 
+    on-timeout = hyprctl dispatch 'hl.dsp.dpms(false)'                   
+    on-resume = hyprctl dispatch 'hl.dsp.dpms(true)' && brightnessctl -r 
 }
 
 listener {
     timeout = 1200
     on-timeout = systemctl suspend
-}
\ No newline at end of file
+}
.config/hypr/hyprland.conf
@@ -1,42 +0,0 @@
-source = ./modules/vars.conf
-source = ./modules/windows.conf
-source = ./modules/autostarts.conf
-source = ./modules/keybinds.conf
-source = ./modules/colors.conf
-source = ./modules/decorations.conf
-
-dwindle {
-    pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
-    preserve_split = true # You probably want this
-}
-
-master {
-    new_status = master
-}
-
-plugin {
-    hyprexpo {
-        columns = 2
-        gap_size = 5
-        bg_col = rgb(111111)
-        workspace_method =  first 1
-        skip_empty = true
-		}
-}
-
-misc {
-		allow_session_lock_restore = true
-}
-
-# See https://wiki.hyprland.org/Configuring/Permissions/
-# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
-# for security reasons
-
-# ecosystem {
-#   enforce_permissions = 1
-# }
-
-permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
-# permission = /usr/(bin|local/bin)/grim, screencopy, allow
-# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
-# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
.config/hypr/hyprland.lua
@@ -0,0 +1,11 @@
+require("modules.vars")
+require("modules.env")
+require("modules.monitors")
+require("modules.input")
+require("modules.autostart")
+require("modules.colors")
+require("modules.decoration")
+require("modules.layout")
+require("modules.rules")
+require("modules.misc")
+require("modules.keybinds")
.config/matugen/templates/hyprland-colors.conf
@@ -1,4 +0,0 @@
-$image = {{image}}
-<* for name, value in colors *>
-${{name}} = rgba({{value.default.hex_stripped}}ff)
-<* endfor *>
.config/matugen/templates/hyprland-colors.lua
@@ -0,0 +1,4 @@
+image = "{{image}}"
+<* for name, value in colors *>
+{{name}} = "rgba({{value.default.hex_stripped}}ff)"
+<* endfor *>
.config/matugen/config.toml
@@ -1,8 +1,8 @@
 [config]
 
 [templates.hyprland]
-input_path = '~/.config/matugen/templates/hyprland-colors.conf'
-output_path = '~/.config/hypr/modules/colors.conf'
+input_path = '~/.config/matugen/templates/hyprland-colors.lua'
+output_path = '~/.config/hypr/modules/colors.lua'
 post_hook = 'hyprctl reload'
 
 [templates.waybar]
.config/nvim/lua/plugins/lsp-config.lua
@@ -26,7 +26,12 @@ return {
 		opts = {
 			servers = {
 				lua_ls = {
-					settings = { Lua = { diagnostics = { globals = { "vim" } } } },
+					settings = {
+						Lua = {
+							diagnostics = { globals = { "vim" } },
+							workspace = { library = { [vim.fn.expand("/usr/share/hypr/stubs/hl.meta.lua")] = true } }
+						}
+					},
 				},
 				gopls = {},
 				ts_ls = {},
.wraith/bin/smart-launch
@@ -117,8 +117,8 @@ fi
 
 if [[ -n $WINDOW_ADDRESS && $WINDOW_ADDRESS != "null" ]]; then
     echo "Focusing window: $WINDOW_PATTERN ($WINDOW_ADDRESS)"
-    hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
+    hyprctl dispatch "hl.dsp.focus({ window = 'address:$WINDOW_ADDRESS' })"
 else
     echo "Launching new instance: $LAUNCH_CMD"
     eval exec setsid $LAUNCH_CMD &>/dev/null &
-fi
\ No newline at end of file
+fi
.wraith/scripts/cycle-special-workspace.sh
@@ -37,9 +37,9 @@ next_index=$(( current_index + 1 ))
 next="${specials[$next_index]}"
 
 if [[ -z "$next" ]]; then
-  hyprctl dispatch togglespecialworkspace "${current#*:}"
+  hyprctl dispatch "hl.dsp.workspace.toggle_special('${current#*:}')"
 else
-  hyprctl dispatch workspace "$next"
+	hyprctl dispatch "hl.dsp.focus({workspace = '$next' })"
 fi
 
 print -r -- "$next" > "$STATE_FILE"
.gitignore
@@ -1,7 +1,7 @@
 .config/tmux/plugins/
 *.cache
 /.config/zsh/plugins/zsh-autosuggestions
-/.config/hypr/modules/colors.conf
+/.config/hypr/modules/colors.lua
 /.config/rofi/colors.rasi
 /.config/swaync/colors.css
 /.config/waybar/colors.css