aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-11-21 12:05:03 -0700
committerJosh Rahm <rahm@google.com>2022-11-21 12:05:03 -0700
commitee9be16599f20aef6d1d3fd15666c00452f85aba (patch)
tree1aed66c1de2ce201463e3becc2d452d4a8aa2992 /src
parenta1636c65e05d02f7d4fc408137e1d37b412ce890 (diff)
downloadrde-ee9be16599f20aef6d1d3fd15666c00452f85aba.tar.gz
rde-ee9be16599f20aef6d1d3fd15666c00452f85aba.tar.bz2
rde-ee9be16599f20aef6d1d3fd15666c00452f85aba.zip
Format with ormolu.
Diffstat (limited to 'src')
-rw-r--r--src/Main.hs162
-rw-r--r--src/Rahm/Desktop/Common.hs68
-rw-r--r--src/Rahm/Desktop/DMenu.hs60
-rw-r--r--src/Rahm/Desktop/Desktop.hs33
-rw-r--r--src/Rahm/Desktop/Hash.hs7
-rw-r--r--src/Rahm/Desktop/History.hs41
-rw-r--r--src/Rahm/Desktop/Hooks/WindowChange.hs29
-rw-r--r--src/Rahm/Desktop/Keys.hs954
-rw-r--r--src/Rahm/Desktop/Keys/Dsl.hs182
-rw-r--r--src/Rahm/Desktop/Keys/Wml.hs351
-rw-r--r--src/Rahm/Desktop/Layout.hs108
-rw-r--r--src/Rahm/Desktop/Layout/Bordering.hs172
-rw-r--r--src/Rahm/Desktop/Layout/ConsistentMosaic.hs28
-rw-r--r--src/Rahm/Desktop/Layout/CornerLayout.hs24
-rw-r--r--src/Rahm/Desktop/Layout/Draw.hs135
-rw-r--r--src/Rahm/Desktop/Layout/Flip.hs57
-rw-r--r--src/Rahm/Desktop/Layout/Hole.hs9
-rw-r--r--src/Rahm/Desktop/Layout/List.hs125
-rw-r--r--src/Rahm/Desktop/Layout/Pop.hs86
-rw-r--r--src/Rahm/Desktop/Layout/Redescribe.hs14
-rw-r--r--src/Rahm/Desktop/Layout/ReinterpretMessage.hs12
-rw-r--r--src/Rahm/Desktop/Layout/Rotate.hs32
-rw-r--r--src/Rahm/Desktop/Logger.hs17
-rw-r--r--src/Rahm/Desktop/Marking.hs112
-rw-r--r--src/Rahm/Desktop/MouseMotion.hs24
-rw-r--r--src/Rahm/Desktop/NoPersist.hs3
-rw-r--r--src/Rahm/Desktop/PassMenu.hs17
-rw-r--r--src/Rahm/Desktop/PromptConfig.hs15
-rw-r--r--src/Rahm/Desktop/RebindKeys.hs78
-rw-r--r--src/Rahm/Desktop/StackSet.hs116
-rw-r--r--src/Rahm/Desktop/Submap.hs112
-rw-r--r--src/Rahm/Desktop/Swallow.hs11
-rw-r--r--src/Rahm/Desktop/SwapMaster.hs28
-rw-r--r--src/Rahm/Desktop/Theater.hs98
-rw-r--r--src/Rahm/Desktop/Workspaces.hs76
-rw-r--r--src/Rahm/Desktop/XMobarLog.hs119
36 files changed, 1825 insertions, 1690 deletions
diff --git a/src/Main.hs b/src/Main.hs
index a98e568..766716c 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -1,33 +1,30 @@
-import XMonad
-
-import XMonad.Hooks.DynamicProperty
-import Control.Monad.Trans.Class
import Control.Monad.Reader
-import XMonad.Hooks.ManageDocks (docks)
-import System.Directory (getHomeDirectory)
-import System.FilePath ((</>))
-import XMonad.Hooks.EwmhDesktops (ewmh)
-import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
-import XMonad.Layout.Fullscreen (fullscreenEventHook)
-import System.Environment (setEnv)
-import Data.Monoid
+import Control.Monad.Trans.Class
import qualified Data.Map as Map
-import Text.Printf
-
-import Rahm.Desktop.Swallow
-import Rahm.Desktop.Marking
+import Data.Monoid
import Rahm.Desktop.Common
-import Rahm.Desktop.XMobarLog
+import Rahm.Desktop.DMenu (menuCommandString)
+import Rahm.Desktop.History
+import Rahm.Desktop.Hooks.WindowChange
import Rahm.Desktop.Keys
import Rahm.Desktop.Layout
import Rahm.Desktop.Logger
-import Rahm.Desktop.DMenu (menuCommandString)
+import Rahm.Desktop.Marking
import Rahm.Desktop.RebindKeys
-import Rahm.Desktop.Hooks.WindowChange
-import Rahm.Desktop.History
-
-import qualified XMonad as X
import qualified Rahm.Desktop.StackSet as W
+import Rahm.Desktop.Swallow
+import Rahm.Desktop.XMobarLog
+import System.Directory (getHomeDirectory)
+import System.Environment (setEnv)
+import System.FilePath ((</>))
+import Text.Printf
+import XMonad
+import qualified XMonad as X
+import XMonad.Hooks.DynamicProperty
+import XMonad.Hooks.EwmhDesktops (ewmh)
+import XMonad.Hooks.ManageDocks (docks)
+import XMonad.Hooks.ManageHelpers (doFullFloat, isFullscreen)
+import XMonad.Layout.Fullscreen (fullscreenEventHook)
main = do
putStrLn "Welcome To RDE!"
@@ -41,49 +38,56 @@ main = do
xmobar <- spawnXMobar
- (=<<) X.xmonad $
- applyKeys $ withLocationChangeHook historyHook $ ewmh $ docks $ def
- { terminal = "alacritty"
- , modMask = mod3Mask
- , borderWidth = 2
- , keys = const mempty
- , focusedBorderColor = "#ff6c00"
- , normalBorderColor = "#404040"
- , layoutHook = myLayout
- , startupHook = spawn fp
- , manageHook = composeAll [
- isFullscreen --> doFullFloat
- , doLogWindow
- , className =? "Tilda" --> doFloat
- , className =? "yakuake" --> doFloat
- , className =? "MPlayer" --> doFloat
- , title =? "Event Tester" --> doFloat
- , title =? "Floating Term" --> doCenterFloat
- , title =? "Notes" --> doCenterFloat
- , title =? "xmessage" --> doCenterFloat
- , title =? "gxmessage" --> doCenterFloat
- , title =? "Volume Control" --> doCenterFloat
- , className =? "mpv" --> doFloat
- , className =? "gnubby_ssh_prompt" --> doFloat
- ]
- -- This config uses dynamic workspaces, but I have to seed XMonad
- -- with something. However, this configuration only supports 36
- -- monitors on boot. If you need more than 36 monitors, you'll have to
- -- configure those ones after starting XMonad.
- , workspaces = map return (['0'..'9'] ++ ['a'..'z'])
- , handleEventHook =
- composeAll [
- fullscreenEventHook,
- remapHook,
- swallowHook,
- dynamicTitle (composeAll [
- title =? "Spotify" --> doMarkWindow "s"
- ])]
- , focusFollowsMouse = False
- , clickJustFocuses = False
- , logHook = xMobarLogHook xmobar
- }
-
+ (=<<) X.xmonad $
+ applyKeys $
+ withLocationChangeHook historyHook $
+ ewmh $
+ docks $
+ def
+ { terminal = "alacritty",
+ modMask = mod3Mask,
+ borderWidth = 2,
+ keys = const mempty,
+ focusedBorderColor = "#ff6c00",
+ normalBorderColor = "#404040",
+ layoutHook = myLayout,
+ startupHook = spawn fp,
+ manageHook =
+ composeAll
+ [ isFullscreen --> doFullFloat,
+ doLogWindow,
+ className =? "Tilda" --> doFloat,
+ className =? "yakuake" --> doFloat,
+ className =? "MPlayer" --> doFloat,
+ title =? "Event Tester" --> doFloat,
+ title =? "Floating Term" --> doCenterFloat,
+ title =? "Notes" --> doCenterFloat,
+ title =? "xmessage" --> doCenterFloat,
+ title =? "gxmessage" --> doCenterFloat,
+ title =? "Volume Control" --> doCenterFloat,
+ className =? "mpv" --> doFloat,
+ className =? "gnubby_ssh_prompt" --> doFloat
+ ],
+ -- This config uses dynamic workspaces, but I have to seed XMonad
+ -- with something. However, this configuration only supports 36
+ -- monitors on boot. If you need more than 36 monitors, you'll have to
+ -- configure those ones after starting XMonad.
+ workspaces = map return (['0' .. '9'] ++ ['a' .. 'z']),
+ handleEventHook =
+ composeAll
+ [ fullscreenEventHook,
+ remapHook,
+ swallowHook,
+ dynamicTitle
+ ( composeAll
+ [ title =? "Spotify" --> doMarkWindow "s"
+ ]
+ )
+ ],
+ focusFollowsMouse = False,
+ clickJustFocuses = False,
+ logHook = xMobarLogHook xmobar
+ }
changeHook :: Location -> Location -> X ()
changeHook l1 l2 =
@@ -98,9 +102,16 @@ doLogWindow = do
return (Endo id)
doMarkWindow :: Mark -> ManageHook
-doMarkWindow m = ask >>= (\w -> liftX (do
- ws <- getCurrentWorkspace
- markAllLocations m [Location ws (Just w)]) >> return (Endo id))
+doMarkWindow m =
+ ask
+ >>= ( \w ->
+ liftX
+ ( do
+ ws <- getCurrentWorkspace
+ markAllLocations m [Location ws (Just w)]
+ )
+ >> return (Endo id)
+ )
doCenterFloat :: ManageHook
doCenterFloat =
@@ -109,14 +120,11 @@ doCenterFloat =
centerRect :: W.RationalRect -> W.RationalRect
centerRect (W.RationalRect x y w h) = W.RationalRect ((1 - w) / 2) ((1 - h) / 2) w h
-
windowHooks :: WindowHook -> XConfig l -> XConfig l
windowHooks (Query readerT) config = do
-
- config {
- startupHook = do
- withWindowSet $ mapM_ (runReaderT readerT) . W.allWindows
- startupHook config,
-
- manageHook = mappend (Query readerT >> return (Endo id)) (manageHook config)
- }
+ config
+ { startupHook = do
+ withWindowSet $ mapM_ (runReaderT readerT) . W.allWindows
+ startupHook config,
+ manageHook = mappend (Query readerT >> return (Endo id)) (manageHook config)
+ }
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
diff --git a/src/Rahm/Desktop/DMenu.hs b/src/Rahm/Desktop/DMenu.hs
index d20d001..eeb0d5f 100644
--- a/src/Rahm/Desktop/DMenu.hs
+++ b/src/Rahm/Desktop/DMenu.hs
@@ -1,19 +1,20 @@
module Rahm.Desktop.DMenu where
-import XMonad.Util.Dmenu
-import XMonad
import Control.Monad
+import Data.List (intercalate)
import Data.Map (Map)
import qualified Data.Map as Map
-import XMonad.Util.Run
-import Data.List (intercalate)
import Text.Printf (printf)
+import XMonad
+import XMonad.Util.Dmenu
+import XMonad.Util.Run
-data Colors =
- Colors {
- fg :: String,
- bg :: String
- } | DefaultColors
+data Colors
+ = Colors
+ { fg :: String,
+ bg :: String
+ }
+ | DefaultColors
menuCommand :: [String]
menuCommand = ["rofi", "-monitor", "-4", "-i", "-dmenu", "-sort", "-levenshtein-sort"]
@@ -22,24 +23,37 @@ menuCommandString :: String
menuCommandString = unwords menuCommand
runDMenu :: X ()
-runDMenu = void $
- safeSpawn
- "rofi"
- ["-monitor", "-4", "-display-run", "Execute", "-show", "run"]
+runDMenu =
+ void $
+ safeSpawn
+ "rofi"
+ ["-monitor", "-4", "-display-run", "Execute", "-show", "run"]
runDMenuPrompt :: String -> Maybe String -> [String] -> X String
runDMenuPrompt prompt color select =
let realColor = maybe [] (\c -> ["-sb", c, "-nf", c]) color
- in
- runProcessWithInput "/home/rahm/.local/bin/dmenu_debug.sh" ([
- "-p", prompt,
- "-l", "12",
- "-dim", "0.4" ] ++ realColor) (intercalate "\n" select)
-
+ in runProcessWithInput
+ "/home/rahm/.local/bin/dmenu_debug.sh"
+ ( [ "-p",
+ prompt,
+ "-l",
+ "12",
+ "-dim",
+ "0.4"
+ ]
+ ++ realColor
+ )
+ (intercalate "\n" select)
runDMenuPromptWithMap :: String -> Maybe String -> Map String a -> X (Maybe a)
runDMenuPromptWithMap prompt color map = do
- let realColor = maybe [] (
- \c -> ["-theme-str", printf "* {theme-color: %s;}" c]) color
- menuMapArgs (head menuCommand)
- (tail menuCommand ++ ["-p", prompt] ++ realColor) map
+ let realColor =
+ maybe
+ []
+ ( \c -> ["-theme-str", printf "* {theme-color: %s;}" c]
+ )
+ color
+ menuMapArgs
+ (head menuCommand)
+ (tail menuCommand ++ ["-p", prompt] ++ realColor)
+ map
diff --git a/src/Rahm/Desktop/Desktop.hs b/src/Rahm/Desktop/Desktop.hs
index 053b330..5466fd1 100644
--- a/src/Rahm/Desktop/Desktop.hs
+++ b/src/Rahm/Desktop/Desktop.hs
@@ -4,22 +4,24 @@ module Rahm.Desktop.Desktop where
-- state of the current screen -> workspace and thus restore it.
-- import XMonad.Operations
-import Data.Maybe (fromMaybe)
+
import Control.Monad (forM_)
-import XMonad (X(..))
-import qualified XMonad.StackSet as W
-import qualified XMonad as X
+import Data.Default
import Data.Map (Map)
import qualified Data.Map as Map
-import Data.Default
+import Data.Maybe (fromMaybe)
+import XMonad (X (..))
+import qualified XMonad as X
+import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS
newtype Desktop si wi = Desktop (Map si wi)
deriving (Read, Show)
-newtype Desktops = Desktops {
- theaters :: Map String (Desktop X.ScreenId X.WorkspaceId)
-} deriving (Read, Show)
+newtype Desktops = Desktops
+ { theaters :: Map String (Desktop X.ScreenId X.WorkspaceId)
+ }
+ deriving (Read, Show)
instance Default Desktops where
def = Desktops mempty
@@ -32,9 +34,11 @@ saveCurrentDesktop :: String -> X ()
saveCurrentDesktop name =
X.withWindowSet $ \windowSet ->
XS.modify $ \(Desktops m) ->
- Desktops $ flip (Map.insert name) m $
- Desktop $ Map.fromList $
- map (\(W.Screen ws sid _) -> (sid, W.tag ws)) $ W.screens windowSet
+ Desktops $
+ flip (Map.insert name) m $
+ Desktop $
+ Map.fromList $
+ map (\(W.Screen ws sid _) -> (sid, W.tag ws)) $ W.screens windowSet
restoreDesktop :: String -> X ()
restoreDesktop name = do
@@ -47,7 +51,7 @@ restoreDesktop name = do
fromMaybe scr $ do
wid <- Map.lookup (W.screen scr) screenToWorkspace
workspace <- Map.lookup wid workspacesById
- return $ scr { W.workspace = workspace }
+ return $ scr {W.workspace = workspace}
newScreens = map newScreenWorkspace (cur : vis)
newVisibleWorkspaces = map (W.tag . W.workspace) newScreens
@@ -55,6 +59,5 @@ restoreDesktop name = do
filter (\ws -> not (W.tag ws `elem` newVisibleWorkspaces)) $
W.workspaces ws
- (newCur:newVisible) = newScreens
- in
- W.StackSet newCur newVisible newHiddenWorkspaces float
+ (newCur : newVisible) = newScreens
+ in W.StackSet newCur newVisible newHiddenWorkspaces float
diff --git a/src/Rahm/Desktop/Hash.hs b/src/Rahm/Desktop/Hash.hs
index dc58d96..abce660 100644
--- a/src/Rahm/Desktop/Hash.hs
+++ b/src/Rahm/Desktop/Hash.hs
@@ -1,11 +1,12 @@
{-# LANGUAGE OverloadedStrings #-}
+
module Rahm.Desktop.Hash where
-import Numeric (showHex)
+import qualified Crypto.Hash.SHA1 as SHA1
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BC
-import qualified Crypto.Hash.SHA1 as SHA1
+import Numeric (showHex)
quickHash :: String -> String
quickHash str =
- concatMap (`showHex` "") $ BS.unpack (SHA1.hash $ BC.pack str)
+ concatMap (`showHex` "") $ BS.unpack (SHA1.hash $ BC.pack str)
diff --git a/src/Rahm/Desktop/History.hs b/src/Rahm/Desktop/History.hs
index 516cd94..c5bc72d 100644
--- a/src/Rahm/Desktop/History.hs
+++ b/src/Rahm/Desktop/History.hs
@@ -1,19 +1,18 @@
module Rahm.Desktop.History where
-import XMonad
-import Text.Printf
-import qualified Rahm.Desktop.StackSet as W
-import Data.IntMap (IntMap)
-import qualified Data.IntMap as IntMap
import Data.Default
-import qualified XMonad.Util.ExtensibleState as XS
-
import Data.Foldable (toList)
-import Rahm.Desktop.Hooks.WindowChange
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IntMap
+import Data.Sequence (Seq (..))
+import qualified Data.Sequence as Seq
import Rahm.Desktop.Common
+import Rahm.Desktop.Hooks.WindowChange
import Rahm.Desktop.Logger
-import Data.Sequence (Seq(..))
-import qualified Data.Sequence as Seq
+import qualified Rahm.Desktop.StackSet as W
+import Text.Printf
+import XMonad
+import qualified XMonad.Util.ExtensibleState as XS
data BoundedSeqZipper a = BoundedSeqZipper Int (Seq a) (Seq a)
deriving (Eq, Show, Ord, Read)
@@ -24,15 +23,15 @@ instance Functor BoundedSeqZipper where
zipperDbgPrint :: (Show a) => BoundedSeqZipper a -> String
zipperDbgPrint (BoundedSeqZipper _ h (c :<| t)) =
concat $
- map (printf " %s " . show) (toList h) ++
- [printf "[%s]" (show c)] ++
- map (printf " %s " . show) (toList t)
+ map (printf " %s " . show) (toList h)
+ ++ [printf "[%s]" (show c)]
+ ++ map (printf " %s " . show) (toList t)
zipperDbgPrint _ = "<empty>"
pushZipper :: a -> BoundedSeqZipper a -> BoundedSeqZipper a
pushZipper e (BoundedSeqZipper maxSize _ (tail :|> _))
- | maxSize <= Seq.length tail =
- BoundedSeqZipper maxSize mempty (e :<| tail)
+ | maxSize <= Seq.length tail =
+ BoundedSeqZipper maxSize mempty (e :<| tail)
pushZipper e (BoundedSeqZipper maxSize _ tail) =
BoundedSeqZipper maxSize mempty (e :<| tail)
@@ -48,16 +47,18 @@ zipperForward :: BoundedSeqZipper a -> BoundedSeqZipper a
zipperForward (BoundedSeqZipper s (e :<| h) t) = BoundedSeqZipper s h (e :<| t)
zipperForward b = b
-newtype History = History {
- currentZipper :: BoundedSeqZipper Location
-} deriving (Read, Show)
+newtype History = History
+ { currentZipper :: BoundedSeqZipper Location
+ }
+ deriving (Read, Show)
instance Default History where
def = History (BoundedSeqZipper 1000 mempty mempty)
instance ExtensionClass History where
initialValue = def
- -- extensionType = PersistentExtension
+
+-- extensionType = PersistentExtension
pastHistory :: Int -> X (Maybe Location)
pastHistory i = do
@@ -72,7 +73,6 @@ getMostRecentLocationInHistory = do
(BoundedSeqZipper _ _ (t :<| _)) -> return $ Just t
_ -> return Nothing
-
historyBack :: X ()
historyBack = do
History z <- XS.get
@@ -101,5 +101,4 @@ historyHook Nothing loc =
XS.modify $ \(History z) -> History (pushZipper loc z)
historyHook (Just (Location ws _)) l@(Location ws' _) | ws /= ws' = do
XS.modify $ \(History z) -> History (pushZipper l z)
-
historyHook _ _ = return ()
diff --git a/src/Rahm/Desktop/Hooks/WindowChange.hs b/src/Rahm/Desktop/Hooks/WindowChange.hs
index 3bc66a4..092fbf4 100644
--- a/src/Rahm/Desktop/Hooks/WindowChange.hs
+++ b/src/Rahm/Desktop/Hooks/WindowChange.hs
@@ -1,12 +1,11 @@
module Rahm.Desktop.Hooks.WindowChange where
-import XMonad
import Control.Monad
-import qualified XMonad.Util.ExtensibleState as XS
import Data.Default
import Rahm.Desktop.Common
-
import qualified Rahm.Desktop.StackSet as W
+import XMonad
+import qualified XMonad.Util.ExtensibleState as XS
newtype LastLocation = LastLocation (Maybe Location)
deriving (Read, Show)
@@ -17,7 +16,7 @@ instance Default LastLocation where
instance ExtensionClass LastLocation where
initialValue = def
extensionType = PersistentExtension
-
+
-- Creates a log hook from the function provided.
--
-- The first argument to the function is the old window, the second argument in
@@ -26,18 +25,18 @@ instance ExtensionClass LastLocation where
-- If the first window is Nothing, this is the first time XMonad started.
withLocationChangeHook :: (Maybe Location -> Location -> X ()) -> XConfig l -> XConfig l
withLocationChangeHook fn config =
- config {
- logHook = do
- logHook config
+ config
+ { logHook = do
+ logHook config
- currentLocation <-
- Location <$> getCurrentWorkspace <*> withWindowSet (return . W.peek)
+ currentLocation <-
+ Location <$> getCurrentWorkspace <*> withWindowSet (return . W.peek)
- LastLocation last <- XS.get
+ LastLocation last <- XS.get
- when (last /= Just currentLocation) $
- fn last currentLocation
+ when (last /= Just currentLocation) $
+ fn last currentLocation
- XS.put $ LastLocation $ Just currentLocation
- return ()
- }
+ XS.put $ LastLocation $ Just currentLocation
+ return ()
+ }
diff --git a/src/Rahm/Desktop/Keys.hs b/src/Rahm/Desktop/Keys.hs
index eae1c34..0ab868f 100644
--- a/src/Rahm/Desktop/Keys.hs
+++ b/src/Rahm/Desktop/Keys.hs
@@ -1,78 +1,75 @@
module Rahm.Desktop.Keys (applyKeys) where
-import Control.Monad.Trans.Maybe
import Control.Applicative
import Control.Monad
import Control.Monad.Fix (fix)
import Control.Monad.Loops (iterateWhile)
import Control.Monad.Reader
import Control.Monad.Trans.Class
+import Control.Monad.Trans.Maybe
import Control.Monad.Writer
import Data.Char
import Data.List hiding ((!!))
import Data.List.Safe ((!!))
import Data.Map (Map)
-import Data.Maybe (isJust, fromMaybe, mapMaybe)
-import Data.Monoid (Endo(..))
+import qualified Data.Map as Map
+import Data.Maybe (fromMaybe, isJust, mapMaybe)
+import Data.Monoid (Endo (..))
import Data.Proxy
import Debug.Trace
-import Graphics.X11.ExtraTypes.XF86;
+import Graphics.X11.ExtraTypes.XF86
import Graphics.X11.ExtraTypes.XorgDefault
-import Prelude hiding ((!!))
-import System.IO
-import System.Process
-import Text.Printf
-import XMonad
-import XMonad.Actions.CopyWindow as CopyWindow
-import XMonad.Actions.RotSlaves
-import XMonad.Actions.SpawnOn as SpawnOn
-import XMonad.Actions.WindowNavigation
-import XMonad.Hooks.ManageDocks
-import XMonad.Layout.MosaicAlt
-import XMonad.Layout.Spacing
-import XMonad.Prompt
-import XMonad.Prompt.Input
-import XMonad.Prompt.Shell
-import XMonad.Util.XUtils
-import XMonad.Util.CustomKeys
-import XMonad.Util.Run (safeSpawn)
-import XMonad.Util.Scratchpad
-import XMonad.Util.Ungrab
import Prettyprinter
-
-import qualified Data.Map as Map
-
+import Rahm.Desktop.Common
import Rahm.Desktop.DMenu
+import Rahm.Desktop.Desktop
+import Rahm.Desktop.History
import Rahm.Desktop.Keys.Dsl
+import Rahm.Desktop.Keys.Wml
import Rahm.Desktop.Layout
import Rahm.Desktop.Layout.Bordering
import Rahm.Desktop.Layout.ConsistentMosaic
import Rahm.Desktop.Layout.Flip (flipHorizontally, flipVertically)
import Rahm.Desktop.Layout.Hole (toggleHole)
-import Rahm.Desktop.Layout.List (toNextLayout, toPreviousLayout, toFirstLayout, toIndexedLayout)
+import Rahm.Desktop.Layout.List (toFirstLayout, toIndexedLayout, toNextLayout, toPreviousLayout)
import Rahm.Desktop.Layout.Pop (togglePop)
import Rahm.Desktop.Layout.Rotate (rotateLayout)
-import Rahm.Desktop.Common
import Rahm.Desktop.Logger
import Rahm.Desktop.Marking
-import Rahm.Desktop.Keys.Wml
import Rahm.Desktop.MouseMotion
import Rahm.Desktop.PassMenu
import Rahm.Desktop.PromptConfig
import Rahm.Desktop.RebindKeys
+import qualified Rahm.Desktop.StackSet as W
import Rahm.Desktop.Submap
import Rahm.Desktop.Swallow
import Rahm.Desktop.SwapMaster (swapMaster)
-import Rahm.Desktop.Workspaces
-import Rahm.Desktop.Desktop
import Rahm.Desktop.Theater
-
-import qualified Rahm.Desktop.StackSet as W
-import Rahm.Desktop.History
+import Rahm.Desktop.Workspaces
+import System.IO
+import System.Process
+import Text.Printf
+import XMonad
+import XMonad.Actions.CopyWindow as CopyWindow
+import XMonad.Actions.RotSlaves
+import XMonad.Actions.SpawnOn as SpawnOn
+import XMonad.Actions.WindowNavigation
+import XMonad.Hooks.ManageDocks
+import XMonad.Layout.MosaicAlt
+import XMonad.Layout.Spacing
+import XMonad.Prompt
+import XMonad.Prompt.Input
+import XMonad.Prompt.Shell
+import XMonad.Util.CustomKeys
+import XMonad.Util.Run (safeSpawn)
+import XMonad.Util.Scratchpad
+import XMonad.Util.Ungrab
+import XMonad.Util.XUtils
+import Prelude hiding ((!!))
type KeyMap l = XConfig l -> Map (KeyMask, KeySym) (X ())
-type ButtonsMap l = XConfig l -> Map (KeyMask, Button) (Window -> X ())
+type ButtonsMap l = XConfig l -> Map (KeyMask, Button) (Window -> X ())
spawnX :: String -> X ()
spawnX = spawn