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

Windows fail to get keyboard focus unless a mouse is connected #6702

Closed earboxer closed 3 months ago

earboxer commented 3 months ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch build-alpine at commit 918d8340afd652b011b937d29d5eea0be08467f5 dirty (with patches: use-system-installed-udis86.patch). Date: Tag: v0.41.2, commits: flags: (if any) System Information: System name: Linux Node name: oneplus-enchilada Release: 6.9.0-sdm845 Version: #3-postmarketos-qcom-sdm845 SMP PREEMPT Sat Jun 8 17:36:43 UTC GPU information: qcom,adreno-630.2 os-release: PRETTY_NAME="postmarketOS edge" NAME="postmarketOS" VERSION_ID="edge" VERSION="edge" ID="postmarketos" ID_LIKE="alpine" HOME_URL="https://www.postmarketos.org/" SUPPORT_URL="https://gitlab.com/postmarketOS" BUG_REPORT_URL="https://gitlab.com/postmarketOS/pmaports/issues" LOGO="postmarketos-logo" plugins: ======Config-Start====== Config File: /home/user/.config/hypr/hyprland.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Monitors/ #monitor=,preferred,auto,auto monitor=DSI-1,preferred,auto,2.66666 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch # exec-once = waybar & hyprpaper & firefox exec-once = swaybg -i ~/Pictures/background.jpg -m center exec-once = sleep 1 && waybar exec-once = mako # config mako notifications with switch exec-once = switch.sh # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # Set programs that you use env = SXMO_TERMINAL,vte-2.91 -T 30 --whole-window-transparent -n 300 --use-theme-colors -- env = TERMINAL,sxmo_terminal.sh $terminal = vte-2.91 $terminal_opts = -T 30 --whole-window-transparent -n 300 --use-theme-colors exec-once = $terminal $terminal_opts $fileManager = dev.tchx84.Portfolio # $menu = bemenu-run -s -n -w -c -l8 -M 40 -H 20 $dmenu = bemenu --scrollbar autohide -s -n -w -c -l12 -M 40 -H 20 #--cb 22222288 --cf bbbbbb --tb 005577 --tf eeeeee --fb 22222288 --ff bbbbbb --nb 22222288 --af bbbbbb --ab 22222288 --nf bbbbbb --hb 005577 --hf eeeeee --scb 005577 --scf eeeeee --fbb eeeeee --fbf 22222288 #$menu = rofi -show drun #$menu = exec $(j4-dmenu-desktop --no-generic --dmenu="$dmenu" --term="$terminal" --no-exec |sed 's/ -e/ --/g') $menu = nwggrid $keyboard = wvkbd-mobintl $keyboard_args = -l simple,specialpad -H 160 -O --bg 22222288 | swipeB # starting the keyboard is bad because of a wvkbd bug where it burns CPU? # So kill the keyboard instead to workaround that bug. exec-once = killall $keyboard #exec-once = $keyboard $keyboard_args $lock = swaylock --grace 100000 --indicator --clock --datestr "%Y-%m-%d" --screenshots --effect-blur 10x10 # fix kde apps env = QT_QPA_SYSTEM_ICON_THEME,breeze # Some default env vars. env = XCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { #kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 touchpad { natural_scroll = no } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 20 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = dwindle # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false resize_on_border = true } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 20 blur { enabled = true size = 3 passes = 1 } 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, 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 { # 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 } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more #new_is_master = true } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = on workspace_swipe_cancel_ratio = 0.5 workspace_swipe_min_speed_to_force = 5 workspace_swipe_touch = on workspace_swipe_invert = off workspace_swipe_forever = on #workspace_swipe_direction_lock = on workspace_swipe_use_r = true } misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers } # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # windowrulev2 = nomaximizerequest, class:.* # You'll probably like this. # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Q, exec, $terminal $terminal_opts bind = $mainMod, C, killactive, bind = $mainMod, M, exit, bind = $mainMod, E, exec, $fileManager bind = $mainMod, V, togglefloating, bind = $mainMod, R, exec, $menu bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, 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 # Move active window to a workspace with mainMod + SHIFT + [0-9] 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 # Example special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, 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 bindi = , XF86AudioRaiseVolume, exec, $menu # need a lock screen to avoid triggering this when screen is off. #bindi = , XF86AudioRaiseVolume, exec, hyprctl dispatch submap menu; $menu; hyprctl dispatch submap reset bindi = , XF86AudioLowerVolume, exec, pkill -SIGRTMIN -f wvkbd-mobintl & pkill -SIGRTMIN -f suggpicker # if someone killed the keyboard, restart it bindi =, XF86AudioLowerVolume, execr, pgrep $keyboard || $keyboard $keyboard_args # toggle screen on/off bindli = , XF86PowerOff, exec, hyprctl dispatch dpms $(hyprctl -j monitors | jq -r 'first|.dpmsStatus|if . then "off" else "on" end') # disable input on screen off bindli = , XF86PowerOff, exec, hyprctl keyword input:touchdevice:enabled $(hyprctl -j getoption input:touchdevice:enabled | jq '.int==0') # TODO: lock screen on screen off? # need a mobile-friendly lockscreen #bind = , XF86PowerOff, exec, $lock # menu submap # need bug fully fixed upstream for this to be useful submap=menu bindie=,XF86AudioRaiseVolume,exec,wtype -k up bindie=, XF86AudioLowerVolume,exec,wtype -k down bindi=,XF86PowerOff, exec, wtype -k return # also close the submap when you push the button bindi=,XF86PowerOff,submap,reset # use shift+escs to go back to the global submap bind=SHIFT,escape,submap,reset # will reset the submap, meaning end the current one and return to the global one submap=reset # "fullscreen" for mobile bind = $mainMod, F, exec, hyprctl keyword general:gaps_out $(hyprctl -j getoption general:gaps_out 20 | jq 'if .int == 20 then 0 else 20 end') ======Config-End======== ```

Description

Cannot type into windows when there is no mouse device connected.

How to reproduce

Use a device without a mouse. The virtual keyboard is able to be used to trigger keyboard shortcuts and change focus, focus can be changed with the touch screen as well, but the focused windows do not get keyboard focus.

creating a virtual mouse (such as with dotoold) alleviates this problem.

The previous version I used was v0.40.0, which did not have this bug.

Crash reports, logs, images, videos

hyprctl devices output when the bug is happening

mice:

Keyboards:
    Keyboard at ffff9103cb30:
        volume-keys
            rules: r "", m "", l "us", v "", o ""
            active keymap: English (US)
            main: no
    Keyboard at ffff9103d440:
        pm8941_pwrkey
            rules: r "", m "", l "us", v "", o ""
            active keymap: English (US)
            main: no
    Keyboard at ffff9103dd40:
        oneplus-6-headset-jack
            rules: r "", m "", l "us", v "", o ""
            active keymap: English (US)
            main: no
    Keyboard at ffff901ad650:
        cvirtualkeyboard
            rules: r "", m "", l "us", v "", o ""
            active keymap: wvkbd
            main: yes

Tablets:

Touch:
    Touch Device at ffff9103cfc0:
        synaptics-s3706b

Switches:
    Switch Device at ffff9dc06de0:
        Hall effect sensor
vaxerski commented 3 months ago

check now

earboxer commented 3 months ago

@vaxerski Thanks for the fix! 9c5dd59d4b1927b7d88e8e3c2e260eb01d95794b

(I'm probably going to backport it to alpine unless you're going to cut another minor point release soon)

vaxerski commented 3 months ago

no plans atm for a release