Merge pull request 'master-lua-convertion' (#2) from master-lua-convertion into master

Reviewed-on: https://git.aramjonghu.nl/AramJonghu/hypr/pulls/2
This commit is contained in:
Aram Markarov
2026-05-11 22:56:43 +02:00
17 changed files with 339 additions and 324 deletions
+10
View File
@@ -0,0 +1,10 @@
{
"workspace": {
"library": [
"/usr/share/hypr/stubs"
]
},
"diagnostics": {
"globals": ["hl"]
}
}
-7
View File
@@ -1,7 +0,0 @@
source = ./modules/env.conf
source = ./modules/macchiato.conf
source = ./modules/settings.conf
source = ./modules/binds.conf
source = ./modules/executes.conf
source = ./modules/windowrules.conf
source = ./modules/monitors.conf
+6
View File
@@ -0,0 +1,6 @@
require("modules.binds")
require("modules.env")
require("modules.executes")
require("modules.monitors")
require("modules.settings")
require("modules.windowrules")
-68
View File
@@ -1,68 +0,0 @@
bindm = SUPER,mouse:272,movewindow
bindm = SUPER,mouse:273,resizewindow
bind = SUPER,RETURN,exec, foot
bind = SUPER,Q,killactive
bind = SUPER,M,exit
bind = SUPER,E,exec, dolphin
bind = SUPER,S,togglefloating
bind = SUPER,P,pseudo
bind = SUPER,B,exec, firefox
bind = SUPER,H,movefocus,l
bind = SUPER,L,movefocus,r
bind = SUPER,K,movefocus,u
bind = SUPER,J,movefocus,d
binde = SUPER SHIFT,L,resizeactive, 50 0
binde = SUPER SHIFT,H,resizeactive, -50 0
binde = SUPER SHIFT,K,resizeactive, 0 -50
binde = SUPER SHIFT,J,resizeactive, 0 50
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
bind = ALT,1,movetoworkspace,1
bind = ALT,2,movetoworkspace,2
bind = ALT,3,movetoworkspace,3
bind = ALT,4,movetoworkspace,4
bind = ALT,5,movetoworkspace,5
bind = ALT,6,movetoworkspace,6
bind = ALT,7,movetoworkspace,7
bind = ALT,8,movetoworkspace,8
bind = ALT,9,movetoworkspace,9
bind = ALT,0,movetoworkspace,10
bind = SUPER,mouse_down,workspace,e+1
bind = SUPER,mouse_up,workspace,e-1
bind = SUPER,g,togglegroup
bind = SUPER,tab,changegroupactive
bind = SUPER, F,fullscreen
bind = SUPER, D, exec, fuzzel
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @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 = , F14, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = , F15, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = , F17, exec, wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+
bindel = , F16, exec, wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next
# bind = , PRINT, exec, hyprshot -m region -z
# zshell
bind = , PRINT, global, zshell:screenshotFreeze
bind = SUPER, R, global, zshell:toggle-launcher
bind = SUPER, A, global, zshell:toggle-nc
bind = SUPER, V, global, zshell:toggle-drawing
bind = SUPER, F1, global, zshell:lock
bind = SUPER, F2, global, zshell:toggle-settings
+57
View File
@@ -0,0 +1,57 @@
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true })
hl.bind("SUPER + Q", hl.dsp.window.close())
hl.bind("SUPER + M", hl.dsp.exit())
hl.bind("SUPER + RETURN", hl.dsp.exec_cmd("ghostty"))
hl.bind("SUPER + E", hl.dsp.exec_cmd("dolphin"))
hl.bind("SUPER + B", hl.dsp.exec_cmd("firefox"))
hl.bind("SUPER + H", hl.dsp.focus({ direction = "l" }))
hl.bind("SUPER + L", hl.dsp.focus({ direction = "r" }))
hl.bind("SUPER + K", hl.dsp.focus({ direction = "u" }))
hl.bind("SUPER + J", hl.dsp.focus({ direction = "d" }))
hl.bind("SUPER + SHIFT + L", hl.dsp.window.resize({ x = 50, y = 0, relative = true }), { repeating = true })
hl.bind("SUPER + SHIFT + H", hl.dsp.window.resize({ x = -50, y = 0, relative = true }), { repeating = true })
hl.bind("SUPER + SHIFT + K", hl.dsp.window.resize({ x = 0, y = -50, relative = true }), { repeating = true })
hl.bind("SUPER + SHIFT + J", hl.dsp.window.resize({ x = 0, y = 50, relative = true }), { repeating = true })
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("ALT" .. " + " .. key, hl.dsp.window.move({ workspace = i, follow = true }))
-- hl.bind("SUPER" .. " + " .. key, hl.dsp.window.move({ workspace = i, follow = false }))
end
hl.bind("SUPER + F", hl.dsp.window.fullscreen())
hl.bind("SUPER + D", hl.dsp.exec_cmd("fuzzel"))
hl.bind(
"XF86AudioRaiseVolume",
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"),
{ repeating = true, locked = true }
)
hl.bind(
"XF86AudioLowerVolume",
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
{ repeating = true, locked = true }
)
hl.bind(
"XF86AudioMute",
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
{ repeating = true, locked = true }
)
hl.bind("code:192", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { repeating = true, locked = true })
hl.bind("code:193", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { repeating = true, locked = true })
hl.bind("code:194", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"), { repeating = true, locked = true })
hl.bind("code:195", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+"), { repeating = true, 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 })
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
hl.bind("PRINT", hl.dsp.global("zshell:screenshotFreeze"))
hl.bind("SUPER + R", hl.dsp.global("zshell:toggle-launcher"))
hl.bind("SUPER + A", hl.dsp.global("zshell:toggle-nc"))
hl.bind("SUPER + V", hl.dsp.global("zshell:toggle-drawing"))
hl.bind("SUPER + F1", hl.dsp.global("zshell:lock"))
hl.bind("SUPER + F2", hl.dsp.global("zshell:toggle-settings"))
-32
View File
@@ -1,32 +0,0 @@
env = ZSH,/usr/share/oh-my-zsh/
env = BROWSER,firefox
env = TERM,tmux-256color
env = VISUAL,nvim
env = EDITOR,nvim
env = HYPRCURSOR_THEME,catppuccin-macchiato-light-cursors
env = HYPRCURSOR_SIZE,24
ent = ELECTRON_OZONE_PLATFORM_HINT,auto
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = CLUTTER_BACKEND,wayland
env = GDK_BACKEND,wayland
env = SDL_VIDEODRIVER,wayland
env = XDG_CONFIG_HOME,$HOME/.config
env = XDG_CACHE_HOME,$HOME/.cache
env = XDG_DATA_HOME,$HOME/.local/share
env = XDG_PICTRES_HOME,$HOME/Pictures
env = HYPRSHOT_DIR,$HOME/Pictures/Screenshots
env = RUSTICL_ENABLE,radeonsi
env = AMD_VULKAN_ICD,RADV
env = HSA_OVERRIDE_GFX_VERSION,12.0.1
env = HCC_AMDGPU_TARGET,gfx1201
+32
View File
@@ -0,0 +1,32 @@
hl.env("ZSH","/usr/share/oh-my-zsh/")
hl.env("BROWSER","firefox")
hl.env("TERM","tmux-256color")
hl.env("VISUAL","nvim")
hl.env("EDITOR","nvim")
hl.env("HYPRCURSOR_THEME","catppuccin-macchiato-light-cursors")
hl.env("HYPRCURSOR_SIZE","24")
hl.env("ELECTRON_OZONE_PLATFORM_HINT","auto")
hl.env("QT_AUTO_SCREEN_SCALE_FACTOR","1")
hl.env("QT_QPA_PLATFORM","wayland")
hl.env("QT_QPA_PLATFORMTHEME","qt6ct")
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION","1")
hl.env("XDG_SESSION_DESKTOP","Hyprland")
hl.env("XDG_SESSION_TYPE","wayland")
hl.env("CLUTTER_BACKEND","wayland")
hl.env("GDK_BACKEND","wayland")
hl.env("SDL_VIDEODRIVER","wayland")
hl.env("XDG_CONFIG_HOME","$HOME/.config")
hl.env("XDG_CACHE_HOME","$HOME/.cache")
hl.env("XDG_DATA_HOME","$HOME/.local/share")
hl.env("XDG_PICTRES_HOME","$HOME/Pictures")
hl.env("HYPRSHOT_DIR","$HOME/Pictures/Screenshots")
hl.env("RUSTICL_ENABLE","radeonsi")
hl.env("AMD_VULKAN_ICD","RADV")
hl.env("HSA_OVERRIDE_GFX_VERSION","12.0.1")
hl.env("HCC_AMDGPU_TARGET","gfx1201")
-7
View File
@@ -1,7 +0,0 @@
exec-once = zshell-cli shell start
exec-once = fcitx5
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
exec-once = nextcloud --background
exec-once = hyprsunset -i
exec-once = nm-applet
+8
View File
@@ -0,0 +1,8 @@
hl.on("hyprland.start", function()
hl.exec_cmd("zshell-cli shell start")
hl.exec_cmd("nm-applet")
hl.exec_cmd("fcitx5")
hl.exec_cmd("wl-paste --type text --watch cliphist store")
hl.exec_cmd("wl-paste --type image --watch cliphist store")
hl.exec_cmd("hyprsunset -i")
end)
-77
View File
@@ -1,77 +0,0 @@
$rosewater = rgb(f4dbd6)
$rosewaterAlpha = f4dbd6
$flamingo = rgb(f0c6c6)
$flamingoAlpha = f0c6c6
$pink = rgb(f5bde6)
$pinkAlpha = f5bde6
$mauve = rgb(c6a0f6)
$mauveAlpha = c6a0f6
$red = rgb(ed8796)
$redAlpha = ed8796
$maroon = rgb(ee99a0)
$maroonAlpha = ee99a0
$peach = rgb(f5a97f)
$peachAlpha = f5a97f
$yellow = rgb(eed49f)
$yellowAlpha = eed49f
$green = rgb(a6da95)
$greenAlpha = a6da95
$teal = rgb(8bd5ca)
$tealAlpha = 8bd5ca
$sky = rgb(91d7e3)
$skyAlpha = 91d7e3
$sapphire = rgb(7dc4e4)
$sapphireAlpha = 7dc4e4
$blue = rgb(8aadf4)
$blueAlpha = 8aadf4
$lavender = rgb(b7bdf8)
$lavenderAlpha = b7bdf8
$text = rgb(cad3f5)
$textAlpha = cad3f5
$subtext1 = rgb(b8c0e0)
$subtext1Alpha = b8c0e0
$subtext0 = rgb(a5adcb)
$subtext0Alpha = a5adcb
$overlay2 = rgb(939ab7)
$overlay2Alpha = 939ab7
$overlay1 = rgb(8087a2)
$overlay1Alpha = 8087a2
$overlay0 = rgb(6e738d)
$overlay0Alpha = 6e738d
$surface2 = rgb(5b6078)
$surface2Alpha = 5b6078
$surface1 = rgb(494d64)
$surface1Alpha = 494d64
$surface0 = rgb(363a4f)
$surface0Alpha = 363a4f
$base = rgb(24273a)
$baseAlpha = 24273a
$mantle = rgb(1e2030)
$mantleAlpha = 1e2030
$crust = rgb(181926)
$crustAlpha = 181926
+58
View File
@@ -0,0 +1,58 @@
local M = {}
M.colors = {
rosewaterAlpha = "rgb(f4dbd6)",
flamingoAlpha = "rgb(f0c6c6)",
pinkAlpha = "rgb(f5bde6)",
mauveAlpha = "rgb(c6a0f6)",
redAlpha = "rgb(ed8796)",
maroonAlpha = "rgb(ee99a0)",
peachAlpha = "rgb(f5a97f)",
yellowAlpha = "rgb(eed49f)",
greenAlpha = "rgb(a6da95)",
tealAlpha = "rgb(8bd5ca)",
skyAlpha = "rgb(91d7e3)",
sapphireAlpha = "rgb(7dc4e4)",
blueAlpha = "rgb(8aadf4)",
lavenderAlpha = "rgb(b7bdf8)",
textAlpha = "rgb(cad3f5)",
subtext1Alpha = "rgb(b8c0e0)",
subtext0Alpha = "rgb(a5adcb)",
overlay2Alpha = "rgb(939ab7)",
overlay1Alpha = "rgb(8087a2)",
overlay0Alpha = "rgb(6e738d)",
surface2Alpha = "rgb(5b6078)",
surface1Alpha = "rgb(494d64)",
surface0Alpha = "rgb(363a4f)",
baseAlpha = "rgb(24273a)",
mantleAlpha = "rgb(1e2030)",
crustAlpha = "rgb(181926)",
}
return M
-9
View File
@@ -1,9 +0,0 @@
monitor= DP-2, 2560x1440@240, 1728x0, 1, bitdepth, 10, cm, srgb
monitor = DP-3, 3840x2160@60, 0x0, 1.25, bitdepth, 10, transform, 1
#monitor = DP-3, 3840x2160@60, 0x0, 1.25, bitdepth, 10, transform, 1, icc, /home/koyomi/.config/colorprofiles/lg4k.icm
render {
cm_auto_hdr = 0
cm_fs_passthrough = 1
}
+18
View File
@@ -0,0 +1,18 @@
hl.monitor({
output = "DP-2",
mode = "2560x1440@240",
position = "1728x0",
scale = 1,
bitdepth = 10,
cm = "srgb",
})
hl.monitor({
output = "DP-3",
mode = "3840x2160@60",
position = "0x0",
scale = 1.25,
bitdepth = 10,
cm = "srgb",
transform = 1,
})
-80
View File
@@ -1,80 +0,0 @@
input {
kb_layout = us
kb_variant = intl
kb_model =
kb_options = fkeys:basic_13-24
kb_rules =
sensitivity = 0
accel_profile = flat
follow_mouse = 1
}
general {
gaps_in = 2
gaps_out = 2
border_size = 1
col.active_border = $mauve $teal $green $sapphire $lavender 90deg
col.inactive_border = $surface1 90deg
}
decoration {
rounding = 1
shadow {
enabled = false
range = 6
render_power = 6
color = $base
color_inactive = $mantle
}
blur {
enabled = false
size = 2
passes = 2
new_optimizations = on
ignore_opacity = true
contrast = 1.0
brightness = 1.0
vibrancy = 0
vibrancy_darkness = 0
xray = false
noise = 0.05
popups = true
input_methods = true
}
}
layerrule = blur_popups on, match:namespace ZShell-Bar
layerrule = ignore_alpha 0.5, match:namespace ZShell-Bar
layerrule = blur on, match:namespace ZShell-Bar
layerrule = blur_popups on, match:namespace ZShell-Auth
layerrule = ignore_alpha 0.5, match:namespace ZShell-Auth
layerrule = blur on, match:namespace ZShell-Auth
animations {
enabled = 1
bezier = overshot,0.13,0.99,0.29,1.1
animation = windows,1,4,overshot,slide
animation = border,1,4,default
animation = fade,1,4,default
animation = workspaces,1,4,overshot,slidevert
}
dwindle {
pseudotile = true
preserve_split = true
}
ecosystem {
no_donation_nag = true
no_update_news = true
}
misc {
disable_hyprland_logo = true
}
debug {
full_cm_proto = true
}
+116
View File
@@ -0,0 +1,116 @@
local C = require("modules.macchiato")
hl.layer_rule({
name = "blur_popups_bar",
blur = true,
match = { namespace = "ZShell-Bar" },
ignore_alpha = 0.5,
})
hl.layer_rule({
name = "blur_popups_auth",
blur = true,
match = { namespace = "ZShell-Auth" },
ignore_alpha = 0.5,
})
hl.config({
input = {
kb_layout = "us",
kb_variant = "intl",
kb_options = "fkeys:basic_13-24",
sensitivity = 0,
accel_profile = "flat",
follow_mouse = 1,
},
general = {
gaps_in = 2,
gaps_out = 2,
border_size = 2,
col = {
active_border = {
colors = { C.colors.mauveAlpha, C.colors.greenAlpha, C.colors.sapphireAlpha, C.colors.lavenderAlpha },
angle = 90,
},
inactive_border = {
colors = { C.colors.surface1Alpha },
angle = 90,
},
},
},
decoration = {
rounding = 1,
shadow = {
enabled = false,
range = 6,
render_power = 6,
color = C.colors.baseAlpha,
color_inactive = C.colors.mantleAlpha,
},
blur = {
enabled = false,
size = 2,
passes = 2,
new_optimizations = true,
ignore_opacity = true,
contrast = 1.0,
brightness = 1.0,
vibrancy = 0,
vibrancy_darkness = 0,
xray = false,
noise = 0.05,
popups = true,
input_methods = true,
},
},
ecosystem = {
no_donation_nag = true,
no_update_news = true,
},
misc = {
disable_hyprland_logo = true,
},
debug = {
full_cm_proto = true,
},
dwindle = {
preserve_split = true,
},
})
local animations = {
{ leaf = "border", enabled = true, speed = 4, bezier = "linear" },
{ leaf = "borderangle", enabled = true, speed = 3, bezier = "linear", style = "loop" },
{ leaf = "fadeOut", enabled = true, speed = 3, bezier = "default" },
{ leaf = "fadeIn", enabled = true, speed = 4, bezier = "default" },
{ leaf = "fadeLayers", enabled = true, speed = 1, bezier = "default" },
{ leaf = "fadePopups", enabled = true, speed = 1, bezier = "default" },
{ leaf = "global", enabled = true, speed = 6, bezier = "default" },
{ leaf = "layers", enabled = true, speed = 5, bezier = "cubic-bezier", style = "fade" },
{ leaf = "windows", enabled = true, speed = 3, bezier = "wind", style = "popin" },
{ leaf = "windowsIn", enabled = true, speed = 3, bezier = "winIn", style = "popin 90%" },
{ leaf = "windowsOut", enabled = true, speed = 3, bezier = "winOut", style = "popin 90%" },
{ leaf = "windowsMove", enabled = true, speed = 1, bezier = "wind", style = "slide" },
{ leaf = "workspaces", enabled = true, speed = 4, bezier = "default" },
}
local curves = {
{ name = "wind", config = { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1 } } } },
{ name = "winIn", config = { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1 } } } },
{ name = "winOut", config = { type = "bezier", points = { { 1, 0.35 }, { 1, 1 } } } },
{ name = "linear", config = { type = "bezier", points = { { 1, 1 }, { 1, 1 } } } },
{ name = "cubic-bezier", config = { type = "bezier", points = { { 0.215, 0.61 }, { 0.355, 1 } } } },
{ name = "easeOutQuint", config = { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } } },
{ name = "easeInOutCubic", config = { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } } },
{ name = "almostLinear", config = { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } } },
{ name = "quick", config = { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } } },
{ name = "easy", config = { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 } },
}
for _, curve in ipairs(curves) do
hl.curve(curve.name, curve.config)
end
for _, animation in ipairs(animations) do
hl.animation(animation)
end
-44
View File
@@ -1,44 +0,0 @@
windowrule {
name = windowrule-1
opacity = 0.0 override
no_anim = on
no_initial_focus = on
max_size = 1 1
no_blur = on
no_focus = on
match:class = ^(xwaylandvideobridge)$
}
windowrule {
name = windowrule-2
idle_inhibit = fullscreen
match:class = .*
}
windowrule {
name = windowrule-3
idle_inhibit = always
match:content = video
}
windowrule {
name = windowrule-4
idle_inhibit = always
match:content = game
}
windowrule {
name = windowrule-5
idle_inhibit = always
match:fullscreen_state_internal = client
match:fullscreen_state_client = 2
}
windowrule {
name = windowrule-6
idle_inhibit = always
match:fullscreen_state_internal = internal
match:fullscreen_state_client = 2
}
+34
View File
@@ -0,0 +1,34 @@
hl.window_rule({
name = "xwayland",
opacity = "0.0 override",
no_anim = true,
no_initial_focus = true,
max_size = { 1, 1 },
no_blur = true,
no_focus = true,
match = { class = "^(xwaylandvideobridge)$" },
})
hl.window_rule({
name = "fullscreen_idling",
idle_inhibit = "fullscreen",
match = { class = ".*" },
})
hl.window_rule({
name = "video_idling",
idle_inhibit = "always",
match = { content = "video" },
})
hl.window_rule({
name = "game_idling",
idle_inhibit = "always",
match = { content = "game" },
})
hl.window_rule({
name = "match_fullscreen",
idle_inhibit = "always",
match = { fullscreen_state_internal = 2, fullscreen_state_client = 2 },
})