added Hyprland config
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
-- version 1
|
||||||
|
-- last change: Fri 2026-06-12 using Hyprland v0.55.3-1
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Start/ for more
|
||||||
|
|
||||||
|
--- Modules
|
||||||
|
require("modules.env")
|
||||||
|
require("modules.monitors")
|
||||||
|
require("modules.autostart")
|
||||||
|
require("modules.binds")
|
||||||
|
require("modules.layouts")
|
||||||
|
require("modules.misc")
|
||||||
|
require("modules.input")
|
||||||
|
require("modules.windowrules")
|
||||||
|
require("modules.workspaces")
|
||||||
|
require("modules.styling")
|
||||||
|
|
||||||
|
--- Plugins
|
||||||
|
-- require("plugins.hyprbars")
|
||||||
|
-- require("plugins.hyprexpo")
|
||||||
|
-- TODO: check syntax:
|
||||||
|
-- require("plugins.dynamic-cursors")
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
----- PERMISSIONS -----
|
||||||
|
-----------------------
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
||||||
|
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||||
|
-- for security reasons
|
||||||
|
|
||||||
|
-- TODO: checkout permissions
|
||||||
|
|
||||||
|
-- hl.config({
|
||||||
|
-- ecosystem = {
|
||||||
|
-- enforce_permissions = true,
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow")
|
||||||
|
-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow")
|
||||||
|
-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow")
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
-------------------
|
||||||
|
---- AUTOSTART ----
|
||||||
|
-------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
||||||
|
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
hl.exec_cmd("hyprpm reload")
|
||||||
|
hl.exec_cmd("sleep 1 && waybar")
|
||||||
|
hl.exec_cmd("dinit >> ~/.local/share/dinit/dinit.log &")
|
||||||
|
hl.exec_cmd("hyprland-autoname-workspaces --dedup &")
|
||||||
|
hl.exec_cmd("~/.config/hypr/xdg-portal-hyprland")
|
||||||
|
hl.exec_cmd("/bin/kdeconnectd")
|
||||||
|
hl.exec_cmd("/bin/kdeconnect-indicator")
|
||||||
|
hl.exec_cmd("sleep 2 && /usr/bin/coolercontrol")
|
||||||
|
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &")
|
||||||
|
hl.exec_cmd("/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &")
|
||||||
|
hl.exec_cmd("sh ~/.local/bin/setbg --restore")
|
||||||
|
hl.exec_cmd("test $(hostname)=nightfury && sleep 0.3 && openrgb -p jo.orp")
|
||||||
|
hl.exec_cmd("dotoold &")
|
||||||
|
hl.exec_cmd("sleep 2 && /usr/bin/python3 ~/.local/bin/fennix/sound_usb_connect.py")
|
||||||
|
hl.exec_cmd("sleep 3 && sh ~/.local/bin/mount_milo")
|
||||||
|
hl.exec_cmd("/opt/svp/SVPManager")
|
||||||
|
hl.exec_cmd("~/.local/bin/signal")
|
||||||
|
hl.exec_cmd("sleep 5 && ~/.local/bin/jellyfin-mpv-shim")
|
||||||
|
end)
|
||||||
@@ -0,0 +1,366 @@
|
|||||||
|
---------------------
|
||||||
|
---- KEYBINDINGS ----
|
||||||
|
---------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
||||||
|
|
||||||
|
---- App variables
|
||||||
|
local terminal = "~/.local/bin/alacritty"
|
||||||
|
local fileManager = "nautilus"
|
||||||
|
local browser = "~/.local/bin/firefox"
|
||||||
|
local editor_gui = "~/.local/bin/zed"
|
||||||
|
local editor_cli = "env -u VIMINIT nvim"
|
||||||
|
local vpn = "/opt/ivpn/ui/bin/ivpn-ui"
|
||||||
|
local mediaPlayer = "/opt/ivpn/ui/bin/ivpn-ui"
|
||||||
|
|
||||||
|
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
|
||||||
|
|
||||||
|
-- Example bind:
|
||||||
|
-- hl.bind("SUPER + Q", hl.dsp.exec_cmd("kitty"), { description = "Open my favourite terminal" })
|
||||||
|
|
||||||
|
-- TODO: Global keybinds for apps
|
||||||
|
-- hl.bind("ALT" .. " + " .. 0, hl.dsp.pass("^(com\\.obsproject\\.Studio)$"))
|
||||||
|
-- hl.bind("ALT" .. " + " .. "p", hl.dsp.pass("^(com\\.obsproject\\.Studio)$"))
|
||||||
|
|
||||||
|
|
||||||
|
-- For ALT + TAB between workspaces
|
||||||
|
hl.config({
|
||||||
|
binds = {
|
||||||
|
workspace_back_and_forth = true,
|
||||||
|
allow_workspace_cycles = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Apps ==========
|
||||||
|
-- TODO: old - remove on next commit:
|
||||||
|
-- bind = $mainMod, D, exec, ~/.local/bin/fzf-search-fennix
|
||||||
|
-- bind = $mainMod SHIFT, D, exec, nautilus --new-window ~/dl
|
||||||
|
-- bind = $mainMod SHIFT, G, exec, flatpak run com.valvesoftware.Steam
|
||||||
|
-- bind = $mainMod SHIFT, S, exec, flatpak run io.github.dweymouth.supersonic
|
||||||
|
-- bind = $mainMod ALT, G, exec, glava
|
||||||
|
-- bind = $mainMod ALT, J, exec, flatpak run io.github.dweymouth.supersonic
|
||||||
|
-- bind = $mainMod ALT, J, exec, flatpak run com.logseq.Logseq
|
||||||
|
-- bind = $mainMod, R, exec, ~/.local/bin/hyprland_rename_ws
|
||||||
|
-- bind = $mainMod SHIFT, L, exec, mpv --no-audio --loop -fs --osc=no --osd-bar=no --config=no ~/.local/share/screensavers/bad_apple.mkv
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal))
|
||||||
|
hl.bind(mainMod .. " + N", hl.dsp.exec_cmd(editor_gui))
|
||||||
|
hl.bind(mainMod .. " + ALT + N", hl.dsp.exec_cmd(editor_gui .. " /mnt/ssd/dox/todo.txt"))
|
||||||
|
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager .. " --new-window"))
|
||||||
|
hl.bind(mainMod .. " + F", hl.dsp.exec_cmd(browser))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + F", hl.dsp.exec_cmd(browser .. " --private-window"))
|
||||||
|
hl.bind("CTRL + ALT + N", hl.dsp.exec_cmd(mediaPlayer .. " --player-operation-mode=pseudo-gui"))
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Scripts ==========
|
||||||
|
hl.bind(mainMod .. " + ALT + P", hl.dsp.exec_cmd("~/.local/bin/firefox2tv &"))
|
||||||
|
hl.bind(mainMod .. " + ALT + P", hl.dsp.exec_cmd("~/.local/bin/firefox2mpv --current &"))
|
||||||
|
hl.bind(mainMod .. " + ALT + P", hl.dsp.exec_cmd("~/.local/bin/firefox2mpv --select &"))
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Hyprland ==========
|
||||||
|
-- TODO: old - remove on next commit:
|
||||||
|
-- bind = SUPER, Tab, hyprexpo:expo, toggle
|
||||||
|
-- bind = SUPER, dead_circumflex, hyprexpo:expo, toggle
|
||||||
|
-- bind = SUPER, Escape, hyprexpo:expo, toggle
|
||||||
|
-- bind = ALT, dead_circumflex, overview:toggle
|
||||||
|
-- bind = ALT, Escape, overview:toggle
|
||||||
|
-- bind = $mainMod SHIFT, E, exit
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("hyprctl reload"))
|
||||||
|
hl.bind(mainMod .. " + ALT + R", hl.dsp.exec_cmd("pkill waybar; hyprctl dispatch exec waybar"))
|
||||||
|
|
||||||
|
--- layouts
|
||||||
|
hl.bind(mainMod .. " + S", hl.dsp.exec_cmd("hyprctl keyword general:layout dwindle"))
|
||||||
|
hl.bind(mainMod .. " + A", hl.dsp.exec_cmd("hyprctl keyword general:layout master"))
|
||||||
|
|
||||||
|
--- windows
|
||||||
|
local closeWindowBind = hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
||||||
|
-- closeWindowBind:set_enabled(false)
|
||||||
|
hl.bind(mainMod .. " + SHIFT + Q", hl.dsp.exec_cmd("hyprctl kill"))
|
||||||
|
hl.bind("ALT + TAB", hl.dsp.focus({ workspace = "previous" }))
|
||||||
|
hl.bind(mainMod .. " + ALT + I", hl.dsp.exec_cmd("dunstify $(hyprctl activewindow -j | jq -r .title)"))
|
||||||
|
|
||||||
|
--- windows > floating
|
||||||
|
--- TODO: fix toggle_floating script with new syntax
|
||||||
|
hl.bind(mainMod .. " + Y", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
-- hl.bind(mainMod .. " + Y", hl.dsp.exec_cmd("~/.local/bin/toggle_floating"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + Y", hl.dsp.exec_cmd("hyprctl dispatch togglefloating active && hyprctl dispatch pin active"))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + V", hl.dsp.exec_cmd("hyprctl dispatch workspaceopt allfloat"))
|
||||||
|
|
||||||
|
--- windows > split (dwindle layout)
|
||||||
|
hl.bind(mainMod .. " + SHIFT + J", hl.dsp.layout("togglesplit")) -- dwindle only
|
||||||
|
|
||||||
|
--- windows > fullscreen / maximize / fake fullscreen
|
||||||
|
hl.bind(mainMod .. " + SHIFT + P", hl.dsp.window.pseudo()) -- dwindle only
|
||||||
|
hl.bind(mainMod .. " + M", hl.dsp.window.fullscreen({ action = "toggle" }))
|
||||||
|
hl.bind(mainMod .. " + SHIFT + M", hl.dsp.window.fullscreen_state({ internal = 0, client = 2 }))
|
||||||
|
-- ^-- keeps the window non-fullscreen, but the client goes into fullscreen mode within the window
|
||||||
|
|
||||||
|
--- move focus with mainMod + arrow keys
|
||||||
|
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" }))
|
||||||
|
|
||||||
|
--- workspaces
|
||||||
|
-- switch workspaces with mainMod + [0-9]
|
||||||
|
-- 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 .. " + " .. key, hl.dsp.focus({ workspace = i}))
|
||||||
|
-- hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- switch workspaces with mainMod + [0-9]
|
||||||
|
hl.bind(mainMod .. " + " .. 1, hl.dsp.focus({ workspace = 5 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 2, hl.dsp.focus({ workspace = 6 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 3, hl.dsp.focus({ workspace = 7 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 4, hl.dsp.focus({ workspace = 8 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 5, hl.dsp.focus({ workspace = 1 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 6, hl.dsp.focus({ workspace = 2 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 7, hl.dsp.focus({ workspace = 3 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 8, hl.dsp.focus({ workspace = 4 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 9, hl.dsp.focus({ workspace = 9 }))
|
||||||
|
hl.bind(mainMod .. " + " .. 0, hl.dsp.focus({ workspace = 10 }))
|
||||||
|
hl.bind(mainMod .. " + " .. "ssharp", hl.dsp.focus({ workspace = 11 }))
|
||||||
|
hl.bind(mainMod .. " + " .. "dead_acute", hl.dsp.focus({ workspace = 12 }))
|
||||||
|
|
||||||
|
-- switch workspaces with mainMod + pageUp/pageDown
|
||||||
|
hl.bind(mainMod .. " + " .. "Next", hl.dsp.focus({ workspace = -1 }))
|
||||||
|
hl.bind(mainMod .. " + " .. "Prior", hl.dsp.focus({ workspace = "+1" }))
|
||||||
|
|
||||||
|
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
-- TODO: check syntax of dsp.widnow.move
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 1, hl.dsp.window.move(5))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 2, hl.dsp.window.move(6))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 3, hl.dsp.window.move(7))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 4, hl.dsp.window.move(8))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 5, hl.dsp.window.move(1))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 6, hl.dsp.window.move(2))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 7, hl.dsp.window.move(3))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 8, hl.dsp.window.move(4))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 9, hl.dsp.window.move(9))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. 0, hl.dsp.window.move(10))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "ssharp", hl.dsp.window.move(11))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "dead_acute", hl.dsp.window.move(12))
|
||||||
|
|
||||||
|
-- Move active window to a workspace with mainMod + SHIFT + pageUp/pageDown
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "Next", hl.dsp.window.move(-1))
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "Prior", hl.dsp.window.move("+1"))
|
||||||
|
|
||||||
|
-- Move workspaces between dual screen setup
|
||||||
|
hl.bind(mainMod .. " + ALT + left", hl.dsp.exec_cmd("hyprctl dispatch movecurrentworkspacetomonitor DP-1"))
|
||||||
|
hl.bind(mainMod .. " + ALT + right", hl.dsp.exec_cmd("hyprctl dispatch movecurrentworkspacetomonitor DP-4"))
|
||||||
|
|
||||||
|
-- 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" }))
|
||||||
|
|
||||||
|
--- TODO: add device specific binds
|
||||||
|
-- thinkpad:
|
||||||
|
-- gpd:
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Rofi ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "B", hl.dsp.exec_cmd("~/.local/bin/poweroptions_rofi"))
|
||||||
|
hl.bind(mainMod .. " + " .. "B", hl.dsp.exec_cmd("notify-send CPU-Profil gewechselt Performance && sudo /usr/bin/cpupower frequency-set -g performance"))
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "B", hl.dsp.exec_cmd("notify-send CPU-Profil gewechselt Powersave && sudo /usr/bin/cpupower frequency-set -g powersave"))
|
||||||
|
hl.bind(mainMod .. " + " .. "C", hl.dsp.exec_cmd("~/.local/bin/rofi_calc"))
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "C", hl.dsp.exec_cmd("~/.local/bin/rofi_calc --normal-window"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "P", hl.dsp.exec_cmd("hyprctl dispatch exec ~/.config/rofi/bin/menu_powermenu"))
|
||||||
|
hl.bind(mainMod .. " + " .. "U", hl.dsp.exec_cmd("~/.local/bin/bemoji"))
|
||||||
|
-- bind = $mainMod, U, exec, rofi -show emoji -modi emoji:/usr/bin/rofimoji --single
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + " .. "space", hl.dsp.exec_cmd("~/.local/bin/rofi_drun"))
|
||||||
|
hl.bind("SUPER" .. " + " .. "SUPER_L", hl.dsp.exec_cmd("~/.local/bin/rofi_drun"), { repeating = true })
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "minus", hl.dsp.exec_cmd("~/.local/bin/mount_rofi"))
|
||||||
|
hl.bind("ALT" .. " + " .. "space", hl.dsp.exec_cmd("zsh -c rofi -show run"))
|
||||||
|
|
||||||
|
-- ========== System control ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "A", hl.dsp.exec_cmd("alacritty -e alsamixer"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "B", hl.dsp.exec_cmd("sh ~/.local/bin/blue_light_filter"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "S", hl.dsp.exec_cmd("pavucontrol"))
|
||||||
|
hl.bind(mainMod .. " + " .. "V", hl.dsp.exec_cmd("dunstctl history-pop"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "V", hl.dsp.exec_cmd("dunstctl history-pop"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "V", hl.dsp.exec_cmd("dunstctl set-paused toggle && pkill -RTMIN+2 waybar"))
|
||||||
|
hl.bind(mainMod .. " + " .. "CTRL + ALT" .. " + " .. "V", hl.dsp.exec_cmd("dunstctl close && pkill -RTMIN+2 waybar"))
|
||||||
|
hl.bind(mainMod .. " + " .. "ALT" .. " + " .. "V", hl.dsp.exec_cmd("dunstctl close && pkill -RTMIN+2 waybar"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "W", hl.dsp.exec_cmd("python ~/.local/src/setbg-gui/azote/azote/v10_abhier.py"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "W", hl.dsp.exec_cmd("python ~/.local/src/setbg-gui/azote/azote/v10_abhier.py"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "W", hl.dsp.exec_cmd("sh ~/.local/bin/setbg --random"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "Escape", hl.dsp.exec_cmd("~/.local/bin/alacritty --class floating -e btop"))
|
||||||
|
-- bind = CTRL ALT, O, exec, switch_output
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Volume control ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -1%"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "numbersign", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -1%"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "numbersign", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -3%"))
|
||||||
|
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +1%"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "plus", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +1%"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "plus", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +3%"))
|
||||||
|
|
||||||
|
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pactl set-sink-mute @DEFAULT_SINK@ toggle"))
|
||||||
|
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("pactl set-source-mute @DEFAULT_SOURCE@ toggle"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "M", hl.dsp.exec_cmd("pactl set-sink-mute @DEFAULT_SINK@ toggle"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "M", hl.dsp.exec_cmd("pactl set-source-mute @DEFAULT_SOURCE@ toggle"))
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== Media control ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
hl.bind(mainMod .. " + " .. "ALT" .. " + " .. "comma", hl.dsp.exec_cmd("playerctl previous"))
|
||||||
|
hl.bind(mainMod .. " + " .. "ALT" .. " + " .. "left", hl.dsp.exec_cmd("playerctl previous"))
|
||||||
|
hl.bind(mainMod .. " + " .. "F7", hl.dsp.exec_cmd("playerctl previous"))
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + " .. "ALT" .. " + " .. "minus", hl.dsp.exec_cmd("playerctl pause"))
|
||||||
|
-- bind = $mainMod ALT, up, exec, playerctl pause
|
||||||
|
-- bind = $mainMod ALT, down, exec, playerctl pause
|
||||||
|
hl.bind(mainMod .. " + " .. "F8", hl.dsp.exec_cmd("playerctl pause"))
|
||||||
|
|
||||||
|
hl.bind(mainMod .. " + " .. "ALT" .. " + " .. "period", hl.dsp.exec_cmd("playerctl next"))
|
||||||
|
-- bind = $mainMod ALT, right, exec, playerctl next
|
||||||
|
hl.bind(mainMod .. " + " .. "F9", hl.dsp.exec_cmd("playerctl next"))
|
||||||
|
|
||||||
|
-- ========== Brightness control ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 3%-"))
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set 3%+"))
|
||||||
|
hl.bind(mainMod .. " + " .. "XF86AudioLowerVolume", hl.dsp.exec_cmd("~/.local/bin/monitor --dimmer"))
|
||||||
|
hl.bind(mainMod .. " + " .. "XF86AudioRaiseVolume", hl.dsp.exec_cmd("~/.local/bin/monitor --brighter"))
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "XF86AudioLowerVolume", hl.dsp.exec_cmd("~/.local/bin/monitor --one_dimmer"))
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "XF86AudioRaiseVolume", hl.dsp.exec_cmd("~/.local/bin/monitor --one_brighter"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "Prior", hl.dsp.exec_cmd("~/.local/bin/monitor --brighter"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "Prior", hl.dsp.exec_cmd("~/.local/bin/monitor --one_brighter"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "Next", hl.dsp.exec_cmd("~/.local/bin/monitor --dimmer"))
|
||||||
|
hl.bind("CTRL + ALT + SHIFT" .. " + " .. "Next", hl.dsp.exec_cmd("~/.local/bin/monitor --one_dimmer"))
|
||||||
|
|
||||||
|
-- ========== Screenshots ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
-- ---- full ----
|
||||||
|
hl.bind("Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --full"))
|
||||||
|
|
||||||
|
-- screenshot of all monitors
|
||||||
|
hl.bind("CTRL" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --full_clipboard"))
|
||||||
|
|
||||||
|
-- ---- Window ----
|
||||||
|
hl.bind("ALT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --window"))
|
||||||
|
hl.bind("ALT" .. " + " .. "ssharp", hl.dsp.exec_cmd("~/.local/bin/screenshot --window"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --window_clipboard"))
|
||||||
|
hl.bind("CTRL + ALT" .. " + " .. "ssharp", hl.dsp.exec_cmd("~/.local/bin/screenshot --window_clipboard"))
|
||||||
|
|
||||||
|
-- ---- Selection ----
|
||||||
|
hl.bind("SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --selection"))
|
||||||
|
hl.bind("SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --selection"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("~/.local/bin/screenshot --selection_clipboard"))
|
||||||
|
hl.bind("CTRL + SHIFT" .. " + " .. "ssharp", hl.dsp.exec_cmd("~/.local/bin/screenshot --selection_clipboard"))
|
||||||
|
|
||||||
|
-- ---- Monitor ----
|
||||||
|
hl.bind(mainMod .. " + " .. "print", hl.dsp.exec_cmd("~/.local/bin/screenshot --monitor"))
|
||||||
|
hl.bind(mainMod .. " + " .. "CTRL" .. " + " .. "print", hl.dsp.exec_cmd("~/.local/bin/screenshot --monitor_clipboard"))
|
||||||
|
|
||||||
|
-- ---- Open file / folder ----
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("nautilus --new-window ~/pix/screenshots/nightfury/"))
|
||||||
|
hl.bind(mainMod .. " + " .. "CTRL + SHIFT" .. " + " .. "Print", hl.dsp.exec_cmd("imv-dir ~/pix/screenshots/nightfury/$(ls -Art ~/pix/screenshots| tail -n 1)"))
|
||||||
|
|
||||||
|
-- TODO:
|
||||||
|
-- dunstify actions to open file in imv or nautlus
|
||||||
|
-- SUPER + SHIFT + print open image in imv (or standard image viewer) - if already image in clipboard, save to tmp and open
|
||||||
|
-- super + ALT+ print open latest file in gimp, if already in clipboard, then open that
|
||||||
|
-- dismissed idea - copy latest file to clipboard, ignore if theres already a picture in the clipboard
|
||||||
|
-- use copy montor to clipboard instead - (just copy/paste or open folder)
|
||||||
|
-- CTRL + SUPER + PRINT copy latest screenshot to clipboard
|
||||||
|
|
||||||
|
|
||||||
|
-- ========== window management ==========
|
||||||
|
-- TODO: formatting/string cleanup
|
||||||
|
-- Move focus with mainMod + j i k l
|
||||||
|
hl.bind(mainMod .. " + " .. "j", hl.dsp.focus({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "k", hl.dsp.focus({ direction = "down" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "i", hl.dsp.focus({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "l", hl.dsp.focus({ direction = "right" }))
|
||||||
|
|
||||||
|
-- Move focus with mainMod + vim keys
|
||||||
|
-- bind = $mainMod, h, movefocus, l
|
||||||
|
-- bind = $mainMod, j, movefocus, d
|
||||||
|
-- bind = $mainMod, k, movefocus, u
|
||||||
|
-- bind = $mainMod, l, movefocus, r
|
||||||
|
|
||||||
|
-- Move focus with mainMod + arrow keys
|
||||||
|
hl.bind(mainMod .. " + " .. "left", hl.dsp.focus({ direction = "left" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "right", hl.dsp.focus({ direction = "right" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "up", hl.dsp.focus({ direction = "up" }))
|
||||||
|
hl.bind(mainMod .. " + " .. "down", hl.dsp.focus({ direction = "down" }))
|
||||||
|
|
||||||
|
-- Toggle split direction
|
||||||
|
hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "minus", hl.dsp.layout("togglesplit"))
|
||||||
|
hl.bind(mainMod .. " + " .. "minus", hl.dsp.layout("togglesplit"))
|
||||||
|
hl.bind(mainMod .. " + " .. "x", hl.dsp.layout("togglesplit"))
|
||||||
|
|
||||||
|
-- Resize windows, standard was 50 without animations
|
||||||
|
-- TODO: manual review (unknown dispatcher: resizeactive)
|
||||||
|
-- hl.bind("$mainMod + CTRL + left", hl.dsp.resizeactive("-70 0"))
|
||||||
|
|
||||||
|
-- TODO: manual review (unknown dispatcher: resizeactive)
|
||||||
|
-- hl.bind("$mainMod + CTRL + right", hl.dsp.resizeactive("70 0"))
|
||||||
|
|
||||||
|
-- TODO: manual review (unknown dispatcher: resizeactive)
|
||||||
|
-- hl.bind("$mainMod + CTRL + up", hl.dsp.resizeactive("0 -70"))
|
||||||
|
|
||||||
|
-- TODO: manual review (unknown dispatcher: resizeactive)
|
||||||
|
-- hl.bind("$mainMod + CTRL + down", hl.dsp.resizeactive("0 70"))
|
||||||
|
|
||||||
|
-- Move windows
|
||||||
|
-- TODO: check syntax of dispatcher
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "left", { direction = "l" })
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "right", { direction = "r" })
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "up", { direction = "u" })
|
||||||
|
-- hl.bind(mainMod .. " + " .. "SHIFT" .. " + " .. "down", { direction = "d" })
|
||||||
|
|
||||||
|
-- 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 })
|
||||||
|
hl.bind("SUPER" .. " + " .. "g", hl.dsp.group.toggle())
|
||||||
|
hl.bind("SUPER" .. " + " .. "tab", hl.dsp.group.next({ forward = false }))
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO: check example config
|
||||||
|
-- -- 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 multimedia keys for volume and LCD brightness
|
||||||
|
-- hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
|
||||||
|
-- hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
|
||||||
|
-- hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
|
||||||
|
-- hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
||||||
|
-- hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
||||||
|
-- hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
-- -- Requires playerctl
|
||||||
|
-- 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 })
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO (from Hyprland dev Vaxry):
|
||||||
|
-- open a (small) flatpak app on a hidden workspace at startup and then close it,
|
||||||
|
-- so the flatpak stuff is preloaded and app startup is faster
|
||||||
|
-- bind = $mainMod SHIFT, Return, exec, [workspace 2 silent;float;noanim] alacritty
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
-------------------------------
|
||||||
|
---- ENVIRONMENT VARIABLES ----
|
||||||
|
-------------------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
||||||
|
|
||||||
|
---@module 'hl'
|
||||||
|
|
||||||
|
-- Default hyprland env vars:
|
||||||
|
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
|
||||||
|
hl.env("XDG_SESSION_TYPE", "wayland")
|
||||||
|
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
|
||||||
|
|
||||||
|
-- Default XDG env vars:
|
||||||
|
hl.env("XDG_CONFIG_HOME", os.getenv("HOME").."/.config")
|
||||||
|
hl.env("XDG_DATA_HOME", os.getenv("HOME").."/.local/share")
|
||||||
|
hl.env("XDG_CACHE_HOME", os.getenv("HOME").."/.cache")
|
||||||
|
hl.env("XDG_STATE_HOME", os.getenv("HOME").."/.local/state")
|
||||||
|
|
||||||
|
-- Hi-DPI:
|
||||||
|
hl.env("STEAM_FORCE_DESKTOPUI_SCALING", "2.0")
|
||||||
|
|
||||||
|
-- GTK / GDK / electron wayland
|
||||||
|
hl.env("GDK_BACKEND", "wayland,x11")
|
||||||
|
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
|
||||||
|
|
||||||
|
-- Default apps:
|
||||||
|
hl.env("TERMINAL", "alacritty")
|
||||||
|
hl.env("EDITOR", "zed")
|
||||||
|
hl.env("DIFFPROG", "nvim -d local_var_1")
|
||||||
|
hl.env("BROWSER", os.getenv("HOME").."/.local/bin/firefox")
|
||||||
|
|
||||||
|
-- Themes / visual stuff:
|
||||||
|
hl.env("ADW_COLOR_SCHEME_FORCE_DARK", "1")
|
||||||
|
hl.env("XCURSOR_PATH", "/usr/share/icons:"..os.getenv("XDG_CONFIG_HOME").."/icons")
|
||||||
|
hl.env("XCURSOR_SIZE","30")
|
||||||
|
hl.env("XCURSOR_THEME", "Bibata-Modern-Ice")
|
||||||
|
hl.env("HYPRCURSOR_SIZE", "30")
|
||||||
|
-- env = QT_QPA_PLATFORMTHEME, qt5ct
|
||||||
|
hl.env("QT_STYLE_OVERRIDE", "kvantum")
|
||||||
|
hl.env("LS_COLORS", "$(vivid generate catppuccin-mocha)")
|
||||||
|
|
||||||
|
-- App settings (home clean-up):
|
||||||
|
-- hl.env("ANDROID_SDK_HOME", "${XDG_CONFIG_HOME:-$HOME/.config}/android")
|
||||||
|
-- hl.env("ADB_VENDOR_KEY", "${XDG_CONFIG_HOME:-$HOME/.config}/android")
|
||||||
|
hl.env("ANDROID_HOME", os.getenv("XDG_DATA_HOME").."/android")
|
||||||
|
hl.env("GNUPGHOME", os.getenv("XDG_DATA_HOME").."/gnupg")
|
||||||
|
hl.env("CARGO_HOME", os.getenv("XDG_DATA_HOME").."/cargo")
|
||||||
|
hl.env("GOPATH", os.getenv("XDG_DATA_HOME").."/go")
|
||||||
|
hl.env("GOPATH", os.getenv("XDG_CACHE_HOME").."/NuGetPackages")
|
||||||
|
hl.env("_JAVA_OPTIONS", "-Djava.util.prefs.userRoot="..os.getenv("XDG_CONFIG_HOME").."/java")
|
||||||
|
hl.env("MOZ_ENABLE_WAYLAND", "1")
|
||||||
|
hl.env("NPM_CONFIG_USERCONFIG", os.getenv("XDG_CONFIG_HOME").."/npm/npmrc")
|
||||||
|
hl.env("HISTFILE", os.getenv("XDG_STATE_HOME").."/bash/history")
|
||||||
|
|
||||||
|
-- fix for failing to set vapoursynth path ($ vapoursynth check-env)
|
||||||
|
hl.env("VSSCRIPT_PATH", "/home/tobias/.local/lib/python3.14/site-packages/vapoursynth/libvsscript.so")
|
||||||
|
-- env = VSSCRIPT_PATH, /usr/lib/python3.14/site-packages/vapoursynth/libvsscript.so
|
||||||
|
|
||||||
|
-- env = GNUPGHOME, $XDG_DATA_HOME/gnupg
|
||||||
|
|
||||||
|
-- fix Nautilus GTK4 (version 43 and above) slow navigation/file browsing
|
||||||
|
-- see https://gitlab.gnome.org/GNOME/gtk/-/issues/4831#note_1426699
|
||||||
|
-- and https://gitlab.gnome.org/GNOME/nautilus/-/issues/2666
|
||||||
|
-- Matthias Clasen (@mathiasc), Maintainer GNOME/gtk:
|
||||||
|
-- "We expect the a11y infrastructure to be present.
|
||||||
|
-- You can set GTK_A11Y=none in the environment to run without accessibility."
|
||||||
|
hl.env("GTK_A11Y", "none")
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
---------------
|
||||||
|
---- INPUT ----
|
||||||
|
---------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
--- keyboard
|
||||||
|
kb_layout = "de",
|
||||||
|
kb_variant = "",
|
||||||
|
kb_model = "",
|
||||||
|
kb_options = "",
|
||||||
|
kb_rules = "",
|
||||||
|
repeat_delay = 180, -- default: 600 (ms) - was 200ms until Wed 2026-05-20
|
||||||
|
repeat_rate = 35, -- default: 25 (repeats per second)
|
||||||
|
|
||||||
|
--- mouse
|
||||||
|
follow_mouse = 1,
|
||||||
|
accel_profile = "flat",
|
||||||
|
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
--- touchpad
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = true,
|
||||||
|
middle_button_emulation = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ========== gestures ==========
|
||||||
|
hl.gesture({
|
||||||
|
fingers = 3,
|
||||||
|
direction = "horizontal",
|
||||||
|
action = "workspace"
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ========== devices ==========
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
|
||||||
|
|
||||||
|
hl.device({
|
||||||
|
name = "ergo-m575-mouse",
|
||||||
|
accel_profile = "adaptive",
|
||||||
|
})
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
-----------------
|
||||||
|
---- LAYOUTS ----
|
||||||
|
-----------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
-- See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
layout = "dwindle",
|
||||||
|
gaps_in = 5, -- int default: 10 - previously: 6
|
||||||
|
gaps_out = 10, -- int default: 20 - previously: 10
|
||||||
|
border_size = 2,
|
||||||
|
resize_on_border = true,
|
||||||
|
hover_icon_on_border = true,
|
||||||
|
-- extend_border_grab_area = 200,
|
||||||
|
|
||||||
|
snap = {
|
||||||
|
enabled = true, -- bool default: false
|
||||||
|
window_gap = 10, -- int default: 10
|
||||||
|
monitor_gap = 10, -- int default: 10
|
||||||
|
},
|
||||||
|
|
||||||
|
col = {
|
||||||
|
active_border = { colors = { "rgba(33ccffee)", "rgba(ee11eeee)" }, angle = 45 },
|
||||||
|
inactive_border = { colors = { "rgb(303046)", "rgb(303046)" }, angle = 90 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
--- dwindle layout - see https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
dwindle = {
|
||||||
|
force_split = 0,
|
||||||
|
preserve_split = false,
|
||||||
|
preserve_split = true, -- you probably want this
|
||||||
|
smart_split = false,
|
||||||
|
smart_resizing = true,
|
||||||
|
permanent_direction_override = false,
|
||||||
|
special_scale_factor = 1,
|
||||||
|
split_width_multiplier = 1.0,
|
||||||
|
use_active_for_splits = true,
|
||||||
|
default_split_ratio = 1.0,
|
||||||
|
split_bias = 0,
|
||||||
|
precise_mouse_move = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
--- master layout - see https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
master = {
|
||||||
|
new_status = "master",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
--- scrolling layout - see https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
scrolling = {
|
||||||
|
fullscreen_on_one_column = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
----------------
|
||||||
|
---- MISC ----
|
||||||
|
----------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true,
|
||||||
|
focus_on_activate = true,
|
||||||
|
disable_splash_rendering = true,
|
||||||
|
enable_swallow = true,
|
||||||
|
animate_manual_resizes = true,
|
||||||
|
animate_mouse_windowdragging = true,
|
||||||
|
|
||||||
|
-- mouse_move_enables_dpms = true
|
||||||
|
-- no_direct_scanout = true -- for fullscreen games
|
||||||
|
-- swallow_regex = ^(kitty)$
|
||||||
|
-- focus_on_activate = true
|
||||||
|
|
||||||
|
-- v0.55.0: misc:vfr moved to debug: as it's a debug variable that should not be changed in prod environments
|
||||||
|
-- vfr = true
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
------------------
|
||||||
|
---- MONITORS ----
|
||||||
|
------------------
|
||||||
|
-- version 1
|
||||||
|
-- last change: Fri 2026-06-12
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
||||||
|
|
||||||
|
-- To list all available monitors (active and inactive):
|
||||||
|
-- $ hyprctl monitors all
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
render = {
|
||||||
|
cm_auto_hdr = 1,
|
||||||
|
direct_scanout = 1,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:Acer Technologies VG270U P 0x847015E8",
|
||||||
|
mode = "preferred",
|
||||||
|
position = "0x0",
|
||||||
|
scale = "1",
|
||||||
|
vrr = 2,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:LG Electronics LG ULTRAGEAR+ 310NTWGDY841",
|
||||||
|
mode = "preferred",
|
||||||
|
position = "2560x0",
|
||||||
|
scale = "1.25",
|
||||||
|
bitdepth = 10,
|
||||||
|
cm = "srgb",
|
||||||
|
-- cm = "hdr",
|
||||||
|
vrr = 1,
|
||||||
|
supports_wide_color = true,
|
||||||
|
supports_hdr = true,
|
||||||
|
sdrbrightness = "1.05",
|
||||||
|
sdrsaturation = "1.15",
|
||||||
|
-- sdr_min_luminance = 1
|
||||||
|
sdr_min_luminance = "0.8",
|
||||||
|
sdr_max_luminance = 280,
|
||||||
|
min_luminance = 0,
|
||||||
|
max_luminance = 1000,
|
||||||
|
max_avg_luminance = 200
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:Samsung Electric Company Odyssey G70B H1AK500000",
|
||||||
|
mode = "preferred",
|
||||||
|
position = "auto-right",
|
||||||
|
scale = "1.25",
|
||||||
|
bitdepth = 10,
|
||||||
|
cm = "srgb",
|
||||||
|
-- cm = "hdr",
|
||||||
|
vrr = 1,
|
||||||
|
supports_wide_color = true,
|
||||||
|
supports_hdr = true,
|
||||||
|
sdrbrightness = "1.1",
|
||||||
|
sdrsaturation = "1.0",
|
||||||
|
-- sdr_min_luminance = "1",
|
||||||
|
sdr_min_luminance = "0.1",
|
||||||
|
-- sdr_max_luminance = "200",
|
||||||
|
-- min_luminance = "0",
|
||||||
|
-- max_luminance = "1000",
|
||||||
|
max_avg_luminance = 200
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:LG Electronics LG TV 0x01010101",
|
||||||
|
mode = "3840x2160@60",
|
||||||
|
position = "auto-right",
|
||||||
|
scale = "2",
|
||||||
|
bitdepth = 10,
|
||||||
|
-- cm = "srgb",
|
||||||
|
cm = "hdr",
|
||||||
|
scale = "1",
|
||||||
|
-- vrr = "1",
|
||||||
|
supports_wide_color = true,
|
||||||
|
supports_hdr = true,
|
||||||
|
sdrbrightness = "1.1",
|
||||||
|
sdrsaturation = "1.0",
|
||||||
|
-- sdr_min_luminance = "1",
|
||||||
|
sdr_min_luminance = "0.1",
|
||||||
|
-- sdr_max_luminance = "200",
|
||||||
|
-- min_luminance = "0",
|
||||||
|
-- max_luminance = "1000",
|
||||||
|
max_avg_luminance = 200
|
||||||
|
})
|
||||||
|
|
||||||
|
-- hl.monitor({ output = "desc:LG Electronics LG TV 0x01010101" disabled = true })
|
||||||
|
-- hl.monitor({ output = "desc:Yamaha Corporation RX-S602" disabled = true })
|
||||||
|
|
||||||
|
-- This will make any monitor that was not specified with an explicit rule
|
||||||
|
-- automatically placed on the right of the other(s), with its preferred resolution.
|
||||||
|
-- Recommended rule for quickly plugging in random monitors:
|
||||||
|
hl.monitor({
|
||||||
|
output = "",
|
||||||
|
mode = "preferred",
|
||||||
|
position = "auto",
|
||||||
|
scale = 1,
|
||||||
|
})
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
-----------------------
|
||||||
|
---- LOOK AND FEEL ----
|
||||||
|
-----------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Variables/ for more
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
rounding = 12, -- 5 until 2025-07-07. then 12 | 8px -> hyprbars
|
||||||
|
dim_inactive = false,
|
||||||
|
dim_strength = 0.1,
|
||||||
|
dim_special = 0,
|
||||||
|
shadow = {
|
||||||
|
enabled = true, -- bool default: true
|
||||||
|
range = 22, -- int default: 4
|
||||||
|
render_power = 3, -- int default: 3
|
||||||
|
color = "rgba(00000070)", -- color default: 0xee1a1a1a old-setting: #rgba(00000077) rgba(1a1a1aee)
|
||||||
|
offset = "0 0",
|
||||||
|
-- vec2 = "0 0", -- default: [0, 0] old-setting: 7 7
|
||||||
|
-- sharp = false -- bool default: false
|
||||||
|
-- ignore_window = true -- bool default: true
|
||||||
|
-- color_inactive -- color default: unset
|
||||||
|
-- scale = 1.0 -- float default: 1.0
|
||||||
|
},
|
||||||
|
|
||||||
|
-- multisample_edges = true
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true,
|
||||||
|
size = 12, -- zuvor 5
|
||||||
|
passes = 4,
|
||||||
|
new_optimizations = true,
|
||||||
|
xray = false,
|
||||||
|
popups = true,
|
||||||
|
contrast = 1.0,
|
||||||
|
brightness = 1,
|
||||||
|
-- noise = 0.1
|
||||||
|
-- ignore_opacity = false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
animations = {
|
||||||
|
enabled = true,
|
||||||
|
-- Animation curves
|
||||||
|
-- Animation configs
|
||||||
|
-- der windows 11 dude:
|
||||||
|
-- Animation curves
|
||||||
|
-- bezier = md3_standard, 0.2, 0, 0, 1
|
||||||
|
-- bezier = md3_decel, 0.05, 0.7, 0.1, 1
|
||||||
|
-- bezier = md3_accel, 0.3, 0, 0.8, 0.15
|
||||||
|
-- bezier = overshot, 0.05, 0.9, 0.1, 1.1
|
||||||
|
-- bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
|
||||||
|
-- bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
|
||||||
|
-- bezier = fluent_decel, 0.1, 1, 0, 1
|
||||||
|
-- # Animation configs
|
||||||
|
-- animation = windows, 1, 2, md3_decel, popin 80%
|
||||||
|
-- animation = border, 1, 10, default
|
||||||
|
-- animation = fade, 1, 2, default
|
||||||
|
-- animation = workspaces, 1, 3, md3_decel
|
||||||
|
-- animation = specialWorkspace, 1, 3, md3_decel, slidevert
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- hl.config({
|
||||||
|
-- general = {
|
||||||
|
-- gaps_in = 5,
|
||||||
|
-- gaps_out = 20,
|
||||||
|
|
||||||
|
-- border_size = 2,
|
||||||
|
|
||||||
|
-- col = {
|
||||||
|
-- active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 },
|
||||||
|
-- inactive_border = "rgba(595959aa)",
|
||||||
|
-- },
|
||||||
|
|
||||||
|
-- -- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
-- resize_on_border = false,
|
||||||
|
|
||||||
|
-- -- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
||||||
|
-- allow_tearing = false,
|
||||||
|
|
||||||
|
-- layout = "dwindle",
|
||||||
|
-- },
|
||||||
|
|
||||||
|
-- decoration = {
|
||||||
|
-- rounding = 10,
|
||||||
|
-- rounding_power = 2,
|
||||||
|
|
||||||
|
-- -- Change transparency of focused and unfocused windows
|
||||||
|
-- active_opacity = 1.0,
|
||||||
|
-- inactive_opacity = 1.0,
|
||||||
|
|
||||||
|
-- shadow = {
|
||||||
|
-- enabled = true,
|
||||||
|
-- range = 4,
|
||||||
|
-- render_power = 3,
|
||||||
|
-- color = 0xee1a1a1a,
|
||||||
|
-- },
|
||||||
|
|
||||||
|
-- blur = {
|
||||||
|
-- enabled = true,
|
||||||
|
-- size = 3,
|
||||||
|
-- passes = 1,
|
||||||
|
-- vibrancy = 0.1696,
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
|
||||||
|
-- animations = {
|
||||||
|
-- enabled = true,
|
||||||
|
-- },
|
||||||
|
-- })
|
||||||
|
--
|
||||||
|
-- TODO: migrate to lua
|
||||||
|
|
||||||
|
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||||
|
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } })
|
||||||
|
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } })
|
||||||
|
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } })
|
||||||
|
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } })
|
||||||
|
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } })
|
||||||
|
|
||||||
|
-- Default springs
|
||||||
|
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
||||||
|
|
||||||
|
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
||||||
|
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
||||||
|
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
||||||
|
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
||||||
|
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
||||||
|
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
||||||
|
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
||||||
|
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
||||||
|
|
||||||
|
-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||||
|
-- "Smart gaps" / "No gaps when only"
|
||||||
|
-- uncomment all if you wish to use that.
|
||||||
|
-- hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
-- hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
-- hl.window_rule({
|
||||||
|
-- name = "no-gaps-wtv1",
|
||||||
|
-- match = { float = false, workspace = "w[tv1]" },
|
||||||
|
-- border_size = 0,
|
||||||
|
-- rounding = 0,
|
||||||
|
-- })
|
||||||
|
-- hl.window_rule({
|
||||||
|
-- name = "no-gaps-f1",
|
||||||
|
-- match = { float = false, workspace = "f[1]" },
|
||||||
|
-- border_size = 0,
|
||||||
|
-- rounding = 0,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
--- Layerrules
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/#layer-rules for more
|
||||||
|
hl.layer_rule({ match = { namespace = "waybar" }, blur = true })
|
||||||
|
hl.layer_rule({ match = { namespace = "rofi" }, blur = true, animation = "popinfade", dim_around = true })
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
---------------------
|
||||||
|
---- WINDOWRULES ----
|
||||||
|
---------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
||||||
|
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
||||||
|
|
||||||
|
local suppressMaximizeRule = hl.window_rule({
|
||||||
|
-- Ignore maximize requests from all apps. You'll probably like this.
|
||||||
|
name = "suppress-maximize-events",
|
||||||
|
match = { class = ".*" },
|
||||||
|
|
||||||
|
suppress_event = "maximize",
|
||||||
|
})
|
||||||
|
-- suppressMaximizeRule:set_enabled(false)
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
-- Fix some dragging issues with XWayland
|
||||||
|
name = "fix-xwayland-drags",
|
||||||
|
match = {
|
||||||
|
class = "^$",
|
||||||
|
title = "^$",
|
||||||
|
xwayland = true,
|
||||||
|
float = true,
|
||||||
|
fullscreen = false,
|
||||||
|
pin = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
no_focus = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
-- fake fullscreen for chromium
|
||||||
|
name = "chromium-fake-fullscreen",
|
||||||
|
match = {
|
||||||
|
class = "chronmium-browser",
|
||||||
|
},
|
||||||
|
|
||||||
|
fullscreen_state = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Layer rules also return a handle.
|
||||||
|
-- local overlayLayerRule = hl.layer_rule({
|
||||||
|
-- name = "no-anim-overlay",
|
||||||
|
-- match = { namespace = "^my-overlay$" },
|
||||||
|
-- no_anim = true,
|
||||||
|
-- })
|
||||||
|
-- overlayLayerRule:set_enabled(false)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO: check window rules
|
||||||
|
-- Hyprland-run windowrule
|
||||||
|
-- hl.window_rule({
|
||||||
|
-- name = "move-hyprland-run",
|
||||||
|
-- match = { class = "hyprland-run" },
|
||||||
|
|
||||||
|
-- move = "20 monitor_h-120",
|
||||||
|
-- float = true,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
--- No gaps on fullscreen
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps
|
||||||
|
-- To replicate “smart gaps” / “no gaps when only” from other WMs/Compositors, use this bad boy:
|
||||||
|
hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
hl.window_rule({ match = { float = false, workspace = "w[tv1]" }, border_size = 0 })
|
||||||
|
hl.window_rule({ match = { float = false, workspace = "w[tv1]" }, rounding = 0 })
|
||||||
|
hl.window_rule({ match = { float = false, workspace = "f[1]" }, border_size = 0 })
|
||||||
|
hl.window_rule({ match = { float = false, workspace = "f[1]" }, rounding = 0 })
|
||||||
|
|
||||||
|
|
||||||
|
-- hl.window_rule({
|
||||||
|
-- name = "fullscreen_state_1",
|
||||||
|
-- match = {
|
||||||
|
-- match = "class chronmium-browser",
|
||||||
|
-- },
|
||||||
|
-- -- TODO: review rule: "fullscreen_state 1"
|
||||||
|
-- })
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
--------------------
|
||||||
|
---- WORKSPACES ----
|
||||||
|
--------------------
|
||||||
|
-- Version 1
|
||||||
|
-- Last change: Sun 2026-06-14 using Hyprland v0.55.3-1
|
||||||
|
-- Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/ for more
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 1,
|
||||||
|
monitor = "desc:Acer Technologies VG270U P 0x847015E8",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 2,
|
||||||
|
monitor = "desc:Acer Technologies VG270U P 0x847015E8",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 3,
|
||||||
|
monitor = "desc:Acer Technologies VG270U P 0x847015E8",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 4,
|
||||||
|
monitor = "desc:Acer Technologies VG270U P 0x847015E8",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 5,
|
||||||
|
monitor = "desc:LG Electronics LG ULTRAGEAR+ 310NTWGDY841",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 6,
|
||||||
|
monitor = "desc:LG Electronics LG ULTRAGEAR+ 310NTWGDY841",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 7,
|
||||||
|
monitor = "desc:LG Electronics LG ULTRAGEAR+ 310NTWGDY841",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 8,
|
||||||
|
monitor = "desc:LG Electronics LG ULTRAGEAR+ 310NTWGDY841",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 9,
|
||||||
|
monitor = "desc:Samsung Electric Company Odyssey G70B H1AK500000",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 10,
|
||||||
|
monitor = "desc:Samsung Electric Company Odyssey G70B H1AK500000",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 11,
|
||||||
|
monitor = "desc:Samsung Electric Company Odyssey G70B H1AK500000",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 12,
|
||||||
|
monitor = "desc:Samsung Electric Company Odyssey G70B H1AK500000",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 13,
|
||||||
|
monitor = "desc:Yamaha Corporation RX-S602",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 14,
|
||||||
|
monitor = "desc:Yamaha Corporation RX-S602",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 15,
|
||||||
|
monitor = "desc:Yamaha Corporation RX-S602",
|
||||||
|
-- is_default = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 16,
|
||||||
|
monitor = "desc:Yamaha Corporation RX-S602",
|
||||||
|
-- d12efault = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = "w[tv1]",
|
||||||
|
gaps_out = 0,
|
||||||
|
gaps_in = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = "f[1]",
|
||||||
|
gaps_out = 0,
|
||||||
|
gaps_in = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
--- No gaps on fullscreen
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps
|
||||||
|
-- To replicate “smart gaps” / “no gaps when only” from other WMs/Compositors, use this bad boy:
|
||||||
|
hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
||||||
|
hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
hl.plugin("dynamic-cursors", function()
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
-- tilt - tilt the cursor based on x-velocity
|
||||||
|
-- rotate - rotate the cursor based on movement direction
|
||||||
|
-- stretch - stretch the cursor shape based on direction and velocity
|
||||||
|
-- none - do not change the cursors behaviour
|
||||||
|
mode = tilt
|
||||||
|
|
||||||
|
-- minimum angle difference in degrees after which the shape is changed
|
||||||
|
-- smaller values are smoother, but more expensive for hw cursors
|
||||||
|
threshold = 1
|
||||||
|
|
||||||
|
rotate {
|
||||||
|
-- length in px of the simulated stick used to rotate the cursor
|
||||||
|
-- most realistic if this is your actual cursor size
|
||||||
|
length = 30
|
||||||
|
|
||||||
|
-- clockwise offset applied to the angle in degrees
|
||||||
|
-- this will apply to ALL shapes
|
||||||
|
offset = 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
tilt {
|
||||||
|
-- controls how powerful the tilt is, the lower, the more power
|
||||||
|
-- this value controls at which speed (px/s) the full tilt is reached
|
||||||
|
-- the full tilt being 60° in both directions
|
||||||
|
limit = 2000
|
||||||
|
|
||||||
|
-- relationship between speed and tilt, supports these values:
|
||||||
|
-- linear - a linear function is used
|
||||||
|
-- quadratic - a quadratic function is used (most realistic to actual air drag)
|
||||||
|
-- negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||||
|
-- see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
|
||||||
|
function = negative_quadratic
|
||||||
|
|
||||||
|
-- time window (ms) over which the speed is calculated
|
||||||
|
-- higher values will make slow motions smoother but more delayed
|
||||||
|
window = 182
|
||||||
|
}
|
||||||
|
|
||||||
|
stretch {
|
||||||
|
-- controls how much the cursor is stretched
|
||||||
|
-- this value controls at which speed (px/s) the full stretch is reached
|
||||||
|
-- the full stretch being twice the original length
|
||||||
|
limit = 3000
|
||||||
|
|
||||||
|
-- relationship between speed and stretch amount, supports these values:
|
||||||
|
-- linear - a linear function is used
|
||||||
|
-- quadratic - a quadratic function is used
|
||||||
|
-- negative_quadratic - negative version of the quadratic one, feels more aggressive
|
||||||
|
-- see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
|
||||||
|
function = quadratic
|
||||||
|
|
||||||
|
-- time window (ms) over which the speed is calculated
|
||||||
|
-- higher values will make slow motions smoother but more delayed
|
||||||
|
window = 100
|
||||||
|
}
|
||||||
|
|
||||||
|
-- configure shake to find
|
||||||
|
-- magnifies the cursor if its is being shaken
|
||||||
|
shake {
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
-- use nearest-neighbour (pixelated) scaling when shaking
|
||||||
|
-- may look weird when effects are enabled
|
||||||
|
nearest = false
|
||||||
|
|
||||||
|
-- controls how soon a shake is detected
|
||||||
|
-- lower values mean sooner
|
||||||
|
threshold = 2.2
|
||||||
|
|
||||||
|
-- magnification level immediately after shake start
|
||||||
|
base = 1.2
|
||||||
|
-- magnification increase per second when continuing to shake
|
||||||
|
speed = 7.0
|
||||||
|
-- how much the speed is influenced by the current shake intensitiy
|
||||||
|
influence = 6.0
|
||||||
|
|
||||||
|
-- maximal magnification the cursor can reach
|
||||||
|
-- values below 1 disable the limit (e.g. 0)
|
||||||
|
limit = 3.2
|
||||||
|
|
||||||
|
-- time in millseconds the cursor will stay magnified after a shake has ended
|
||||||
|
timeout = 1300
|
||||||
|
|
||||||
|
-- show cursor behaviour `tilt`, `rotate`, etc. while shaking
|
||||||
|
effects = true
|
||||||
|
|
||||||
|
-- enable ipc events for shake
|
||||||
|
-- see the `ipc` section below
|
||||||
|
ipc = false
|
||||||
|
}
|
||||||
|
|
||||||
|
-- use hyprcursor to get a higher resolution texture when the cursor is magnified
|
||||||
|
-- see the `hyprcursor` section below
|
||||||
|
hyprcursor {
|
||||||
|
-- use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
|
||||||
|
-- this will also have effect without hyprcursor support being enabled
|
||||||
|
-- 0 / false - never use pixelated scaling
|
||||||
|
-- 1 / true - use pixelated when no highres image
|
||||||
|
-- 2 - always use pixleated scaling
|
||||||
|
nearest = true
|
||||||
|
|
||||||
|
-- enable dedicated hyprcursor support
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
-- resolution in pixels to load the magnified shapes at
|
||||||
|
-- be warned that loading a very high-resolution image will take a long time and might impact memory consumption
|
||||||
|
-- -1 means we use [normal cursor size] * [shake:base option]
|
||||||
|
resolution = -1
|
||||||
|
|
||||||
|
-- shape to use when clientside cursors are being magnified
|
||||||
|
-- see the shape-name property of shape rules for possible names
|
||||||
|
|
||||||
|
-- specifying clientside will use the actual shape, but will be pixelated
|
||||||
|
fallback = clientside
|
||||||
|
}
|
||||||
|
|
||||||
|
end)
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
hl.plugin("hyprbars", function()
|
||||||
|
-- TODO: check syntax
|
||||||
|
-- bar_height = 32, -- old value: 36
|
||||||
|
-- bar_padding = "12",
|
||||||
|
-- bar_button_padding = 18,
|
||||||
|
-- bar_text_size = 11, -- default: 10
|
||||||
|
-- bar_blur = true,
|
||||||
|
-- bar_part_of_window = true, -- default: true
|
||||||
|
-- bar_precedence_over_border = true,
|
||||||
|
-- OLD: inactive_button_color = rgb(cdd6f4)
|
||||||
|
-- inactive_button_color = "rgb(808798)",
|
||||||
|
-- col.text = "rgb(cdd6f4)",
|
||||||
|
-- bar_text_font = "Segoe UI",
|
||||||
|
-- on_double_click = "hyprctl dispatch fullscreen 1",
|
||||||
|
-- bar_text_align = "left",
|
||||||
|
-- -- example buttons (R -> L)
|
||||||
|
-- -- hyprbars-button = color, size, on-click
|
||||||
|
-- hyprbars-button = { "rgb(ff8ca1)", 16, "", "hyprctl dispatch killactive" },
|
||||||
|
-- -- old value(s): 20
|
||||||
|
-- hyprbars-button = { "rgb(8ca2f4)", 16, "", "hyprctl dispatch fullscreen 1" },
|
||||||
|
-- hyprbars-button = { "rgb(8ca2f4)", 16, "", "hyprctl dispatch togglefloating" },
|
||||||
|
|
||||||
|
-- other options:
|
||||||
|
-- icon_on_hover = true,
|
||||||
|
-- bar_color = "rgba(1e1e2e77)",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- bar_text_font = Jetbrains Mono Nerd Font Mono Bold
|
||||||
|
-- bar_text_font = Comic Sans MS
|
||||||
|
-- hyprbars-button = rgb(78dcff), 25, , hyprctl dispatch fullscreen 1
|
||||||
|
-- hyprbars-button = rgb(78dcff), 20, , hyprctl dispatch fullscreen 1
|
||||||
|
end)
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
hl.plugin("hyprexpo", function()
|
||||||
|
columns = 3,
|
||||||
|
gap_size = 2,
|
||||||
|
bg_col = "rgb(1e1e2e)",
|
||||||
|
skip_empty = true,
|
||||||
|
workspace_method = "first",
|
||||||
|
-- [center/first] [workspace] e.g. first 1 or center m+1 // center/current
|
||||||
|
-- enable_gesture = true # laptop touchpad
|
||||||
|
-- gesture_distance = 300 # how far is the "max" for the gesture
|
||||||
|
-- gesture_positive = true # positive = swipe down. Negative = swipe up.
|
||||||
|
end)
|
||||||
Executable
+8
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
sleep 1
|
||||||
|
killall xdg-desktop-portal-hyprland
|
||||||
|
killall xdg-desktop-portal-wlr
|
||||||
|
killall xdg-desktop-portal
|
||||||
|
/usr/libexec/xdg-desktop-portal-hyprland &
|
||||||
|
sleep 2
|
||||||
|
/usr/lib/xdg-desktop-portal &
|
||||||
Reference in New Issue
Block a user