migrated hyprland config from hyprlang to lua; added mocha palette as lua

This commit is contained in:
2026-08-14 17:33:25 -06:00
parent a372093d22
commit 96c4d36714
21 changed files with 314 additions and 235 deletions
-76
View File
@@ -1,76 +0,0 @@
# Sound through pactl
bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +10%
bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -10%
bind = , XF86AudioMut, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioNext, exec, playerctl next
# Brightness through brightnessctl
bind = , XF86MonBrightnessUp, exec, brightnessctl set +5%
bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, T, exec, $terminal
bind = $mainMod, B, exec, $browser
bind = $mainMod, F, exec, $fileManager
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, V, togglefloating,
bind = $mainMod, space, exec, $menu
bind = $SUPER_SHIFT, l, exec, hyprlock
bind = $SUPER_SHIFT, R, exec, hyprctl reload
bind = $SUPER_SHIFT, D, exec, hyprctl keyword monitor eDP-1, disable
bind = $SUPER_SHIFT, F, exec, hyprctl keyword monitor eDP-1, enable
bind = , Print, exec, grim -c -o "$(hyprctl activeworkspace -j | jq -r '.monitor')" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')
bind = shift, Print, exec, grim -g "$(slurp)" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, E, togglesplit, # dwindle
bind = $mainMod CTRL, F, fullscreen, # dwindle
bind = $mainMod, W, togglegroup, # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# 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 Lid for opening and close
bindl = , switch:on:Lid Switch, exec, hyprctl dpms off && hyprctl dispatch exec hyprlock
bindl = , switch:off:Lid Switch, exec, hyprctl dispatch dpms on
+70
View File
@@ -0,0 +1,70 @@
-- See https://wiki.hypr.land/Configuring/Basics/Binds/ for more
-- Sound through pactl
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +10%"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -10%"))
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pactl set-sink-mute @DEFAULT_SINK@ toggle"))
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"))
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"))
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"))
-- Brightness through brightnessctl
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set +5%"))
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"))
-- Main modifier binds
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd(terminal))
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser))
hl.bind(mainMod .. " + F", hl.dsp.exec_cmd(fileManager))
hl.bind(mainMod .. " + C", hl.dsp.window.kill())
hl.bind(mainMod .. " + M", hl.dsp.exit())
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
hl.bind(mainMod .. " + space", hl.dsp.exec_cmd(menu))
hl.bind(SUPER_SHIFT .. " + L", hl.dsp.exec_cmd("hyprlock"))
hl.bind(SUPER_SHIFT .. " + R", hl.dsp.exec_cmd("hyprctl reload"))
hl.bind(SUPER_SHIFT .. " + D", hl.dsp.exec_cmd("hyprctl keyword monitor eDP-1, disable"))
hl.bind(SUPER_SHIFT .. " + F", hl.dsp.exec_cmd("hyprctl keyword monitor eDP-1, enable"))
-- Screenshots
hl.bind("Print", hl.dsp.exec_cmd("grim -c -o \"$(hyprctl activeworkspace -j | jq -r '.monitor')\" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')"))
hl.bind("SHIFT + Print", hl.dsp.exec_cmd("grim -g \"$(slurp)\" $(xdg-user-dir PICTURES)/Screenshots/$(date +'%s_grim.png')"))
-- Dwindle layout
hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) -- dwindle
hl.bind(mainMod .. " + E", hl.dsp.layout("togglesplit")) -- dwindle
hl.bind(mainMod .. " + CTRL + F", hl.dsp.window.fullscreen({ action = "toggle" })) -- dwindle
hl.bind(mainMod .. " + W", hl.dsp.group.toggle()) -- dwindle
-- Move focus with mainMod + vim keys
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "l" }))
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "r" }))
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "u" }))
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "d" }))
-- Switch workspaces with mainMod + [0-9]
for i = 1, 10 do
local key = i % 10 -- 10 maps to key 0
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i }))
end
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
for i = 1, 10 do
local key = i % 10 -- 10 maps to key 0
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
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" }))
-- 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 lid for opening and closing
hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd("hyprctl dpms off && hyprctl dispatch exec hyprlock"), { locked = true })
hl.bind("switch:off:Lid Switch", hl.dsp.exec_cmd("hyprctl dispatch dpms on"), { locked = true })
-6
View File
@@ -1,6 +0,0 @@
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
+6
View File
@@ -0,0 +1,6 @@
-- Example per-device config
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
hl.device({
name = "epic-mouse-v1",
sensitivity = -0.5,
})
-2
View File
@@ -1,2 +0,0 @@
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+3
View File
@@ -0,0 +1,3 @@
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
hl.env("XCURSOR_SIZE", "24")
hl.env("QT_QPA_PLATFORMTHEME", "qt5ct") -- change to qt6ct if you have that
-9
View File
@@ -1,9 +0,0 @@
exec-once = hyprctl setcursor catppuccin-mocha-dark-cursors 28 &
# exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = systemctl --user start hyprpolkitagent &
exec-once = waybar & mako & hyprpaper & hypridle & wluma & hyprshell run &
exec-once = blueman-applet & # systemctl --user stop wireplumber.service &
exec-once = 1password --silent & op signin & sunsetr &
+10
View File
@@ -0,0 +1,10 @@
-- Autostart. See https://wiki.hypr.land/Configuring/Basics/Autostart/
hl.on("hyprland.start", function()
hl.exec_cmd("hyprctl setcursor catppuccin-mocha-dark-cursors 28 &")
hl.exec_cmd("systemctl --user start hyprpolkitagent &")
hl.exec_cmd("waybar & mako & hyprpaper & hypridle & wluma & hyprshell run &")
hl.exec_cmd("blueman-applet &")
hl.exec_cmd("1password --silent &")
hl.exec_cmd("op signin &")
hl.exec_cmd("sunsetr &")
end)
-93
View File
@@ -1,93 +0,0 @@
source=~/.config/hypr/monitors.conf
source=~/.config/hypr/mocha.conf
source=~/.config/hypr/keywords.conf
source=~/.config/hypr/exec.conf
source=~/.config/hypr/env.conf
source=~/.config/hypr/variable.conf
source=~/.config/hypr/input.conf
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
xwayland {
force_zero_scaling = true
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
border_size = 3
col.active_border = $mauve $flamingo 90deg
col.inactive_border = $subtext0
resize_on_border = true
gaps_in = 2
gaps_out = 4
layout = dwindle
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 4
blur {
enabled = true
size = 3
passes = 1
new_optimizations = true
}
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
dim_inactive = true
dim_strength = 0.05
dim_special = 0.07
}
animations {
enabled = true
bezier = linear, 0.0, 0.0, 1, 1
animation = borderangle, 1, 50, linear, loop
animation=workspaces,1,0.5,default
animation=windows,0,0.1,default
animation=fade,0,0.1,default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enableing is bound to mainMod + P in the keybinds section
preserve_split = yes
}
# master {
# # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_is_master = true
# }
misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
middle_click_paste = false
}
# Device Config
soruce=~/.config/hypr/device.conf
# Windows Rules (v2)
source=~/.config/hypr/windowrulev2.conf
# Keyboard Bindings
source=~/.config/hypr/binding.conf
+91
View File
@@ -0,0 +1,91 @@
-- Hyprland config (Lua)
-- Converted from hyprlang .conf files. See https://wiki.hypr.land/Configuring/Start/
-- This file is a stow symlink; Hyprland resolves it to the repo path, so make
-- sure requires (e.g. mocha.lua from the hyprmocha package) resolve through
-- the real config dir.
package.path = os.getenv("HOME") .. "/.config/hypr/?.lua;" .. package.path
require("keywords")
require("variables")
require("mocha")
require("monitors")
require("env")
require("input")
require("device")
require("window_rules")
require("binds")
require("exec")
hl.config({
xwayland = {
force_zero_scaling = true,
},
})
hl.config({
general = {
border_size = 3,
col = {
active_border = { colors = { mauve, flamingo }, angle = 90 },
inactive_border = subtext0,
},
resize_on_border = true,
gaps_in = 2,
gaps_out = 4,
layout = "dwindle",
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
allow_tearing = false,
},
})
hl.config({
decoration = {
rounding = 4,
blur = {
enabled = true,
size = 3,
passes = 1,
new_optimizations = true,
},
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = "rgba(1a1a1aee)",
},
dim_inactive = true,
dim_strength = 0.05,
dim_special = 0.07,
},
})
hl.config({
animations = {
enabled = true,
},
})
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
hl.animation({ leaf = "borderangle", enabled = true, speed = 50, bezier = "linear", style = "loop" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 0.5, bezier = "default" })
hl.animation({ leaf = "windows", enabled = false })
hl.animation({ leaf = "fade", enabled = false })
hl.config({
dwindle = {
-- pseudotile had no Lua config-table equivalent; toggled via the P bind
preserve_split = true,
},
})
-- master {
-- new_is_master = true
-- }
hl.config({
misc = {
force_default_wallpaper = 0, -- Set to 0 or 1 to disable the anime mascot wallpapers
middle_click_paste = false,
},
})
-26
View File
@@ -1,26 +0,0 @@
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
kb_options = ctrl:nocaps
follow_mouse = 1
touchpad {
natural_scroll = true
clickfinger_behavior = true
disable_while_typing = true
scroll_factor = 0.5
}
sensitivity = 0 # -1.0 to 1.0, 0 means no modification
}
gesture = 3, horizontal, workspace
gestures {
workspace_swipe_direction_lock = true
workspace_swipe_direction_lock_threshold = 10
}
+31
View File
@@ -0,0 +1,31 @@
-- For all categories, see https://wiki.hypr.land/Configuring/Basics/Variables/
hl.config({
input = {
kb_layout = "us",
kb_variant = "",
kb_model = "",
kb_options = "ctrl:nocaps",
kb_rules = "",
follow_mouse = 1,
touchpad = {
natural_scroll = true,
clickfinger_behavior = true,
disable_while_typing = true,
scroll_factor = 0.5,
},
sensitivity = 0, -- -1.0 to 1.0, 0 means no modification
},
})
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace",
})
hl.config({
gestures = {
workspace_swipe_direction_lock = true,
workspace_swipe_direction_lock_threshold = 10,
},
})
-2
View File
@@ -1,2 +0,0 @@
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = super
+4
View File
@@ -0,0 +1,4 @@
-- See https://wiki.hypr.land/Configuring/Basics/Keywords/ for more
-- Defined as globals so every required module can use them.
mainMod = "SUPER" -- Sets the "Windows" key as main modifier
SUPER_SHIFT = "SUPER + SHIFT"
-6
View File
@@ -1,6 +0,0 @@
# Generated by nwg-displays on 2026-05-12 at 10:26:18. Do not edit manually.
monitor=desc:BOE 0x0BC9,disable
monitor=desc:Viewteck Co. Ltd. GNV34DB,3440x1440@50.0,3795x1785,1.0
monitor=desc:Dell Inc. DELL U2515HX GMDK46C4053L,2560x1440@59.95,5488x345,1.0
monitor=desc:Dell Inc. DELL U2518D 0WG2J9C5B3WL,2560x1440@59.95,2928x345,1.0
+6
View File
@@ -0,0 +1,6 @@
-- Generated by nwg-displays on 2026-05-12 at 10:26:18. Do not edit manually.
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/ for more
hl.monitor({ output = "desc:BOE 0x0BC9", disabled = true })
hl.monitor({ output = "desc:Viewteck Co. Ltd. GNV34DB", mode = "3440x1440@50.0", position = "3795x1785", scale = 1.0 })
hl.monitor({ output = "desc:Dell Inc. DELL U2515HX GMDK46C4053L", mode = "2560x1440@59.95", position = "5488x345", scale = 1.0 })
hl.monitor({ output = "desc:Dell Inc. DELL U2518D 0WG2J9C5B3WL", mode = "2560x1440@59.95", position = "2928x345", scale = 1.0 })
-4
View File
@@ -1,4 +0,0 @@
$terminal = ghostty
$fileManager = dolphin
$menu = wofi --show drun
$browser = zen-browser
+4
View File
@@ -0,0 +1,4 @@
terminal = "ghostty"
fileManager = "dolphin"
menu = "wofi --show drun"
browser = "zen-browser"
+8
View File
@@ -0,0 +1,8 @@
-- Example window rules
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/ for more
hl.layer_rule({
name = "no_anim_for_wofi",
match = { namespace = "wofi" },
no_anim = true,
})
-11
View File
@@ -1,11 +0,0 @@
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
layerrule {
name = no_anim_for_wofi
no_anim = on
match:namespace = wofi
}
+81
View File
@@ -0,0 +1,81 @@
-- Catppuccin Mocha palette for the Lua Hyprland config.
-- Colors are "rgba(rrggbbaa)" strings; the *Alpha globals are bare hex for
-- building custom colors. Kept alongside mocha.conf, which hyprlock still sources.
rosewater = "rgba(f5e0dcff)"
rosewaterAlpha = "f5e0dc"
flamingo = "rgba(f2cdcdff)"
flamingoAlpha = "f2cdcd"
pink = "rgba(f5c2e7ff)"
pinkAlpha = "f5c2e7"
mauve = "rgba(cba6f7ff)"
mauveAlpha = "cba6f7"
red = "rgba(f38ba8ff)"
redAlpha = "f38ba8"
maroon = "rgba(eba0acff)"
maroonAlpha = "eba0ac"
peach = "rgba(fab387ff)"
peachAlpha = "fab387"
yellow = "rgba(f9e2afff)"
yellowAlpha = "f9e2af"
green = "rgba(a6e3a1ff)"
greenAlpha = "a6e3a1"
teal = "rgba(94e2d5ff)"
tealAlpha = "94e2d5"
sky = "rgba(89dcebff)"
skyAlpha = "89dceb"
sapphire = "rgba(74c7ecff)"
sapphireAlpha = "74c7ec"
blue = "rgba(89b4faff)"
blueAlpha = "89b4fa"
lavendar = "rgba(b4befeff)"
lavendarAlpha = "b4befe"
text = "rgba(cdd6f4ff)"
textAlpha = "cdd6f4"
subtext1 = "rgba(bac2deff)"
subtext1Alpha = "bac2de"
subtext0 = "rgba(a6adc8ff)"
subtext0Alpha = "a6adc8"
overlay2 = "rgba(9399b2ff)"
overlay2Alpha = "9399b2"
overlay1 = "rgba(7f849cff)"
overlay1Alpha = "7f849c"
overlay0 = "rgba(6c7086ff)"
overlay0Alpha = "6c7086"
surface2 = "rgba(585b70ff)"
surface2Alpha = "585b70"
surface1 = "rgba(45475aff)"
surface1Alpha = "45475a"
surface0 = "rgba(313244ff)"
surface0Alpha = "313244"
base = "rgba(1e1e2eff)"
baseAlpha = "1e1e2e"
mantle = "rgba(181825ff)"
mantleAlpha = "181825"
crust = "rgba(11111bff)"
crustAlpha = "11111b"