raboof / notion

Tiling tabbed window manager
https://notionwm.net/
GNU Lesser General Public License v2.1
271 stars 64 forks source link

Keyboard input goes to the wrong window #227

Open wilhelmy opened 4 years ago

wilhelmy commented 4 years ago

I'm currently running into an issue where a window is focused (as per focus-follows-mouse) and by the looks of the title bar the window is obviously focused but when I type, the keyboard input goes to one of the neighbouring windows. Has anyone else observed this?

Edit: I've mostly seen it happen immediately after switching workspaces. After wiggling the mouse back and forth between the windows, focus returns to normal.

raboof commented 4 years ago

Interesting. When I switch workspaces, the cursor 'warps' to the top-left of the window that's focused. Does that happen for you too?

wilhelmy commented 4 years ago

It warps to the middle of the previously focused window on that workspace (I have the warp factor set to 0.5, I believe) in case the cursor is not within this window's boundaries, otherwise it leaves the cursor untouched.

I recently changed some settings which were introduced into notion's config in the last few years (I kept using the same old config during the last few notion releases) and maybe that's why... I guess I'll have to find a way to reproduce this.

Since it doesn't happen always, this might take a while. There might also be other X11 software involved somehow.

kristopolous commented 2 years ago

this is still a big issue for me ... I run into it constantly ... it's really annoying ... let me make a very simple reproducible example

Essentially we're creating 3 windows

  1. green
  2. blue
  3. red

We then move the mouse over the red in a way that occludes the green but not the blue. The belief is that if a user destroys the red window the one that is under the cursor will then capture the focus

As we can see this is not the case, it's the top of the stack.

#!/bin/bash

getfocus() {
  xprop -id $(xdotool getwindowfocus) | grep WM_NAME | cut -f 3 -d ' ' | sed s'/\"//g'
}

assertfocus() {
  focus=$(getfocus)
  if [[ $1 != $focus ]]; then
    echo "Error: $focus is not $1"
    exit -1
  else
    echo "Pass: $focus is $1"
  fi
}

xlogo -geometry 100x100+0+0 -background green -title green & 
green=$!
sleep 0.25

xlogo -geometry 100x100+100+100 -background blue -title blue &
blue=$!
sleep 0.25

xlogo -geometry 100x100+25+25 -background red -title red &
red=$!

xdotool mousemove 50 50
sleep 0.25
assertfocus "red"

kill $red
assertfocus "green"
kristopolous commented 1 year ago

finally in between jobs. fixing this is one of my top priorities. I'm just making a public commitment here to increase my chances of follow through.