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.7k stars 901 forks source link

dual monitors: Touchpad gestures for moving create extra workspaces #7149

Open tom-sosedow opened 3 months ago

tom-sosedow commented 3 months ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 918d8340afd652b011b937d29d5eea0be08467f5 (flake.lock: update). Date: Tue Jun 25 12:06:02 2024 Tag: v0.41.2, commits: 4886 flags: (if any) System Information: System name: Linux Node name: thing Release: 6.10.2-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Sat, 27 Jul 2024 16:49:55 +0000 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller]) os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/tom/.config/hypr/hyprland.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=eDP-1,preferred,0x0,1 monitor=HDMI-A-2,preferred,-320x-1440,1, # mirror, eDP-1 monitor=HDMI-A-1,preferred,-320x-1440,1, # mirror, eDP-1 monitor=DP-2,preferred,-320x-1440,1, # mirror, eDP-1 # monitor=DP-2,preferred,auto,1.6,mirror, eDP-1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Set programs that you use $terminal = kitty $fileManager = nemo $menu = rofi -show drun $browser = brave $browser-private = firefox --private-window $editor = code $wallpaper-setter = /home/tom/.config/hypr/swaptheme.sh # Execute your favorite apps at launch exec-once = waybar exec-once = nm-applet exec-once = blueman-applet exec-once = swaync exec-once = $wallpaper-setter exec-once = hypridle exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # Some default env vars. env = XCURSOR_SIZE, 16 env = QT_QPA_PLATFORMTHEME, qt5ct # change to qt6ct if you have that env = WLR_NO_HARDWARE_CURSORS,1 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = de kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 accel_profile = flat sensitivity = 1 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = true disable_while_typing = false middle_button_emulation = true } } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 5 border_size = 1 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = master # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 7 blur { enabled = true size = 4 passes = 2 } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0, 1.0 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 } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_status = master new_on_top = true mfact = 0.5 } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = true workspace_swipe_forever = true } misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers animate_manual_resizes = true animate_mouse_windowdragging = true } device { name = elan-touchpad sensitivity = 0.85 accel_profile = flat } device { name = logitech-usb-receiver sensitivity = 0.3 } workspace = 1, monitor:eDP-1 workspace = 2, monitor:eDP-1 workspace = 3, monitor:eDP-1 workspace = 4, monitor:eDP-1 workspace = 5, monitor:eDP-1 workspace = 6, monitor:HDMI-A-2 workspace = 7, monitor:HDMI-A-2 workspace = 8, monitor:HDMI-A-2 workspace = 9, monitor:HDMI-A-2 workspace = 0, monitor:HDMI-A-2 # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod SHIFT, Return, exec, $terminal bind = $mainMod SHIFT, C, killactive, bind = $mainMod SHIFT, Q, exit, bind = $mainMod, E, exec, $fileManager bind = $mainMod CTRL, space, togglefloating, bind = $mainMod, P, exec, $menu bind = $mainMod, F, exec, $browser bind = $mainMod SHIFT, F, exec, $browser-private bind = $mainMod, D, exec, discord bind = $mainMod, S, exec, spotify-launcher bind = $mainMod, C, exec, $editor bind = $mainMod CTRL, S, exec, systemctl suspend bind = $mainMod, M, fullscreen, 0 bind = $mainMod CTRL, M, fullscreen, 1 bind = $mainMod CTRL, W, exec, $wallpaper-setter bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy -t image/png # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, J, layoutmsg, cycleprev bind = $mainMod, K, layoutmsg, cyclenext bind = $mainMod, Return, layoutmsg, swapwithmaster master # Switch workspaces with mainMod + [0-9] 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 active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 # Resize windows in master layout binde=$mainMod,L,resizeactive,20 0 binde=$mainMod,H,resizeactive,-20 0 # fn buttons binde=,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- binde=,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bind =,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bind =,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle binde=,XF86MonBrightnessUp, exec, blight set +10% binde=,XF86MonBrightnessDown, exec, blight set -10% # Example special workspace (scratchpad) bind = $mainMod, R, togglespecialworkspace, magic bind = $mainMod SHIFT, R, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = noanim,class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$ windowrulev2 = noblur,class:^(xwaylandvideobridge)$ ======Config-End======== ```

Description

When moving between workspaces on 2 different monitors, moving from a workspace with a window in it to the right (empty workspace) goes to workspace n+1, where n is the max workspace on the other monitor

Im not sure if it is a regression, i never realized this up until recently I guess. I dont really have time to build the whole thing and bisect it, as I am using the aur git version.

How to reproduce

  1. use my config for workspace split (1-5 on first monitor, 6-0 on other one)
  2. open 1 window on of of each monitor (e.g. firefox on workspace 4 and spotify on workspace 8)
  3. use touchpad gestures to move to the right workspace (i.e. swipe right-to-left) on screen A
  4. do the same for screen B
  5. go to screen A and move to the left and then to the right workspace (i.e. swipe left-to-right to come back to the window you opened, and then swipe right to left to go to a new workspace again
  6. do the same for screen B

repeat steps 5 and 6. Even though you bound only workspaces 1-0, you will eventually land on workspaces 11, 12, 13, 14 I would expect the swipe to the left (i.e. moving the the right workspace) bring me to the next empty workspace, and not the next I havent opened before.

Crash reports, logs, images, videos

Sorry for the poor quality, still havent figured out screen recording on wayland) Streamable Link

vaxerski commented 3 months ago

can you bisect

tom-sosedow commented 3 months ago

Sadly not in a timely manner. I have no clue how to do it and am currently too busy. I can try it end of next week if noone is faster..

tom-sosedow commented 3 months ago

Ok seems like touchpad navigation is completely fawked. I am encountering 2 more bugs with it. I'll try to bisect in the next few days and see if they all came with the same change/commit. Should I then post all of the bugs here or make separate issues for each of them?

tom-sosedow commented 3 months ago

I tried my best but I cant bisect. I am too stupid. Manually building fails for some reason, downgrading through linux archive doesnt work because of unmatched dependencies, installing binaries from github releases doesnt include the mentioned binary for hyprpm and thus seems to be incomplete and I cannot downgrade all system packages on my main machine just to bisect. I am sorry, but I cant help here :/