[xmonad] How to apply (withWorkspace myXPConfig) to two functions?

Jeffrey David Johnson jefdaj at gmail.com
Wed Oct 10 16:35:41 CEST 2012

I'm trying  to write a function that asks for a workspace name, then 
sends the current window there and views it. Like these:

carryToNext = shiftTo Next NonEmptyWS >> moveToNext
carryToPrev = shiftTo Prev NonEmptyWS >> moveToPrev

except with a specific workspace. I've got it almost working, but it 
asks for the workspace twice:

carryToSpecific = withWorkspace myXPConfig (windows . W.shift) >> 
withWorkspace myXPConfig (windows . W.greedyView)

There should be some simple way to combine the two, but I'm not sure how 
to go about finding it. A few things I've tried:

carryToSpecific = withWorkspace myXPConfig ((windows . W.shift) >>  
(windows . W.greedyView))
carryToSpecific = withWorkspace myXPConfig (windows . (W.shift >> 
carryToSpecific = map (withWorkspace myXPConfig) [(windows . W.shift),  
(windows . W.greedyView)]
carryToSpecific = do
     ws <- withWorkspace myXPConfig return
     ws $ windows . W.shift
     ws $ windows . W.greedyView
     return ()

What's the proper way?

More information about the xmonad mailing list