Age | Commit message (Collapse) | Author |
|
program. Skip the double fork() and explicitly ignore SIGCHLD to fend
off zombies.
Added support for mouse buttons on root window to optionally start a
program with start(). By default mouse button three starts mcmenu
which must be in PATH.
|
|
|
|
initiated by user. Always fit window on physical screen.
|
|
screen 1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
screens.
Now hopefully fixed, if not perfectly: If a window isn't bound to any
physical screen it will be bound in newwin() to the first screen mcwm
knows about.
In fitonscreen() I forgot to check for the case where window
coordinates are larger than the screen's.
|
|
easier if you want to paste something with middle button without
having to move the pointer to get pointer focus first.
|
|
|
|
|
|
|
|
means they will be get automatically mapped and reparented if mcwm
exits even if it crashes.
Simplified cleanup() to reflect the above change. We still need to
change the keyboard focus policy from mcwm's default to follow pointer
instead. If mcwm crashes completely before we reach cleanup() this
might become a problem. All the windows will be mapped but there won't
be a keyboard focus and no way to change it. I don't know how to fix
that right now.
Don't attempt to catch SIGSEGV. Might be dangerous.
|
|
|
|
Added exec in .xinitrc example.
|
|
|
|
|
|
20, 2010, I decided to use pointer hints instead of pointer motion
notify to possible speed up things.
In commit 381e642a39187f615ba54955ef02d1e2fcf1f95d on Jul 17, 2010, I
reverted and wrote:
Stop querying for pointer position ourself. Don't use motion hinting
anymore and get real coordinates with motion event. See Gajewska and
Manasse: "Why X Is Not Our Ideal Window System".
Since getting a trackball with high CPI and experiencing how slow
moves and resizes suddenly were, especially when decreasing mouse
acceleration, this is clearly wrong. The right way *is* to subscribe
to just motion hints and request pointer coordinates ourselves.
|
|
Don't use getgeom() when we're done resizing or moving. We already
know the geometry of the client window.
|
|
|
|
might be on. If fixed, it's now on all of them.
|
|
If a window is unmapped and we are going to forget about it we need to
take into consideration if it's currently focused.
|
|
since we track it all the time now.
Only call arrangewindows() when root window changes geometry if we
don't have RANDR. Otherwise, we call getrandr() when we get a
XCB_RANDR_SCREEN_CHANGE_NOTIFY event.
Added comments.
When a monitor gets a new mode in an RANDR scenario, we track the x,y
position and width,height.
If we lose a monitor, we add the windows on that monitor to another
monitor.
|
|
|
|
WORKSPACE_MAX and used it consistently.
When fixing a window in fixwindow() we now add the window to all
workspace window lists except current in which it already should be
present. This means fixed windows are always a natural part of the
window list. No special treatment means that we don't muck around with
the order of the lists when changing workspaces.
|
|
|
|
own function.
In configurerequest(), consider monitor size when changing window
coordinates and size.
Forgot events() declaration!
|
|
When we get a ConfigureRequest() we mustn't stop if the window is
unknown to us. This might be a client that hasn't even tried to map
itself yet! Work around it.
|
|
|
|
|
|
the client.
|
|
Removed done FIXMEs.
|
|
|
|
|
|
Rephrase.
|
|
|
|
|
|
Count borders in width and height when fitting on screen.
Remove unneccessary getgeom() from topright(). We know the geometry.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Now keeps track of physical monitors in list monlist of struct monitor.
Subscribes to a RANDR notification and updates our view of the
physical outputs.
Two new keys: Mod + , and . to move windows back or forwards on
physical screens. Uses new functions prevscreen() and nextscreen().
New functions:
- setuprandr(). Initialize RANDR extension.
- getrandr(). Get resources from RANDR extenstion.
- getoutputs(). Goes through all video outputs and stores them in
list.
- fitonscreen(). Before mapping a window, make sure it fits on the
screen. Rewrote a lot of functions to use this instead of their
own code.
- movelim(). Move a window with physical screen limits. Rewrote
functions to use this.
- resizelim(). Resize a window with physical screen limits. Rewrote
functions to call this.
- findmonitor(). Looks for an output in list by ID.
- findmonbycoord(). Ditto but with x,y coordinates. If coords are
within an output, we return it.
- delmonitor(). Removes output from list.
- addmonitor(). Add it.
Simplified many functions.
|