Spencer Janssen wrote:
One thing that this patch doesn't really address is what it means to combine
event hooks. As we use this functionality in contrib, we'll come upon the
inevitable situation where a user wants to use two event hooks. We need to
at least document the correct method, and probably provide an operator to do
it. Perhaps Monoid could be used?
As a minor issue, I'd rather keep the name XMonad.Main.handle instead of
defaultHandler.
Done. I changed the type to Event -> X All and added a note in the
documentation that mappend should be used for combining them in most
cases. (I also removed the handler rename)
Here are the new patches(The actual functionality and the adaption of
the contrib modules).
Tue Feb 3 17:00:46 CET 2009 Daniel Schoepe
* Adjustments to use the new event hook feature instead of Hooks.EventHook
New patches:
[Adjustments to use the new event hook feature instead of Hooks.EventHook
Daniel Schoepe **20090203160046
Ignore-this: f8c239bc8e301cbd6fa509ef748af542
] {
hunk ./XMonad/Config/Arossato.hs 93
map show [7 .. 9 :: Int]
, logHook = myDynLog xmobar -- REMOVE this line if you do not have xmobar installed!
, manageHook = newManageHook
- , layoutHook = eventHook ServerMode $
- avoidStruts $
+ , layoutHook = avoidStruts $
decorated |||
noBorders mytabs |||
otherLays
hunk ./XMonad/Config/Arossato.hs 101
, normalBorderColor = "white"
, focusedBorderColor = "black"
, keys = newKeys
+ , handleEventHook = serverModeEventHook
, focusFollowsMouse = False
}
where
hunk ./XMonad/Config/Desktop.hs 30
{ logHook = ewmhDesktopsLogHook
, layoutHook = desktopLayoutModifiers $ layoutHook defaultConfig
, manageHook = manageHook defaultConfig <+> manageDocks
+ , handleEventHook = ewmhDesktopsEventHook
, keys = \c -> desktopKeys c `M.union` keys defaultConfig c }
desktopKeys (XConfig {modMask = modm}) = M.fromList $
hunk ./XMonad/Config/Desktop.hs 36
[ ((modm, xK_b), sendMessage ToggleStruts) ]
-desktopLayoutModifiers layout = avoidStruts $ ewmhDesktopsLayout layout
+desktopLayoutModifiers layout = avoidStruts layout
hunk ./XMonad/Config/Droundy.hs 47
import XMonad.Hooks.ManageDocks ( avoidStruts, manageDocks )
import XMonad.Hooks.EwmhDesktops ( ewmhDesktopsLogHook,
- ewmhDesktopsLayout )
+ ewmhDesktopsEventHook )
myXPConfig :: XPConfig
myXPConfig = defaultXPConfig {font="-*-lucida-medium-r-*-*-14-*-*-*-*-*-*-*"
hunk ./XMonad/Config/Droundy.hs 124
config = defaultConfig
{ borderWidth = 1 -- Width of the window border in pixels.
, XMonad.workspaces = ["mutt","iceweasel"]
- , layoutHook = ewmhDesktopsLayout $ showWName $ workspaceDir "~" $
+ , layoutHook = showWName $ workspaceDir "~" $
boringWindows $ smartBorders $ windowNavigation $
maximizeVertical $ toggleLayouts Full $ avoidStruts $
named "tabbed" mytab |||
hunk ./XMonad/Config/Droundy.hs 138
, terminal = "xterm" -- The preferred terminal program.
, normalBorderColor = "#222222" -- Border color for unfocused windows.
, focusedBorderColor = "#00ff00" -- Border color for focused windows.
+ , handleEventHook = ewmhDesktopsEventHook
, XMonad.modMask = mod1Mask
, XMonad.keys = keys
}
hunk ./XMonad/Hooks/EwmhDesktops.hs 18
module XMonad.Hooks.EwmhDesktops (
-- * Usage
-- $usage
- EwmhDesktopsHook,
ewmhDesktopsLogHook,
ewmhDesktopsLogHookCustom,
hunk ./XMonad/Hooks/EwmhDesktops.hs 20
- ewmhDesktopsLayout
+ ewmhDesktopsEventHook
) where
import Data.List
hunk ./XMonad/Hooks/EwmhDesktops.hs 25
import Data.Maybe
+import Data.Monoid
import XMonad
import Control.Monad
hunk ./XMonad/Hooks/EwmhDesktops.hs 33
import XMonad.Hooks.SetWMName
import XMonad.Util.WorkspaceCompare
-import XMonad.Hooks.EventHook
-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
hunk ./XMonad/Hooks/EwmhDesktops.hs 43
-- > myLogHook :: X ()
-- > myLogHook = ewmhDesktopsLogHook
-- >
--- > myLayoutHook = ewmhDesktopsLayout $ avoidStruts $ layoutHook defaultConfig
+-- > myHandleEventHook = ewmhDesktopsEventHook
-- >
hunk ./XMonad/Hooks/EwmhDesktops.hs 45
--- > main = xmonad defaultConfig { layoutHook = myLayouts, logHook = myLogHook }
+-- > main = xmonad defaultConfig { handleEventHook = myHandleEventHook, logHook = myLogHook }
--
-- 'avoidStruts' is used to automatically leave space for dock programs, and
-- can be found in 'XMonad.Hooks.ManageDocks'.
hunk ./XMonad/Hooks/EwmhDesktops.hs 121
--
-- * _NET_ACTIVE_WINDOW (activate another window, changing workspace if needed)
--
-ewmhDesktopsLayout :: layout a -> HandleEvent EwmhDesktopsHook layout a
-ewmhDesktopsLayout = eventHook EwmhDesktopsHook
-
-data EwmhDesktopsHook = EwmhDesktopsHook deriving ( Show, Read )
-instance EventHook EwmhDesktopsHook where
- handleEvent _ e@ClientMessageEvent {} = do handle e
- handleEvent _ _ = return ()
+ewmhDesktopsEventHook :: Event -> X All
+ewmhDesktopsEventHook e = handle e >> return (All True)
handle :: Event -> X ()
handle ClientMessageEvent {
hunk ./XMonad/Hooks/ServerMode.hs 62
( -- * Usage
-- $usage
ServerMode (..)
- , eventHook
+ , serverModeEventHook
) where
import Control.Monad (when)
hunk ./XMonad/Hooks/ServerMode.hs 67
import Data.List
+import Data.Monoid
import System.IO
import XMonad
hunk ./XMonad/Hooks/ServerMode.hs 72
import XMonad.Actions.Commands
-import XMonad.Hooks.EventHook
-- $usage
-- You can use this module with the following in your
hunk ./XMonad/Hooks/ServerMode.hs 79
--
-- > import XMonad.Hooks.ServerMode
--
--- Then edit your @layoutHook@ by adding the 'eventHook':
+-- Then edit your @handleEventHook@ by adding the 'serverModeEventHook':
--
hunk ./XMonad/Hooks/ServerMode.hs 81
--- > layoutHook = eventHook ServerMode $ avoidStruts $ simpleTabbed ||| Full ||| etc..
+-- > main = xmonad defaultConfig { handleEventHook = serverModeEventHook }
--
hunk ./XMonad/Hooks/ServerMode.hs 83
--- and then:
---
--- > main = xmonad defaultConfig { layoutHook = myLayouts }
---
--- For more detailed instructions on editing the layoutHook see:
---
--- "XMonad.Doc.Extending#Editing_the_layout_hook"
data ServerMode = ServerMode deriving ( Show, Read )
hunk ./XMonad/Hooks/ServerMode.hs 86
-instance EventHook ServerMode where
- handleEvent _ (ClientMessageEvent {ev_message_type = mt, ev_data = dt}) = do
+serverModeEventHook :: Event -> X All
+serverModeEventHook (ClientMessageEvent {ev_message_type = mt, ev_data = dt}) = do
d <- asks display
a <- io $ internAtom d "XMONAD_COMMAND" False
when (mt == a && dt /= []) $ do
hunk ./XMonad/Hooks/ServerMode.hs 96
case lookup (fromIntegral (head dt) :: Int) (zip [1..] cl) of
Just (c,_) -> runCommand' c
Nothing -> mapM_ (io . hPutStrLn stderr) . listOfCommands $ cl
- handleEvent _ _ = return ()
+ return (All True)
+serverModeEventHook _ = return (All True)
hunk ./XMonad/Hooks/UrgencyHook.hs 73
import XMonad
import qualified XMonad.StackSet as W
-import XMonad.Hooks.EventHook
import XMonad.Util.Dzen (dzenWithArgs, seconds)
import XMonad.Util.NamedWindows (getName)
import XMonad.Util.Timer (TimerId, startTimer, handleTimer)
hunk ./XMonad/Hooks/UrgencyHook.hs 201
-- 'urgencyConfig' to control behavior. To change this, use 'withUrgencyHook'
-- instead.
withUrgencyHook :: (LayoutClass l Window, UrgencyHook h) =>
- h -> XConfig l -> XConfig (HandleEvent (WithUrgencyHook h) l)
+ h -> XConfig l -> XConfig l
withUrgencyHook hook conf = withUrgencyHookC hook urgencyConfig conf
-- | This lets you modify the defaults set in 'urgencyConfig'. An example:
hunk ./XMonad/Hooks/UrgencyHook.hs 210
--
-- (Don't type the @...@, you dolt.) See 'UrgencyConfig' for details on configuration.
withUrgencyHookC :: (LayoutClass l Window, UrgencyHook h) =>
- h -> UrgencyConfig -> XConfig l -> XConfig (HandleEvent (WithUrgencyHook h) l)
+ h -> UrgencyConfig -> XConfig l -> XConfig l
withUrgencyHookC hook urgConf conf = conf {
hunk ./XMonad/Hooks/UrgencyHook.hs 212
- layoutHook = eventHook (WithUrgencyHook hook urgConf) $ layoutHook conf,
+ handleEventHook = \e -> handleEvent (WithUrgencyHook hook urgConf) e >> handleEventHook conf e,
logHook = cleanupUrgents (suppressWhen urgConf) >> logHook conf
}
hunk ./XMonad/Hooks/UrgencyHook.hs 324
-- ourselves, allowing us to clear urgency when a window is visible, and not to
-- set urgency if a window is visible. If you have a better idea, please, let us
-- know!
-instance UrgencyHook h => EventHook (WithUrgencyHook h) where
- handleEvent wuh event = case event of
- PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w } -> do
+handleEvent :: UrgencyHook h => WithUrgencyHook h -> Event -> X ()
+handleEvent wuh event =
+ case event of
+ PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w } -> do
when (t == propertyNotify && a == wM_HINTS) $ withDisplay $ \dpy -> do
WMHints { wmh_flags = flags } <- io $ getWMHints dpy w
if (testBit flags urgencyHintBit) then do
hunk ./XMonad/Hooks/UrgencyHook.hs 336
else
clearUrgency w
userCodeDef () =<< asks (logHook . config) -- call *after* IORef has been modified
- DestroyWindowEvent {ev_window = w} ->
+ DestroyWindowEvent {ev_window = w} ->
clearUrgency w
hunk ./XMonad/Hooks/UrgencyHook.hs 338
- _ ->
+ _ ->
mapM_ handleReminder =<< readReminders
where handleReminder reminder = handleTimer (timer reminder) event $ reminderHook wuh reminder
}
Context:
[Easier Colorizers for X.A.GridSelect
quentin.moser@unifr.ch**20090128001702
Ignore-this: df3e0423824e40537ffdb4bc7363655d
]
[X.A.SpawOn: fix usage doc
Roman Cheplyaka **20090202102042]
[Added GridVariants.SplitGrid
Norbert Zeh **20090129152146
GridVariants.TallGrid behaved weird when transformed using Mirror
or Reflect. The new layout SplitGrid does away with the need for
such transformations by taking a parameter to specify horizontal
or vertical splits.
]
[FixedColumn: added missing nmaster to the usage doc
Ismael Carnales **20090130195239
Ignore-this: 642aa0bc9e68e7518acc8af30324b97a
]
[XMonad.Actions.Search: fix whitespace & tabs
gwern0@gmail.com**20090129025246
Ignore-this: 894e479ccc46160848c4d70c2361c929
]
[xmonad-action-search-intelligent-searchengines
Michal Trybus **20090128101938
Changed the XMonad.Action.Search to use a function instead of String to prepare the search URL.Added a few useful functions used to connect many search engines together and do intelligent prefixed searches (more doc in haddock)The API has not changed with the only exception of search function, which now accepts a function instead of String.
]
[XMonad.Prompt autocompletion fix
quentin.moser@unifr.ch**20090127184145
Ignore-this: 635cbf6420722a4edef1ae9c40b36e1b
]
[X.A.SinkAll: re-add accidentally deleted usage documentation
Brent Yorgey **20090127222533]
[move XMonad.Actions.SinkAll functionality to more general XMonad.Actions.WithAll, and re-export sinkAll from X.A.SinkAll for backwards compatibility
Brent Yorgey **20090127222355]
[adds generic 'all windows on current workspace' functionality
loupgaroublond@gmail.com**20081221224850]
[placement patch to XMonad.Layout.LayoutHints
quentin.moser@unifr.ch**20090126195950
Ignore-this: 87a5efa9c841d378a808b1a4309f18
]
[XMonad.Actions.MessageFeedback module
quentin.moser@unifr.ch**20090126181059
Ignore-this: 82e58357a44f98c35ccf6ad0ef98b552
]
[submapDefault
Anders Engstrom **20090118152933
Ignore-this: c8958d47eb584a7de04a81eb087f05d1
Add support for a default action to take when the entered key does not match any entry.
]
[X.A.CycleWS: convert tabs to spaces (closes #266)
Roman Cheplyaka **20090127185604]
[Mosaic picks the middle aspect layout, unless overriden
Adam Vogt **20090126032421
Ignore-this: aaa31da14720bffd478db0029563aea5
]
[Mosaic: stop preventing access to the widest layouts
Adam Vogt **20090125045256
Ignore-this: c792060fe2eaf532f433cfa8eb1e8fe3
]
[X.L.Mosaic add documentation, update interface and aspect ratio behavior
Adam Vogt **20090125041229
Ignore-this: e78027707fc844b3307ea87f28efed73
]
[Use currentTag, thanks asgaroth
Spencer Janssen **20090125213331
Ignore-this: dd1a3d96038de6479eca3b9798d38437
]
[Support for spawning most applications on a specific workspace
Daniel Schoepe **20090125191045
Ignore-this: 26076d54b131e037b42c87e4fde63200
]
[X.L.Mosaic: haddock fix
Roman Cheplyaka **20090124235908]
[A mosaic layout based on MosaicAlt
Adam Vogt **20090124022058
Ignore-this: 92bad7498f1ac402012e3eba6cbb2693
The position of a window in the stack determines its position and layout. And
the overall tendency to make wide or tall windows can be changed, though not
all of the options presented by MosaicAlt can be reached, the layout changes
with each aspect ratio message.
]
[uninstallSignalHandlers in spawnPipe
Spencer Janssen **20090122002745
Ignore-this: e8cfe0f18f278c95d492628da8326fd7
]
[Create a new session for spawnPiped processes
Spencer Janssen **20090122000441
Ignore-this: 37529c5fe8b4bf1b97fffb043bb3dfb0
]
[TAG 0.8.1
Spencer Janssen **20090118220647]
[Use spawnOn in my config
Spencer Janssen **20090117041026
Ignore-this: 3f92e4bbe4f2874b86a6c7ad66a31bbb
]
[Add XMonad.Actions.SpawnOn
Spencer Janssen **20090117040432
Ignore-this: 63869d1ab11f2ed5aab1690763065800
]
[Bump version to 0.8.1
Spencer Janssen **20090116223607
Ignore-this: 1c201e87080e4404f51cadc108b228a1
]
[Compile without optimizations on x86_64 and GHC 6.10
Spencer Janssen **20090108231650
Ignore-this: a803235b8022793f648e8953d9f05e0c
This is a workaround for http://xmonad.org/bugs/226
]
[Update all uses of doubleFork/waitForProcess
Spencer Janssen **20090116210315
Ignore-this: 4e15b7f3fd6af3b7317449608f5246b0
]
[Update to my config
Spencer Janssen **20090116204553
Ignore-this: 81017fa5b99855fc8ed1fe8892929f53
]
[Adjustments to new userCode function
Daniel Schoepe **20090110221310]
[X.U.EZConfig: expand documentation
Brent Yorgey **20090116153143]
[add a bit of documentation to HintedTile
Brent Yorgey **20090114065126]
[ManageHelpers: add isDialog
johanngiwer@web.de**20090108232505]
[CenteredMaster
portnov84@rambler.ru**20090111134513
centerMaster layout modifier places master window at top of other, at center of screen. Other windows are managed by base layout.
topRightMaster is similar, but places master window at top right corner.
]
[XMonad.Util.XSelection: update maintainer information
gwern0@gmail.com**20090110213000
Ignore-this: 1592ba07f2ed5d2258c215c2d175190a
]
[X.U.XSelection: get rid of warning about missing newline, add Haddock link
Brent Yorgey **20090102194357]
[adds haddock documentation for transformPromptSelection
loupgaroublond@gmail.com**20090102190954
also renames the function per mailing list recommendation
]
[adds a weird function to XSelection
loupgaroublond@gmail.com**20081222020730
This enables you to pass a function of (String -> String) to a selection function to modify the string before executing it. This way, you can input your own escape routines to make it shell command line safe, and/or do other fancier things.
]
[ThreeColumnsMiddle
xmonad@c-otto.de**20090102091019]
[fix-fromJust-errors
rupa@lrrr.us**20081224045509
bogner wrote all this stuff and i just tested it.
I had:
myLogHook = ewmhDesktopLogHookCustom ScratchpadFilterOutWorkspace >> updatePointer Nearest
Everytime I invoked or hid Scratchpad, it would leave a 'Maybe.fromJust: Nothing' line in .xsession-errors, and updatePointer would stop working.
]
[ Prompt: Change Filemode to 600 for history-file (fixes bug 244)
Dominik Bruhn **20081218001601]
[X.L.Monitor: changes in message passing
Roman Cheplyaka **20081226220851
- transform mbName (Maybe String) to name (String)
- slghtly change semantics of messages, document it
]
[X.L.Monitor: change interface
Roman Cheplyaka **20081226213118
- remove add*Monitor
- add manageMonitor, monitor template
]
[X.U.WindowProperties: propertyToQuery+docs
Roman Cheplyaka **20081225080702]
[X.L.Monitor: docs
Roman Cheplyaka **20081225073904]
[hlintify XUtils, XSelection, Search, WindowGo
gwern0@gmail.com**20081220153302
Ignore-this: 7e877484e3cd8954b74232ea83180fa9
]
[fix focus issue for XMonad.Actions.Warp.banishScreen
Norbert Zeh **20081212203532
This patch ensures that the focus (or in fact the whose windowset)
does not change as a result of a banishScreen. The way this is implemented
will become problematic if xmonad ever goes multithreaded.
]
[addition of XMonad.Actions.Warp.banishScreen
Norbert Zeh **20081212192621
This works on top of warpToScreen and, thus, suffers from the same issue:
focus change.
]
[fixed documentation for banish
Norbert Zeh **20081212191819
banish actually warps to the specified corner of the current window, not
the screen.
]
[addition of combined TallGrid layout
Norbert Zeh **20081212184836
Added a module XMonad.Layouts.GridVariants, which defines layouts
Grid and TallGrid. The former is a customizable version of Grid. The latter
is a combination of Grid and Tall (see doc of the module).
]
[Add FixedColumn, a layout like Tall but based on the resize hints of windows
Justin Bogner **20081213073054]
[XMonad.Actions.WindowGo: fix a floating-related focus bug
gwern0@gmail.com**20081205150755
Ignore-this: c8b6625aa2bd4136937acbd2ad64ffd3
If a floating window was focused, a cross-workspace 'raise' would cause a loop of
shifting windows. Apparently the problem was 'focus' and its mouse-handling. Spencer
suggested that the calls to focus be replaced with 'focusWindow', which resolved it.
]
[Prompt.hs: +greenXPConfig and amberXPConfig
gwern0@gmail.com**20081119213122
Ignore-this: 95ac7dbe9c8fe3618135966f251f4fc6
]
[Prompt.hs: increase font size to 12 from niggardly 10
gwern0@gmail.com**20081119212523
Ignore-this: 74a6e1ac5e1774da4ffc7c6667c034c
]
[Prompt.hs: replace magic numbers with understandable names
gwern0@gmail.com**20081119212502
Ignore-this: 8401c0213be9a32c925e1bd0ba5e01f1
]
[X.L.Monitor: recommend doHideIgnore (docs)
Roman Cheplyaka **20081215190710]
[X.L.Monitor: docs
Roman Cheplyaka **20081215184423]
[X.L.Monitor: export Monitor datatype
Roman Cheplyaka **20081215184318]
[X.H.ManageHelpers: add doHideIgnore
Roman Cheplyaka **20081215182758]
[Add KDE 4 config, thanks to Shirakawasuna on IRC
Spencer Janssen **20081211071141
Ignore-this: 51698961ab5b6e569c294d174f2804a9
]
[I use the deleteConsecutive history filter
Spencer Janssen **20081025070438]
[Remove XMonad.Config.PlainConfig, it has been turned into the separate xmonad-light project.
Braden Shepherdson **20081203161534]
[XMonad.Prompt: swap up and down per bug #243
gwern0@gmail.com**20081203013323
Ignore-this: 8ab0481a0da7a983f501ac2fec4a68e8
]
[Fix boolean operator precedence in GridSelect keybindings
Aleksandar Dimitrov **20081201120928
The vim-like hjkl keys were ORed to the key event AND arrow keys.
]
[GridSelect.hs: navigate grid with h,j,k,l as well as arrow keys
sean.escriva@gmail.com**20081122084725]
[Export setOpacity from FadeInactive. Document how to make monitor transparent (X.L.Monitor)
Roman Cheplyaka **20081117153027]
[Monitor: use broadcastMessage instead of sendMessage; this solves several issues
Roman Cheplyaka **20081117133957]
[FadeInactive: fade all inactive windows (including focused windows on visible screens)
Roman Cheplyaka **20081117130115]
[Monitor: documented one more issue
Roman Cheplyaka **20081117113807]
[Monitor: improved the docs
Roman Cheplyaka **20081117073709]
[added XMonad.Layout.Monitor
Roman Cheplyaka **20081115104735]
[WindowProperties: added allWithProperty
Roman Cheplyaka **20081115104525]
[ManageHelpers: added doSideFloat (generalization of doCenterFloat)
Roman Cheplyaka **20081114113015]
[GridSelect: Export default_colorizer
Dominik Bruhn **20081112140005]
[Simplify code for restriction-calculation and remove compiletime warnings
Dominik Bruhn **20081112134630]
[Simplify handle/eventLoop, introduce findInWindowMap, partial updates for key movements (less flickering)
Clemens Fruhwirth **20081111100405
* handle/eventLoop carried the display and the drawing window as
parameters. The display is available from the embedded X monad, the
drawing windows was added.
* updateWindows now takes a list of windows to
update. updateAllWindows updates all windows.
* only the windows that are modified by key movements are redrawn
now. This means less flickering.
]
[GridSelect: force cursor stay in visible area
Roman Cheplyaka **20081111063348]
[GridSelect: fix infiniteness problem with diamondRestrict
Roman Cheplyaka **20081111055350]
[GridSelect: remove tabs
Roman Cheplyaka **20081111053647]
[Exported shrinkWhile from Decoration to use in GridSelect
Roman Cheplyaka **20081110191534]
[GridSelect: added link to a screenshot
Roman Cheplyaka **20081110190617]
[GridSelect: various improvements
Roman Cheplyaka **20081110184644
Added documentation
Restricted export list for the sake of haddock
Added functions:
withSelectedWindow
bringSelected (by Clemens Fruhwirth)
goToSelected (by Dominik Bruhn)
]
[Initial version of GridSelect.hs with a lot room for improvement/cleanups
Clemens Fruhwirth **20081107115114]
[documentation: XMonad.Util.Search.hs, add EZConfig keybindings example
sean.escriva@gmail.com**20081106171707]
[typo
Don Stewart **20081104043044
Ignore-this: bdac0ff3316c821bce321b51c62f6e89
]
[place an upper bound on the version of base we support
Don Stewart **20081104035857
Ignore-this: 29139cc4f0ecb299b56ae99f7d20b854
]
[explicit import list for things in the process library
Don Stewart **20081104035319
Ignore-this: 91b7f96421828788760e8bcff7dec317
]
[Work around ghc 6.10 bug #2738
Don Stewart **20081104034819
Ignore-this: c75da9693fa642025eac0d074869423d
]
[windowPromptBringCopy
deadguysfrom@gmail.com**20081023173019]
[generic menu and window bringer
Travis B. Hartwell **20081027005523]
[Search.hs: +hackage search, courtesy of byorgey
gwern0@gmail.com**20081031214937
Ignore-this: 24db0ceed49f8bd37ce98ccf8f8ca2ab
]
[Prompt.hs rename deleteConsecutiveDuplicates
gwern0@gmail.com**20081008205131
That name is really unwieldy and long.
]
[Prompt.hs: have historyCompletion filter dupes
gwern0@gmail.com**20081008204710
Specifically, it calls deleteConsecutiveDuplicates on the end product. uniqSort reverses order in an unfortunate way, so we don't use that.
The use-case is when a user has added the same input many times - as it stands, if the history records 30 'top's or whatever, the completion will show 30 'top' entries! This fixes that.
]
[Prompt.hs: tweak haddocks
gwern0@gmail.com**20081008204649]
[Prompt.hs: mv uniqSort to next to its confreres, and mention the trade-off
gwern0@gmail.com**20081008192645]
[Do not consider XMONAD_TIMER unknown
Joachim Breitner **20081008195643]
[Kill window without focusing it first
Joachim Breitner **20081005002533
This patch requires the patch "add killWindow function" in xmonad.
Before this patch, people would experience “workspace flicker” when closing
a window via EWMH that is not on the current workspace, for example when
quitting pidgin via the panel icon.
]
[let MagnifyLess actually magnify less
daniel@wagner-home.com**20081015153911]
[Actions.Search: add a few search engines
intrigeri@boum.org**20081008104033
Add Debian {package, bug, tracking system} search engines, as well as Google
Images and isohunt.
]
[Implement HiddenNonEmptyWS with HiddenWS and NonEmptyWS
Joachim Breitner **20081006211027
(Just to reduce code duplication)
]
[Add straightforward HiddenWS to WSType
Joachim Breitner **20081006210548
With NonEmptyWS and HiddenNonEmptyWS present, HiddenWS is obviously missing.
]
[Merge emptyLayoutMod into redoLayout
Joachim Breitner **20081005190220
This removes the emptyLayoutMod method from the LayoutModifier class, and
change the Stack parameter to redoLayout to a Maybe Stack one. It also changes
all affected code. This should should be a refactoring without any change in
program behaviour.
]
[SmartBorders even for empty layouts
Joachim Breitner **20081005184426
Fixes: http://code.google.com/p/xmonad/issues/detail?id=223
]
[Paste.hs: improve haddocks
gwern0@gmail.com**20080927150158]
[Paste.hs: fix haddock
gwern0@gmail.com**20080927145238]
[minor explanatory comment
daniel@wagner-home.com**20081003015919]
[XMonad.Layout.HintedGrid: add GridRatio (--no-test because of haddock breakage)
Lukas Mai **20080930141715]
[XMonad.Util.Font: UTF8 -> USE_UTF8
Lukas Mai **20080930140056]
[Paste.hs: implement noModMask suggestion
gwern0@gmail.com**20080926232056]
[fix a divide by zero error in Grid
daniel@wagner-home.com**20080926204148]
[-DUTF8 flag with -DUSE_UTF8
gwern0@gmail.com**20080921154014]
[XSelection.hs: use CPP to compile against utf8-string
gwern0@gmail.com**20080920151615]
[add XMonad.Config.Azerty
Devin Mullins **20080924044946]
[flip GridRatio to match convention (x/y)
Devin Mullins **20080922033354]
[let Grid have a configurable aspect ratio goal
daniel@wagner-home.com**20080922010950]
[Paste.hs: +warning about ASCII limitations
gwern0@gmail.com**20080921155038]
[Paste.hs: shorten comment lines to under 80 columns per sjanssen
gwern0@gmail.com**20080921154950]
[Forgot to enable historyFilter :(
Spencer Janssen **20080921094254]
[Prompt: add configurable history filters
Spencer Janssen **20080921093453]
[Update my config to use 'statusBar'
Spencer Janssen **20080921063513]
[Rename pasteKey functions to sendKey
Spencer Janssen **20080921062016]
[DynamicLog: doc fixes
Spencer Janssen **20080921061314]
[Move XMonad.Util.XPaste to XMonad.Util.Paste
Spencer Janssen **20080921060947]
[Depend on X11 >= 1.4.3
Spencer Janssen **20080921055456]
[statusBar now supplies the action to toggle struts
Spencer Janssen **20080918013858]
[cleanup - use currentTag
Devin Mullins **20080921011159]
[XPaste.hs: improve author info
gwern0@gmail.com**20080920152342]
[+XMonad.Util.XPaste: a module for pasting strings to windows
gwern0@gmail.com**20080920152106]
[UrgencyHook bug fix: cleanupUrgents should clean up reminders, too
Devin Mullins **20080920062117]
[Sketch of XMonad.Config.Monad
Spencer Janssen **20080917081838]
[raiseMaster
seanmce33@gmail.com**20080912184830]
[Add missing space between dzen command and flags
Daniel Neri **20080915131009]
[Big DynamicLog refactor. Added statusBar, improved compositionality for dzen and xmobar
Spencer Janssen **20080913205931
Compatibility notes:
- dzen type change
- xmobar type change
- dynamicLogDzen removed
- dynamicLogXmobar removed
]
[Take maintainership of XMonad.Prompt
Spencer Janssen **20080911230442]
[Overhaul Prompt to use a zipper for history navigation. Fixes issue #216
Spencer Janssen **20080911225940]
[Use the new completion on tab setting
Spencer Janssen **20080911085940]
[Only start to show the completion window with more than one match
Joachim Breitner **20080908110129]
[XPrompt: Add showCompletionOnTab option
Joachim Breitner **20080908105758
This patch partially implements
http://code.google.com/p/xmonad/issues/detail?id=215
It adds a XPConfig option that, if enabled, hides the completion window
until the user presses Tab once. Default behaviour is preserved.
TODO: If Tab causes a unique completion, continue to hide the completion
window.
]
[XMonad.Actions.Plane.planeKeys: function to make easier to configure
Marco Túlio Gontijo e Silva **20080714153601]
[XMonad.Actions.Plane: removed unneeded hiding
Marco Túlio Gontijo e Silva **20080714152631]
[Improvements in documentation
Marco Túlio Gontijo e Silva **20080709002425]
[Fix haddock typos in XMonad.Config.{Desktop,Gnome,Kde}
Spencer Janssen **20080911040808]
[add clearUrgents for your keys
Devin Mullins **20080909055425]
[add reminder functionality to UrgencyHook
Devin Mullins **20080824200548
I'm considering rewriting remindWhen and suppressWhen as UrgencyHookModifiers, so to speak. Bleh.
]
[TAG 0.8
Spencer Janssen **20080905195420]
Patch bundle hash:
32861752d9dfffd2b34d05a544706613588f5fc4
Tue Feb 3 16:55:36 CET 2009 Daniel Schoepe
* Support for custom event hooks
New patches:
[Support for custom event hooks
Daniel Schoepe **20090203155536
Ignore-this: f22f1a7ae2d958ba1b3625aa923b7efd
] {
hunk ./XMonad/Config.hs 29
--
import XMonad.Core as XMonad hiding
(workspaces,manageHook,numlockMask,keys,logHook,startupHook,borderWidth,mouseBindings
- ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse)
+ ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
+ ,handleEventHook)
import qualified XMonad.Core as XMonad
(workspaces,manageHook,numlockMask,keys,logHook,startupHook,borderWidth,mouseBindings
hunk ./XMonad/Config.hs 33
- ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse)
+ ,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
+ ,handleEventHook)
import XMonad.Layout
import XMonad.Operations
hunk ./XMonad/Config.hs 41
import XMonad.ManageHook
import qualified XMonad.StackSet as W
import Data.Bits ((.|.))
+import Data.Monoid
import qualified Data.Map as M
import System.Exit
import Graphics.X11.Xlib
hunk ./XMonad/Config.hs 45
+import Graphics.X11.Xlib.Extras
-- | The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
hunk ./XMonad/Config.hs 126
logHook :: X ()
logHook = return ()
+------------------------------------------------------------------------
+-- Event handling
+
+-- | Defines a custom handler function for X Events. The function should
+-- return True if the default handler is to be run afterwards.
+handleEventHook :: Event -> X All
+handleEventHook _ = return (All True)
+
-- | Perform an arbitrary action at xmonad startup.
startupHook :: X ()
startupHook = return ()
hunk ./XMonad/Config.hs 265
, XMonad.startupHook = startupHook
, XMonad.mouseBindings = mouseBindings
, XMonad.manageHook = manageHook
+ , XMonad.handleEventHook = handleEventHook
, XMonad.focusFollowsMouse = focusFollowsMouse }
hunk ./XMonad/Core.hs 90
, terminal :: !String -- ^ The preferred terminal application. Default: \"xterm\"
, layoutHook :: !(l Window) -- ^ The available layouts
, manageHook :: !ManageHook -- ^ The action to run when a new window is opened
+ , handleEventHook :: !(Event -> X All) -- ^ Handle an X event, returns (All True) if the default handler
+ -- should also be run afterwards. mappend should be used for combining
+ -- event hooks in most cases.
, workspaces :: ![String] -- ^ The list of workspaces' names
, numlockMask :: !KeyMask -- ^ The numlock modifier
, modMask :: !KeyMask -- ^ the mod modifier
hunk ./XMonad/Main.hsc 25
import Control.Monad.Reader
import Control.Monad.State
import Data.Maybe (fromMaybe)
+import Data.Monoid (getAll)
import Foreign.C
import Foreign.Ptr
hunk ./XMonad/Main.hsc 156
prehandle e = let mouse = do guard (ev_event_type e `elem` evs)
return (fromIntegral (ev_x_root e)
,fromIntegral (ev_y_root e))
- in local (\c -> c { mousePosition = mouse }) (handle e)
+ in local (\c -> c { mousePosition = mouse }) (handleWithHook e)
evs = [ keyPress, keyRelease, enterNotify, leaveNotify
, buttonPress, buttonRelease]
hunk ./XMonad/Main.hsc 161
+-- | Runs handleEventHook from the configuration and runs the default handler
+-- function if it returned True.
+handleWithHook :: Event -> X ()
+handleWithHook e = do
+ evHook <- asks (handleEventHook . config)
+ whenX (userCodeDef True $ getAll `fmap` evHook e) (handle e)
+
-- ---------------------------------------------------------------------
-- | Event handler. Map X events onto calls into Operations.hs, which
-- modify our internal model of the window manager state.
}
Context:
[Make X an instance of Typeable
Daniel Schoepe **20090128215406
Ignore-this: bb155e62ea4e451460e3b94508dc49d2
]
[Add uninstallSignalHandlers, use in spawn
Spencer Janssen **20090122002643
Ignore-this: d91bde6f965341a2619fe2dde83cc099
]
[Create a new session for forked processes
Spencer Janssen **20090122000423
Ignore-this: f5d9cf254a0b07ddbf204457b7783880
]
[TAG 0.8.1
Spencer Janssen **20090118083910]
[Close stdin in spawned processes
Spencer Janssen **20090117040024
Ignore-this: 2e372ed6215160adae8da1c44cdede3d
]
[Document spawnPID
Spencer Janssen **20090117035907
Ignore-this: 1641bdcf5055b2ec7b9455265f5b1d52
]
[Asynchronously recompile/restart xmonad on mod-q
Spencer Janssen **20090117035300
Ignore-this: 753d8746034f818b81df79003ae5ee0d
]
[Add --restart, a command line flag to cause a running xmonad process to restart
Spencer Janssen **20090117034959
Ignore-this: 45c8c8aba7cc7391b95c7e3fb01e5bf9
]
[Bump version to 0.8.1
Spencer Janssen **20090116223621
Ignore-this: 2e8e9dc7b6ca725542f4afe04253dc57
]
[Remove doubleFork, handle SIGCHLD
Spencer Janssen **20090116204742
Ignore-this: f9b1a65b4f0622922f80ad2ab6c5a52f
This is a rather big change. Rather than make spawned processes become
children of init, we handle them in xmonad. As a side effect of this change,
we never need to use waitForProcess in any contrib module -- in fact, doing so
will raise an exception. The main benefit to handling SIGCHLD is that xmonad
can now be started with 'exec', and will correctly clean up after inherited
child processes.
]
[Main.hs: escape / in Haddocks
gwern0@gmail.com**20081207020915
Ignore-this: 2c4525280fbe73c46f3abd8fc13628e9
This lets haddocks for Main.hs, at least, to build with 2.3.0.
]
[More flexible userCode function
Daniel Schoepe **20090110221852]
[Call logHook as the very last action in windows
Spencer Janssen **20081209233700
Ignore-this: 4396ad891b607780f8e4b3b6bbce87e
]
[Accept inferior crossing events. This patch enables fmouse-focus-follows-screen
Spencer Janssen **20081205045130
Ignore-this: 3ac329fb92839827aed0a4370784cabd
]
[Tile all windows at once
Spencer Janssen **20081118074447]
[Factor rational rect scaling into a separate function
Spencer Janssen **20081118072849]
[Change screen focus by clicking on the root window.
Spencer Janssen **20081106224031
This is a modification of a patch from Joachim Breitner.
]
[Fix #192.
Spencer Janssen **20081021220059]
[select base < 4 for building on ghc 6.10
Adam Vogt **20081013214509]
[add killWindow function
Joachim Breitner **20081005001804
This is required to kill anything that is not focused, without
having to focus it first.
]
[add'l documentation
Devin Mullins **20080927234639]
[Regression: ungrab buttons on *non* root windows
Spencer Janssen **20081007214351]
[Partial fix for #40
Spencer Janssen **20081007212053
Improvements:
- clicking on the root will change focus to that screen
- moving the mouse from a window on a screen to an empty screen changes focus
to that screen
The only remaining issue is that moving the mouse between two empty screens
does not change focus. In order to solve this, we'd have to select motion events
on the root window, which is potentially expensive.
]
[Track mouse position via events received
Spencer Janssen **20081007203953]
[Fix haddock
Spencer Janssen **20081007094641]
[Move screen locating code into pointScreen
Spencer Janssen **20081007094207]
[Make pointWithin a top-level binding
Spencer Janssen **20081007090229]
[sp README, CONFIG, STYLE, TODO
gwern0@gmail.com**20080913024457]
[Use the same X11 dependency as xmonad-contrib
Spencer Janssen **20080921061508]
[Export focusUp' and focusDown' -- work entirely on stacks
Spencer Janssen **20080911214803]
[add W.shiftMaster, fix float/tile-reordering bug
Devin Mullins **20080911053909]
[TAG 0.8
Spencer Janssen **20080905195412]
Patch bundle hash:
cb2c61088893a6131325e551d8e6f4ff08fc22e3