Age | Commit message (Collapse) | Author |
|
According to the ICCCM, clients should send a synthetic unmap event when they
initiate an unmap. The old code waited for these synthetic unmaps to unmanage
windows. However, certain 'obsolete' clients do not send synthetic unmaps
(notably xpdf's find dialog). These windows entered a zombified state: xmonad
does not manage them, yet they are still mapped and raised on screen.
The new algorithm (derived from wmii):
- track windows that are mapped on screen
- track the number of expected unmap events for each window, increment every
time 'hide' is called on a window that is not mapped.
- decrement the expected unmap counter on each unmap event
- treat an unmap event as genuine (ie. unmap the window) when:
- the event is synthetic (per ICCCM)
- OR there are no expected unmap events for this window
darcs-hash:20070606214006-a5988-7c2eced85319ff506a9b7c9dc86d5946ca0da8e5
|
|
darcs-hash:20070606025226-9c5c1-034e478b1212fcd36513beb77d2c3921761de169
|
|
so XMonadContrib can use them
darcs-hash:20070606005056-b9aa7-96a3bb09f8e6dabd707eed7b5f19d733e5e1778e
|
|
darcs-hash:20070606024938-9c5c1-b89a2d864e408bfc96408d38013c14d1cde93014
|
|
darcs-hash:20070606004603-9c5c1-2bae3b2eb4287ea0bc349d6f590f39626adbb985
|
|
darcs-hash:20070605092659-9c5c1-7eee6ed8801aa1c81e62d8dc62fa95035c4a5523
|
|
darcs-hash:20070605091803-9c5c1-4f975ef36d67e93ebdc2f0c4345898a3eccc686e
|
|
darcs-hash:20070605091354-9c5c1-25631fa2d8c438d3d21bfd5dd9aabc36e2520d53
|
|
darcs-hash:20070605083735-9c5c1-1ab5acbd611914caa7b5cdf1f2df338c0ee616f8
|
|
When resuming, we were (implicitly) relying on 'scan' to find all
windows, and reset their event masks and WM_STATE. When we moved to
Iconfified hidden workspaces, 'scan' would only find and reset states on
the current workspace.
The result being that hidden workspace windows no longer received
enterNotify events.
Fix this by traversing the StackSet serialised during a restart, setting
the intial X states for each window, whether visible or hidden.
darcs-hash:20070605043040-9c5c1-642f02a61a3e1d4679fde9c38eeb10aec53ea455
|
|
darcs-hash:20070604211956-a5988-234b56ec2201d5f0e9c7fed6fd8af300cf6a6c0b
|
|
darcs-hash:20070604211816-a5988-c387bea338520504cb4c2740b41e5d4a09807d03
|
|
darcs-hash:20070604192943-06a25-571e4d20a5cb05c292e071295586d7e024cf89ec
|
|
darcs-hash:20070604192753-06a25-20a4752a79da48c1f08b4a9556174c18928d844f
|
|
darcs-hash:20070604204617-a5988-888a1c992b79e45260738a16e58017dab5061d6b
|
|
darcs-hash:20070604201639-a5988-07a811aea77e4e22ae853cd09ddb3a6cd3e1cd61
|
|
darcs-hash:20070604064418-a5988-38ebeb4b8f5793db4ff1ae7dbd0d079bea552c87
|
|
darcs-hash:20070604063657-a5988-502d9499134fce6562a8327ce3257d63a16207f2
|
|
darcs-hash:20070604062653-a5988-8a6456ccc1dd03fa1c733e71dfa056dd76a91186
|
|
darcs-hash:20070604061719-a5988-a1084b152584632c8f896423f8a03d8fe297b2d4
|
|
darcs-hash:20070604060611-a5988-e324f35005d3b19ffced089499d086853f07cfad
|
|
darcs-hash:20070604050914-a5988-600a4ba6f2f294b0ce56b16e8887d493789f29c7
|
|
darcs-hash:20070604044715-e3110-7bd7ba2b78f80046e2148fb37aa0f5fe3eca08c6
|
|
Note that this breaks compatibility with certain programs described as
"obsolete" in the ICCCM (1994). See the command above the UnmapEvent handler
for details.
darcs-hash:20070604042343-e3110-4766eafca2875091189159f6a1df29eac3c21387
|
|
(a documented feature)
darcs-hash:20070604013938-e3110-8dc84f03278c55076a5cf83013974689c4861ffc
|
|
darcs-hash:20070603071556-9c5c1-244aeb0d684f78ae0d3495547064a1203cd36762
|
|
darcs-hash:20070603064306-9c5c1-7cea709e0ea2b15f6ae395a6942072d91b1e97f2
|
|
removes `wide' as an explicit mode (it's `mirror tall')
darcs-hash:20070603054740-9c5c1-1cdabf3f5bb2ac2592fc94d7d3ef51621077d3f8
|
|
darcs-hash:20070602052605-b9aa7-a3aa510c7d439b3169757f644c92107250d8db94
|
|
darcs-hash:20070602040647-b9aa7-d7bad13c4919882368872a88f04a678308162be6
|
|
enable this
darcs-hash:20070601085626-9c5c1-668bec95074ab7050c0c8105cf7ec9c2a1c7e1f3
|
|
darcs-hash:20070601015137-b9aa7-51c6b9ec428c2d16d65b196384fa2ce953dda245
|
|
darcs-hash:20070601022329-9c5c1-067bd51825f075e0813ecea5d2124617b406ad95
|
|
darcs-hash:20070601001325-64353-3ea08019b13ac470d7d2c60cbdea61de7d580c8c
|
|
darcs-hash:20070531090537-9c5c1-923390025493738d7d9b2e6afbb361362acb2e9a
|
|
darcs-hash:20070531085308-9c5c1-73ed940708aa9a369b0345c0d2b2a4708a231e67
|
|
This is a first attempting at a floating layer:
mod-button1: move window
mod-button2: swapMaster
mod-button3: resize window
mod-t: make floating window tiled again
Moving or resizing a window automatically makes it floating.
Known issues:
Hard to manage stacking order. You can promote a window to move it to the top,
(which you can do with mod-button2) but it should be easier than that.
Moving a window by dragging it to a different Xinerama screen does not move it
to that workspace.
Code is ugly.
darcs-hash:20070531044733-b9aa7-c96d5263e1d3447e91f436920f4d047050ce55d9
|
|
darcs-hash:20070528134547-9c5c1-d3eb8cfe7bf7293e85f957106d9d9d540524e9b6
|
|
leads to a race. this will affect how gaps are redrawn when moving to a
new screen with the mouse.
darcs-hash:20070528133127-9c5c1-9676939dbb1155129b976146baf929ca19d52a12
|
|
darcs-hash:20070528044722-9c5c1-7f8faeac3a2a375f58c94c822f16dc8e3beaea38
|
|
darcs-hash:20070528031835-9c5c1-34c9fc2931a6daa8fc3e63385782f43b097e293f
|
|
screens now
darcs-hash:20070528031501-9c5c1-beaadbacb5efc1ce5998aba41fbb3b2c68cdf0d1
|
|
darcs-hash:20070528025135-9c5c1-3c0f63ac557da57cd268cd0129b9ce90692631e4
|
|
darcs-hash:20070527154353-9c5c1-6ef13fd2212f3a18a3050c47d71eb250ec4ec683
|
|
darcs-hash:20070527153211-9c5c1-0a36be7dd8b8181597f21e362ac735b343746b79
|
|
switched workspaces (so gap follows screen focus)
darcs-hash:20070527151942-9c5c1-27e63c884e4003fc003b1928ed28412e01a21764
|
|
darcs-hash:20070527150805-9c5c1-6774cc60f8f39b8ac16c465d7ab0d2884a984fc1
|
|
Harmless with status bar support now
darcs-hash:20070527134505-9c5c1-7cf8be20d1976afdd694da946ae72cfb537fa209
|
|
darcs-hash:20070527125928-9c5c1-a16246810db9d4abfe81d0d5814721b64f59a14c
|
|
By default, it is 0 (set in Config.hs), but set this to a pixel count to
get a permanent gap at the top of the screen. You can then at startup
launch dzen, and it will run in this gap, and not be obscured by other
windows.
Perfect for a persistant status bar.
darcs-hash:20070527122702-9c5c1-2a3ca82463b3bab21556674936b1bf8a86ba6356
|