Files
arch-dotfiles/.config/hypr/hyprland.lua

187 lines
7.4 KiB
Lua

-- Generated by hyprconf2lua v1.4.0 (manuellement corrigé)
---@module 'hl'
-- === MONITEURS ===
local monitors = require("monitors")
-- Workspace rules (intégrées directement)
hl.workspace_rule({ workspace = 1, monitor = "eDP-1" })
hl.workspace_rule({ workspace = 2, monitor = "eDP-1" })
hl.workspace_rule({ workspace = 3, monitor = "eDP-1" })
hl.workspace_rule({ workspace = 4, monitor = "HDMI-A-1" })
hl.workspace_rule({ workspace = 5, monitor = "HDMI-A-1" })
hl.workspace_rule({ workspace = 6, monitor = "HDMI-A-1" })
-- === OPTIONS GÉNÉRALES ===
hl.config({
xwayland = { force_zero_scaling = true },
misc = { vrr = 2 }, -- 0: off, 1: on, 2: fullscreen only
})
-- === ENVIRONNEMENT ===
hl.env("XDG_SESSION_TYPE", "wayland")
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
-- GPU NVIDIA
hl.env("LIBVA_DRIVER_NAME", "nvidia")
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
hl.env("NVD_BACKEND", "direct")
-- Toolkits
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("GDK_BACKEND", "wayland,x11")
hl.env("SDL_VIDEODRIVER", "wayland")
hl.env("CLUTTER_BACKEND", "wayland")
-- Thème
hl.env("GTK_THEME", "Adwaita:dark")
hl.env("QT_STYLE_OVERRIDE", "adwaita-dark")
-- Curseur
hl.env("XCURSOR_THEME", "Adwaita")
hl.env("XCURSOR_SIZE", 24)
-- === CLAVIER & TRACKPAD ===
hl.config({
input = {
kb_layout = "fr",
kb_options = "caps:shiftlock",
numlock_by_default = true,
follow_mouse = 1,
touchpad = {
natural_scroll = true,
tap_to_click = true,
},
scroll_factor = 1.0,
},
})
-- === RACCOURCIS CLAVIER ===
local mainMod = "SUPER"
-- Lanceurs
hl.bind(mainMod .. " + C", hl.dsp.exec_cmd("alacritty"))
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd("thunar"))
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd("rofi -show drun"))
hl.bind(mainMod .. " + L", hl.dsp.exec_cmd("hyprlock"))
hl.bind(mainMod .. " + V", hl.dsp.exec_cmd("cliphist list | rofi -dmenu | cliphist decode | wl-copy"))
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("thunar"))
hl.bind(mainMod .. " + P", hl.dsp.exec_cmd("~/scripts/display-manager.sh"))
-- Gestion des fenêtres
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
hl.bind(mainMod .. " + X", hl.dsp.window.float())
hl.bind(mainMod .. " + M", hl.dsp.exit())
hl.bind(mainMod .. " + SHIFT + F", hl.dsp.window.float())
hl.bind(mainMod .. " + SHIFT + G", hl.dsp.window.pin())
-- Redimensionnement (via hyprctl pour compatibilité)
hl.bind(mainMod .. " + SHIFT + Right", hl.dsp.exec_cmd("hyprctl dispatch resizeactive 50 0"))
hl.bind(mainMod .. " + SHIFT + Left", hl.dsp.exec_cmd("hyprctl dispatch resizeactive -50 0"))
hl.bind(mainMod .. " + SHIFT + Up", hl.dsp.exec_cmd("hyprctl dispatch resizeactive 0 -50"))
hl.bind(mainMod .. " + SHIFT + Down", hl.dsp.exec_cmd("hyprctl dispatch resizeactive 0 50"))
-- Déplacement avec la souris (bindm)
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-- Extinction / redémarrage
hl.bind(mainMod .. " + ugrave", hl.dsp.exec_cmd("systemctl poweroff"))
hl.bind(mainMod .. " + asterisk", hl.dsp.exec_cmd("systemctl reboot"))
-- Navigation des workspaces (AZERTY)
hl.bind(mainMod .. " + ampersand", hl.dsp.focus({ workspace = 1 }))
hl.bind(mainMod .. " + eacute", hl.dsp.focus({ workspace = 2 }))
hl.bind(mainMod .. " + quotedbl", hl.dsp.focus({ workspace = 3 }))
hl.bind(mainMod .. " + apostrophe",hl.dsp.focus({ workspace = 4 }))
hl.bind(mainMod .. " + parenleft", hl.dsp.focus({ workspace = 5 }))
hl.bind(mainMod .. " + minus", hl.dsp.focus({ workspace = 6 }))
-- Déplacement des fenêtres vers les workspaces (SHIFT + AZERTY)
hl.bind(mainMod .. " + SHIFT + ampersand", hl.dsp.window.move({ workspace = 1 }))
hl.bind(mainMod .. " + SHIFT + eacute", hl.dsp.window.move({ workspace = 2 }))
hl.bind(mainMod .. " + SHIFT + quotedbl", hl.dsp.window.move({ workspace = 3 }))
hl.bind(mainMod .. " + SHIFT + apostrophe", hl.dsp.window.move({ workspace = 4 }))
hl.bind(mainMod .. " + SHIFT + parenleft", hl.dsp.window.move({ workspace = 5 }))
hl.bind(mainMod .. " + SHIFT + minus", hl.dsp.window.move({ workspace = 6 }))
-- Captures d'écran
hl.bind("Print", hl.dsp.exec_cmd("grim -g \"$(slurp)\" - | wl-copy"))
hl.bind("SHIFT + Print", hl.dsp.exec_cmd("grimblast copy screen"))
-- Contrôles matériels (bindl / bindel)
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set 5%+"), { locked = true })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"), { locked = true })
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pamixer -i 5"), { locked = true })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pamixer -d 5"), { locked = true })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pamixer -t"), { locked = true })
-- === RÈGLES POUR LES FENÊTRES ===
hl.window_rule({ name = "workspace_1", match = { class = "^(Alacritty)$" }, workspace = 1 })
hl.window_rule({ name = "workspace_2", match = { title = "^(Obsidian)$" }, workspace = 2 })
hl.window_rule({ name = "workspace_3", match = { title = "^(Beeper)$" }, workspace = 3 })
hl.window_rule({ name = "workspace_4", match = { class = "^(firefox)$" }, workspace = 4 })
hl.window_rule({ name = "workspace_5", match = { class = "^(org.inkscape.Inkscape)$" }, workspace = 5 })
hl.window_rule({ name = "workspace_6", match = { title = "^(ncspot)$" }, workspace = 6 })
hl.window_rule({ name = "workspace_6", match = { title = "^(Kasts)$" }, workspace = 6 })
-- === APPARENCE ===
hl.config({
general = {
gaps_in = 0,
gaps_out = 0,
border_size = 0,
layout = "dwindle",
col = {
active_border = { colors = { "rgb(cba6f7)", "rgb(89b4fa)" }, angle = 45 },
inactive_border = "rgba(1e1e2eaa)",
},
},
decoration = {
rounding = 3,
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = false,
range = 4,
render_power = 3,
color = "rgba(1a1a1aee)",
},
blur = {
enabled = false,
size = 3,
passes = 1,
},
},
cursor = {
no_hardware_cursors = true,
},
})
-- === DÉMARRAGE AUTOMATIQUE (exec-once) ===
hl.on("hyprland.start", function()
hl.exec_cmd("/home/lucas/scripts/hdm-config-select.sh")
hl.exec_cmd(
"bash -c 'while [ $(hyprctl monitors | grep -c \"Monitor\") -lt 2 ]; do sleep 1; done; hyprdynamicmonitors'"
)
hl.exec_cmd("waybar")
hl.exec_cmd("mako")
hl.exec_cmd("~/scripts/hypridle-launch")
hl.exec_cmd("nm-applet --indicator")
hl.exec_cmd("blueman-applet")
hl.exec_cmd("kdeconnectd")
hl.exec_cmd("xdg-user-dirs-update")
hl.exec_cmd("xapp-sn-watcher")
hl.exec_cmd("/usr/lib/polkit-kde-authentication-agent-1")
hl.exec_cmd("wl-paste --type text --watch cliphist store")
hl.exec_cmd("wl-paste --type image --watch cliphist store")
hl.exec_cmd("~/.config/hypr/scripts/wallpaper.sh")
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'")
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'")
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland")
hl.exec_cmd("/usr/lib/xdg-desktop-portal-hyprland")
-- Les portails avec délai
hl.exec_cmd("sleep 1 && /usr/lib/xdg-desktop-portal-gtk")
hl.exec_cmd("sleep 2 && /usr/lib/xdg-desktop-portal -r")
end)