[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",
                    "mail","web","chrome",
                    "Sysedit","dir",
                    "tsmmon","tsmshell","tsmsess",
                    "osgadmin", "todo", "rdesk", "IM",
                    "acroread",
                    "doc1e","doc1d",
                    "doc2e","doc2d",
                    "doc3e","doc3d",
                    "doc4e","doc4d",
                    "doc5e","doc5d",
                    "doc6e","doc6d",
                    "doc7e","doc7d",
                    "doc8e","doc8d",
                    "doc9e","doc9d",
                    "doc0e","doc0d",
                    "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