Use dynamic workspaces.

Ilya V. Portnov [2011-04-29 09:02:38]
Use dynamic workspaces.
Filename
lib/AppGroups.hs
lib/CommonFunctions.hs
lib/GroupsSetup.hs
lib/KeyBindings.hs
lib/Layouts.hs
lib/Themes.hs
diff --git a/lib/AppGroups.hs b/lib/AppGroups.hs
index 021a3ee..7b4988c 100644
--- a/lib/AppGroups.hs
+++ b/lib/AppGroups.hs
@@ -14,6 +14,7 @@ import XMonad
 import qualified XMonad.StackSet as W

 import XMonad.Actions.GridSelect
+import XMonad.Actions.DynamicWorkspaces
 import XMonad.Layout.Minimize
 import XMonad.Util.WindowProperties
 import XMonad.Util.NamedWindows
@@ -96,7 +97,9 @@ doFullscreen :: ManageHook
 doFullscreen = fromWindowOp fullscreen

 moveTo :: WorkspaceId -> ManageHook
-moveTo wksp = doF $ W.shift wksp
+moveTo wksp = do
+  fromX $ addWorkspace wksp
+  doF $ W.shift wksp

 jumpTo :: WorkspaceId -> X ()
 jumpTo wksp = windows $ W.greedyView wksp
diff --git a/lib/CommonFunctions.hs b/lib/CommonFunctions.hs
index 3408d6c..d85b1e5 100644
--- a/lib/CommonFunctions.hs
+++ b/lib/CommonFunctions.hs
@@ -17,6 +17,7 @@ import XMonad.Prompt
 import XMonad.Prompt.Window
 import XMonad.Prompt.Input

+import XMonad.Actions.DynamicWorkspaces
 import XMonad.Actions.GridSelect

 import Themes
@@ -183,3 +184,8 @@ textEditors = do
     Just "gvim" -> vimsessions
     Just editor -> spawn editor

+trashWindow = do
+  addWorkspace "trash"
+  moveToWorkspace "trash"
+
+
diff --git a/lib/GroupsSetup.hs b/lib/GroupsSetup.hs
index 816859c..6f860c6 100644
--- a/lib/GroupsSetup.hs
+++ b/lib/GroupsSetup.hs
@@ -12,7 +12,7 @@ defaultFM = "konqueror --profile filemanagement"

 myApps =
   [ "firefox" ::: [C "Epiphany-browser", C "Kontact",
-          C "Liferea", C "Firefox", C "Opera"]               :-> "inet"  `On` "M1-!" `Named` "internet",
+          C "Liferea", C "Firefox", C "Opera", C "Thunderbird"] :-> "inet"  `On` "M1-!" `Named` "internet",
     Group         [C "Inkscape", C "Eog", C "Gwenview", C "Dia"] :-> "apps" `On` "M1-/" `Named` "graphics",
     Group         [regex "Gimp"]                             :-> "dashboard" `On` "M1-g"  `Named` "gimp",
     Group         [C "F-spot",C "Digikam"]                   :-> "apps"  `On` "M1-d" `Named` "photo",
diff --git a/lib/KeyBindings.hs b/lib/KeyBindings.hs
index 2a7bcb9..4508307 100644
--- a/lib/KeyBindings.hs
+++ b/lib/KeyBindings.hs
@@ -37,6 +37,8 @@ import Layouts
 import AppGroups
 import GroupsSetup

+workspaceOrder = ["inet","text","files","im","term"]
+
 ------------------------------------------------------------------------
 -- Key bindings
 --
@@ -53,7 +55,7 @@ myKeys conf@(XConfig {XMonad.modMask = modMask}) = (M.fromList $

     -- To jump to specific desktop
     [((m .|. modMask, k), f i)
-        | (i, k) <- zip (XMonad.workspaces conf) [xK_F1..]
+        | (i, k) <- zip workspaceOrder [xK_F1..]
         , (f, m) <- [(gotoWorkspace, 0), (moveToWorkspace, shiftMask)]] )
     `M.union` planeKeys modMask (Lines 1) Circular

diff --git a/lib/Layouts.hs b/lib/Layouts.hs
index fc3f39a..92357af 100644
--- a/lib/Layouts.hs
+++ b/lib/Layouts.hs
@@ -110,6 +110,3 @@ twoTabs = do
            sendMessage $ Tab.pull Nav.R
            sendMessage $ IncMasterN (-1)

-trashWindow = windows $ W.shift "trash"
-
-
diff --git a/lib/Themes.hs b/lib/Themes.hs
index 7e527f5..5f9fba8 100644
--- a/lib/Themes.hs
+++ b/lib/Themes.hs
@@ -15,7 +15,7 @@ myGSConfig = defaultGSConfig {

 -----------------------------------------------------------------------
 -- Some general settings
-myWorkspaces    = ["inet","text","files","im","term","docs", "apps","rdx","trash","dashboard"]
+myWorkspaces    = ["main"]
 myFocusedBorderColor = "#97ACC1"

 myBorderWidth :: Dimension
ViewGit