wmdiem / euclid-wm

Automatically exported from code.google.com/p/euclid-wm
5 stars 2 forks source link

Focus broken in multiscreen #25

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Start euclid-wm in dual-head
2. Create window OR Open stack (in ext. screen) OR Open window in new screen
3. Nothing

What is the expected output? What do you see instead?
I was trying to move the terminal to my external monitor, but nothing happens. 
The keybinding does nothing. The mouse will move over to the new screen, but no 
windows. There isn't a stack on the separate monitor either. As though nothing 
but the nvidia configs is allowing drawing onto the new monitor.

What version of the product are you using? On what operating system?
178 svn on Arch

Please provide any additional information below.
Maybe this is all because I'm using nvidia for my dual-monitor support, but I 
am not sure. Basically, this is making dual-head NOT work unless I want a place 
to put my mouse while I work on screen 1. -bkl

Original issue reported on code.google.com by tessy.ku...@gmail.com on 6 Sep 2010 at 4:57

GoogleCodeExporter commented 9 years ago
Thanks for trying it out. You mention Nvidia, are you using TwinView or 
Xinerama? I haven't looked at pure twinview at all, so I have no idea how 
euclid would behave under it, although I would assume it wouldn't be the way 
one would like. 
Can you look at euclid's stdout? It should print the number of screens it sees 
during initialization.
Now, if you bring up euclid, you have an empty stack on one screen and nothing 
on the other. 
If you open a terminal, it should show up on the screen with the empty stack. 
If you press alt + shift + 2, what happens? 
If nothing, what happens with alt +  shift + 1?
What if you press alt + pgUp? then open a terminal?
Or if that doesn't do anything, what if you press alt + pgDn, and open a 
terminal?
These observations should give me somewhere to work back from. 
Many thanks. 

Original comment by wmd...@gmail.com on 7 Sep 2010 at 1:23

GoogleCodeExporter commented 9 years ago
rev179 will report the screen geometry as screens are added. If you could run 
this and post that output (plus the correct screen geometry info, I think 
'xrandr --prop' should print this) it would hopefully give us quite a bit of 
information to work with. 
Thanks

Original comment by wmd...@gmail.com on 13 Sep 2010 at 4:26

GoogleCodeExporter commented 9 years ago
I just installed r194, and it is working on my dual-head Xinerama setup, but 
with a few problems.

The main problem is focus. It often just doesn't work. It has the most problems 
when there are only windows on 1 screen. Once windows are on both screens, 
changing focus will work most of the time, especially with the mouse.

The second problem is I can switch from my right monitor to my left monitor 
using "M + PgDown", but I can't switch back using "M + PgUp". If there is a 
window already on my right monitor, I can switch to it by using the mouse, but 
otherwise I am stuck.

There are no errors output by euclid-wm, and the geometry info appears to be 
correct. Any ideas how on to debug these issues?

Original comment by eric225...@gmail.com on 24 Apr 2011 at 3:41

GoogleCodeExporter commented 9 years ago
Many thanks for giving it a try an adding information; This issue has been 
bothering me. 
As to debugging it, can you give precise reproduction steps, starting from 
scratch, describing exactly what you do and precisely what euclid does?

So what is euclid doing when there are only windows on one screen? Which window 
is highlighted? Which window is getting keypresses? Can you move them? Is there 
any way of changing focus, or does focus stay on the same window no matter what 
until there are windows on other screens? 
Once windows are on other screens, does using direction ever work to change 
focus? Does moving the mouse always work to change focus? 

This should give me something to work from. 

Hopefully there is some minor issue that will be easy to fix once I figure out 
what is going on. 

Original comment by wmd...@gmail.com on 24 Apr 2011 at 6:38

GoogleCodeExporter commented 9 years ago
Ok, here are a few things that are easy for me to reproduce:

1. I start X with two monitors, left and right. Then start euclid-wm.

2. I open a window. It gets opened on the screen on the right. Its blue border 
is correct. Keyboard input is correct. The cursor, however, indicates no focus.

3. I open a 2nd window. It is placed correctly, and the blue border moves 
correctly. Keyboard input is switched correctly. However, the cursors in both 
windows indicate no focus.

4. I use the the keyboard to move between windows. The blue border moves 
correctly. Keyboard input does NOT switch, it stays with the 2nd window. Both 
cursors still indicate no focus.

5. I use the mouse to move between windows (no clicking). The blue border moves 
correctly. Keyboard DOES switch correctly. Again, both cursors indicate no 
focus.

All the above can be repeated multiple times and for additional windows with 
the same results.

I'm having trouble getting it to put any windows on the left screen at the 
moment. M-PgUp/PgDown seems to do nothing. The only time a window appears on 
the left screen is when I make it fullscreen, but switching fullscreen off 
moves it back to the screen on the right. I'll try experimenting some more. Let 
me know if there's anything specific I should try.

Original comment by eric225...@gmail.com on 24 Apr 2011 at 7:22

GoogleCodeExporter commented 9 years ago
Ok, it turns out that the mappings "bind_goto_previous_screen = M Previous", 
don't work for me. I changed "Previous" and "Next" to something else, and now 
switching screens works.

Once there are windows on both screens, the cursors will indicate focus 
correctly, but if I remove all the windows from one screen, the cursor will 
again never indicate focus, even if I use the mouse. The blue borders and 
keyboard input are always correctly switched between screens.

Original comment by eric225...@gmail.com on 24 Apr 2011 at 7:37

GoogleCodeExporter commented 9 years ago
Thanks for the details. 
I think I might have stumbled onto the problem:
line 1773 should read
  if (s->v->mfocus == NULL && cs == s) {
I can't easily put out a new rev since I'm stuck on windows until at least 
tuesday evening. 
I'll commit the change once I am back with my main laptop. 

Original comment by wmd...@gmail.com on 25 Apr 2011 at 3:44

GoogleCodeExporter commented 9 years ago
Awesome! That seems to have fixed just about every problem I mentioned.

The only remaining issue I see at the moment is that fullscreen windows are 
always displayed on the left screen, not the screen on which the original 
window was.

Original comment by eric225...@gmail.com on 25 Apr 2011 at 4:29

GoogleCodeExporter commented 9 years ago
Great!
For the fullscreen bug: line 1788 should read
   XMoveResizeWindow(dpy,s->v->mfocus->win->id,(xo - 1),(yo - 1),(w),(h));

Original comment by wmd...@gmail.com on 25 Apr 2011 at 3:42

GoogleCodeExporter commented 9 years ago
lines 2509-2518 also need to be rewritten, 
I need to make it cycle through the screens to find the right one, 
something like this:
  struct screen *tmps = firstscreen;
  while (tmps->next != NULL && tmps->v != wc->track->view) {
      tmps = tmps->next;
  };
Then in lines 2509-2518, replace cs with temps

Original comment by wmd...@gmail.com on 25 Apr 2011 at 4:57

GoogleCodeExporter commented 9 years ago

Original comment by wmd...@gmail.com on 25 Apr 2011 at 11:05

GoogleCodeExporter commented 9 years ago
I have opened new issues for the pageup/pgdown problem and for the fullscreen 
problem, as they are really separate issues. 
I'm hoping that 0.5.0 will have working and useable (if still lightly tested) 
multihead support. 

Original comment by wmd...@gmail.com on 25 Apr 2011 at 11:07

GoogleCodeExporter commented 9 years ago
focus issue fixed in rev 195

Original comment by wmd...@gmail.com on 26 Apr 2011 at 6:31