diff options
| author | Josh Rahm <joshuarahm@gmail.com> | 2022-04-24 20:34:51 -0600 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2022-10-09 12:19:46 -0600 |
| commit | 8e2cb3d0e92dd8c09233705471f87d4d582eedfe (patch) | |
| tree | 0f2bcdf6074b6a8f696c53efb0a83bdd53460275 /src/Rahm/Desktop/Common.hs | |
| parent | 92deb70d1268317e3b80c8c28e0358f0c9064f3e (diff) | |
| download | rde-8e2cb3d0e92dd8c09233705471f87d4d582eedfe.tar.gz rde-8e2cb3d0e92dd8c09233705471f87d4d582eedfe.tar.bz2 rde-8e2cb3d0e92dd8c09233705471f87d4d582eedfe.zip | |
Add R.D.StackSet as a replacement for StackSet.
Diffstat (limited to 'src/Rahm/Desktop/Common.hs')
| -rw-r--r-- | src/Rahm/Desktop/Common.hs | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/Rahm/Desktop/Common.hs b/src/Rahm/Desktop/Common.hs index 6d86c0e..273984e 100644 --- a/src/Rahm/Desktop/Common.hs +++ b/src/Rahm/Desktop/Common.hs @@ -4,7 +4,6 @@ import Prelude hiding ((!!)) import Control.Monad (void, when, forM_) import Control.Monad.Trans.Maybe -import XMonad.Actions.DynamicWorkspaces import XMonad.Util.Run import XMonad.Prompt import XMonad.Prompt.Input @@ -19,12 +18,11 @@ import Data.List.Safe ((!!)) import Data.Maybe import Text.Printf import XMonad hiding (workspaces, Screen) -import XMonad.StackSet hiding (filter, focus) import qualified Data.Map as Map import Rahm.Desktop.DMenu import Data.Ord (comparing) -import qualified XMonad.StackSet as S +import qualified Rahm.Desktop.StackSet as S import Rahm.Desktop.Windows -- A location is a workspace and maybe a window with that workspace. @@ -70,7 +68,7 @@ getString = runQuery $ do askWindowId :: X (Maybe [Window]) askWindowId = do windowTitlesToWinId <- withWindowSet $ \ss -> - Map.fromListWith (++) <$> mapM (\wid -> (,) <$> getString wid <*> return [wid]) (allWindows ss) + Map.fromListWith (++) <$> mapM (\wid -> (,) <$> getString wid <*> return [wid]) (S.allWindows ss) runDMenuPromptWithMap "Window" (Just "#f542f5") windowTitlesToWinId @@ -103,15 +101,26 @@ withBorderColor color wins fn = do return ret +withBorderWidth :: Int -> [Window] -> X a -> X a +withBorderWidth width ws fn = do + d <- asks display + + forM_ ws $ \window -> + io $ setWindowBorderWidth d window $ fromIntegral width + + ret <- fn + + forM_ ws $ \window -> + io $ setWindowBorderWidth d window 2 + + return ret + gotoWorkspace :: WorkspaceId -> X () -gotoWorkspace wid = do - addHiddenWorkspace wid - windows $ S.greedyView wid +gotoWorkspace wid = windows $ S.greedyView wid moveLocationToWorkspace :: Location -> WorkspaceId -> X () -moveLocationToWorkspace (Location _ (Just win)) wid = do - addHiddenWorkspace wid - windows $ shiftWin wid win +moveLocationToWorkspace (Location _ (Just win)) wid = + windows $ S.shiftWin wid win moveLocationToWorkspace _ _ = return () getCurrentWorkspace :: X WorkspaceId @@ -122,7 +131,7 @@ getCurrentWorkspace = withWindowSet $ getCurrentLocation :: X Location getCurrentLocation = do ws <- getCurrentWorkspace - win <- withWindowSet (return . peek) + win <- withWindowSet (return . S.peek) return (Location ws win) runMaybeT_ :: (Monad m) => MaybeT m a -> m () |