[xmonad] xmonad-contrib patch

Lanny Ripple lanny at cisco.com
Tue Jun 3 10:42:42 EDT 2008


I wasn't thrilled with it either but wasn't sure where to put
actionMaybe (the name I had for it).  In WindowGo and import into
CopyWindow?  In a new Util module and import into both?

There's also the problem that

focus :: win -> X ()

(windows . copyWindow) :: win -> ws -> X()

where 'ws' has to be discovered in actionMaybe.  So

  raiseMaybe = actionMaybe (focus . const)
  copyMaybe = actionMaybe (windows . copyWindow)

  actionMaybe = (Window -> Workspace -> X ()) -> Query Bool -> X ()
  actionMaybe doWin f thatUserQuery = withWindowSet $ \x -> do
      maybeResult <- filterM (runQuery thatUserQuery) (allWindows s)
      case maybeResult of
          []      -> f
          (win:_) -> doWin win (currentTag s)


which I don't know if I'm happy about.

Anyway happy to make the changes if I can get some advice on where
to put the abstracted (hoisted?, common?) code.

  -ljr


Gwern Branwen wrote:
> On 2008.06.02 16:26:57 -0500, Lanny Ripple <lanny at cisco.com> scribbled 21K characters:
>> Hi all,
>>
>> Just wanted to say Thanks! to everyone for XMonad.  I've got it
>> running with gnome for the panels but it blows the gnome WM out of
>> the water.
>>
>> I did run across some functionality I wanted that didn't exist so I
>> wrote it up (attached).  On reflection I should have added a long
>> patch message.  I found WindowGo for runOrRaise but often I want to
>> pull a window (browser, mail, etc) to my current workspace instead
>> of going to the one it's in.  copyOrRun (and underlying copyMaybe)
>> do that.
>>
>>   Cheers,
>>   -ljr
> 
> This looks interesting, but I am not thrilled by the duplication of raiseMaybe's code (DRY). Could raiseMaybe and copyMaybe be specialized functions instead, perhaps?
> 
> It would look something like this, I guess:
> 
> somethingMaybe ∷ (Window -> X ()) -> X () → Query Bool → X ()
> somethingMaybe doWin f thatUserQuery = withWindowSet $ λs → do
>     maybeResult ← filterM (runQuery thatUserQuery) (W.allWindows s)
>     case maybeResult of
>       []     → f
>       (x:_)  → doWin x
> 
> raiseMaybe = somethingMaybe focus
> copyMaybe = somethingMaybe (windows . flip copyWindow (currentTag s))
> 
> --
> gwern
> SBU botux Crust SALDV hrt .45 Threat Nike comsat 747


More information about the xmonad mailing list