add lua-based config set
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
hyprland.conf
|
||||
plugins.lua
|
||||
|
||||
10
.luarc.json
Normal file
10
.luarc.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"workspace": {
|
||||
"library": [
|
||||
"/usr/share/hypr/stubs"
|
||||
]
|
||||
},
|
||||
"diagnostics": {
|
||||
"globals": ["hl"]
|
||||
}
|
||||
}
|
||||
11
common.lua
Normal file
11
common.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
-- Shared globals accessible across all required files
|
||||
terminal = "alacritty"
|
||||
fileManager = "nautilus"
|
||||
menu = "rofi -show combi -combi-modi drun,window,ssh,run"
|
||||
mainMod = "SUPER"
|
||||
|
||||
require("mocha")
|
||||
require("startup")
|
||||
require("keys")
|
||||
require("styles")
|
||||
require("misc")
|
||||
5
device/laptop.lua
Normal file
5
device/laptop.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
hl.monitor({ output = "eDP-1", mode = "2560x1600@120", position = "0x0", scale = 1 })
|
||||
|
||||
for i = 1, 10 do
|
||||
hl.workspace_rule({ workspace = tostring(i), monitor = "eDP-1", default = (i == 1) })
|
||||
end
|
||||
17
device/pc.lua
Normal file
17
device/pc.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
-- Monitors
|
||||
hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60.04", position = "1920x1440", scale = 1.0 })
|
||||
hl.monitor({ output = "DP-1", mode = "1920x1080@60.0", position = "0x0", scale = 1.0 })
|
||||
hl.monitor({ output = "DP-2", mode = "1920x1080@60.0", position = "5760x0", scale = 1.0 })
|
||||
hl.monitor({ output = "DP-3", mode = "3840x2160@60.0", position = "1920x-720", scale = 1.0 })
|
||||
|
||||
-- Workspaces: 1-10 → DP-3, 11-20 → DP-1, 21-30 → DP-2, 31-40 → HDMI-A-1
|
||||
for i = 1, 10 do hl.workspace_rule({ workspace = tostring(i), monitor = "DP-3", default = (i == 1) }) end
|
||||
for i = 11, 20 do hl.workspace_rule({ workspace = tostring(i), monitor = "DP-1", default = (i == 11) }) end
|
||||
for i = 21, 30 do hl.workspace_rule({ workspace = tostring(i), monitor = "DP-2", default = (i == 21) }) end
|
||||
for i = 31, 40 do hl.workspace_rule({ workspace = tostring(i), monitor = "HDMI-A-1", default = (i == 31) }) end
|
||||
|
||||
-- Monitor focus (Numpad keys)
|
||||
hl.bind(mainMod .. " + KP_Left", hl.dsp.focus({ monitor = 1 })) -- Numpad 4
|
||||
hl.bind(mainMod .. " + KP_Begin", hl.dsp.focus({ monitor = 3 })) -- Numpad 5
|
||||
hl.bind(mainMod .. " + KP_Right", hl.dsp.focus({ monitor = 2 })) -- Numpad 6
|
||||
hl.bind(mainMod .. " + KP_Down", hl.dsp.focus({ monitor = 0 })) -- Numpad 2
|
||||
@@ -1 +1 @@
|
||||
/nix/store/5l586v13b5sk7jijffgsbqwdjd8w11jy-home-manager-files/.config/hypr/hyprland.conf
|
||||
/nix/store/cbpxjx51q5djxmv7gcs1zz0sxy9arf2x-home-manager-files/.config/hypr/hyprland.conf
|
||||
4
hyprland.lua
Normal file
4
hyprland.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
require("plugins")
|
||||
|
||||
require("common")
|
||||
require("device.pc")
|
||||
79
keys.lua
Normal file
79
keys.lua
Normal file
@@ -0,0 +1,79 @@
|
||||
-- App launchers
|
||||
hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
|
||||
hl.bind(mainMod .. " + C", hl.dsp.window.close())
|
||||
hl.bind(mainMod .. " + M", hl.dsp.exit())
|
||||
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
||||
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
||||
hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu))
|
||||
hl.bind(mainMod .. " + P", hl.dsp.window.pseudo({ action = "toggle" }))
|
||||
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
|
||||
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd("rofi -show combi -combi-modi drun,window,ssh,run"))
|
||||
hl.bind("Print", hl.dsp.exec_cmd("hyprshot --freeze -m region"))
|
||||
|
||||
hl.bind("CTRL + ALT + T", hl.dsp.exec_cmd("alacritty"))
|
||||
hl.bind("CTRL + ALT + F", hl.dsp.exec_cmd("firefox"))
|
||||
hl.bind("CTRL + ALT + V", hl.dsp.exec_cmd("vesktop --enable-wayland-ime --ozone-platform=wayland"))
|
||||
hl.bind("CTRL + ALT + P", hl.dsp.exec_cmd("prismlauncher"))
|
||||
hl.bind("CTRL + ALT + C", hl.dsp.exec_cmd("hyprpicker"))
|
||||
hl.bind("CTRL + ALT + O", hl.dsp.exec_cmd("obsidian"))
|
||||
hl.bind("CTRL + ALT + R", hl.dsp.exec_cmd("google-chrome-stable http://iot.local --password-store=basic"))
|
||||
hl.bind("SUPER + F", hl.dsp.exec_cmd("~/.config/hypr/scripts/toggle-firefox.sh"))
|
||||
|
||||
hl.bind(mainMod .. " + Space", hl.dsp.focus({ urgent_or_last = true }))
|
||||
|
||||
-- Focus direction
|
||||
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "l" }))
|
||||
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "r" }))
|
||||
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "u" }))
|
||||
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "d" }))
|
||||
|
||||
-- Move window
|
||||
hl.bind(mainMod .. " + SHIFT + left", hl.dsp.window.move({ direction = "l" }))
|
||||
hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move({ direction = "r" }))
|
||||
hl.bind(mainMod .. " + SHIFT + up", hl.dsp.window.move({ direction = "u" }))
|
||||
hl.bind(mainMod .. " + SHIFT + down", hl.dsp.window.move({ direction = "d" }))
|
||||
|
||||
-- Workspaces via split-monitor-workspaces plugin
|
||||
for i = 1, 9 do
|
||||
local n = tostring(i)
|
||||
hl.bind(mainMod .. " + " .. n, function()
|
||||
hl.plugin.split_monitor_workspaces.workspace(n)
|
||||
end)
|
||||
hl.bind(mainMod .. " + SHIFT + " .. n, function()
|
||||
hl.plugin.split_monitor_workspaces.move_to_workspace_silent(n)
|
||||
end)
|
||||
end
|
||||
hl.bind(mainMod .. " + 0", function()
|
||||
hl.plugin.split_monitor_workspaces.workspace(10)
|
||||
end)
|
||||
hl.bind(mainMod .. " + SHIFT + 0", function()
|
||||
hl.plugin.split_monitor_workspaces.move_to_workspace_silent(10)
|
||||
end)
|
||||
|
||||
-- Special workspace
|
||||
hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
|
||||
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
||||
|
||||
-- Scroll through workspaces
|
||||
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||
|
||||
-- Mouse window management
|
||||
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
|
||||
|
||||
-- Volume
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { repeating = true })
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { repeating = true })
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { repeating = true })
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { repeating = true })
|
||||
|
||||
-- Brightness
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { repeating = true })
|
||||
|
||||
-- Media
|
||||
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 })
|
||||
44
misc.lua
Normal file
44
misc.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
-- Environment variables
|
||||
hl.env("XCURSOR_THEME", "Cyberpunk")
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
hl.env("HYPRCURSOR_THEME", "Cyberpunk")
|
||||
hl.env("HYPRCURSOR_SIZE", "24")
|
||||
|
||||
hl.config({
|
||||
misc = {
|
||||
middle_click_paste = false,
|
||||
force_default_wallpaper = -1,
|
||||
disable_hyprland_logo = false,
|
||||
},
|
||||
input = {
|
||||
kb_layout = "us",
|
||||
follow_mouse = 1,
|
||||
sensitivity = 0,
|
||||
touchpad = {
|
||||
natural_scroll = true,
|
||||
clickfinger_behavior = 1,
|
||||
},
|
||||
},
|
||||
xwayland = {
|
||||
force_zero_scaling = true,
|
||||
},
|
||||
debug = {
|
||||
disable_logs = false,
|
||||
},
|
||||
})
|
||||
|
||||
-- Device config: top-level hl.device(), not inside hl.config()
|
||||
hl.device({ name = "epic-mouse-v1", sensitivity = -0.5 })
|
||||
|
||||
-- Plugin config: via hl.plugin namespace after plugin is loaded
|
||||
hl.on("hyprland.start", function()
|
||||
hl.plugin["split-monitor-workspaces"].count = 10
|
||||
hl.plugin["split-monitor-workspaces"].keep_focused = 0
|
||||
hl.plugin["split-monitor-workspaces"].enable_notifications = 0
|
||||
hl.plugin["split-monitor-workspaces"].enable_persistent_workspaces = 1
|
||||
end)
|
||||
|
||||
-- Window rules
|
||||
hl.window_rule({ match = { class = "FreeCAD" }, no_initial_focus = true })
|
||||
hl.window_rule({ match = { class = "^(OMEdit)$" }, no_initial_focus = true })
|
||||
hl.window_rule({ match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false }, no_focus = true })
|
||||
27
mocha.lua
Normal file
27
mocha.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
-- Catppuccin Mocha palette (globals, accessible in all required files)
|
||||
rosewater = "rgb(f5e0dc)" rosewaterAlpha = "f5e0dc"
|
||||
flamingo = "rgb(f2cdcd)" flamingoAlpha = "f2cdcd"
|
||||
pink = "rgb(f5c2e7)" pinkAlpha = "f5c2e7"
|
||||
mauve = "rgb(cba6f7)" mauveAlpha = "cba6f7"
|
||||
red = "rgb(f38ba8)" redAlpha = "f38ba8"
|
||||
maroon = "rgb(eba0ac)" maroonAlpha = "eba0ac"
|
||||
peach = "rgb(fab387)" peachAlpha = "fab387"
|
||||
yellow = "rgb(f9e2af)" yellowAlpha = "f9e2af"
|
||||
green = "rgb(a6e3a1)" greenAlpha = "a6e3a1"
|
||||
teal = "rgb(94e2d5)" tealAlpha = "94e2d5"
|
||||
sky = "rgb(89dceb)" skyAlpha = "89dceb"
|
||||
sapphire = "rgb(74c7ec)" sapphireAlpha = "74c7ec"
|
||||
blue = "rgb(89b4fa)" blueAlpha = "89b4fa"
|
||||
lavender = "rgb(b4befe)" lavenderAlpha = "b4befe"
|
||||
text = "rgb(cdd6f4)" textAlpha = "cdd6f4"
|
||||
subtext1 = "rgb(bac2de)" subtext1Alpha = "bac2de"
|
||||
subtext0 = "rgb(a6adc8)" subtext0Alpha = "a6adc8"
|
||||
overlay2 = "rgb(9399b2)" overlay2Alpha = "9399b2"
|
||||
overlay1 = "rgb(7f849c)" overlay1Alpha = "7f849c"
|
||||
overlay0 = "rgb(6c7086)" overlay0Alpha = "6c7086"
|
||||
surface2 = "rgb(585b70)" surface2Alpha = "585b70"
|
||||
surface1 = "rgb(45475a)" surface1Alpha = "45475a"
|
||||
surface0 = "rgb(313244)" surface0Alpha = "313244"
|
||||
base = "rgb(1e1e2e)" baseAlpha = "1e1e2e"
|
||||
mantle = "rgb(181825)" mantleAlpha = "181825"
|
||||
crust = "rgb(11111b)" crustAlpha = "11111b"
|
||||
10
startup.lua
Normal file
10
startup.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
hl.on("hyprland.start", function()
|
||||
hl.exec_cmd(terminal)
|
||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'")
|
||||
hl.exec_cmd("waybar")
|
||||
hl.exec_cmd("swww --transition-type none")
|
||||
hl.exec_cmd("fcitx5")
|
||||
hl.exec_cmd("waypaper --restore")
|
||||
hl.exec_cmd("wl-paste -p --watch wl-copy -p -c")
|
||||
hl.dsp.focus({ workspace = 1 })
|
||||
end)
|
||||
39
styles.lua
Normal file
39
styles.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
hl.config({
|
||||
general = {
|
||||
gaps_in = 0,
|
||||
gaps_out = 0,
|
||||
border_size = 2,
|
||||
["col.active_border"] = "rgba(eb3489ff)",
|
||||
["col.inactive_border"] = "rgba(595959ff)",
|
||||
resize_on_border = false,
|
||||
allow_tearing = false,
|
||||
layout = "dwindle",
|
||||
},
|
||||
decoration = {
|
||||
rounding = 0,
|
||||
active_opacity = 1.0,
|
||||
inactive_opacity = 1.0,
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 4,
|
||||
render_power = 3,
|
||||
color = "rgba(1a1a1aee)",
|
||||
},
|
||||
blur = {
|
||||
enabled = true,
|
||||
size = 3,
|
||||
passes = 1,
|
||||
vibrancy = 0.1696,
|
||||
},
|
||||
},
|
||||
animations = {
|
||||
enabled = false,
|
||||
},
|
||||
dwindle = {
|
||||
-- pseudotile = true,
|
||||
preserve_split = true,
|
||||
},
|
||||
master = {
|
||||
new_status = "master",
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user