Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

dual monitors: Touchpad gestures for moving create extra workspaces

Open tom-sosedow opened this issue 1 year ago • 4 comments

Regression?

Yes

System Info and Version

System/Version info
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

tom-sosedow avatar Aug 02 '24 09:08 tom-sosedow

can you bisect

vaxerski avatar Aug 02 '24 12:08 vaxerski

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 avatar Aug 02 '24 12:08 tom-sosedow

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 avatar Aug 06 '24 15:08 tom-sosedow

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 :/

tom-sosedow avatar Aug 15 '24 17:08 tom-sosedow

Hello there!

This issue has been closed, as we are moving from issues to discussions. More about this can be found here and in #9854.

Firstly, please make sure this issue is still relevant in latest Hyprland. If so, we ask you to open a discussion (please read the discussion guidelines first, in the pinned post)

Thank you for your understanding!

vaxerski avatar Apr 05 '25 18:04 vaxerski