"Park" windows in a named group automatically

Hi all, I really love what XMonad is doing for my productivity. There is, however, one particular scenario in which I feel I'm doing to much by hand. Say I've got my development env. set up and I'm working on project A. On screen 1 I've got my browser, on 2 one or two shells and on 3 my editor. Now, a client calls with an urgent question, or my coworker asks if I can help her out. Now I need to set up screens 1, 2 & 3 with a browser with different content, one or two shells on different servers/directories and an editor with different open files. It would be great if I could have some command / keybinding / whatever that quickly parks the contents of certain screens to a named location, i.e. (conceptually) "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. ciao -- Klaas van Schelven +31 6 811 599 10

On Mon, Jul 09, 2012 at 10:22:21PM +0200, Klaas van Schelven wrote:
"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"
Hi Klaas, Perhaps you will find XMonad.Actions.DynamicWorkspaceGroups useful: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-DynamicWorkspace... -Brent

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
participants (3)
-
Allen S. Rout
-
Brent Yorgey
-
Klaas van Schelven