diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf deleted file mode 100644 index e77f1a9..0000000 --- a/.config/hypr/hyprland.conf +++ /dev/null @@ -1,500 +0,0 @@ -#env=LIBSEAT_BACKEND,seatd -# env = HYPRLAND_LOG_WLR,1 -#env = WLR_DRM_DEVICES,$HOME/.config/hypr/nvidia:$HOME/.config/hypr/amd -#env = WLR_DRM_DEVICES,$HOME/.config/hypr/amd:$HOME/.config/hypr/nvidia -# env = WLR_DRM_DEVICES,$HOME/.config/hypr/amd-render:$HOME/.config/hypr/nvidia-render -#env = LIBVA_DRIVER_NAME,nvidia -#env = XDG_SESSION_TYPE,wayland -#env = GBM_BACKEND,nvidia-drm -#env = __GLX_VENDOR_LIBRARY_NAME,nvidia -#cursor { no_hardware_cursors = true } - -# env = AQ_DRM_DEVICES,/dev/dri/card1 -#env = AQ_NO_MODIFIERS,1 -#monitor=,preferred,auto,1 - - -#monitor=eDP-1,1920x1200@60.0,3564x0,1.0,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.8,bitdepth,10 -# Generated by nwg-displays on 2026-02-17 at 11:54:19. Do not edit manually. - -#monitor=eDP-1,1920x1200@60.0,3564x0,1.0 -#monitor=HDMI-A-1,2560x1440@144.0,1004x0,1.0 - -# env = LIBVA_DRIVER_NAME,nvidia -# env = XDG_SESSION_TYPE,wayland -# env = GBM_BACKEND,nvidia-drm -# env = __GLX_VENDOR_LIBRARY_NAME,nvidia - -cursor { - no_hardware_cursors = true -} - -#render { - #explicit_sync = false -#} - -source = ~/.config/hypr/monitors.conf -source = ~/.config/hypr/workspaces.conf -#source = ~/.config/hypr/hyprland.colors.conf - -monitor=desc:ASUSTek COMPUTER INC VG27AQL5A T7LMQS022027,2560x1440@144.0,0x0,1.0,bitdepth,10 -monitor=eDP-1,1920x1200@60.0,2560x0,1.0,bitdepth,10,cm,srgb - -debug:disable_logs = false - -debug { - disable_logs = false -} - -plugin { - hyprtrails { - color = rgba(ffaa00ff) - } - hyprexpo { - columns = 3 - gap_size = 5 - bg_col = rgb(111111) - workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1 - -# enable_gesture = true # laptop touchpad -# gesture_fingers = 3 # 3 or 4 -# gesture_distance = 300 # how far is the "max" -# gesture_positive = true # positive = swipe down. Negative = swipe up. - } -} - -# See https://wiki.hyprland.org/Configuring/Monitors/ -#monitor=,preferred,auto,auto - - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more - -env = QT_QPA_PLATFORMTHEME,qt5ct -env = QT_AUTO_SCREEN_SCALE_FACTOR,1 -env = QT_ENABLE_HIGHDPI_SCALING,1 -env = QT_QPA_PLATFORM,wayland;xcb -env = XCURSOR_SIZE,24 -env = LIBVA_DRIVER_NAME,nvidia -env = XDG_SESSION_TYPE,wayland -env = __GLX_VENDOR_LIBRARY_NAME,nvidia -#env = WLR_NO_HARDWARE_CURSORS,1 -env = WLR_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 -env = GDK_SCALE,1 -env = GDK_BACKEND,wayland,x11 -env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 -env = MOZ_ENABLE_WAYLAND,1 -env = XDG_SESSION_DESKTOP,Hyprland -env = XDG_CURRENT_DESKTOP,Hyprland -env = QT_ENABLE_FONTCONFIG_CACHE,1 - -# Execute your favorite apps at launch -# exec-once = waybar & hyprpaper & firefox - -# Import the completed Hyprland session environment before launching long-lived helpers. -exec-once=dbus-update-activation-environment --systemd --all -exec-once=systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WLR_DRM_DEVICES LIBVA_DRIVER_NAME __GLX_VENDOR_LIBRARY_NAME QT_QPA_PLATFORM QT_QPA_PLATFORMTHEME GDK_BACKEND MOZ_ENABLE_WAYLAND PATH XDG_DATA_DIRS XDG_CONFIG_DIRS DBUS_SESSION_BUS_ADDRESS - -# KDE auth agent - -# exec-once=/usr/lib/polkit-kde-authentication-agent-1 -exec-once = systemctl --user start hyprpolkitagent -exec-once=otd-daemon -exec-once=lorri daemon -exec-once=/etc/pam_init - -#exec-once=wlsunset -S 6:00 -s 21:30 -# exec-once=swaybg -m fill -i ~/.config/hypr/wallpapers/sunflowers.jpg -#exec-once = swww-daemon -# "$(cat ~/.local/state/quickshell/user/generated/wallpaper/path.txt)" -#exec-once = sleep 0.5; swww img ~/.config/hypr/wallpapers/sunflowers.jpg --transition-step 100 --transition-fps 120 --transition-type grow --transition-angle 30 --transition-duration 1 -# exec-once=waybar -# exec-once=quickshell -c ii -exec-once=blueman-applet -# exec-once=dunst -exec-once=udev-block-notify -#exec-once=~/.config/hypr/scripts/sleep.sh -exec-once=echo us > /tmp/kb_layout -#exec-once=hyprctl setcursor Sweet 30 -#exec-once=sleep 10;aw-qt& sleep 2; awatcher -exec-once = nm-applet --indicator # systray app for Network/Wifi -exec-once=kdeconnect-indicator -exec-once = hyprpm reload -n -exec-once = wl-paste --type text --watch cliphist store -exec-once = wl-paste --type image --watch cliphist store -exec-once = fcitx5 -exec-once = easyeffects --gapplication-service -exec-once = voxtype daemon -exec-once = openrgb --startminimized -exec-once = dms run - -#$swaylock = swaylock --screenshots --clock --indicator --effect-blur 6x6 --fade-in 0.2 --ring-color 4e9dc2 --key-hl-color 71b0ce -$swaylock = hyprlock -# exec-once=hypridle - -# exec-once=swayidle -w timeout 300 '$swaylock --grace 2' before-sleep '$swaylock' -# Needs repackaging... -# exec-once=/usr/lib/pam_kwallet_init - -#monitor=eDP-1,highrr,0x0,1.25 -#monitor=eDP-2,highrr,0x0,1.25 -#monitor=desc:AOC 24G2W1G4 0x0000297D,highrr,auto,1 -#monitor=HDMI-A-1,highrr,2048x0,1 -#monitor=HDMI-A-1,highrr,auto,1 -#monitor=,preferred,auto,1 -# TV frame -#monitor=HDMI-A-1,addreserved,50,50,50,50 -#monitor=HDMI-A-1,preferred,auto,1,transform,2 -#monitor=HDMI-A-1,preferred,auto,1,mirror,eDP-2 - -#workspace = 10,monitor:HDMI-A-1,default:true - -xwayland { - force_zero_scaling = true -} - -# Source a file (multi-file configs) -# source = ~/.config/hypr/myColors.conf - -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout=us,cz - kb_variant=,qwerty - kb_model= - kb_options=grp:win_space_toggle - kb_rules= - - numlock_by_default=trues - - follow_mouse=1 - float_switch_override_focus=true - - touchpad { - natural_scroll = yes - } - touchdevice { - output = HDMI-A-1 - transform = 2 - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 5 - gaps_out = 10 - border_size = 1 - # col.active_border = rgba(75DDDD50) rgba(09BC8A50) 45deg - # col.inactive_border = rgba(172A3AFF) - - layout = master - resize_on_border = true -} - -decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - rounding = 10 - - blur { - enabled = true - size = 2 - passes = 4 - new_optimizations = on - ignore_opacity = on - # xray = true - } - - # drop_shadow = yes - # shadow_range = 4 - # shadow_render_power = 3 - # col.shadow = rgba(1a1a1aee) -} - -animations { - enabled = yes - bezier = wind, 0.05, 0.9, 0.1, 1.05 - bezier = winIn, 0.1, 1, 0.1, 1 - bezier = winOut, 0.3, 0, 0, 1 - bezier = liner, 1, 1, 1, 1 - animation = windows, 1, 6, wind, slide - animation = windowsIn, 1, 6, winIn, popin 80% - animation = windowsOut, 1, 5, winOut, popin 80% - animation = windowsMove, 1, 5, wind, slide - animation = border, 1, 1, liner - animation = borderangle, 1, 30, liner, loop - animation = fade, 1, 10, default - animation = workspaces, 1, 5, wind -} - -group { - groupbar { -# font_size = 10 -# col.active = rgb(F7E733) -# col.inactive = rgba(F7E73330) - } -# col.border_active = rgba(75DDDDFF) rgba(75DDDD70) 45deg -# col.border_inactive = rgb(172A3A) -} - -# dwindle { -# # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more -# pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below -# preserve_split = yes # you probably want this -# } - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - #new_is_master = false -} - -#gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more -# workspace_swipe = true -#} -gesture = 3, horizontal, workspace -gesture = 3, up, fullscreen -gesture = 3, down, fullscreen, maximize - -# Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more -#device:epic-mouse-v1 { -# sensitivity = -0.5 -#} - -misc { - disable_hyprland_logo=true - disable_splash_rendering=true - mouse_move_enables_dpms=true -} - -#windowrule=float,class:blueman -#windowrule=float,class:Anydesk -#windowrule=float,class:file_progress -#windowrule=float,class:confirm -#windowrule=float,class:dialog -#windowrule=float,class:download -#windowrule=float,class:notification -#windowrule=float,class:error -#windowrule=float,class:splash -#windowrule=float,class:confirmreset -#windowrule=float,title:Open File -#windowrule=float,title:branchdialog -#windowrule=tile,title:*vivaldi* - -# can be more specific (:bar, :mediaControls, etc) -layerrule = blur on, match:namespace quickshell:bar -layerrule = ignore_alpha .2, match:namespace quickshell:bar -layerrule = blur on, match:namespace quickshell:popup -layerrule = ignore_alpha .2, match:namespace quickshell:popup -layerrule = blur on, match:namespace quickshell:notificationPopup -layerrule = ignore_alpha .2, match:namespace quickshell:notificationPopup -layerrule = blur on, match:namespace quickshell:overview -layerrule = blur_popups on, match:namespace quickshell:overview -layerrule = ignore_alpha .2, match:namespace quickshell:overview -layerrule = blur on, match:namespace quickshell:sidebarLeft -layerrule = blur_popups on, match:namespace quickshell:sidebarLeft -layerrule = ignore_alpha .2, match:namespace quickshell:sidebarLeft -layerrule = blur on, match:namespace quickshell:sidebarRight -layerrule = blur_popups on, match:namespace quickshell:sidebarRight -layerrule = ignore_alpha .2, match:namespace quickshell:sidebarRight - -layerrule { - name="blur dms" - match:namespace = dms:(color-picker|clipboard|spotlight|settings) - blur = on - ignore_alpha = 0 -} - -# layerrule = noanim, match:namespace ^(dms)$ - -blurls=gtk-layer-shell -blurls=lockscreen -blurls = rofi - -$dir = ~/.config -#! quickshell -bindr = SUPER+ALT, R, exec, pkill rofi || $dir/rofi/bin/launcher -# bind = SUPER, r, global, quickshell:overviewSearchToggle -# bind = SUPER, r, exec, dms ipc call spotlight toggle -bind = SUPER+ALT, P, exec, pkill rofi || $dir/rofi/bin/powermenu -# bind = SUPER, p, exec, dms ipc call powermenu open -# bind = SUPER, tab, exec, dms ipc call hypr toggleOverview -# bind = SUPER, p, global, quickshell:sessionToggle -# bind = SUPER, m, global, quickshell:mediaControlsToggle -# bind = SUPER, grave, global, quickshell:sidebarLeftToggle -# bind = SUPER, b, global, quickshell:sidebarRightToggle -# bind = SUPER, slash, global, quickshell:cheatsheetToggle -# bind = SUPER, tab, global, quickshell:overviewToggle -# bindrt = SUPER, SUPER_L, global, quickshell:workspaceNumber -# bindd = Super, h, Clipboard history >> clipboard, global, quickshell:overviewClipboardToggle # Clipboard history >> clipboard -# bindd = Super, Period, Emoji >> clipboard, global, quickshell:overviewEmojiToggle # Emoji >> clipboard - -bind = , XF86AudioRecord, exec, voxtype record-toggle -#bind = SUPER, O, exec, voxtype record-toggle -bind = SUPER, O, exec, voxtype record start -bindr = SUPER, O, exec, voxtype record stop -#bind = SUPER, V, exec, voxtype record start -#bindr = SUPER, V, exec, voxtype record stop - -$mainMod = SUPER - -#! programs -bind = $mainMod, T, exec, kitty -bind=$mainMod,K,exec,kitty -bind=SUPER,B,exec,vivaldi-stable -bind = super+ctrl, q, exit, -bind = $mainMod, E, exec, cosmic-files -bind = $mainMod+SHIFT, E, exec, dolphin -#! current window management -bind = $mainMod, Q, killactive, -# bind = $mainMod, V, togglefloating, -#bind = $mainMod, R, exec, rofi -show drun -#bind = $mainMod, P, pseudo, # dwindle -# bind = $mainMod, J, togglesplit, # dwindle -bind = SUPER, G, togglegroup -bind=SUPER,V,togglefloating, -bind=SUPER,F,fullscreen, -bind=SUPER,A,swapactiveworkspaces,current +1 - -# bind = SUPER, grave, hyprexpo:expo, toggle - -#! media keys -bindle=, XF86MonBrightnessUp, exec, xbacklight -inc 10 -bindle=, XF86MonBrightnessDown, exec, xbacklight -dec 10 - -# bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_SINK@ 5%+;canberra-gtk-play -i audio-volume-change -d "volumeChange" -# bindle=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_SINK@ 5%-;canberra-gtk-play -i audio-volume-change -d "volumeChange" -bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle -bindl=, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle - -bindl=, XF86AudioPlay, exec, playerctl play-pause # the stupid key is called play , but it toggles -bindl=, XF86AudioNext, exec, playerctl next -bindl=, XF86AudioPrev, exec, playerctl previous - -#! focus -bind = SUPER+ALT, left, movefocus, l -bind = SUPER+ALT, right, movefocus, r -bind = SUPER+ALT, up, movefocus, u -bind = SUPER+ALT, down, movefocus, d -bind = SUPER+SHIFT, left,changegroupactive,b -bind = SUPER+SHIFT,right,changegroupactive,f - -#! workspaces -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 - -bind = $mainMod+ALT, 1, workspace, 10 -bind = $mainMod+ALT, 2, workspace, 11 -bind = $mainMod+ALT, 3, workspace, 12 -bind = $mainMod+ALT, 4, workspace, 13 -bind = $mainMod+ALT, 5, workspace, 14 -bind = $mainMod+ALT, 6, workspace, 15 -bind = $mainMod+ALT, 7, workspace, 16 -bind = $mainMod+ALT, 8, workspace, 17 -bind = $mainMod+ALT, 9, workspace, 18 -bind = $mainMod+ALT, 0, workspace, 19 - - -bind = SUPER+CONTROL, right, workspace, +1 -bind = SUPER+CONTROL, left, workspace, -1 -bind = super+control+shift,left,movetoworkspace,-1 -bind = super+control+shift,right,movetoworkspace,+1 - -#! window movement -bind = SUPER, right, movewindow, mon:+1 -bind = SUPER, left, movewindow, mon:-1 - -bind = ALT, tab, cyclenext, -bind = ALT+SHIFT, tab, cyclenext, prev - -#! screenshots -# bind = ,Print,exec,grim - | wl-copy -bind = ,Print,exec,hyprshot --clipboard-only --mode active --mode output -# bind = SUPER+SHIFT,S,exec,spectacle --copy-image --region --background # no gui -# bind = SUPER+SHIFT,S,exec,grim -g "$(slurp)" - | wl-copy -bind = SUPER+SHIFT,S,exec,hyprshot --freeze --clipboard-only --mode region -# bind = SUPER, L,exec,$swaylock - -#! move windows to workspaces -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 - -#! mouse bindings -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -bind = super alt, m, layoutmsg,swapwithmaster - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - -#! global keybinds -bind = CTRL+ALT,1,pass,^(com\.obsproject\.Studio)$ -bind = CTRL+ALT,2,pass,^(com\.obsproject\.Studio)$ - -#windowrulev2=opacity 0.9,class:Code -#windowrulev2=opacity 0.9,class:Spotify - -#windowrulev2 = suppress_event maximize,class:^(vesktop)$ - -#windowrulev2=workspace 10,class:Code # Open Code on secondary monitor - -#windowrulev2 = float,class:^(qt5ct)$ -#windowrulev2 = float,class:^(nwg-look)$ -#windowrulev2 = float,class:^(org.kde.ark)$ -#windowrulev2 = float,class:^(Signal)$ #Signal-Gtk -#windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ #Clapper-Gtk -#windowrulev2 = float,class:^(app.drey.Warp)$ #Warp-Gtk -#windowrulev2 = float,class:^(net.davidotek.pupgui2)$ #ProtonUp-Qt -#windowrulev2 = float,class:^(yad)$ #Protontricks-Gtk -#windowrulev2 = float,class:^(eog)$ #Imageviewer-Gtk -#windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ #Upscaler-Gtk -#windowrulev2 = float,class:^(pavucontrol)$ -#windowrulev2 = float,class:^(blueman-manager)$ -#windowrulev2 = float,class:^(nm-applet)$ -#windowrulev2 = float,class:^(nm-connection-editor)$ -#windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ -#windowrulev2 = tile,class:dev.warp.Warp - -# some themeing -exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba' -exec = gsettings set org.gnome.desktop.interface font-hinting 'full' - -decoration { - dim_special = 0.3 - blur { - special = true - } -} - - -#windowrule = nofullscreenrequest,flameshot -#windowrule = float,title:flameshot -#windowrule = monitor 1,title:flameshot -#windowrule = move 0 0,title:flameshot -#windowrule = noanim,title:flameshot - -#enable once dms fixes config; uses old hyprland syntax -source = ~/.config/hypr/dms/colors.conf -source = ~/.config/hypr/dms/binds.conf -source = ~/.config/hypr/dms/layout.conf diff --git a/.config/hypr/hyprland.lua b/.config/hypr/hyprland.lua new file mode 100644 index 0000000..c97ea61 --- /dev/null +++ b/.config/hypr/hyprland.lua @@ -0,0 +1,223 @@ +-- Hyprland 0.55+ Lua configuration. +-- https://wiki.hypr.land/Configuring/Start/ + +hl.config({ autogenerated = false }) + +-- Environment variables that must be present before the compositor starts. +hl.env("QT_QPA_PLATFORMTHEME", "qt5ct") +hl.env("QT_AUTO_SCREEN_SCALE_FACTOR", "1") +hl.env("QT_ENABLE_HIGHDPI_SCALING", "1") +hl.env("QT_QPA_PLATFORM", "wayland;xcb") +hl.env("XCURSOR_SIZE", "24") +hl.env("LIBVA_DRIVER_NAME", "nvidia") +hl.env("XDG_SESSION_TYPE", "wayland") +hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia") +hl.env("WLR_DRM_DEVICES", "/dev/dri/card1:/dev/dri/card0") +hl.env("GDK_SCALE", "1") +hl.env("GDK_BACKEND", "wayland,x11") +hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1") +hl.env("MOZ_ENABLE_WAYLAND", "1") +hl.env("XDG_SESSION_DESKTOP", "Hyprland") +hl.env("XDG_CURRENT_DESKTOP", "Hyprland") +hl.env("QT_ENABLE_FONTCONFIG_CACHE", "1") + +hl.config({ + cursor = { no_hardware_cursors = true }, + debug = { disable_logs = false }, + xwayland = { force_zero_scaling = true }, + input = { + kb_layout = "us,cz", + kb_variant = ",qwerty", + kb_model = "", + kb_options = "grp:win_space_toggle", + kb_rules = "", + numlock_by_default = true, + follow_mouse = 1, + float_switch_override_focus = true, + sensitivity = 0, + touchpad = { natural_scroll = true }, + touchdevice = { output = "HDMI-A-1", transform = 2 }, + }, + general = { + gaps_in = 5, + gaps_out = 10, + border_size = 1, + layout = "master", + resize_on_border = true, + }, + decoration = { + rounding = 10, + dim_special = 0.3, + blur = { + enabled = true, + size = 2, + passes = 4, + new_optimizations = true, + ignore_opacity = true, + special = true, + }, + }, + animations = { enabled = true }, + misc = { + disable_hyprland_logo = true, + disable_splash_rendering = true, + mouse_move_enables_dpms = true, + }, + plugin = { + hyprtrails = { color = "rgba(ffaa00ff)" }, + hyprexpo = { + columns = 3, + gap_size = 5, + bg_col = "rgb(111111)", + workspace_method = "center current", + }, + }, +}) + +hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } }) +hl.curve("winIn", { type = "bezier", points = { { 0.1, 1 }, { 0.1, 1 } } }) +hl.curve("winOut", { type = "bezier", points = { { 0.3, 0 }, { 0, 1 } } }) +hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } }) +hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" }) +hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "popin 80%" }) +hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "popin 80%" }) +hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" }) +hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" }) +hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "loop" }) +hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default" }) +hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" }) + +hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" }) +hl.gesture({ fingers = 3, direction = "up", action = "fullscreen" }) +hl.gesture({ fingers = 3, direction = "down", action = "fullscreen", mode = "maximize" }) + +-- Import the completed session environment before launching long-lived helpers. +hl.on("hyprland.start", function() + local commands = { + "dbus-update-activation-environment --systemd --all", + "systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WLR_DRM_DEVICES LIBVA_DRIVER_NAME __GLX_VENDOR_LIBRARY_NAME QT_QPA_PLATFORM QT_QPA_PLATFORMTHEME GDK_BACKEND MOZ_ENABLE_WAYLAND PATH XDG_DATA_DIRS XDG_CONFIG_DIRS DBUS_SESSION_BUS_ADDRESS", + "systemctl --user start hyprpolkitagent", + "otd-daemon", + "lorri daemon", + "/etc/pam_init", + "blueman-applet", + "udev-block-notify", + "echo us > /tmp/kb_layout", + "nm-applet --indicator", + "kdeconnect-indicator", + "hyprpm reload -n", + "wl-paste --type text --watch cliphist store", + "wl-paste --type image --watch cliphist store", + "fcitx5", + "easyeffects --gapplication-service", + "voxtype daemon", + "openrgb --startminimized", + "dms run", + } + for _, command in ipairs(commands) do hl.exec_cmd(command) end +end) + +-- Layer effects for DMS and the older quickshell namespaces still in use. +local blurredNamespaces = { + "^quickshell:bar$", "^quickshell:popup$", "^quickshell:notificationPopup$", + "^quickshell:overview$", "^quickshell:sidebarLeft$", "^quickshell:sidebarRight$", +} +for _, namespace in ipairs(blurredNamespaces) do + hl.layer_rule({ match = { namespace = namespace }, blur = true, ignore_alpha = 0.2 }) +end +for _, namespace in ipairs({ "^quickshell:overview$", "^quickshell:sidebarLeft$", "^quickshell:sidebarRight$" }) do + hl.layer_rule({ match = { namespace = namespace }, blur_popups = true }) +end +hl.layer_rule({ + name = "blur-dms", + match = { namespace = "^dms:(color-picker|clipboard|spotlight|settings)$" }, + blur = true, + ignore_alpha = 0, +}) +for _, namespace in ipairs({ "^gtk-layer-shell$", "^lockscreen$", "^rofi$" }) do + hl.layer_rule({ match = { namespace = namespace }, blur = true }) +end + +local function bind(keys, dispatcher, options) + hl.bind(keys, dispatcher, options) +end + +-- Launchers and applications. +bind("SUPER + ALT + R", hl.dsp.exec_cmd("pkill rofi || ~/.config/rofi/bin/launcher"), { release = true }) +bind("SUPER + ALT + P", hl.dsp.exec_cmd("pkill rofi || ~/.config/rofi/bin/powermenu")) +bind("XF86AudioRecord", hl.dsp.exec_cmd("voxtype record-toggle")) +bind("SUPER + O", hl.dsp.exec_cmd("voxtype record start")) +bind("SUPER + O", hl.dsp.exec_cmd("voxtype record stop"), { release = true }) +bind("SUPER + T", hl.dsp.exec_cmd("kitty")) +bind("SUPER + K", hl.dsp.exec_cmd("kitty")) +bind("SUPER + B", hl.dsp.exec_cmd("vivaldi-stable")) +bind("SUPER + CTRL + Q", hl.dsp.exit()) +bind("SUPER + E", hl.dsp.exec_cmd("cosmic-files")) +bind("SUPER + SHIFT + E", hl.dsp.exec_cmd("dolphin")) + +-- Window and group management. +bind("SUPER + Q", hl.dsp.window.close()) +bind("SUPER + G", hl.dsp.group.toggle()) +bind("SUPER + V", hl.dsp.window.float({ action = "toggle" })) +bind("SUPER + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" })) +bind("SUPER + A", hl.dsp.workspace.swap_monitors({ monitor1 = "current", monitor2 = "+1" })) +bind("SUPER + ALT + M", hl.dsp.layout("swapwithmaster")) + +-- Media keys. +bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("xbacklight -inc 10"), { locked = true, repeating = true }) +bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("xbacklight -dec 10"), { locked = true, repeating = true }) +bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SINK@ toggle"), { locked = true }) +bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SOURCE@ toggle"), { locked = true }) +bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) +bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) + +-- Focus and group navigation. +for key, direction in pairs({ left = "l", right = "r", up = "u", down = "d" }) do + bind("SUPER + ALT + " .. key, hl.dsp.focus({ direction = direction })) +end +bind("SUPER + SHIFT + left", hl.dsp.group.prev()) +bind("SUPER + SHIFT + right", hl.dsp.group.next()) + +-- Workspaces. Lua lets the repeated numeric bindings stay compact. +for i = 1, 10 do + local key = i % 10 + bind("SUPER + " .. key, hl.dsp.focus({ workspace = tostring(i) })) + bind("SUPER + SHIFT + " .. key, hl.dsp.window.move({ workspace = tostring(i) })) +end +for key = 0, 9 do + local workspace = key == 0 and 19 or key + 9 + bind("SUPER + ALT + " .. key, hl.dsp.focus({ workspace = tostring(workspace) })) +end +bind("SUPER + CTRL + right", hl.dsp.focus({ workspace = "+1" })) +bind("SUPER + CTRL + left", hl.dsp.focus({ workspace = "-1" })) +bind("SUPER + CTRL + SHIFT + left", hl.dsp.window.move({ workspace = "-1" })) +bind("SUPER + CTRL + SHIFT + right", hl.dsp.window.move({ workspace = "+1" })) +bind("SUPER + right", hl.dsp.window.move({ monitor = "+1" })) +bind("SUPER + left", hl.dsp.window.move({ monitor = "-1" })) +bind("ALT + Tab", hl.dsp.window.cycle_next()) +bind("ALT + SHIFT + Tab", hl.dsp.window.cycle_next({ next = false })) + +-- Screenshots, mouse, and application pass-through. +bind("Print", hl.dsp.exec_cmd("hyprshot --clipboard-only --mode active --mode output")) +bind("SUPER + SHIFT + S", hl.dsp.exec_cmd("hyprshot --freeze --clipboard-only --mode region")) +bind("SUPER + mouse_down", hl.dsp.focus({ workspace = "e+1" })) +bind("SUPER + mouse_up", hl.dsp.focus({ workspace = "e-1" })) +bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true }) +bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true }) +bind("CTRL + ALT + 1", hl.dsp.pass({ window = "class:^(com\\.obsproject\\.Studio)$" })) +bind("CTRL + ALT + 2", hl.dsp.pass({ window = "class:^(com\\.obsproject\\.Studio)$" })) + +-- Apply GTK preferences on each config load, matching the former `exec` keywords. +hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'") +hl.exec_cmd("gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'") +hl.exec_cmd("gsettings set org.gnome.desktop.interface font-hinting 'full'") + +-- DMS 1.5+ owns these fragments. In particular, Display Settings rewrites outputs.lua. +require("dms.colors") +require("dms.outputs") +require("dms.layout") +require("dms.cursor") +require("dms.binds") +require("dms.binds-user") +require("dms.windowrules") diff --git a/.luarc.json b/.luarc.json new file mode 100644 index 0000000..b4ecec0 --- /dev/null +++ b/.luarc.json @@ -0,0 +1,7 @@ +{ + "workspace": { + "library": [ + "/usr/share/hypr/stubs" + ] + } +} diff --git a/flake.lock b/flake.lock index e28af34..cb876d3 100644 --- a/flake.lock +++ b/flake.lock @@ -290,17 +290,17 @@ }, "dms": { "inputs": { + "flake-compat": "flake-compat_5", "nixpkgs": [ "nixpkgs" - ], - "quickshell": "quickshell" + ] }, "locked": { - "lastModified": 1777431599, - "narHash": "sha256-g6r/Gx8PTDzO3jCNzzySA+Ff1lmLF9nDlMCNyyoQjoE=", + "lastModified": 1785111455, + "narHash": "sha256-aTNuC9NDBnYAeEtFsleeUwmGX3AZlKOutbl+LQRPkmQ=", "owner": "AvengeMedia", "repo": "DankMaterialShell", - "rev": "eb5afcdc40ea5446c27e18552ff4a19f9daf9484", + "rev": "069ddab041c738236a8910e4c39b65d9628d3018", "type": "github" }, "original": { @@ -443,6 +443,22 @@ "type": "github" } }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -1314,7 +1330,7 @@ }, "nix-gaming": { "inputs": { - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_7", "flake-parts": "flake-parts_3", "git-hooks": "git-hooks_2", "nixpkgs": "nixpkgs_11" @@ -1877,7 +1893,7 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_6", "gitignore": "gitignore", "nixpkgs": [ "hyprland-plugins", @@ -1977,28 +1993,6 @@ "type": "github" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "dms", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1776854048, - "narHash": "sha256-lLbV66V3RMNp1l8/UelmR4YzoJ5ONtgvEtiUMJATH/o=", - "ref": "refs/heads/master", - "rev": "783c953987dc56ff0601abe6845ed96f1d00495a", - "revCount": 806, - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - }, - "original": { - "rev": "783c953987dc56ff0601abe6845ed96f1d00495a", - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - } - }, "reenv": { "inputs": { "flake-parts": "flake-parts_4", diff --git a/servers/fern/hardware-configuration.nix b/servers/fern/hardware-configuration.nix index 6a0dc87..5011e97 100644 --- a/servers/fern/hardware-configuration.nix +++ b/servers/fern/hardware-configuration.nix @@ -18,6 +18,11 @@ fsType = "btrfs"; options = [ "subvol=@" ]; }; + fileSystems."/media/large" = + { device = "/dev/disk/by-uuid/30f7482a-34d9-408b-8ccc-318788ff6b8d"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/3CC7-A154";