From 599ddbadef34cf3ad5e4d218cff9ee1bf03732b3 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Fri, 19 Sep 2025 13:53:06 +0200 Subject: [PATCH] viking-mate: match Hyprland style/binds to cn-arch --- .../10-appearance.conf##hostname.viking-mate | 105 ++++++++++++- .../40-keybinds.conf##hostname.viking-mate | 140 +++++++++++++----- .../50-autostart.conf##hostname.viking-mate | 13 +- .../60-windowrules.conf##hostname.viking-mate | 38 ++++- 4 files changed, 247 insertions(+), 49 deletions(-) diff --git a/.config/hypr/conf.d/10-appearance.conf##hostname.viking-mate b/.config/hypr/conf.d/10-appearance.conf##hostname.viking-mate index edffda9..6c9d0c5 100644 --- a/.config/hypr/conf.d/10-appearance.conf##hostname.viking-mate +++ b/.config/hypr/conf.d/10-appearance.conf##hostname.viking-mate @@ -1,7 +1,103 @@ -general { gaps_in = 6; gaps_out = 12; border_size = 2; col.active_border = rgba(4f84ccff) rgba(3c6eb1ff) 45deg; col.inactive_border = rgba(4f84cc80); layout = master; } -decoration { rounding = 8; blur = yes; blur_size = 7; blur_passes = 3; drop_shadow = yes; shadow_range = 20; shadow_render_power = 3; col.shadow = rgba(00000066); } -animations { enabled = yes; bezier = ease, 0.05, 0.9, 0.1, 1.0; animation = windows, 1, 5, ease, slide; animation = windowsOut, 1, 5, ease, slide; animation = border, 1, 10, default; animation = fade, 1, 7, ease; animation = workspaces, 1, 6, ease; } +# Laptop adopts desktop look & feel +# Theme, blur, shadows, groupbar, master tuning +general { + layout = master + gaps_in = 3 + gaps_out = 0 2 2 2 + border_size = 1 + col.active_border = rgba(79,132,204,0.8) + col.inactive_border = rgba(21,40,64,0.5) + resize_on_border = false + allow_tearing = false + + # Match Waybar/kitty frosting like PC + layerrule = blur, waybar + layerrule = blurpopups, waybar + layerrule = ignorealpha 0.2, waybar + layerrule = blur, kitty + layerrule = ignorealpha 0.1, kitty +} + +group { + col.border_active = rgba(79,132,204,0.8) + col.border_inactive = rgba(21,40,64,0.4) + col.border_locked_active = 0xfc6a0300 + col.border_locked_inactive = 0x66775500 + + groupbar { + font_size = 12 + height = 18 + gradients = true + col.active = rgb(79,132,204) + col.inactive = rgba(21,40,64,0.3) + } +} + +decoration { + rounding = 5 + rounding_power = 4.0 + active_opacity = 1 + inactive_opacity = 1 + fullscreen_opacity = 1 + dim_inactive = false + dim_strength = 0.2 + dim_around = 1.0 + + blur { + enabled = true + size = 2 + passes = 3 + xray = true + vibrancy = 0.18 + } + + shadow { + enabled = true + range = 6 + render_power = 2 + sharp = false + ignore_window = true + color = 0xdd0b1b2b + scale = 1.0 + } +} + +animations { + enabled = true + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_status = slave + orientation = center + mfact = 0.6 + slave_count_for_center_master = 4 + new_on_top = true + inherit_fullscreen = true + new_on_active = after + center_master_fallback = left +} + +misc { + force_default_wallpaper = 1 + disable_hyprland_logo = false +} + +xwayland { force_zero_scaling = true } + +# Laptop-only input niceties input { kb_layout = ultimatekeys follow_mouse = 1 @@ -12,6 +108,3 @@ input { } } -master { new_is_master = true; mfact = 0.56; orientation = left; } -xwayland { force_zero_scaling = true; } - diff --git a/.config/hypr/conf.d/40-keybinds.conf##hostname.viking-mate b/.config/hypr/conf.d/40-keybinds.conf##hostname.viking-mate index 840337a..11ab67e 100644 --- a/.config/hypr/conf.d/40-keybinds.conf##hostname.viking-mate +++ b/.config/hypr/conf.d/40-keybinds.conf##hostname.viking-mate @@ -1,43 +1,111 @@ -# same as desktop + brightness keys are useful on laptops -$mod = SUPER -bind = $mod, SPACE, exec, rofi -show drun -bind = $mod, RETURN, exec, kitty -bind = $mod, B, exec, firefox +# Same spirit as desktop; laptop gets brightness keys too -bind = $mod, Q, killactive, -bind = $mod, F, fullscreen, 0 -bind = $mod, V, togglefloating, +$mainMod = SUPER -bind = $mod, H, movefocus, l -bind = $mod, L, movefocus, r -bind = $mod, K, movefocus, u -bind = $mod, J, movefocus, d +# App commands (match desktop stack) +$terminal = uwsm app -- kitty +$fileManager = uwsm app -- nautilus +$launcher = uwsm app -- walker +$uuctl = uwsm app -- uuctl walker -d +$emote = uwsm app -- emote +$notcenter = uwsm app -- swaync-client -t -sw +$notdnd = uwsm app -- swaync-client -d +$nothide = uwsm app -- swaync-client --hide-latest +$notclose = uwsm app -- swaync-client --close-latest +$notcloseall = uwsm app -- swaync-client --close-all +$lockcmd = hyprlock -bind = $mod, 1, workspace, 1 -bind = $mod, 2, workspace, 2 -bind = $mod, 3, workspace, 3 -bind = $mod, 4, workspace, 4 -bind = $mod, 5, workspace, 5 -bind = $mod, 6, workspace, 6 -bind = $mod, 7, workspace, 7 -bind = $mod, 8, workspace, 8 -bind = $mod, 9, workspace, 9 -bind = $mod, 0, workspace, 10 +# Layout / groups (like desktop) +bind = $mainMod, P, pseudo, +bind = $mainMod, J, togglesplit, +bind = $mainMod SHIFT, J, swapsplit, +bind = $mainMod SHIFT, T, togglegroup, +bind = $mainMod, T, changegroupactive, +bind = $mainMod, F, fullscreen, +bind = $mainMod, V, togglefloating, -# Screenshots -bind = , PRINT, exec, grimblast copy screen -bind = SHIFT, PRINT, exec, grimblast copy area +# Window move (match desktop) +bind = $mainMod ALT_L, H, movewindoworgroup, l +bind = $mainMod ALT_L, J, movewindoworgroup, d +bind = $mainMod ALT_L, K, movewindoworgroup, u +bind = $mainMod ALT_L, L, movewindoworgroup, r -# Audio / mic / brightness -bindle =, XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% -bindle =, XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% -bindle =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle -bindle =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle -bindle =, XF86MonBrightnessUp, exec, brightnessctl set +5% -bindle =, XF86MonBrightnessDown, exec, brightnessctl set 5%- -bind = , XF86AudioPlay, exec, playerctl play-pause -bind = , XF86AudioPrev, exec, playerctl previous -bind = , XF86AudioNext, exec, playerctl next +# Usability +bind = $mainMod SHIFT, Q, killactive, +bind = $mainMod, L, exec, $lockcmd +bind = $mainMod, M, exit, -bind = $mod, ESCAPE, exec, hyprlock +# Apps +bind = $mainMod, return, exec, $terminal +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, D, exec, $launcher +bind = $mainMod SHIFT, D, exec, $uuctl +bind = $mainMod, PERIOD, exec, $emote + +# SwayNC controls +bind = $mainMod, Grave, exec, $notcenter +bind = $mainMod SHIFT, Grave, exec, $notdnd +bind = $mainMod, A, exec, $nothide +bind = $mainMod SHIFT, A, exec, $notclose +bind = $mainMod CTRL, A, exec, $notcloseall + +# Screenshots (use your Satty build like desktop) +bind = ALT SHIFT, 3, exec, GRIMBLAST_EDITOR="/home/cnachtigall/data/git/clone/Satty/target/debug/satty -f" grimblast --notify edit output +bind = ALT SHIFT, 4, exec, GRIMBLAST_EDITOR="/home/cnachtigall/data/git/clone/Satty/target/debug/satty -f" grimblast --notify edit area + +# Focus / move (arrows like desktop) +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d + +# Workspaces (match numbering) +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 + +# Move 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 + +# Drag move/resize like desktop +bindm = $mainMod SHIFT, mouse:272, movewindow +bindm = $mainMod SHIFT, mouse:273, resizewindow + +# Audio via PipeWire ctl (desktop style) +bindl = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindl = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous +bindl = , XF86AudioNext, exec, playerctl next + +# SwayOSD feedback (same as PC) +bindel = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise +bindel = , XF86AudioLowerVolume, exec, swayosd-client --output-volume lower +bindel = , XF86AudioMute, exec, swayosd-client --output-volume mute-toggle +bindel = , XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle + +# Brightness (laptop useful) +bindel = , XF86MonBrightnessUp, exec, swayosd-client --brightness raise +bindel = , XF86MonBrightnessDown, exec, swayosd-client --brightness lower diff --git a/.config/hypr/conf.d/50-autostart.conf##hostname.viking-mate b/.config/hypr/conf.d/50-autostart.conf##hostname.viking-mate index 954dadb..d6ffc19 100644 --- a/.config/hypr/conf.d/50-autostart.conf##hostname.viking-mate +++ b/.config/hypr/conf.d/50-autostart.conf##hostname.viking-mate @@ -1,8 +1,13 @@ -exec-once = bash -lc 'command -v /usr/lib/lxqt-policykit-agent >/dev/null && /usr/lib/lxqt-policykit-agent &' -exec-once = hyprpaper -exec-once = hypridle +# Align with desktop services + laptop extras +exec-once = uwsm app -- swaync +exec-once = xsettingsd exec-once = ~/.config/waybar/scripts/hyprsunset_daemon.sh +exec-once = uwsm app -- waybar +exec = hyprpaper -c $HOME/.config/hyprpaper.conf +exec = swayosd-server +exec-once = hypridle + +# Laptop applets (only if present) exec-once = bash -lc 'command -v nm-applet >/dev/null && nm-applet &' exec-once = bash -lc 'command -v blueman-applet >/dev/null && blueman-applet &' -exec-once = waybar -c ~/.config/waybar/config.jsonc -s ~/.config/waybar/style.css diff --git a/.config/hypr/conf.d/60-windowrules.conf##hostname.viking-mate b/.config/hypr/conf.d/60-windowrules.conf##hostname.viking-mate index a395d26..e4d6db8 100644 --- a/.config/hypr/conf.d/60-windowrules.conf##hostname.viking-mate +++ b/.config/hypr/conf.d/60-windowrules.conf##hostname.viking-mate @@ -1,7 +1,39 @@ +## Communications +windowrule = workspace 10, class:^(info\.mumble\.Mumble|discord|TeamSpeak|vesktop)$ +windowrule = workspace 9, class:^(Element|signal|Signal|org\.telegram\.desktop)$ +windowrule = noscreenshare, class:^(Element|signal|Signal|org\.telegram\.desktop)$ + +## Multimedia +windowrule = workspace 8, class:Spotify + +## Development +windowrule = float, class:jetbrains-webstorm, title:Welcome to WebStorm +windowrule = size 1080 720, class:jetbrains-webstorm, title:Welcome to WebStorm + +## Launchers / Games (kept from PC; harmless on laptop) +windowrule = workspace 2, class:^(steam|battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = center 1, class:^(battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = float, class:^(battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = float, class:steam, title:Friends List +# windowrule = workspace 1,force, class:^(wowclassic|wow)\.exe$, title:World of Warcraft +# windowrule = fullscreen, class:^(wowclassic|wow)\.exe$, title:World of Warcraft + +## System helpers & screenshot editor +windowrule = float, class:org.keepassxc.KeePassXC +windowrule = noscreenshare, class:org.keepassxc.KeePassXC +windowrule = float, class:org.kde.dolphin +windowrule = float, class:com.saivert.pwvucontrol +windowrule = float, class:org.gnome.Nautilus +windowrule = float, class:org.gnome.NautilusPreviewer +windowrule = float, class:org.gnome.FileRoller +windowrule = float, class:com.gabm.satty +windowrule = size >700 >400, class:com.gabm.satty + +## Focus tweaks +windowrule = focusonactivate, class:zen + +## Generic floaters you already had windowrulev2 = float, class:^(pavucontrol|blueman-manager|nm-connection-editor|wdisplays|org.gnome.Calculator|qalculate-gtk)$ windowrulev2 = center, class:^(pavucontrol|blueman-manager|nm-connection-editor|wdisplays|org.gnome.Calculator|qalculate-gtk)$ windowrulev2 = size 1000 640, class:^(pavucontrol|blueman-manager)$ -windowrulev2 = workspace 2, class:^(firefox|zen)$ -windowrulev2 = workspace 3, class:^(spotify|Spotify)$ -