-- Hyprland - https://wiki.hypr.land/Configuring/Start/ -- Raccourcis repris de programs/i3.nix (bépo), apparence reprise d'Omarchy : -- https://github.com/basecamp/omarchy/tree/master/default/hypr local mod = "SUPER" local function bind(keys, dispatcher, options) if type(dispatcher) == "string" then dispatcher = hl.dsp.exec_cmd(dispatcher) end hl.bind(keys, dispatcher, options or {}) end -- Écrans : détection automatique (remplace autorandr) hl.monitor({ output = "", mode = "preferred", position = "auto", scale = "auto" }) hl.env("XCURSOR_SIZE", "24") hl.env("GDK_BACKEND", "wayland,x11,*") hl.env("QT_QPA_PLATFORM", "wayland;xcb") hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland") hl.env("TERMINAL", "ghostty") hl.config({ input = { kb_layout = "fr", kb_variant = "bepo", follow_mouse = 1, repeat_rate = 40, repeat_delay = 250, numlock_by_default = true, touchpad = { clickfinger_behavior = true, scroll_factor = 0.4, }, }, general = { gaps_in = 5, gaps_out = 10, border_size = 2, col = { active_border = { colors = { "rgba(33ccffee)", "rgba(00ff99ee)" }, angle = 45 }, inactive_border = "rgba(595959aa)", }, resize_on_border = true, layout = "dwindle", }, decoration = { rounding = 0, shadow = { enabled = false }, blur = { enabled = false }, }, animations = { enabled = true }, dwindle = { preserve_split = true, force_split = 2, }, misc = { disable_hyprland_logo = true, disable_splash_rendering = true, background_color = "rgb(000000)", focus_on_activate = true, }, -- Remplace unclutter cursor = { inactive_timeout = 3 }, }) hl.on("hyprland.start", function() hl.exec_cmd("waybar") hl.exec_cmd("swaybg --mode fill --image /home/pierre/Documents/Graphisme/fc-bg-light-black.png") hl.exec_cmd("copyq") end) -- Applications bind(mod .. " + Return", "~/.local/bin/workspace-run ghostty --working-directory=") bind(mod .. " + SHIFT + Return", "~/.local/bin/workspace-run code") bind(mod .. " + d", "rofi -combi-modi 'window#run#ssh#emoji#calc' -modi 'calc#combi' -show combi") bind(mod .. " + space", "~/.local/bin/stt-dictate toggle") bind(mod .. " + SHIFT + t", "hyprlock") bind("Print", "grim -g \"$(slurp)\" - | wl-copy") bind("SHIFT + Print", "grim - | wl-copy") -- Fenêtres (mêmes touches qu'i3 en bépo) bind(mod .. " + b", hl.dsp.window.close()) bind(mod .. " + e", hl.dsp.window.fullscreen({ mode = "fullscreen" })) bind(mod .. " + p", hl.dsp.layout("togglesplit")) -- Pas de layout tabbed/stacking dans Hyprland : les groupes en sont l'équivalent bind(mod .. " + eacute", hl.dsp.group.toggle()) bind(mod .. " + u", hl.dsp.group.next()) bind(mod .. " + SHIFT + space", hl.dsp.window.float({ action = "toggle" })) for _, arrow in ipairs({ { "Left", "l" }, { "Right", "r" }, { "Up", "u" }, { "Down", "d" } }) do local key, direction = arrow[1], arrow[2] bind(mod .. " + " .. key, hl.dsp.focus({ direction = direction })) bind(mod .. " + SHIFT + " .. key, hl.dsp.window.swap({ direction = direction })) bind(mod .. " + CTRL + " .. key, hl.dsp.workspace.move({ monitor = direction })) end bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) -- Espaces de travail : keycodes 10 à 19 = rangée du haut, quelle que soit la -- disposition (" « » ( ) @ + - / * en bépo) for workspace = 1, 10 do local key = "code:" .. tostring(workspace + 9) bind(mod .. " + " .. key, hl.dsp.focus({ workspace = tostring(workspace) })) bind(mod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = tostring(workspace) })) end -- Session bind(mod .. " + SHIFT + c", "hyprctl reload") bind(mod .. " + SHIFT + e", "uwsm stop") -- Touches multimédia (actives même écran verrouillé) local media = { locked = true, repeating = true } bind("XF86AudioRaiseVolume", "pactl set-sink-volume @DEFAULT_SINK@ +5%", media) bind("XF86AudioLowerVolume", "pactl set-sink-volume @DEFAULT_SINK@ -5%", media) bind("XF86AudioMute", "pactl set-sink-mute @DEFAULT_SINK@ toggle", { locked = true }) bind("XF86AudioPlay", "playerctl play-pause", { locked = true }) bind("XF86AudioPause", "playerctl play-pause", { locked = true }) bind("XF86AudioNext", "playerctl next", { locked = true }) bind("XF86AudioPrev", "playerctl previous", { locked = true }) bind("XF86MonBrightnessUp", "brightnessctl set +5%", media) bind("XF86MonBrightnessDown", "brightnessctl set 5%-", media)