hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.67k stars 901 forks source link

Monitor snapping issue #8330

Open soufhehe opened 2 weeks ago

soufhehe commented 2 weeks ago

Already reported ? *

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland 0.44.0 built from branch main at commit 93b4478e70af6ffb08a4a66a6d0364c3296db296 (snap: add option `border_overlap` and other improvements (8289)). Date: Thu Oct 31 12:21:08 2024 Tag: v0.44.0-97-g93b4478e, commits: 5396 built against aquamarine 0.4.3 flags set: debug System Information: System name: Linux Node name: aphe-pc Release: 6.11.6-2-cachyos Version: #1 SMP PREEMPT_DYNAMIC Fri, 01 Nov 2024 13:17:02 +0000 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir [Radeon Vega Series / Radeon Vega Mobile Series] [1002:1636] (rev c2) (prog-if 00 [VGA controller]) os-release: NAME="CachyOS Linux" PRETTY_NAME="CachyOS" ID=cachyos ID_LIKE=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://cachyos.org/" DOCUMENTATION_URL="https://wiki.cachyos.org/" SUPPORT_URL="https://forum.cachyos.org/" BUG_REPORT_URL="https://github.com/cachyos" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=cachyos plugins: ======Config-Start====== Config File: /home/aphe/.config/hypr/hyprland.conf: Read Succeeded env = GDK_BACKEND,wayland,x11,* env = QT_QPA_PLATFORM,wayland;xcb env = SDL_VIDEODRIVER,wayland env = CLUTTER_BACKEND,wayland env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland env = XDG_USER_CONFIG_DIR,/home/aphe/.config env = XDG_SCREENSHOTS_DIR,/home/aphe/Images/Screenshots env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_QPA_PLATFORM,wayland;xcb env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_QPA_PLATFORMTHEME,qt5ct env = QT_STYLE_OVERRIDE,kvantum env = XCURSOR_PATH=~/.local/share/icons env = XCURSOR_THEME,catppuccin-latte-green-cursors env = XCURSOR_SIZE,30 env = GOLDENDICT_FORCE_WAYLAND,1 env = EDITOR,emacsclient -c env = GRIMBLAST_EDITOR,satty -f $mainMod = SUPER bind = $mainMod CTRL, R, exec, hyprctl reload source = /home/aphe/.config/hypr/hyprland_conf/autostart_early.conf source = /home/aphe/.config/hypr/hyprland_conf/layout.conf source = /home/aphe/.config/hypr/hyprland_conf/misc.conf source = /home/aphe/.config/hypr/hyprland_conf/rules.conf source = /home/aphe/.config/hypr/hyprland_conf/style.conf source = /home/aphe/.config/hypr/hyprland_conf/input.conf source = /home/aphe/.config/hypr/monitors.conf source = /home/aphe/.config/hypr/scripts/scripts.conf source = /home/aphe/.config/hypr/hyprland_conf/workspaces.conf source = /home/aphe/.config/hypr/hyprland_conf/keybinds_base.conf source = /home/aphe/.config/hypr/hyprland_conf/autostart_late.conf Config File: /home/aphe/.config/hypr/hyprland_conf/autostart_early.conf: Read Succeeded # Slow app launch fix exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME exec-once = hash dbus-update-activation-environment 2>/dev/null exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE exec-once = wl-paste --type text --watch cliphist -max-items 100 store exec-once = wl-paste --type image --watch cliphist -max-items 100 store exec-once = hyprctl dispatch exec $HOME/.config/hypr/scripts/trigger.sh exec-once = systemctl --user start hypridle.service Config File: /home/aphe/.config/hypr/hyprland_conf/layout.conf: Read Succeeded # dwindle { # force_split = 0 # special_scale_factor = 0.8 # split_width_multiplier = 1.0 # use_active_for_splits = true # pseudotile = yes # preserve_split = yes # } master { special_scale_factor = 0.93 new_on_active = after } bind = $mainMod, K, layoutmsg, addmaster bind = $mainMod SHIFT, K, layoutmsg, removemaster Config File: /home/aphe/.config/hypr/hyprland_conf/misc.conf: Read Succeeded misc { disable_hyprland_logo = true disable_splash_rendering = true font_family = Iosevka 30 #disable_autoreload = true enable_swallow = true swallow_regex = Alacritty new_window_takes_over_fullscreen = 1 exit_window_retains_fullscreen = false focus_on_activate = false initial_workspace_tracking = 0 } binds { scroll_event_delay = 0 workspace_back_and_forth = true } xwayland { enabled = true force_zero_scaling = true } #monitor = eDP-1, addreserved, 0, 100, 100, 0 Config File: /home/aphe/.config/hypr/hyprland_conf/rules.conf: Read Succeeded # Float windowrulev2 = float, class:pavucontrol windowrulev2 = float, class:^(xdg-desktop-portal-gtk)$ windowrulev2 = float, class:^(xdg-desktop-portal-kde)$ windowrulev2 = float, class:^(xdg-desktop-portal-hyprland)$ windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2 = float, class:^(CachyOSHello)$ windowrulev2 = float, class:^(zenity)$ windowrulev2 = float, class:^()$,title:^(Steam - Self Updater)$ windowrulev2 = center 1, title:^(Save As)$ windowrulev2 = size 1100 600, class:thunar windowrulev2 = float, class:okular,title:^(Nouvelle note de texte.*)$ windowrulev2 = stayfocused, class:okular,title:^(Nouvelle note de texte.*)$ windowrulev2 = float, class:com.gabm.satty windowrulev2 = fullscreen, class:com.gabm.satty # PiP windowrulev2 = pin, title:^(.*Picture-in-Picture.*)$ windowrulev2 = float, title:^(.*Picture-in-Picture.*)$ windowrulev2 = size 480 270, title:^(.*Picture-in-Picture.*)$ windowrulev2 = move 0 100%-270, title:^(.*Picture-in-Picture.*)$ windowrulev2 = keepaspectratio, title:^(.*Picture-in-Picture.*)$ windowrulev2 = rounding 0, title:^(.*Picture-in-Picture.*)$ windowrulev2 = bordersize 0, title:^(.*Picture-in-Picture.*)$ windowrulev2 = nofocus, title:^(.*Picture-in-Picture.*)$ # Imv, Feh windowrulev2 = workspace special:imv, class:imv windowrulev2 = workspace special:imv silent, class:feh windowrulev2 = fullscreenstate 1 1, class:feh windowrulev2 = keepaspectratio, class:feh windowrulev2 = center 1, class:feh # mpv windowrulev2 = float, class:mpv windowrulev2 = size 60%, class:mpv windowrulev2 = workspace name:Musique silent, initialClass:^(mpv)$,title:^(.*Musique.*)$ # GoldenDict-ng windowrulev2 = size 85% 90%, initialTitle:GoldenDict-ng windowrulev2 = center, initialTitle:GoldenDict-ng # Speedcrunch windowrulev2 = size 20% 90%, class:org.speedcrunch.speedcrunch windowrulev2 = center, class:org.speedcrunch.speedcrunch windowrulev2 = move 100%-w-20 5% class:org.speedcrunch.speedcrunch # Nemo windowrulev2 = size 60% 80%, class:nemo windowrulev2 = center, class:nemo # Waydroid windowrulev2 = fullscreen, class:^(.*[Ww]aydroid.*)$ # firefox-developer-edition windowrulev2 = fullscreenstate 0 3, class:firefox-developer-edition # Workspace rules windowrulev2 = workspace 21, class:equibop windowrulev2 = workspace 21, class:ferdium windowrulev2 = workspace 22, class:org.strawberrymusicplayer.strawberry windowrulev2 = workspace 23, class:betterbird windowrulev2 = workspace 24, class:FreeTube Config File: /home/aphe/.config/hypr/hyprland_conf/style.conf: Read Succeeded ### Light/Dark theme bind = $mainMod, T, exec, if [ $(darkman get) == "light" ] ; then gsettings set org.gnome.desktop.interface gtk-theme "Orchis-Dark" && darkman set dark && cp ~/.config/hypr/scripts/themes/fuzzel/fuzzel-dark.ini ~/.config/fuzzel/fuzzel.ini && cp $HOME/.config/hypr/scripts/themes/foot/modus-vivendi ~/.config/foot/foot.ini && pkill -USR1 fish && echo dark > $HOME/.config/hypr/scripts/themes/foot/current && kvantummanager --set OrchisDark ; else gsettings set org.gnome.desktop.interface gtk-theme "Orchis-Light" && darkman set light && cp ~/.config/hypr/scripts/themes/fuzzel/fuzzel-light.ini ~/.config/fuzzel/fuzzel.ini && cp $HOME/.config/hypr/scripts/themes/foot/modus-operandi ~/.config/foot/foot.ini && echo light > $HOME/.config/hypr/scripts/themes/foot/current && pkill -USR1 fish && kvantummanager --set Orchis ; fi # && && ### Wallpaper bind = $mainMod CTRL, W, exec, notify-send "Entering wallpaper mode." -t 1000 bind = $mainMod CTRL, W, exec, killall auto_wallpaper_current.sh && killall sleep 1200 bind = $mainMod CTRL, W, exec, ~/.config/hypr/scripts/auto_wallpaper/auto_wallpaper_current.sh bind = $mainMod CTRL, W, submap, wall submap=wall bind = , W, exec, killall auto_wallpaper_current.sh && killall sleep 1200 bind = , W, exec, ~/.config/hypr/scripts/auto_wallpaper/auto_wallpaper_current.sh bind = , escape, exec, notify-send "Leaving wallpaper mode." -t 1000 bind = , escape, submap, reset submap = reset general { gaps_in = 2 gaps_out = 2 border_size = 2 col.active_border = rgb(00ba00) col.inactive_border = rgb(1C2238) layout = master snap { enabled = true monitor_gap = 30 window_gap = 30 } } group { insert_after_current = false group_on_movetoworkspace = true col.border_active = rgb(00ba00) col.border_inactive = rgb(1C2238) groupbar { font_size = 10 col.active = rgba(00ba0080) col.inactive = rgba(1C223880) } } layerrule = blur, launcher #layerrule = blur, waybar #layerrule = xray 0, launcher #layerrule = animation default, notifications #layerrule = animation popin 80%, selection #layerrule = animation popin 80%, hyprpicker #layerrule = noanim, logout_dialog layerrule = animation fade, hyprpaper decoration { active_opacity = 1.0 inactive_opacity = 1.0 fullscreen_opacity = 1.0 dim_special = 0 rounding = 10 blur { enabled = true new_optimizations = true xray = false size = 2 passes = 2 } drop_shadow = false } bezier=overshot, 0.05, 0.9, 0.1, 1.05 bezier=slow, 0, 0.85, 0.3, 1 bezier=funky, 0.46, 0.35, -0.2, 1.2 bezier=test, 0.3, 0.15, 0, 1 bezier=linear, 1, 1, 0, 0 bezier=easeOutCubic, 0.33, 1, 0.68, 1 animations { enabled = true animation = global, 1, 10, default animation = border, 1, 15, slow animation = windows, 1, 6, overshot, popin 80% animation = layers, 1, 6, slow, popin 80% animation = fade, 1, 5, slow animation = workspaces, 1, 6, easeOutCubic, slide animation = specialWorkspace, 1, 4, slow, fade } Config File: /home/aphe/.config/hypr/hyprland_conf/input.conf: Read Succeeded # device { # name = opentabletdriver-virtual-artist-tablet # output = eDP-1 # } input { kb_layout = be kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 focus_on_close = 1 float_switch_override_focus = 2 } cursor { persistent_warps = true warp_on_change_workspace = true #inactive_timeout = 1 #hide_on_key_press = true } Config File: /home/aphe/.config/hypr/monitors.conf: Read Succeeded # Generated by nwg-displays on 2024-10-27 at 16:43:05. Do not edit manually. monitor=eDP-1,1920x1080@60.0,0x420,1.0 monitor=HDMI-A-1,1920x1080@120.0,1920x420,1.0 Config File: /home/aphe/.config/hypr/scripts/scripts.conf: Read Succeeded bind = $mainMod ALT, P, exec, ~/.config/hypr/scripts/podcast/podcast_on.sh bind = $mainMod CTRL SHIFT, R, exec, kill hyprpaper bind = $mainMod CTRL SHIFT, R, exec, ~/.config/hypr/scripts/dual_monitor/unbind.sh && ~/.config/hypr/scripts/dual_monitor/bind_onescreen.sh && ~/.config/hypr/scripts/dual_monitor/common.sh && notify-send 'Reset keybind' -t 1000 Config File: /home/aphe/.config/hypr/hyprland_conf/workspaces.conf: Read Succeeded workspace = 1, monitor:eDP-1, default:true workspace = 2, monitor:eDP-1 workspace = 3, monitor:eDP-1 workspace = 3, monitor:eDP-1 workspace = 4, monitor:eDP-1, on-created-empty:nemo /home/aphe/OneDrive/Cours/Médecine/Q3/ workspace = 5, monitor:eDP-1 workspace = 6, monitor:eDP-1 workspace = 7, monitor:eDP-1 workspace = 8, monitor:eDP-1 workspace = 9, monitor:eDP-1 workspace = 10, monitor:eDP-1 workspace = 11, monitor:HDMI-A-1 workspace = 12, monitor:HDMI-A-1 workspace = 13, monitor:HDMI-A-1 workspace = 13, monitor:HDMI-A-1 workspace = 14, monitor:HDMI-A-1 workspace = 15, monitor:HDMI-A-1 workspace = 16, monitor:HDMI-A-1 workspace = 17, monitor:HDMI-A-1 workspace = 18, monitor:HDMI-A-1 workspace = 19, monitor:HDMI-A-1 workspace = 20, monitor:HDMI-A-1 workspace = special:imv, gapsin:0, gapsout:0, rounding:0 workspace = special:time, monitor:eDP-1, gapsin:0, gapsout:0, rounding:0, bordersize:0, on-created-empty:hyprctl dispatch exec "foot tty-clock -c" workspace = w[t1] s[false], gapsout:0, gapsin:0 workspace = w[tg1] s[false], gapsout:0, gapsin:0 workspace = f[1], gapsout:0, gapsin:0 windowrulev2 = bordersize 0, floating:0, onworkspace:w[t1] s[false] windowrulev2 = rounding 0, floating:0, onworkspace:w[t1] s[false] windowrulev2 = bordersize 0, floating:0, onworkspace:w[tg1] s[false] windowrulev2 = rounding 0, floating:0, onworkspace:w[tg1] s[false] windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] windowrulev2 = rounding 0, floating:0, onworkspace:f[1] windowrulev2 = bordersize 0, fullscreenstate:1 1 windowrulev2 = rounding 0, fullscreenstate:1 1 bind = $mainMod, left, movewindow, l bind = $mainMod, right, movewindow, r bind = $mainMod, up, movewindow, u bind = $mainMod, down, movewindow, d bind = $mainMod CTRL SHIFT, left, movetoworkspace, -1 bind = $mainMod CTRL SHIFT, right, movetoworkspace, +1 bind = $mainMod SHIFT, right, movetoworkspacesilent, +1 bind = $mainMod SHIFT, left, movetoworkspacesilent, -1 bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow bindm = $mainMod, A, resizewindow bindm = $mainMod, Z, movewindow binde = CTRL SHIFT, right, resizeactive, 20 0 binde = CTRL SHIFT, left, resizeactive, -20 0 binde = CTRL SHIFT, up, resizeactive, 0 -20 binde = CTRL SHIFT, down, resizeactive, 0 20 bind = $mainMod CTRL SHIFT, code:10, movetoworkspace, 1 bind = $mainMod CTRL SHIFT, code:11, movetoworkspace, 2 bind = $mainMod CTRL SHIFT, code:12, movetoworkspace, 3 bind = $mainMod CTRL SHIFT, code:13, movetoworkspace, 4 bind = $mainMod CTRL SHIFT, code:14, movetoworkspace, 5 bind = $mainMod CTRL SHIFT, code:15, movetoworkspace, 6 bind = $mainMod CTRL SHIFT, code:16, movetoworkspace, 7 bind = $mainMod CTRL SHIFT, code:17, movetoworkspace, 8 bind = $mainMod CTRL SHIFT, code:18, movetoworkspace, 9 bind = $mainMod CTRL SHIFT, code:19, movetoworkspace, 10 bind = $mainMod SHIFT, code:10, movetoworkspacesilent, 1 bind = $mainMod SHIFT, code:11, movetoworkspacesilent, 2 bind = $mainMod SHIFT, code:12, movetoworkspacesilent, 3 bind = $mainMod SHIFT, code:13, movetoworkspacesilent, 4 bind = $mainMod SHIFT, code:14, movetoworkspacesilent, 5 bind = $mainMod SHIFT, code:15, movetoworkspacesilent, 6 bind = $mainMod SHIFT, code:16, movetoworkspacesilent, 7 bind = $mainMod SHIFT, code:17, movetoworkspacesilent, 8 bind = $mainMod SHIFT, code:18, movetoworkspacesilent, 9 bind = $mainMod SHIFT, code:19, movetoworkspacesilent, 10 bind = $mainMod, Tab, exec, mon=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .name') && if [ $mon == "eDP-1" ] ; then hyprctl dispatch movewindow mon:HDMI-A-1 ; else hyprctl dispatch movewindow mon:eDP-1 ; fi workspace=21, monitor:eDP-1, defaultName:Com workspace=22, monitor:eDP-1, defaultName:Musique, on-created-empty:strawberry workspace=23, monitor:eDP-1, defaultName:Orga, on-created-empty:betterbird workspace=24, monitor:eDP-1, defaultName:Video, on-created-empty:freetube workspace=25, monitor:eDP-1, defaultName:Web, on-created-empty:zen-browser bind = $mainMod, N, exec, $HOME/.config/hypr/scripts/fuzzel/com/com.sh # Com bind = $mainMod, M, workspace, 22 # Musique bind = $mainMod, O, workspace, 23 # Orga bind = $mainMod, U, workspace, 24 # Video bind = $mainMod, W, workspace, 25 # Web bind = $mainMod CTRL SHIFT, N, movetoworkspace, 21 bind = $mainMod CTRL SHIFT, M, movetoworkspace, 22 bind = $mainMod CTRL SHIFT, U, movetoworkspace, 23 bind = $mainMod CTRL SHIFT, V, movetoworkspace, 24 bind = $mainMod CTRL SHIFT, W, movetoworkspace, 25 bind = $mainMod SHIFT, N, movetoworkspacesilent, 21 bind = $mainMod SHIFT, M, movetoworkspacesilent, 22 bind = $mainMod SHIFT, O, movetoworkspacesilent, 23 bind = $mainMod SHIFT, U, movetoworkspacesilent, 24 bind = $mainMod SHIFT, W, movetoworkspacesilent, 25 ### magic -> shift caps # bind = $mainMod, S, togglespecialworkspace, magic # bind = $mainMod, S, movetoworkspace, +0 # bind = $mainMod, S, togglespecialworkspace, magic # bind = $mainMod, S, movetoworkspace, special:magic # bind = $mainMod, S, togglespecialworkspace, magic ### Special workspace bind = $mainMod, less, togglespecialworkspace, special bind = $mainMod SHIFT, less, movetoworkspace, m+0 bind = $mainMod, less, exec, hyprctl keyword decoration:dim_special 0.4 # Special workspace mode bind = $mainMod CTRL, less, exec, $HOME/.config/hypr/scripts/fuzzel/togglespecialworkspace/enable.sh # special workspace toggle (MOD5 = alt gr) bind = $mainMod MOD5, Tab, exec, $HOME/.config/hypr/scripts/fuzzel/workspace_mode/enable.sh ### PiP bind = $mainMod ALT, I, exec, address=$(hyprctl clients -j | jq -r '.[] | select(.title | contains("PIP")) | .address') && if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:pip") | .windows') ] ; then hyprctl dispatch setprop address:$(hyprctl clients -j | jq -r '.[] | select(.title | contains("PIP")) | .address') nofocus off && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address && hyprctl dispatch pin address:$address && sleep 3 && hyprctl dispatch setprop address:$(hyprctl clients -j | jq -r '.[] | select(.title | contains("PIP")) | .address') nofocus on ; else hyprctl dispatch pin address:$address && hyprctl dispatch movetoworkspacesilent special:pip,address:$address ; fi ### Special workspace for floating window using numpad bind = SHIFT, KP_End, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:one") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:one") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:one,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Down, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:two") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:two") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:two,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Next, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:three") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:three") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:three,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Left, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:four") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:four") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:four,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Begin, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:five") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:five") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:five,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Right, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:six") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:six") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:six,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Home, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:seven") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:seven") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:seven,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Up, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:eight") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:eight") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:eight,address:$(hyprctl activewindow -j | jq -r '.address') ; fi bind = SHIFT, KP_Prior, exec, if [ $(hyprctl workspaces -j | jq -r '.[] | select(.name == "special:nine") | .windows') ] ; then address=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:nine") | .address') && hyprctl dispatch movetoworkspace $(hyprctl activeworkspace -j | jq -r '.id'),address:$address ; else hyprctl dispatch movetoworkspacesilent special:nine,address:$(hyprctl activewindow -j | jq -r '.address') ; fi Config File: /home/aphe/.config/hypr/hyprland_conf/keybinds_base.conf: Read Succeeded ### System bind = $mainMod, Q, killactive bind = $mainMod SHIFT, L, exec, systemctl suspend bind = $mainMod, L, exec, $HOME/.config/hypr/scripts/lock.sh bind = $mainMod, F, exec, if [ $(hyprctl activewindow -j | jq -r '.fullscreen') == 2 ] ; then hyprctl dispatch fullscreenstate 0 0 ; else hyprctl dispatch fullscreenstate 1 1 ; fi bind = $mainMod SHIFT, F, fullscreenstate,2 1 bind = $mainMod CTRL, F, fullscreenstate,0 2 bind = $mainMod, Y, pin bind = $mainMod CTRL, Y, setprop, activewindow keepaspectratio 1 bind = $mainMod CTRL, Y, exec, notify-send "Keep aspect ratio enabled" -t 1000 # address:$(hyprctl clients -j | jq -r '.[] | select(.focusHistoryID == 0) | .address') bind = $mainMod CTRL SHIFT, Y, setprop, activewindow keepaspectratio 0 bind = $mainMod CTRL SHIFT, Y, exec, notify-send "Keep aspect ratio disabled" -t 1000 bind = $mainMod SHIFT, SPACE, togglefloating, active bind = $mainMod, DELETE, exec, killall fuzzel || $HOME/.config/hypr/scripts/logout.sh ### Lid switch ; monitor bindl = , switch:on:Lid Switch, exec, if [[ $(hyprctl monitors | grep HDMI) ]] ; then hyprctl keyword monitor "eDP-1, disable" ; else hyprctl dispatch dpms off ; fi bindl = , switch:off:Lid Switch, exec, if [[ $(hyprctl monitors | grep HDMI) ]] ; then hyprctl keyword monitor "eDP-1, 1920x1080, 0x420, 1" ; else hyprctl dispatch dpms on ; fi bindl = $mainMod CTRL ALT, M, exec, hyprctl keyword monitor "eDP-1, disable" bindl = $mainMod CTRL SHIFT ALT,M, exec, hyprctl keyword monitor "eDP-1, 1920x1080, 0x420, 1" ###################################################### to upgrade ### Launch programs bind = $mainMod, E, exec, nemo bind = $mainMod, C, exec, nemo $HOME/OneDrive/Cours/Médecine/Q3 bind = $mainMod, I, exec, emacsclient -nc $HOME/.config/hypr # boutton au dessus de 8 bind = $mainMod, P, exec, [float] nwg-displays # boutton au dessus de 6-7 bind = $mainMod SHIFT, I, exec, emacsclient -nc $HOME/.emacs.d/init.el bind = $mainMod, S, exec, emacsclient -nc .emacs.d/start.org bind = $mainMod, RETURN, exec, foot bind = $mainMod SHIFT, RETURN, exec, [float;size 800 500] foot ### Move focus bind = $mainMod ALT, left, movefocus, l bind = $mainMod ALT, right, movefocus, r bind = $mainMod ALT, up, movefocus, u bind = $mainMod ALT, down, movefocus, d bind = $mainMod ALT CTRL, right, focusmonitor, +1 bind = $mainMod ALT CTRL, left, focusmonitor, -1 ### Volume control bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bindel = $mainMod, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 1%+ bindel = $mainMod, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%- bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bindel = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bindel = $mainMod, XF86AudioMute, exec, pavucontrol # https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/636 binde = ALT, XF86AudioMute, exec, $HOME/.config/hypr/scripts/fuzzel/select_stream.sh binde = ALT, XF86AudioRaiseVolume, exec, wpctl set-volume $(cat $HOME/.config/hypr/scripts/fuzzel/stream_id) 1%+ && echo "$(wpctl get-volume $(cat $HOME/.config/hypr/scripts/fuzzel/stream_id) | sed 's/^Volume: //')*100" | bc | cut -d. -f1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob binde = ALT, XF86AudioLowerVolume, exec, wpctl set-volume $(cat $HOME/.config/hypr/scripts/fuzzel/stream_id) 1%- && echo "$(wpctl get-volume $(cat $HOME/.config/hypr/scripts/fuzzel/stream_id) | sed 's/^Volume: //')*100" | bc | cut -d. -f1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob binde = SHIFT ALT, XF86AudioRaiseVolume, exec, wpctl set-volume $(cat $HOME/.config/hypr/scripts/fuzzel/stream_id) 1 && notify-send "Volume app set to 100%" ### Playback control bindln = , XF86AudioPlay, exec, playerctl play-pause bindl = $mainMod, XF86AudioPlay, exec, playerctl -a play-pause bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioPrev, exec, playerctl previous bindl = $mainMod CTRL, XF86AudioNext, exec, playerctld shift && playerctl play-pause bindl = $mainMod CTRL, XF86AudioPrev, exec, playerctld shift && playerctl play-pause bindl = $mainMod, XF86AudioNext, exec, playerctld shift bindl = $mainMod, XF86AudioPrev, exec, playerctld unshift binde = ALT, XF86AudioNext, exec, playerctl position 1+ binde = ALT, XF86AudioPrev, exec, playerctl position 1- ### Screen brightness bindel = , XF86MonBrightnessUp, exec, brightnessctl -q s 7.5%+ bindel = , XF86MonBrightnessDown, exec, brightnessctl -q s 7.5%- bindel = $mainMod, XF86MonBrightnessUp, exec, brightnessctl -q s 1%+ bindel = $mainMod, XF86MonBrightnessDown, exec, brightnessctl -q s 1%- bind = SHIFT, XF86MonBrightnessUp, exec, brightnessctl -q s 100% bind = SHIFT, XF86MonBrightnessDown, exec, brightnessctl -q s 0% bindl = $mainMod SHIFT, XF86MonBrightnessDown, exec, hyprctl dispatch dpms off bindl = $mainMod SHIFT, XF86MonBrightnessUp, exec, hyprctl dispatch dpms on ### Recording bind = $mainMod, Print, exec, hyprctl dispatch exec /home/aphe/.config/hypr/scripts/fuzzel/record.sh ### Screenshot bind = , XF86SelectiveScreenshot,exec, grimblast copysave area bind = $mainMod, XF86SelectiveScreenshot,exec, grimblast edit area bindl = CTRL, XF86SelectiveScreenshot,exec, grimblast copysave output && notify-send "Screenshoted." -t 1000 bind = SHIFT, XF86SelectiveScreenshot,exec, grimblast copysave screen ### Disable gaps / borders bind = $mainMod, G, exec, $HOME/.config/hypr/scripts/fuzzel/gaps/disable.sh bind = $mainMod CTRL, G, exec, $HOME/.config/hypr/scripts/fuzzel/follow_mouse/disable.sh ### Disable animation and blur bind = $mainMod, H, exec, $HOME/.config/hypr/scripts/fuzzel/battery_hungry/disable.sh ### Rename workspace bind = $mainMod, R, exec, $HOME/.config/hypr/scripts/fuzzel/rename_workspace.sh ### Waybar bind = $mainMod, B, exec, killall -SIGUSR1 waybar bind = $mainMod SHIFT, B, exec, pkill -xf "waybar -c $HOME/.config/waybar/waybar_exclusive" bind = $mainMod SHIFT, B, exec, waybar -c $HOME/.config/waybar/waybar_exclusive ### Magnifier bind = $mainMod, mouse_down, exec, current=$(hyprctl getoption cursor:zoom_factor | head -n 1 | awk '{print $2;}') && hyprctl keyword cursor:zoom_factor $(echo "$current + 0.5" | bc) bind = $mainMod, mouse_up, exec, current=$(hyprctl getoption cursor:zoom_factor | head -n 1 | awk '{print $2;}') && hyprctl keyword cursor:zoom_factor $(echo "$current - 0.5" | bc) bind = $mainMod SHIFT, mouse_up, exec, hyprctl keyword cursor:zoom_factor 1 bind = $mainMod, KP_ADD, exec, current=$(hyprctl getoption cursor:zoom_factor | head -n 1 | awk '{print $2;}') && hyprctl keyword cursor:zoom_factor $(echo "$current + 0.5" | bc) bind = $mainMod, KP_SUBTRACT, exec, current=$(hyprctl getoption cursor:zoom_factor | head -n 1 | awk '{print $2;}') && hyprctl keyword cursor:zoom_factor $(echo "$current - 0.5" | bc) bind = $mainMod SHIFT, KP_SUBTRACT, exec, hyprctl keyword cursor:zoom_factor 1 ### Cliphist bind = $mainMod, V, exec, cliphist list | fuzzel -d | cliphist decode | wl-copy ### Files fuzzel bind = $mainMod, SPACE, exec, killall fuzzel || $HOME/.config/hypr/scripts/fuzzel/fuzzel-search-med.sh bind = ALT, SPACE, exec, killall fuzzel || $HOME/.config/hypr/scripts/fuzzel/fuzzel-search-home.sh bind = , XF86Favorites, exec, killall fuzzel || $HOME/.config/hypr/scripts/fuzzel/fuzzel-search-config.sh bind = CTRL ALT, Tab, exec, killall fuzzel || fuzzel -w 30 ### Alt tab bindn = ALT, Tab, exec, hyprctl keyword animations:enabled false bindn = ALT, Tab, cyclenext,tiled bindnr = ALT, Tab, exec, hyprctl keyword animations:enabled true #bind = ALT, TAB, focuscurrentorlastbindn = ALT SHIFT, Tab, exec, hyprctl keyword animations:enabled false bindn = ALT SHIFT, Tab, cyclenext, prev tiled bindnr = ALT SHIFT, Tab, exec, hyprctl keyword animations:enabled true ### Easter egg bind = $mainMod CTRL ALT, R, exec, hyprctl dispatch exec "mpv /home/aphe/Musique/Various\ Artists/Smooth\ Indulgence/04\ Rick\ Astley\ -\ Never\ Gonna\ Give\ You\ Up.mp4" bind = $mainMod CTRL ALT SHIFT, R, exec, hyprctl dispatch exec kill $(ps aux | grep -e Rick| awk '{ print $2 }' | sed '1p;d') ### imv ## caps avec keyd bind = $mainMod CTRL ALT, TAB, exec, hyprctl dispatch togglespecialworkspace imv bind = $mainMod CTRL SHIFT ALT, TAB, movetoworkspacesilent, special:imv # bind = $mainMod CTRL ALT, TAB, exec, mon=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .name') && hyprctl dispatch focusmonitor eDP-1 && hyprctl dispatch togglespecialworkspace imv && if [ $mon == "eDP-1" ] ; then : ; else hyprctl dispatch focusmonitor $mon ; fi ### SpeedCrunch bind = , XF86Calculator, exec, [float] pidof speedcrunch || speedcrunch bind = , XF86Calculator, exec, onSpecial=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:calc")') && activeID=$(hyprctl activeworkspace -j | jq -r '.id') && windowID=$(hyprctl clients -j | jq -r '.[] | select(.title == "SpeedCrunch") | .workspace.id') && windowAddress=$(hyprctl clients -j | jq -r '.[] | select(.title == "SpeedCrunch") | .address') && if [ "$onSpecial" ] || [ $activeID != $windowID ] ; then hyprctl dispatch movetoworkspace $activeID,address:$windowAddress ; else hyprctl dispatch movetoworkspacesilent special:calc,address:$windowAddress ; fi ### GoldenDict bind = $mainMod, D, exec, [float] pidof goldendict || goldendict bind = $mainMod, D, exec, onSpecial=$(hyprctl clients -j | jq -r '.[] | select(.workspace.name == "special:dict")') && activeID=$(hyprctl activeworkspace -j | jq -r '.id') && windowID=$(hyprctl clients -j | jq -r '.[] | select(.initialTitle == "GoldenDict-ng") | .workspace.id') && windowAddress=$(hyprctl clients -j | jq -r '.[] | select(.initialTitle == "GoldenDict-ng") | .address') && if [ "$onSpecial" ] || [ $activeID != $windowID ] ; then hyprctl dispatch movetoworkspace $activeID,address:$windowAddress ; else hyprctl dispatch movetoworkspacesilent special:dict,address:$windowAddress ; fi ### ChatGPT bind = $mainMod SHIFT, D, exec, if [ ! "$(hyprctl clients -j | jq -r '.[] | select(.class == "zen-alpha") | select(.title | contains("ChatGPT"))')" ] ; then hyprctl dispatch exec "[float] zen-browser --new-window chatgpt.com" ; fi bind = $mainMod SHIFT, D, togglespecialworkspace, gpt ### Group bind = $mainMod, X, togglegroup bind = $mainMod SHIFT, X, lockgroups, toggle bindn = CTRL, Tab, changegroupactive, f bindn = CTRL SHIFT, Tab, changegroupactive, b bind = CTRL SHIFT ALT, right, movegroupwindow bind = CTRL SHIFT ALT, left, movegroupwindow, b bind = CTRL ALT, left, movewindoworgroup, l bind = CTRL ALT, right, movewindoworgroup, r bind = CTRL ALT, down, movewindoworgroup, d bind = CTRL ALT, up, movewindoworgroup, u Config File: /home/aphe/.config/hypr/hyprland_conf/autostart_late.conf: Read Succeeded # exec-once = echo 1 > $HOME/.config/hypr/scripts/waybar/1 && echo 1 > $HOME/.config/hypr/scripts/waybar/2 # exec-once = sleep 0.1 && waybar -c $HOME/.config/waybar/config-hypr # exec-once = sleep 0.1 && waybar -c $HOME/.config/waybar/config-hypr-2 exec-once = waybar -c $HOME/.config/waybar/waybar_exclusive exec-once = mako exec-once = nm-applet --indicator exec-once = bash -c "mkfifo /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob && tail -f /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob | wob & disown" #exec-once = ln -s $XDG_RUNTIME_DIR/hypr /tmp/hypr #exec-once = /usr/lib/polkit-kde-authentication-agent-1 exec-once = sleep 1 && systemctl --user start hyprpolkitagent exec-once = $HOME/.config/hypr/scripts/xdg.sh #exec-once = otd-daemon exec-once = playerctld exec-once = hyprpaper exec-once = gammastep -l 50.38:5.34 #exec-once = hyprsunset exec-once = darkman run exec-once = hyprctl setcursor catppuccin-mocha-green-cursors 30 exec-once = gsettings set org.gnome.desktop.interface cursor-theme catppuccin-mocha-green-cursors exec-once = gsettings set org.gnome.desktop.interface cursor-size 30 exec = $HOME/.config/hypr/scripts/dual_monitor/unbind.sh && $HOME/.config/hypr/scripts/dual_monitor/current.sh && sleep 1 exec-once = sleep 5 && emacs --daemon && notify-send "Launching emacs." -t 500 ======Config-End======== ```

Description

There's an invisible line at the top of the screen where the window snaps and it shouldn't. The bottom of the first screen and the right side of the second screen do not snap.

How to reproduce

Drag a window with snap enabled

Crash reports, logs, images, videos

https://github.com/user-attachments/assets/09ab7db8-00c3-40c0-8b19-ecde2a81a6d2

soufhehe commented 1 week ago

I found the problem. Snapping doesn't adapt to monitor position

monitor = name, resolution, XxY, scale if X and Y are different than 0 there will be weird invisible horizontal/vertical snapping line.

Another problem I found is that with 2 screens, one border of the second screen doesn't snap.

1 screen with y position = 0 : works well

monitor=eDP-1,1920x1080@60.0,0x0,1

1 screen with y position = 420 : windows stick to an invisible horizontal line

monitor=eDP-1,1920x1080@60.0,0x420,1.0

  • similarly with x position =/ 0 windows stick to an invisible vertical line

2 monitors with y position = 0 : right monitor right side no snap

monitor=eDP-1,1920x1080@60.0,0x0,1 monitor=HDMI-A-1,1920x1080@120.0,1920x0,1.0

vertical config

  • 1st monitor : y = 420 : windows stick to an invisible horizontal line
  • 2nd monitor : y = 0 : right monitor right side no snap monitor=eDP-1,1920x1080@60.0,0x420,1.0 monitor=HDMI-A-1,1920x1080@120.0,1920x0,1.0,transform,1