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

follow_mouse #7745

Closed aloispichler closed 1 month ago

aloispichler commented 1 month ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 0f594732b063a90d44df8c5d402d658f27471dfe (props: bump version to 0.43.0). Date: Sun Sep 8 16:48:21 2024 Tag: v0.43.0, commits: 5196 flags: (if any) System Information: System name: Linux Node name: zbookhp Release: 6.10.9-arch1-2 Version: #1 SMP PREEMPT_DYNAMIC Tue, 10 Sep 2024 14:37:32 +0000 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-UP3 GT2 [Iris Xe Graphics] [8086:46a8] (rev 0c) (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/alopi/.config/hypr/hyprland.conf: Read Succeeded # this is: ~/.config/hypr/hyprland.conf # # AUTOGENERATED HYPR CONFIG. # PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. # # # The config is reloaded on saving. # Please note not all available settings / options are set here. # For a full list, see the wiki # # autogenerated = 1 # remove this line to remove the warning # ╭── settings ──────────────────── # │ hyprctl monitor cf. https://wiki.hyprland.org/Configuring/Monitors/ # monitor=,preferred,auto,auto # monitor=,1920x1200,auto,1.5 monitor=eDP-1,1920x1200,auto,1 monitor=HDMI-A-1,preferred,auto,auto,mirror,eDP-1 # uncomment to mirror the screen on HDMI beamer projector # monitor=,preferred,auto,1 # monitor=HDMI-A-1,preferred,auto,auto,transform,1 # monitor=,highres,auto,auto # See https://wiki.hyprland.org/Configuring/Keywords/ for more # hyprctl clients: to see applications, their names, etc. # windowrule= workspace 7, ^(.*firefox*)$ # windowrule= workspace 8, ^(.*thunderbird*)$ windowrule= workspace 9, ^(eduvpn-gui)(.*)$ # windowrule= workspace 10, ^(.*Skype*)$ # windowrulev2= bordercolor rgb(FF0000) rgb(880808), fullscreen:1 # ╭── settings ──────────────────── # │ Some default env vars. env = XCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 0 gaps_out = 0 border_size = 6 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg # col.inactive_border = rgba(595959aa) layout = dwindle # dwindle, master # layout = hy3 no_focus_fallback= true resize_on_border= true } input { kb_layout = de,us kb_variant = kb_model = kb_options = caps:escape kb_rules = numlock_by_default = true follow_mouse = 2 touchpad { natural_scroll = yes } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } cursor { no_warps= true } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = true } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 5 # dim_inactive= true dim_strength= 0.1 blur { enabled = true size = 3 passes = 1 } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes # yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation= windows, 1, 1, myBezier animation= windowsOut, 1, 7, default, popin 80% animation= border, 1, 10, default animation= borderangle, 1, 8, default animation= fade, 1, 15, default animation= workspaces, 0, 1, default } misc { focus_on_activate= true # follow the link on activate } 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 no_gaps_when_only= 1 # no gaps (border) when there is only one window on a workspace; work force_split= 2 # split to the right or bottom } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more no_gaps_when_only= 1 # remove border; work orientation= right # smart_resizing= false # new_is_master= true } binds { workspace_back_and_forth = true # allow_workspace_cycles = true workspace_center_on = false } # ╭── autostart ──────────────────── # Exec onces, autostart ######################## exec-once= waybar exec-once= /usr/bin/dunst # notification # exec-once= cbatticon -i standard exec-once= /home/alopi/.config/hypr/battery.sh # exec-once= swayidle -w timeout 300 'swaylock -f -c 000000' timeout 600 'systemctl suspend' before-sleep 'swaylock -f -c 000000' & # exec-once= swayidle -w timeout 420 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' timeout 1800 'systemctl suspend' before-sleep 'swaylock -f -c 000000' & # ~/.config/hypr/hypridle.conf exec-once= hypridle # exec-once= pasystray --reverse-scroll # install pasystray-wayland # pavucontrol audio app in system tray # pulseaudio idle high cpu usage: mkdir -p ~/.config/speech-dispatcher && echo "DisableAutoSpawn" >> ~/.config/speech-dispatcher/speechd.conf # exec-once= nm-applet # network manager in system tray exec-once= nm-applet --indicator -sm-disable & # network manager # exec-once= /usr/lib/polkit-kde-authentication-agent-1 exec-once=gammastep -l 50.82:12.91 # # exec-once=gammastep-indicator -l 50.82:12.91 # # exec-once=xfce4-notes exec-once= xpad # sticky notes windowrule = float, ^(xpad)$ exec-once=/usr/bin/dropbox exec-once=sleep 2; nextcloud --background exec-once=[workspace 8] sleep 1; thunderbird exec-once=copyq --start-server # in properties, enable "hide main window" exec-once=[workspace 10] skypeforlinux exec-once=swaybg -i $(shuf -n1 -e /usr/share/backgrounds/xfce/ArchSimple.png /usr/share/backgrounds/xfce/arch2024.jpg /usr/share/backgrounds/xfce/arch2023.jpg /usr/share/backgrounds/xfce/arch10.jpg) # preload= /usr/share/backgrounds/xfce/ArchSimple.png # wallpaper= , /usr/share/backgrounds/xfce/ArchSimple.png # Chemnitz: 50.82:12.91 Wien: 48.23:16.18 # exec-once= wl-paste -t text --watch clipman store --no-persist # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # ╭── Keybindings ──────────────────── # │ █▀ █░█ █▀█ █▀█ ▀█▀ █▀▀ █░█ ▀█▀ █▀ # │ ▄█ █▀█ █▄█ █▀▄ ░█░ █▄▄ █▄█ ░█░ ▄█ $mainMod = SUPER # Start wofi opens wofi on first press, closes it on second bindr=$mainMod, SUPER_L, exec, pkill rofi || rofi -show drun # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more # bind = $mainMod, Q, exec, kitty bindr= $mainMod, D, exec, pkill rofi || rofi -show drun bind = $mainMod, T, exec, kitty bind = $mainMod, V, exec, copyq toggle bind = $mainMod, Return, exec, kitty # bind = $mainMod, C, exec, qalculate-gtk windowrulev2 = float,class:(copyq) windowrulev2 = float,class:(qalculate-gtk) # windowrulev2 = workspace special:calculator,class:(qalculate-gtk) bind = $mainMod, C, exec, pgrep qalculate-gtk && hyprctl dispatch togglespecialworkspace calculator || qalculate-gtk & # bind = $mainMod, X, killactive bind = ALT, F4, killactive bind = ALT SHIFT, F4, exec, hyprctl kill binde= $mainMod, left, moveactive, -10 0 binde= $mainMod, h, moveactive, -10 0 binde= $mainMod, right, moveactive, 10 0 binde= $mainMod, l, moveactive, 10 0 binde= $mainMod, up, moveactive, 0 -10 binde= $mainMod, k, moveactive, 0 -10 binde= $mainMod, down, moveactive, 0 10 binde= $mainMod, j, moveactive, 0 10 bind = $mainMod, E, exec, dolphin exec-once= XDG_MENU_PREFIX=arch- kbuildsycoca6 # make dolphin remember file extensions bind = $mainMod, G, togglegroup # bind = $mainMod, G, moveintogroup # bind = $mainMod, TAB, changegroupactive, forward # forward in the group # bind = $mainMod SHIFT, TAB, changegroupactive, back # backward in the group # bind = $mainMod, F, exec, firefox bind = Alt, F10, fullscreen, 0 # bind = Alt, 118, fullscreen, 0 bind = $mainMod, 76, fullscreen, 1 # F10 bind = $mainMod, 118, fullscreen, 1 # F10 # bind = , F11, fullscreen # bind = $mainMod, F, fullscreen bind = $mainMod, F, togglefloating bind = $mainMod, W, togglefloating # bind = $mainMod, R, exec, rofi --show drun bind = $mainMod, P, pin, # pins the floating window, i.e., show, i.e., show on all workspaces # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, h, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, l, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, k, movefocus, u bind = $mainMod, down, movefocus, d bind = $mainMod, j, movefocus, d # 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 # with numpad keys bind = $mainMod, KP_End, workspace, 1 bind = $mainMod, KP_Down, workspace, 2 bind = $mainMod, KP_Next, workspace, 3 bind = $mainMod, KP_Left, workspace, 4 bind = $mainMod, KP_Begin, workspace, 5 bind = $mainMod, KP_Right, workspace, 6 bind = $mainMod, KP_Home, workspace, 7 bind = $mainMod, KP_Up, workspace, 8 bind = $mainMod, KP_Prior, workspace, 9 bind = $mainMod, KP_Insert, workspace, 10 bind = $mainMod SHIFT, KP_End, movetoworkspace, 1 bind = $mainMod SHIFT, KP_Down, movetoworkspace, 2 bind = $mainMod SHIFT, KP_Next, movetoworkspace, 3 bind = $mainMod SHIFT, KP_Left, movetoworkspace, 4 bind = $mainMod SHIFT, KP_Begin, movetoworkspace, 5 bind = $mainMod SHIFT, KP_Right, movetoworkspace, 6 bind = $mainMod SHIFT, KP_Home, movetoworkspace, 7 bind = $mainMod SHIFT, KP_Up, movetoworkspace, 8 bind = $mainMod SHIFT, KP_Prior, movetoworkspace, 9 bind = $mainMod SHIFT, KP_Insert, movetoworkspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, h, movewindoworgroup, l bind = $mainMod SHIFT, left, movewindoworgroup, l bind = $mainMod SHIFT, l, movewindoworgroup, r bind = $mainMod SHIFT, right, movewindoworgroup, r bind = $mainMod SHIFT, j, movewindoworgroup, d bind = $mainMod SHIFT, down, movewindoworgroup, d bind = $mainMod, 47, togglesplit # use wev to find that ö=47 bind = $mainMod SHIFT, k, movewindoworgroup, u bind = $mainMod SHIFT, up, movewindoworgroup, u # Move active window to a workspace with mainMod + SHIFT + [0-9] bind = $mainMod CONTROL, h, workspace, -1 bind = $mainMod CONTROL, left, workspace, -1 bind = $mainMod CONTROL, l, workspace, +1 bind = $mainMod CONTROL, right, workspace, +1 bind = $mainMod CONTROL, 1, workspace, 1 bind = $mainMod CONTROL, 2, workspace, 2 bind = $mainMod CONTROL, 3, workspace, 3 bind = $mainMod CONTROL, 4, workspace, 4 bind = $mainMod CONTROL, 5, workspace, 5 bind = $mainMod CONTROL, 6, workspace, 6 bind = $mainMod CONTROL, 7, workspace, 7 bind = $mainMod CONTROL, 8, workspace, 8 bind = $mainMod CONTROL, 9, workspace, 9 bind = $mainMod CONTROL, 0, workspace, 10 bind = $mainMod SHIFT CONTROL, h, movetoworkspace, -1 bind = $mainMod SHIFT CONTROL, left, movetoworkspace, -1 bind = $mainMod SHIFT CONTROL, l, movetoworkspace, +1 bind = $mainMod SHIFT CONTROL, right, movetoworkspace, +1 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 bind = $mainMod SHIFT CONTROL, 1, movetoworkspace, 1 bind = $mainMod SHIFT CONTROL, 2, movetoworkspace, 2 bind = $mainMod SHIFT CONTROL, 3, movetoworkspace, 3 bind = $mainMod SHIFT CONTROL, 4, movetoworkspace, 4 bind = $mainMod SHIFT CONTROL, 5, movetoworkspace, 5 bind = $mainMod SHIFT CONTROL, 6, movetoworkspace, 6 bind = $mainMod SHIFT CONTROL, 7, movetoworkspace, 7 bind = $mainMod SHIFT CONTROL, 8, movetoworkspace, 8 bind = $mainMod SHIFT CONTROL, 9, movetoworkspace, 9 bind = $mainMod SHIFT CONTROL, 0, movetoworkspace, 10 bind =, XF86MonBrightnessDown, exec, brightnessctl set 5%- bind =, XF86MonBrightnessUp, exec, brightnessctl set 5%+ bindl =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle bindl =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle bindel=, XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% bindel=, XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% # bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy bind=, Print, exec, grim -g "$(slurp -d)" "$HOME/Downloads/screenshot_$(date '+%Y%m%d_%Hh%Mm%Ss').png" && notify-send "Print Screen" "Screenshot in ~/Downloads." bind= $mainMod, S, exec, grim -g "$(slurp -d)" "$HOME/Downloads/screenshot_$(date '+%Y%m%d_%Hh%Mm%Ss').png" && notify-send "Print Screen" "Screenshot in ~/Downloads." bind= $mainMod SHIFT, S, exec, grim -g "$(slurp -d)" "$HOME/Downloads/screenshot_$(date '+%Y%m%d_%Hh%Mm%Ss').png" && notify-send "Print Screen" "Screenshot in ~/Downloads." # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, 117, workspace, e+1 # pageup bind = $mainMod, 112, workspace, e-1 # pagedown bind = $mainMod SHIFT, 117, movetoworkspace, +1 # pageup bind = $mainMod SHIFT, 112, movetoworkspace, -1 # pagedown # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow # drag and drop window with left mouse button bindm = $mainMod, mouse:273, resizewindow # resize with right mouse button # Modes $submap_audio = 🔊 audio $submap_exit = 🏁 exit # ╭── resize ──────────────────── # │ set the  key and options # will switch to a submap called resize binde= $mainMod, Plus, resizeactive,10 0 binde= $mainMod, Minus, resizeactive,-10 0 binde= $mainMod Shift, Plus, resizeactive,0 10 binde= $mainMod Shift, Minus, resizeactive,0 -10 $submap_resize = ↗ resize window ↙ bind=$mainMod,R,submap,$submap_resize # will start a submap called "resize" submap=$submap_resize # sets repeatable binds for resizing the active window binde=,right,resizeactive,10 0 binde=,l,resizeactive,10 0 binde=,left,resizeactive,-10 0 binde=,h,resizeactive,-10 0 binde=,up,resizeactive,0 -10 binde=,k,resizeactive,0 -10 binde=,down,resizeactive,0 10 binde=,j,resizeactive,0 10 # use reset to go back to the global submap # bindr=$mainMode, SUPER_L,submap, reset # bind= ,escape,submap,reset # bind= ,R,submap,reset # bind= $mainMod,R,submap,reset bind= ,catchall, submap, reset # will reset the submap, meaning end the current one and return to the global one submap=reset $submap_move = ↗ move window ↙ bind = $mainMod, M, togglefloating bind = $mainMod, M, submap, $submap_move # will start a submap called "resize" submap=$submap_move # sets repeatable binds for resizing the active window binde=,right,moveactive,29 0 binde=,l,moveactive,29 0 binde=,left,moveactive,-10 0 binde=,h,moveactive,-10 0 binde=,up,moveactive,0 -29 binde=,k,moveactive,0 -29 binde=,down,moveactive,0 10 binde=,j,moveactive,0 10 # use reset to go back to the global submap # bindr=$mainMode, SUPER_L,submap, reset # bind= ,escape,submap,reset # bind= ,M,submap,reset # bind= ,R,submap,reset # bind= $mainMod,M,submap,reset bind= ,catchall, submap, reset # will reset the submap, meaning end the current one and return to the global one submap=reset # ╭── hjkl navigation ──────────────────── $submap_normalMode = normal mode ⌨ hjkl # $submap_normalMode = hjkl bind=$mainMod, N, submap, $submap_normalMode submap=$submap_normalModE binde=,h, Exec, wtype -P left binde=,J, exec, wtype -P down -p down binde=Shift,J, exec, wtype -P next -p next binde=,K, exec, wtype -P up -p up binde=Shift,K, exec, wtype -P prior -p prior binde=,L, exec, wtype -P right -p right binde=,B, exec, wtype -M ctrl -P left binde=,W, exec, wtype -M ctrl -P right -p right -m ctrl binde=,E, exec, wtype -M ctrl -P right -p right -m ctrl binde=,u, exec, wtype -P backspace -p backspace # bind= ,catchall, submap, reset bind= ,N, submap, reset bind= ,I, submap, reset bind= Alt,N, submap, reset # bind= ,escape,submap,reset bind= $mainMod,N, submap, reset bind= ,catchall, submap, reset submap=reset # ╭── alttab ──────────────────── # │ the only alternative for hyprswitch # bind= Alt, Tab, exec, pkill rofi || ~/.config/hypr/swytch.sh # bind= $mainMod, Tab, exec, pkill tofi || $HOME/.config/hypr/windowSwitcher.sh # bind= Alt, Tab, exec, pkill tofi || $HOME/.config/hypr/windowSwitcher.sh # │ set the  key and options exec-once= hyprswitch init & # bind=ALT,TAB,workspace,previous bind= ALT, TAB, exec, hyprswitch gui --sort-recent --do-initial-execute bind= ALT SHIFT, TAB, exec, hyprswitch gui --sort-recent --do-initial-execute --reverse bind= SUPER, TAB, exec, hyprswitch gui --sort-recent --do-initial-execute bind= SUPER SHIFT, TAB, exec, hyprswitch gui --sort-recent --do-initial-execute --reverse # stop hyprswitch bindrt= ALT, ALT_L, exec, hyprswitch close bindrt= Super, SUPER_L, exec, hyprswitch close bindrn= , escape, exec, hyprswitch close --kill # # │ sfwbar #--config /home/alopi/.config/sfwbar/sfwbar.config # exec-once=sfwbar --config ~/.config/sfwbar/t2.config # bind = ALT, Tab, exec, killall -SIGUSR1 .sfwbar-wrapped # bindr= ALT, Tab, exec, pkill -RTMIN+1 sfwbar # bind = ALT, Tab, exec, killall -SIGUSR1 .sfwbar-wrapped # bindr= SHIFT_ALT, Tab, exec, pkill -RTMIN+2 sfwbar # bind= ALT, Tab, cyclenext, # focus to next window on same workspace # bind= ALT, TAB, bringactivetotop, # bind= ALT SHIFT, Tab, cyclenext, prev # bind= $mainMod, Tab, focuscurrentorlast # httpsr//github.com/H3rmt/WindowSwitcher # bind= $mainMod, Tab, exec, $HOME/.cargo/bin/window_switcher --reverse # bind= $mainMod SHIFT, Tab, exec, $HOME/.cargo/bin/window_switcher # bind= $mainMod, Tab, workspace, m+1 # bind= $mainMod Shift, Tab, workspace, m-1 # bind = ALT, Tab, exec, switch-window.py # custom script to switch betwenn apps # bind=ALT,TAB,workspace,previous # bind= $mainMod, Tab, exec, rofi -show window ======Config-End======== alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % alopi@zbookhp ~ % ```

Description

follow_mouse not working with floating windows:

I have follow_mouse= 2 and the behavior is as in the docs (“2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window”).

However, this is not the case if there is a floating window (for example, windowrule = float, ^(xpad)$). Hovering the window with the mouse does change the cursor focus.

The same with follow_mouse= 0, although the docs say “0 - Cursor movement will not change focus”.

Thank you

How to reproduce

Open a floating window and hover with the mouse.

Crash reports, logs, images, videos

not crashing

vaxerski commented 1 month ago

float_switch_override_focus