[xmonad] "Park" windows in a named group automatically

Allen S. Rout asr at ufl.edu
Wed Jul 11 21:30:26 CEST 2012

On 07/09/2012 04:22 PM, Klaas van Schelven wrote:
> Hi all,

> "Park my current state to 'Project A'"
> set up new stuff to deal with the interruption
> park the new stuff in "Helping coworker"
> go back to "Project A"
> I'd love to hear a solution for this, even if it's not exactly along the
> lines of what I just described.

My response to this turns your use-case on its head.

For background, I have four screens, which I internally think of as "the 
communications screen" (extreme left), "the web screen" (extreme right) 
and "The project screens" (center two).

myWorkspaces    = ["p1","p2","p3","p4","p5","p6","p7","p8","p9","p0",
                    "osgadmin", "todo", "rdesk", "IM",
                    "dd1","dd2" ]

So I've got a few named project configurations i.e. "Mess with TSM":

mail : tsmmon : tsmsess : web

which I access via:

((modm .|. shiftMask, xK_a ),
do {
   windows (viewOnScreen 0 "tsmmon" ) >>
   windows (viewOnScreen 1 "tsmsess" ) >>
   windows (viewOnScreen 2 "mail" ) >>
   windows (viewOnScreen 3 "web" )
    } )

and then I have "Mess with project N"

[whatever]  : doc[N]e  :  doc[N]d : [whatever]

.. Note, that this just replaces the center two screens.

((modm .|. controlMask, xK_5 ),
do {
  windows (viewOnScreen 0 "doc5e" ) >>
  windows (viewOnScreen 1 "doc5d" )
    } )

and then I have ad-hoc numbered screens as usual

  -- mod-[1..9], Switch to workspace N
  -- mod-shift-[1..9], Move client to workspace N
  [((m .|. modm, k), windows $ f i)
      | (i, k) <- zip (XMonad.workspaces conf) ([xK_1 .. xK_9 ] ++ [xK_0])
      , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]

And then I have the ultimate ad-hockery: grid-select some workspace
and put it 'here'.

  , ((modm, xK_s),      gridselectWorkspace defaultGSConfig 
W.greedyView  )

So: in your case, my development environment is tweaked in the
'project 1' space.  Client calls, I bring up 'project 2', and set
things up so I can answer them.  Then I go back to 'project 1' later.

.. You can go a long way towards this by just thinking to yourself:
'My dev environment consists of WS 8 on the left, ws 9 on the right'.
Then once you've finished a distraction, put WS8 on the left, 9 on the
right, and you're done.

- Allen S. Rout

More information about the xmonad mailing list