aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/Common.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Rahm/Desktop/Common.hs')
-rw-r--r--src/Rahm/Desktop/Common.hs68
1 files changed, 35 insertions, 33 deletions
diff --git a/src/Rahm/Desktop/Common.hs b/src/Rahm/Desktop/Common.hs
index 3e6d54c..e012a8f 100644
--- a/src/Rahm/Desktop/Common.hs
+++ b/src/Rahm/Desktop/Common.hs
@@ -1,59 +1,61 @@
module Rahm.Desktop.Common where
-import Prelude hiding ((!!))
-
-import Control.Monad (void, when, forM_)
+import Control.Monad (forM_, void, when)
import Control.Monad.Trans.Maybe
-import XMonad.Util.Run
-import XMonad.Prompt
-import XMonad.Prompt.Input
-import XMonad.Prompt.Shell
-import XMonad.Util.XUtils
-
-import Rahm.Desktop.PromptConfig
-
import Data.Char
import Data.List hiding ((!!))
import Data.List.Safe ((!!))
-import Data.Maybe
-import Text.Printf
-import XMonad hiding (workspaces, Screen)
import qualified Data.Map as Map
-import Rahm.Desktop.DMenu
+import Data.Maybe
import Data.Ord (comparing)
-
+import Rahm.Desktop.DMenu
+import Rahm.Desktop.PromptConfig
import qualified Rahm.Desktop.StackSet as S
+import Text.Printf
+import XMonad hiding (Screen, workspaces)
+import XMonad.Prompt
+import XMonad.Prompt.Input
+import XMonad.Prompt.Shell
+import XMonad.Util.Run
+import XMonad.Util.XUtils
+import Prelude hiding ((!!))
-- A location is a workspace and maybe a window with that workspace.
-data Location = Location {
- locationWorkspace :: WorkspaceId,
+data Location = Location
+ { locationWorkspace :: WorkspaceId,
locationWindow :: Maybe Window
- } deriving (Read, Show, Eq, Ord)
+ }
+ deriving (Read, Show, Eq, Ord)
focusLocation :: Location -> X ()
focusLocation (Location ws Nothing) = windows $ S.greedyView ws
focusLocation (Location _ (Just win)) = windows $ S.focusWindow win
masterWindow :: MaybeT X Window
-masterWindow = MaybeT $ withWindowSet $ \ss ->
- let windows = (S.integrate' . S.stack . S.workspace . S.current) ss
- in case windows of
- (a:_) -> return $ Just a
- _ -> return Nothing
+masterWindow = MaybeT $
+ withWindowSet $ \ss ->
+ let windows = (S.integrate' . S.stack . S.workspace . S.current) ss
+ in case windows of
+ (a : _) -> return $ Just a
+ _ -> return Nothing
windowsInWorkspace :: WorkspaceId -> X [Location]
windowsInWorkspace wid =
withWindowSet $
- return . concatMap (\ws ->
- if S.tag ws == wid
- then map (Location wid . Just) $ S.integrate' (S.stack ws)
- else []) . S.workspaces
+ return
+ . concatMap
+ ( \ws ->
+ if S.tag ws == wid
+ then map (Location wid . Just) $ S.integrate' (S.stack ws)
+ else []
+ )
+ . S.workspaces
data WinPrompt = WinPrompt
instance XPrompt WinPrompt where
- showXPrompt _ = "[Window] "
- commandToComplete _ = id
+ showXPrompt _ = "[Window] "
+ commandToComplete _ = id
getString :: Window -> X String
getString = runQuery $ do
@@ -107,7 +109,7 @@ withBorderWidth width ws fn = do
forM_ ws $ \window ->
io $ setWindowBorderWidth d window $ fromIntegral width
- ret <- fn
+ ret <- fn
forM_ ws $ \window ->
io $ setWindowBorderWidth d window 2
@@ -119,7 +121,7 @@ withBorderWidth width ws fn = do
gotoWorkspace :: WorkspaceId -> X ()
gotoWorkspace wid = windows $ S.greedyView wid
-moveLocationToWorkspace :: Location -> WorkspaceId -> X ()
+moveLocationToWorkspace :: Location -> WorkspaceId -> X ()
moveLocationToWorkspace (Location _ (Just win)) wid =
windows $ S.shiftWin wid win
moveLocationToWorkspace _ _ = return ()
@@ -136,4 +138,4 @@ getCurrentLocation = do
return (Location ws win)
runMaybeT_ :: (Monad m) => MaybeT m a -> m ()
-runMaybeT_ = void . runMaybeT
+runMaybeT_ = void . runMaybeT