New module: XMonad.Prelude

This is a convenience module in order to have less import noise.  It
re-exports the following:

  a) Commonly used modules in full (Data.Foldable, Data.Applicative, and
     so on); though only those that play nicely with each other, so that
     XMonad.Prelude can be imported unqualified without any problems.
     This prevents things like `Prelude.(.)` and `Control.Category.(.)`
     fighting with each other.

  b) Helper functions that don't necessarily fit in any other module;
     e.g., the often used abbreviation `fi = fromIntegral`.
This commit is contained in:
slotThe 2021-03-28 20:22:56 +02:00
parent 6ece010c01
commit 2469269119
186 changed files with 365 additions and 609 deletions

View File

@ -32,7 +32,7 @@ import XMonad.Util.Dmenu (dmenu)
import qualified Data.Map as M import qualified Data.Map as M
import System.Exit import System.Exit
import Data.Maybe import XMonad.Prelude
-- $usage -- $usage
-- --

View File

@ -18,8 +18,7 @@ module XMonad.Actions.CycleSelectedLayouts (
cycleThroughLayouts) where cycleThroughLayouts) where
import XMonad import XMonad
import Data.List (findIndex) import XMonad.Prelude (findIndex, fromMaybe)
import Data.Maybe (fromMaybe)
import XMonad.Layout.LayoutCombinators (JumpToLayout(..)) import XMonad.Layout.LayoutCombinators (JumpToLayout(..))
import qualified XMonad.StackSet as S import qualified XMonad.StackSet as S

View File

@ -78,9 +78,7 @@ module XMonad.Actions.CycleWS (
) where ) where
import Data.List ( find, findIndex ) import XMonad.Prelude (find, findIndex, isJust, isNothing)
import Data.Maybe ( isNothing, isJust )
import XMonad hiding (workspaces) import XMonad hiding (workspaces)
import qualified XMonad.Hooks.WorkspaceHistory as WH import qualified XMonad.Hooks.WorkspaceHistory as WH
import XMonad.StackSet hiding (filter) import XMonad.StackSet hiding (filter)

View File

@ -23,14 +23,12 @@ module XMonad.Actions.CycleWorkspaceByScreen (
, repeatableAction , repeatableAction
) where ) where
import Control.Monad
import Data.IORef import Data.IORef
import Data.List
import Data.Maybe
import Graphics.X11.Xlib.Extras import Graphics.X11.Xlib.Extras
import XMonad import XMonad
import XMonad.Prelude
import XMonad.Hooks.WorkspaceHistory import XMonad.Hooks.WorkspaceHistory
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W

View File

@ -43,14 +43,10 @@ module XMonad.Actions.DynamicProjects
) where ) where
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
import Control.Applicative ((<|>))
import Control.Monad (when, unless)
import Data.Char (isSpace)
import Data.List (sort, union, stripPrefix)
import Data.Map.Strict (Map) import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import Data.Maybe (fromMaybe, isNothing)
import System.Directory (setCurrentDirectory, getHomeDirectory, makeAbsolute) import System.Directory (setCurrentDirectory, getHomeDirectory, makeAbsolute)
import XMonad.Prelude
import XMonad import XMonad
import XMonad.Actions.DynamicWorkspaces import XMonad.Actions.DynamicWorkspaces
import XMonad.Prompt import XMonad.Prompt

View File

@ -36,11 +36,11 @@ module XMonad.Actions.DynamicWorkspaceGroups
, WSGPrompt , WSGPrompt
) where ) where
import Data.List (find)
import Control.Arrow ((&&&)) import Control.Arrow ((&&&))
import qualified Data.Map as M import qualified Data.Map as M
import XMonad import XMonad
import XMonad.Prelude (find)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Prompt import XMonad.Prompt

View File

@ -44,7 +44,7 @@ import XMonad.Actions.CycleWS (findWorkspace, WSType(..), Direction1D(..), doTo)
import qualified Data.Map as M import qualified Data.Map as M
import qualified Data.Set as S import qualified Data.Set as S
import Data.Maybe (fromJust, fromMaybe) import XMonad.Prelude (fromJust, fromMaybe)
import Data.Ord (comparing) import Data.Ord (comparing)
-- $usage -- $usage

View File

@ -35,14 +35,12 @@ module XMonad.Actions.DynamicWorkspaces (
WorkspaceIndex WorkspaceIndex
) where ) where
import XMonad.Prelude (find, isNothing, when)
import XMonad hiding (workspaces) import XMonad hiding (workspaces)
import XMonad.StackSet hiding (filter, modify, delete) import XMonad.StackSet hiding (filter, modify, delete)
import XMonad.Prompt.Workspace ( Wor(Wor), workspacePrompt ) import XMonad.Prompt.Workspace ( Wor(Wor), workspacePrompt )
import XMonad.Prompt ( XPConfig, mkXPrompt ) import XMonad.Prompt ( XPConfig, mkXPrompt )
import XMonad.Util.WorkspaceCompare ( getSortByIndex ) import XMonad.Util.WorkspaceCompare ( getSortByIndex )
import Data.List (find)
import Data.Maybe (isNothing)
import Control.Monad (when)
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS

View File

@ -38,18 +38,13 @@ module XMonad.Actions.EasyMotion ( -- * Usage
) where ) where
import XMonad import XMonad
import XMonad.StackSet as W import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Util.Font (releaseXMF, initXMF, Align(AlignCenter), XMonadFont(..), textExtentsXMF) import XMonad.Util.Font (releaseXMF, initXMF, Align(AlignCenter), XMonadFont(..), textExtentsXMF)
import XMonad.Util.XUtils (fi, createNewWindow, paintAndWrite, deleteWindow, showWindow) import XMonad.Util.XUtils (createNewWindow, paintAndWrite, deleteWindow, showWindow)
import Control.Monad (replicateM)
import Control.Arrow ((&&&)) import Control.Arrow ((&&&))
import Data.Functor (($>)) import qualified Data.Map.Strict as M (Map, elems, map, mapWithKey)
import Data.Maybe (isJust, listToMaybe)
import qualified Data.Map.Strict as M (Map, map, mapWithKey, elems)
import Data.Set (toList)
import Graphics.X11.Xlib.Extras (getWindowAttributes, getEvent)
import qualified Data.List as L (filter, partition, find, nub)
import Data.List (sortOn)
-- $usage -- $usage
-- --
@ -275,9 +270,9 @@ handleSelectWindow c = do
$ M.mapWithKey (\sid ks -> buildOverlays ks <$> sortedOverlayWindows sid) m $ M.mapWithKey (\sid ks -> buildOverlays ks <$> sortedOverlayWindows sid) m
where where
screenById :: ScreenId -> Maybe (W.Screen WorkspaceId (Layout Window) Window ScreenId ScreenDetail) screenById :: ScreenId -> Maybe (W.Screen WorkspaceId (Layout Window) Window ScreenId ScreenDetail)
screenById sid = L.find ((== sid) . screen) (W.screens ws) screenById sid = find ((== sid) . W.screen) (W.screens ws)
visibleWindowsOnScreen :: ScreenId -> [Window] visibleWindowsOnScreen :: ScreenId -> [Window]
visibleWindowsOnScreen sid = L.filter (`elem` toList mappedWins) $ W.integrate' $ screenById sid >>= W.stack . W.workspace visibleWindowsOnScreen sid = filter (`elem` toList mappedWins) $ W.integrate' $ screenById sid >>= W.stack . W.workspace
sortedOverlayWindows :: ScreenId -> X [OverlayWindow] sortedOverlayWindows :: ScreenId -> X [OverlayWindow]
sortedOverlayWindows sid = sortOverlayWindows <$> buildOverlayWindows dpy th (visibleWindowsOnScreen sid) sortedOverlayWindows sid = sortOverlayWindows <$> buildOverlayWindows dpy th (visibleWindowsOnScreen sid)
status <- io $ grabKeyboard dpy rw True grabModeAsync grabModeAsync currentTime status <- io $ grabKeyboard dpy rw True grabModeAsync grabModeAsync currentTime
@ -331,7 +326,7 @@ selectWindow conf =
where where
-- make sure the key lists don't contain: backspace, our cancel key, or duplicates -- make sure the key lists don't contain: backspace, our cancel key, or duplicates
sanitise :: [KeySym] -> [KeySym] sanitise :: [KeySym] -> [KeySym]
sanitise = L.nub . L.filter (`notElem` [xK_BackSpace, cancelKey conf]) sanitise = nub . filter (`notElem` [xK_BackSpace, cancelKey conf])
sanitiseKeys :: ChordKeys -> ChordKeys sanitiseKeys :: ChordKeys -> ChordKeys
sanitiseKeys cKeys = sanitiseKeys cKeys =
case cKeys of case cKeys of
@ -381,12 +376,12 @@ handleKeyboard dpy drawFn cancel selected deselected = do
case x of case x of
Backspace -> redraw >> handleKeyboard dpy drawFn cancel selected deselected Backspace -> redraw >> handleKeyboard dpy drawFn cancel selected deselected
_ -> return x _ -> return x
isNextOverlayKey keySym = isJust (L.find ((== Just keySym) . listToMaybe .chord) selected) isNextOverlayKey keySym = isJust (find ((== Just keySym) . listToMaybe .chord) selected)
handleNextOverlayKey keySym = handleNextOverlayKey keySym =
case fg of case fg of
[x] -> return $ Selected x [x] -> return $ Selected x
_ -> handleKeyboard dpy drawFn cancel (trim fg) (clear bg) >>= retryBackspace _ -> handleKeyboard dpy drawFn cancel (trim fg) (clear bg) >>= retryBackspace
where where
(fg, bg) = L.partition ((== Just keySym) . listToMaybe . chord) selected (fg, bg) = partition ((== Just keySym) . listToMaybe . chord) selected
trim = map (\o -> o { chord = tail $ chord o }) trim = map (\o -> o { chord = tail $ chord o })
clear = map (\o -> o { chord = [] }) clear = map (\o -> o { chord = [] })

View File

@ -18,9 +18,7 @@ module XMonad.Actions.FindEmptyWorkspace (
viewEmptyWorkspace, tagToEmptyWorkspace, sendToEmptyWorkspace viewEmptyWorkspace, tagToEmptyWorkspace, sendToEmptyWorkspace
) where ) where
import Data.List import XMonad.Prelude
import Data.Maybe ( isNothing )
import XMonad import XMonad
import XMonad.StackSet import XMonad.StackSet

View File

@ -20,7 +20,7 @@ module XMonad.Actions.FlexibleResize (
) where ) where
import XMonad import XMonad
import XMonad.Util.XUtils (fi) import XMonad.Prelude (fi)
import Foreign.C.Types import Foreign.C.Types
-- $usage -- $usage

View File

@ -27,8 +27,7 @@ module XMonad.Actions.FloatSnap (
ifClick') where ifClick') where
import XMonad import XMonad
import Data.List (sort) import XMonad.Prelude (fromJust, isNothing, listToMaybe, sort)
import Data.Maybe (listToMaybe,fromJust,isNothing)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified Data.Set as S import qualified Data.Set as S

View File

@ -78,15 +78,14 @@ module XMonad.Actions.GridSelect (
-- * Types -- * Types
TwoDState, TwoDState,
) where ) where
import Data.Maybe import Control.Arrow ((***))
import Data.Bits import Data.Bits
import Data.Char
import Data.Ord (comparing) import Data.Ord (comparing)
import Control.Monad.State import Control.Monad.State
import Control.Arrow
import Data.List as L import Data.List as L
import qualified Data.Map as M import qualified Data.Map as M
import XMonad hiding (liftX) import XMonad hiding (liftX)
import XMonad.Prelude
import XMonad.Util.Font import XMonad.Util.Font
import XMonad.Prompt (mkUnmanagedWindow) import XMonad.Prompt (mkUnmanagedWindow)
import XMonad.StackSet as W import XMonad.StackSet as W

View File

@ -35,15 +35,17 @@ module XMonad.Actions.GroupNavigation ( -- * Usage
import Control.Monad.Reader import Control.Monad.Reader
import Control.Monad.State import Control.Monad.State
import Data.Foldable as Fold import Data.Map ((!))
import Data.Map as Map import qualified Data.Map as Map
import Data.Sequence as Seq import Data.Sequence (Seq, ViewL (EmptyL, (:<)), viewl, (<|), (><), (|>))
import Data.Set as Set import qualified Data.Sequence as Seq
import qualified Data.Set as Set
import Graphics.X11.Types import Graphics.X11.Types
import Prelude hiding (concatMap, drop, elem, filter, null, reverse) import Prelude hiding (concatMap, drop, elem, filter, null, reverse)
import XMonad.Core import XMonad.Core
import XMonad.ManageHook import XMonad.ManageHook
import XMonad.Operations (windows, withFocused) import XMonad.Operations (windows, withFocused)
import XMonad.Prelude (elem, foldl')
import qualified XMonad.StackSet as SS import qualified XMonad.StackSet as SS
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
@ -132,7 +134,7 @@ orderedWindowList dir = withWindowSet $ \ss -> do
wsids <- asks (Seq.fromList . workspaces . config) wsids <- asks (Seq.fromList . workspaces . config)
let wspcs = orderedWorkspaceList ss wsids let wspcs = orderedWorkspaceList ss wsids
wins = dirfun dir wins = dirfun dir
$ Fold.foldl' (><) Seq.empty $ foldl' (><) Seq.empty
$ fmap (Seq.fromList . SS.integrate' . SS.stack) wspcs $ fmap (Seq.fromList . SS.integrate' . SS.stack) wspcs
cur = SS.peek ss cur = SS.peek ss
return $ maybe wins (rotfun wins) cur return $ maybe wins (rotfun wins) cur
@ -146,7 +148,7 @@ orderedWorkspaceList :: WindowSet -> Seq String -> Seq WindowSpace
orderedWorkspaceList ss wsids = rotateTo isCurWS wspcs' orderedWorkspaceList ss wsids = rotateTo isCurWS wspcs'
where where
wspcs = SS.workspaces ss wspcs = SS.workspaces ss
wspcsMap = Fold.foldl' (\m ws -> Map.insert (SS.tag ws) ws m) Map.empty wspcs wspcsMap = foldl' (\m ws -> Map.insert (SS.tag ws) ws m) Map.empty wspcs
wspcs' = fmap (wspcsMap !) wsids wspcs' = fmap (wspcsMap !) wsids
isCurWS ws = SS.tag ws == SS.tag (SS.workspace $ SS.current ss) isCurWS ws = SS.tag ws == SS.tag (SS.workspace $ SS.current ss)
@ -172,26 +174,11 @@ updateHistory :: HistoryDB -> X HistoryDB
updateHistory (HistoryDB oldcur oldhist) = withWindowSet $ \ss -> do updateHistory (HistoryDB oldcur oldhist) = withWindowSet $ \ss -> do
let newcur = SS.peek ss let newcur = SS.peek ss
wins = Set.fromList $ SS.allWindows ss wins = Set.fromList $ SS.allWindows ss
newhist = flt (`Set.member` wins) (ins oldcur oldhist) newhist = Seq.filter (`Set.member` wins) (ins oldcur oldhist)
return $ HistoryDB newcur (del newcur newhist) return $ HistoryDB newcur (del newcur newhist)
where where
ins x xs = maybe xs (<| xs) x ins x xs = maybe xs (<| xs) x
del x xs = maybe xs (\x' -> flt (/= x') xs) x del x xs = maybe xs (\x' -> Seq.filter (/= x') xs) x
--- Two replacements for Seq.filter and Seq.breakl available only in
--- containers-0.3.0.0, which only ships with ghc 6.12. Once we
--- decide to no longer support ghc < 6.12, these should be replaced
--- with Seq.filter and Seq.breakl.
flt :: (a -> Bool) -> Seq a -> Seq a
flt p = Fold.foldl (\xs x -> if p x then xs |> x else xs) Seq.empty
brkl :: (a -> Bool) -> Seq a -> (Seq a, Seq a)
brkl p xs = flip Seq.splitAt xs
$ snd
$ Fold.foldr (\x (i, j) -> if p x then (i-1, i-1) else (i-1, j)) (l, l) xs
where
l = Seq.length xs
--- Some sequence helpers -------------------------------------------- --- Some sequence helpers --------------------------------------------
@ -205,7 +192,7 @@ rotate xs = rotate' (viewl xs)
-- Rotates the sequence until an element matching the given condition -- Rotates the sequence until an element matching the given condition
-- is at the beginning of the sequence. -- is at the beginning of the sequence.
rotateTo :: (a -> Bool) -> Seq a -> Seq a rotateTo :: (a -> Bool) -> Seq a -> Seq a
rotateTo cond xs = let (lxs, rxs) = brkl cond xs in rxs >< lxs rotateTo cond xs = let (lxs, rxs) = Seq.breakl cond xs in rxs >< lxs
--- A monadic find --------------------------------------------------- --- A monadic find ---------------------------------------------------
@ -239,4 +226,3 @@ isOnAnyVisibleWS = do
visibleWs = w `elem` allVisible visibleWs = w `elem` allVisible
unfocused = maybe True (w /=) $ SS.peek ws unfocused = maybe True (w /=) $ SS.peek ws
return $ visibleWs && unfocused return $ visibleWs && unfocused

View File

@ -27,11 +27,10 @@ module XMonad.Actions.KeyRemap (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import XMonad.Util.Paste import XMonad.Util.Paste
import Data.List
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad
data KeymapTable = KeymapTable [((KeyMask, KeySym), (KeyMask, KeySym))] deriving (Typeable, Show) data KeymapTable = KeymapTable [((KeyMask, KeySym), (KeyMask, KeySym))] deriving (Typeable, Show)

View File

@ -18,10 +18,9 @@ module XMonad.Actions.Launcher(
, launcherPrompt , launcherPrompt
) where ) where
import Data.List (find, findIndex, isPrefixOf, tails)
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe (isJust)
import XMonad hiding (config) import XMonad hiding (config)
import XMonad.Prelude
import XMonad.Prompt import XMonad.Prompt
import XMonad.Util.Run import XMonad.Util.Run

View File

@ -51,13 +51,11 @@ module XMonad.Actions.MessageFeedback
import XMonad ( Window ) import XMonad ( Window )
import XMonad.Core ( X(), Message, SomeMessage(..), LayoutClass(..), windowset, catchX, WorkspaceId, Layout, whenJust ) import XMonad.Core ( X(), Message, SomeMessage(..), LayoutClass(..), windowset, catchX, WorkspaceId, Layout, whenJust )
import XMonad.StackSet ( Workspace, current, workspace, layout, tag )
import XMonad.Operations ( updateLayout, windowBracket, modifyWindowSet ) import XMonad.Operations ( updateLayout, windowBracket, modifyWindowSet )
import XMonad.Prelude ( isJust, liftA2, void )
import XMonad.StackSet ( Workspace, current, workspace, layout, tag )
import Data.Maybe ( isJust )
import Control.Monad ( void )
import Control.Monad.State ( gets ) import Control.Monad.State ( gets )
import Control.Applicative ( liftA2 )
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -35,6 +35,7 @@ module XMonad.Actions.Minimize
) where ) where
import XMonad import XMonad
import XMonad.Prelude (fromMaybe, join, listToMaybe)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Layout.BoringWindows as BW import qualified XMonad.Layout.BoringWindows as BW
@ -43,8 +44,6 @@ import XMonad.Util.Minimize
import XMonad.Util.WindowProperties (getProp32) import XMonad.Util.WindowProperties (getProp32)
import Foreign.C.Types (CLong) import Foreign.C.Types (CLong)
import Control.Monad (join)
import Data.Maybe (fromMaybe, listToMaybe)
import qualified Data.List as L import qualified Data.List as L
import qualified Data.Map as M import qualified Data.Map as M

View File

@ -21,14 +21,13 @@ module XMonad.Actions.MouseGestures (
mkCollect mkCollect
) where ) where
import XMonad.Prelude
import XMonad import XMonad
import XMonad.Util.Types (Direction2D(..)) import XMonad.Util.Types (Direction2D(..))
import Data.IORef import Data.IORef
import qualified Data.Map as M import qualified Data.Map as M
import Data.Map (Map) import Data.Map (Map)
import Data.Maybe
import Control.Monad
-- $usage -- $usage
-- --

View File

@ -57,11 +57,10 @@ module XMonad.Actions.Navigation2D ( -- * Usage
, Direction2D(..) , Direction2D(..)
) where ) where
import Control.Applicative
import qualified Data.List as L import qualified Data.List as L
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe
import Data.Ord (comparing) import Data.Ord (comparing)
import XMonad.Prelude
import XMonad hiding (Screen) import XMonad hiding (Screen)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
@ -890,10 +889,6 @@ swap win winset = W.focusWindow cur
centerOf :: Rectangle -> (Position, Position) centerOf :: Rectangle -> (Position, Position)
centerOf r = (rect_x r + fi (rect_width r) `div` 2, rect_y r + fi (rect_height r) `div` 2) centerOf r = (rect_x r + fi (rect_width r) `div` 2, rect_y r + fi (rect_height r) `div` 2)
-- | Shorthand for integer conversions
fi :: (Integral a, Num b) => a -> b
fi = fromIntegral
-- | Functions to choose the subset of windows to operate on -- | Functions to choose the subset of windows to operate on
thisLayer, otherLayer :: a -> a -> a thisLayer, otherLayer :: a -> a -> a
thisLayer = curry fst thisLayer = curry fst

View File

@ -26,12 +26,9 @@ module XMonad.Actions.OnScreen (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (fromMaybe, guard)
import XMonad.StackSet hiding (new) import XMonad.StackSet hiding (new)
import Control.Monad (guard)
-- import Control.Monad.State.Class (gets)
import Data.Maybe (fromMaybe)
-- | Focus data definitions -- | Focus data definitions
data Focus = FocusNew -- ^ always focus the new screen data Focus = FocusNew -- ^ always focus the new screen

View File

@ -30,11 +30,9 @@ module XMonad.Actions.PhysicalScreens (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (findIndex, on, sortBy)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Data.List (sortBy,findIndex)
import Data.Function (on)
{- $usage {- $usage
This module allows you name Xinerama screens from XMonad using their This module allows you name Xinerama screens from XMonad using their

View File

@ -38,11 +38,9 @@ module XMonad.Actions.Plane
) )
where where
import Control.Monad
import Data.List
import Data.Map hiding (split) import Data.Map hiding (split)
import Data.Maybe
import XMonad.Prelude
import XMonad import XMonad
import XMonad.StackSet hiding (workspaces) import XMonad.StackSet hiding (workspaces)
import XMonad.Util.Run import XMonad.Util.Run

View File

@ -32,9 +32,8 @@ module XMonad.Actions.Prefix
) where ) where
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe
import Control.Monad (liftM2)
import XMonad.Prelude
import XMonad import XMonad
import XMonad.Util.ExtensibleState as XS import XMonad.Util.ExtensibleState as XS
import XMonad.Util.Paste (sendKey) import XMonad.Util.Paste (sendKey)

View File

@ -25,7 +25,7 @@ module XMonad.Actions.RotateSome (
) where ) where
import Control.Arrow ((***)) import Control.Arrow ((***))
import Data.List (partition, sortOn, (\\)) import XMonad.Prelude (partition, sortOn, (\\))
import qualified Data.Map as M import qualified Data.Map as M
import XMonad (Window, WindowSpace, Rectangle, X, runLayout, screenRect, windows, withWindowSet) import XMonad (Window, WindowSpace, Rectangle, X, runLayout, screenRect, windows, withWindowSet)
import XMonad.StackSet (Screen (Screen), Stack (Stack), current, floating, modify', stack) import XMonad.StackSet (Screen (Screen), Stack (Stack), current, floating, modify', stack)

View File

@ -65,13 +65,12 @@ module XMonad.Actions.Search ( -- * Usage
) where ) where
import Codec.Binary.UTF8.String (encode) import Codec.Binary.UTF8.String (encode)
import Data.Char (isAlphaNum, isAscii)
import Data.List (isPrefixOf)
import Text.Printf import Text.Printf
import XMonad (X (), liftIO) import XMonad (X (), liftIO)
import XMonad.Prompt (XPConfig (), XPrompt (showXPrompt, nextCompletion, commandToComplete), import XMonad.Prompt (XPConfig (), XPrompt (showXPrompt, nextCompletion, commandToComplete),
getNextCompletion, getNextCompletion,
historyCompletionP, mkXPrompt) historyCompletionP, mkXPrompt)
import XMonad.Prelude (isAlphaNum, isAscii, isPrefixOf)
import XMonad.Prompt.Shell (getBrowser) import XMonad.Prompt.Shell (getBrowser)
import XMonad.Util.Run (safeSpawn) import XMonad.Util.Run (safeSpawn)
import XMonad.Util.XSelection (getSelection) import XMonad.Util.XSelection (getSelection)

View File

@ -23,11 +23,10 @@ module XMonad.Actions.ShowText
, ShowTextConfig(..) , ShowTextConfig(..)
) where ) where
import Control.Monad (when)
import Data.Map (Map,empty,insert,lookup) import Data.Map (Map,empty,insert,lookup)
import Data.Monoid (All)
import Prelude hiding (lookup) import Prelude hiding (lookup)
import XMonad import XMonad
import XMonad.Prelude (All, fi, when)
import XMonad.StackSet (current,screen) import XMonad.StackSet (current,screen)
import XMonad.Util.Font (Align(AlignCenter) import XMonad.Util.Font (Align(AlignCenter)
, initXMF , initXMF
@ -37,7 +36,6 @@ import XMonad.Util.Font (Align(AlignCenter)
import XMonad.Util.Timer (startTimer) import XMonad.Util.Timer (startTimer)
import XMonad.Util.XUtils (createNewWindow import XMonad.Util.XUtils (createNewWindow
, deleteWindow , deleteWindow
, fi
, showWindow , showWindow
, paintAndWrite) , paintAndWrite)
import qualified XMonad.Util.ExtensibleState as ES import qualified XMonad.Util.ExtensibleState as ES

View File

@ -29,15 +29,13 @@ module XMonad.Actions.SpawnOn (
) where ) where
import Control.Exception (tryJust) import Control.Exception (tryJust)
import Control.Monad (guard)
import Data.List (isInfixOf)
import Data.Maybe (isJust)
import System.IO.Error (isDoesNotExistError) import System.IO.Error (isDoesNotExistError)
import System.IO.Unsafe (unsafePerformIO) import System.IO.Unsafe (unsafePerformIO)
import System.Posix.Types (ProcessID) import System.Posix.Types (ProcessID)
import Text.Printf (printf) import Text.Printf (printf)
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.ManageHelpers import XMonad.Hooks.ManageHelpers

View File

@ -20,10 +20,9 @@ module XMonad.Actions.Submap (
submapDefaultWithKey submapDefaultWithKey
) where ) where
import Data.Bits import Data.Bits
import Data.Maybe (fromMaybe) import XMonad.Prelude (fix, fromMaybe)
import XMonad hiding (keys) import XMonad hiding (keys)
import qualified Data.Map as M import qualified Data.Map as M
import Control.Monad.Fix (fix)
{- $usage {- $usage

View File

@ -57,15 +57,13 @@ module XMonad.Actions.SwapPromote
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import qualified Data.Map as M import qualified Data.Map as M
import qualified Data.Set as S import qualified Data.Set as S
import Data.List
import Data.Maybe
import Control.Arrow import Control.Arrow
import Control.Monad
-- $usage -- $usage

View File

@ -26,14 +26,12 @@ module XMonad.Actions.TagWindows (
TagPrompt, TagPrompt,
) where ) where
import Data.List (nub,sortBy)
import Control.Monad
import Control.Exception as E import Control.Exception as E
import XMonad.StackSet hiding (filter)
import XMonad.Prompt
import XMonad hiding (workspaces) import XMonad hiding (workspaces)
import XMonad.Prelude
import XMonad.Prompt
import XMonad.StackSet hiding (filter)
econst :: Monad m => a -> IOException -> m a econst :: Monad m => a -> IOException -> m a
econst = const . return econst = const . return

View File

@ -19,11 +19,11 @@ module XMonad.Actions.TiledWindowDragging
dragWindow dragWindow
) )
where where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Layout.DraggingVisualizer import XMonad.Layout.DraggingVisualizer
import Control.Monad
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
@ -32,7 +32,7 @@ import Control.Monad
-- > import XMonad.Layout.DraggingVisualizer -- > import XMonad.Layout.DraggingVisualizer
-- --
-- then edit your 'layoutHook' by adding the draggingVisualizer to your layout: -- then edit your 'layoutHook' by adding the draggingVisualizer to your layout:
-- --
-- > myLayout = draggingVisualizer $ layoutHook def -- > myLayout = draggingVisualizer $ layoutHook def
-- --
-- Then add a mouse binding for 'dragWindow': -- Then add a mouse binding for 'dragWindow':
@ -54,10 +54,10 @@ dragWindow window = whenX (isClient window) $ do
mouseDrag mouseDrag
(\posX posY -> (\posX posY ->
let rect = Rectangle (fInt (fInt winX + (posX - fInt offsetX))) let rect = Rectangle (fi (fi winX + (posX - fi offsetX)))
(fInt (fInt winY + (posY - fInt offsetY))) (fi (fi winY + (posY - fi offsetY)))
(fInt winWidth) (fi winWidth)
(fInt winHeight) (fi winHeight)
in sendMessage $ DraggingWindow window rect in sendMessage $ DraggingWindow window rect
) )
(sendMessage DraggingStopped >> performWindowSwitching window) (sendMessage DraggingStopped >> performWindowSwitching window)
@ -67,13 +67,13 @@ dragWindow window = whenX (isClient window) $ do
getPointerOffset :: Window -> X (Int, Int) getPointerOffset :: Window -> X (Int, Int)
getPointerOffset win = do getPointerOffset win = do
(_, _, _, oX, oY, _, _, _) <- withDisplay (\d -> io $ queryPointer d win) (_, _, _, oX, oY, _, _, _) <- withDisplay (\d -> io $ queryPointer d win)
return (fInt oX, fInt oY) return (fi oX, fi oY)
-- | return a tuple of windowX, windowY, windowWidth, windowHeight -- | return a tuple of windowX, windowY, windowWidth, windowHeight
getWindowPlacement :: Window -> X (Int, Int, Int, Int) getWindowPlacement :: Window -> X (Int, Int, Int, Int)
getWindowPlacement window = do getWindowPlacement window = do
wa <- withDisplay (\d -> io $ getWindowAttributes d window) wa <- withDisplay (\d -> io $ getWindowAttributes d window)
return (fInt $ wa_x wa, fInt $ wa_y wa, fInt $ wa_width wa, fInt $ wa_height wa) return (fi $ wa_x wa, fi $ wa_y wa, fi $ wa_width wa, fi $ wa_height wa)
performWindowSwitching :: Window -> X () performWindowSwitching :: Window -> X ()
@ -91,11 +91,3 @@ performWindowSwitching win = do
switchEntries a b x | x == a = b switchEntries a b x | x == a = b
| x == b = a | x == b = a
| otherwise = x | otherwise = x
-- | shorthand for fromIntegral
fInt :: Integral a => Integral b => a -> b
fInt = fromIntegral

View File

@ -63,15 +63,12 @@ module XMonad.Actions.TopicSpace
where where
import XMonad import XMonad
import XMonad.Prelude
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import qualified XMonad.Hooks.DynamicLog as DL import qualified XMonad.Hooks.DynamicLog as DL
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Control.Applicative (liftA2)
import Control.Monad (replicateM_, unless, when)
import Data.List ((\\), elemIndex, nub, sort, sortOn)
import Data.Maybe (fromJust, fromMaybe, isNothing, listToMaybe)
import System.IO (hClose, hPutStr) import System.IO (hClose, hPutStr)
import XMonad.Prompt (XPConfig) import XMonad.Prompt (XPConfig)

View File

@ -64,13 +64,12 @@ module XMonad.Actions.TreeSelect
import Control.Monad.Reader import Control.Monad.Reader
import Control.Monad.State import Control.Monad.State
import Data.List (find)
import Data.Maybe
import Data.Tree import Data.Tree
import Foreign import Foreign
import System.IO import System.IO
import System.Posix.Process (forkProcess, executeFile) import System.Posix.Process (forkProcess, executeFile)
import XMonad hiding (liftX) import XMonad hiding (liftX)
import XMonad.Prelude
import XMonad.StackSet as W import XMonad.StackSet as W
import XMonad.Util.Font import XMonad.Util.Font
import XMonad.Util.NamedWindows import XMonad.Util.NamedWindows

View File

@ -20,9 +20,8 @@ module XMonad.Actions.UpdateFocus (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Control.Monad (when)
import Data.Monoid
-- $usage -- $usage
-- To make the focus update on mouse movement within an unfocused window, add the -- To make the focus update on mouse movement within an unfocused window, add the

View File

@ -24,12 +24,11 @@ module XMonad.Actions.UpdatePointer
where where
import XMonad import XMonad
import XMonad.Util.XUtils (fi) import XMonad.Prelude
import Control.Arrow
import Control.Monad
import XMonad.StackSet (member, peek, screenDetail, current) import XMonad.StackSet (member, peek, screenDetail, current)
import Data.Maybe
import Control.Exception import Control.Exception (SomeException, try)
import Control.Arrow ((&&&), (***))
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
@ -107,4 +106,3 @@ lerp r a b = (1 - r) * realToFrac a + r * realToFrac b
clip :: Ord a => (a, a) -> a -> a clip :: Ord a => (a, a) -> a -> a
clip (lower, upper) x = if x < lower then lower clip (lower, upper) x = if x < lower then lower
else if x > upper then upper else x else if x > upper then upper else x

View File

@ -22,7 +22,7 @@ module XMonad.Actions.Warp (
warpToWindow warpToWindow
) where ) where
import Data.List import XMonad.Prelude
import XMonad import XMonad
import XMonad.StackSet as W import XMonad.StackSet as W

View File

@ -36,10 +36,8 @@ module XMonad.Actions.WindowGo (
module XMonad.ManageHook module XMonad.ManageHook
) where ) where
import Control.Monad
import Data.Char (toLower)
import qualified Data.List as L (nub,sortBy) import qualified Data.List as L (nub,sortBy)
import Data.Monoid import XMonad.Prelude
import XMonad (Query(), X(), ManageHook, WindowSet, withWindowSet, runQuery, liftIO, ask) import XMonad (Query(), X(), ManageHook, WindowSet, withWindowSet, runQuery, liftIO, ask)
import Graphics.X11 (Window) import Graphics.X11 (Window)
import XMonad.ManageHook import XMonad.ManageHook

View File

@ -29,7 +29,7 @@ import qualified XMonad.StackSet as W
import XMonad.Actions.GridSelect import XMonad.Actions.GridSelect
import XMonad.Layout.Maximize import XMonad.Layout.Maximize
import XMonad.Actions.Minimize import XMonad.Actions.Minimize
import XMonad.Util.XUtils (fi) import XMonad.Prelude (fi)
-- $usage -- $usage
-- --

View File

@ -40,15 +40,14 @@ module XMonad.Actions.WindowNavigation (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (catMaybes, fromMaybe, listToMaybe, sortBy)
import XMonad.Util.Types (Direction2D(..)) import XMonad.Util.Types (Direction2D(..))
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Control.Arrow (second) import Control.Arrow (second)
import Data.IORef import Data.IORef
import Data.List (sortBy)
import Data.Map (Map()) import Data.Map (Map())
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe (catMaybes, fromMaybe, listToMaybe)
import Data.Ord (comparing) import Data.Ord (comparing)
import qualified Data.Set as S import qualified Data.Set as S

View File

@ -15,7 +15,7 @@ module XMonad.Actions.WithAll (
sinkAll, withAll, sinkAll, withAll,
withAll', killAll) where withAll', killAll) where
import Data.Foldable hiding (foldr) import XMonad.Prelude hiding (foldr)
import XMonad import XMonad
import XMonad.StackSet import XMonad.StackSet

View File

@ -44,6 +44,7 @@ module XMonad.Actions.WorkspaceNames (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (fromMaybe, isInfixOf, (<&>), (>=>))
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
@ -54,11 +55,7 @@ import XMonad.Prompt (mkXPrompt, XPConfig)
import XMonad.Prompt.Workspace (Wor(Wor)) import XMonad.Prompt.Workspace (Wor(Wor))
import XMonad.Util.WorkspaceCompare (getSortByIndex) import XMonad.Util.WorkspaceCompare (getSortByIndex)
import Control.Monad ((>=>))
import Data.Functor ((<&>))
import qualified Data.Map as M import qualified Data.Map as M
import Data.Maybe (fromMaybe)
import Data.List (isInfixOf)
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@ file: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@ file:
@ -177,7 +174,7 @@ workspaceNamePrompt conf job = do
(job . toWsId pairs) (job . toWsId pairs)
where toWsId pairs name = fromMaybe "" (lookup name pairs) where toWsId pairs name = fromMaybe "" (lookup name pairs)
contains completions input = contains completions input =
return $ filter (Data.List.isInfixOf input) completions return $ filter (isInfixOf input) completions
-- | Workspace list transformation for -- | Workspace list transformation for
-- 'XMonad.Hooks.EwmhDesktops.ewmhDesktopsLogHookCustom' that exposes -- 'XMonad.Hooks.EwmhDesktops.ewmhDesktopsLogHookCustom' that exposes

View File

@ -62,7 +62,7 @@ import qualified XMonad.StackSet as W
import qualified Data.Map as M import qualified Data.Map as M
import System.Exit import System.Exit
import Control.Monad(when) import XMonad.Prelude(when)
-- $usage -- $usage
-- To use this module, start with the following @~\/.xmonad\/xmonad.hs@: -- To use this module, start with the following @~\/.xmonad\/xmonad.hs@:

View File

@ -4,10 +4,7 @@
module XMonad.Config.Dmwit where module XMonad.Config.Dmwit where
-- system imports -- system imports
import Control.Monad
import Control.Monad.Trans import Control.Monad.Trans
import Data.Char
import Data.List
import Data.Map (Map, fromList) import Data.Map (Map, fromList)
import Data.Ratio import Data.Ratio
import Data.Word import Data.Word
@ -31,6 +28,7 @@ import XMonad.Layout.Grid
import XMonad.Layout.IndependentScreens import XMonad.Layout.IndependentScreens
import XMonad.Layout.Magnifier import XMonad.Layout.Magnifier
import XMonad.Layout.NoBorders import XMonad.Layout.NoBorders
import XMonad.Prelude
import XMonad.Util.Dzen hiding (x, y) import XMonad.Util.Dzen hiding (x, y)
import XMonad.Util.SpawnOnce import XMonad.Util.SpawnOnce
-- }}} -- }}}
@ -111,7 +109,6 @@ fullscreenMPlayer = className =? "MPlayer" --> do
Just (16 :% 9) -> viewFullOn 1 "5" win Just (16 :% 9) -> viewFullOn 1 "5" win
_ -> doFloat _ -> doFloat
where where
fi = fromIntegral :: Dimension -> Double
approx (n, d) = approxRational (fi n / fi d) (1/100) approx (n, d) = approxRational (fi n / fi d) (1/100)
operationOn f s n w = do operationOn f s n w = do

View File

@ -31,7 +31,7 @@ import XMonad
import XMonad.Config.Desktop import XMonad.Config.Desktop
import XMonad.Util.Run (safeSpawn) import XMonad.Util.Run (safeSpawn)
import XMonad.Util.Ungrab import XMonad.Util.Ungrab
import Data.Char (toUpper) import XMonad.Prelude (toUpper)
import qualified Data.Map as M import qualified Data.Map as M

View File

@ -20,7 +20,7 @@ module XMonad.Config.Monad where
import XMonad hiding (terminal, keys) import XMonad hiding (terminal, keys)
import qualified XMonad as X import qualified XMonad as X
import Control.Monad.Writer import Control.Monad.Writer
import Data.Monoid import XMonad.Prelude
import Data.Accessor import Data.Accessor
import Data.Accessor.Basic hiding (set) import Data.Accessor.Basic hiding (set)

View File

@ -115,7 +115,7 @@ ifThenElse,
import Prelude hiding ((>>), mod) import Prelude hiding ((>>), mod)
import qualified Prelude as P ((>>=), (>>)) import qualified Prelude as P ((>>=), (>>))
import Data.Monoid (All) import XMonad.Prelude (All)
import XMonad hiding (xmonad, XConfig(..)) import XMonad hiding (xmonad, XConfig(..))
import XMonad (XConfig(XConfig)) import XMonad (XConfig(XConfig))

View File

@ -25,7 +25,7 @@ module XMonad.Hooks.CurrentWorkspaceOnTop (
import XMonad import XMonad
import qualified XMonad.StackSet as S import qualified XMonad.StackSet as S
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad(when) import XMonad.Prelude(when)
import qualified Data.Map as M import qualified Data.Map as M
-- $usage -- $usage

View File

@ -24,6 +24,7 @@ import Prelude
import XMonad hiding (windowEvent import XMonad hiding (windowEvent
,(-->) ,(-->)
) )
import XMonad.Prelude hiding (fi, bool)
import XMonad.Hooks.DebugKeyEvents (debugKeyEvents) import XMonad.Hooks.DebugKeyEvents (debugKeyEvents)
import XMonad.Util.DebugWindow (debugWindow) import XMonad.Util.DebugWindow (debugWindow)
@ -33,15 +34,7 @@ import XMonad.Util.DebugWindow (debugWindow)
import Control.Exception as E import Control.Exception as E
import Control.Monad.State import Control.Monad.State
import Control.Monad.Reader import Control.Monad.Reader
import Data.Char (isDigit)
import Data.Maybe (fromJust)
import Data.List (genericIndex
,genericLength
,unfoldr
)
import Codec.Binary.UTF8.String import Codec.Binary.UTF8.String
import Data.Maybe (fromMaybe)
import Data.Monoid
import Foreign import Foreign
import Foreign.C.Types import Foreign.C.Types
import Numeric (showHex) import Numeric (showHex)
@ -286,7 +279,7 @@ newtype Decoder a = Decoder (ReaderT Decode (StateT DecodeState X) a)
#endif #endif
-- | Retrive, parse, and dump a window property. As all the high-level property -- | Retrive, parse, and dump a window property. As all the high-level property
-- interfaces lose information necessary to decode properties correctly, we -- interfaces lose information necessary to decode properties correctly, we
-- work at the lowest level available. -- work at the lowest level available.
dumpProperty :: Atom -> String -> Window -> Int -> X String dumpProperty :: Atom -> String -> Window -> Int -> X String
dumpProperty a n w i = do dumpProperty a n w i = do
@ -413,8 +406,8 @@ runDecode c s (Decoder p) = runStateT (runReaderT p c) s
bytes :: Int -> Int bytes :: Int -> Int
bytes w = w `div` 8 bytes w = w `div` 8
-- | The top level property decoder, for a wide variety of standard ICCCM and -- | The top level property decoder, for a wide variety of standard ICCCM and
-- EWMH window properties. We pass part of the 'ReaderT' as arguments for -- EWMH window properties. We pass part of the 'ReaderT' as arguments for
-- pattern matching. -- pattern matching.
dumpProp :: Atom -> String -> Decoder Bool dumpProp :: Atom -> String -> Decoder Bool
@ -900,7 +893,7 @@ dumpMwmInfo = do
guardType ta $ dumpList' [("flags" ,dumpBits mwmHints,cARDINAL) guardType ta $ dumpList' [("flags" ,dumpBits mwmHints,cARDINAL)
,("window",dumpWindow ,wINDOW ) ,("window",dumpWindow ,wINDOW )
] ]
-- the most common case -- the most common case
dumpEnum :: [String] -> Decoder Bool dumpEnum :: [String] -> Decoder Bool
dumpEnum ss = dumpEnum' ss cARDINAL dumpEnum ss = dumpEnum' ss cARDINAL
@ -1000,7 +993,7 @@ dumpMDPrereg = do
append "total size = " append "total size = "
withIndent 13 dump32 withIndent 13 dump32
dumpMDBlocks $ fromIntegral dsc dumpMDBlocks $ fromIntegral dsc
dumpMDBlocks :: Int -> Decoder Bool dumpMDBlocks :: Int -> Decoder Bool
dumpMDBlocks _ = propSimple "(drop site info)" -- @@@ maybe later if needed dumpMDBlocks _ = propSimple "(drop site info)" -- @@@ maybe later if needed
@ -1024,7 +1017,7 @@ dumpPercent = guardType cARDINAL $ do
n <- getInt' 32 n <- getInt' 32
case n of case n of
Nothing -> return False Nothing -> return False
Just n' -> Just n' ->
let pct = 100 * fromIntegral n' / fromIntegral (maxBound :: Word32) let pct = 100 * fromIntegral n' / fromIntegral (maxBound :: Word32)
pct :: Double pct :: Double
in append $ show (round pct :: Integer) ++ "%" in append $ show (round pct :: Integer) ++ "%"

View File

@ -19,6 +19,7 @@ module XMonad.Hooks.DebugKeyEvents (-- * Usage
) where ) where
import XMonad.Core import XMonad.Core
import XMonad.Prelude
import XMonad.Operations (cleanMask) import XMonad.Operations (cleanMask)
import Graphics.X11.Xlib import Graphics.X11.Xlib
@ -26,8 +27,6 @@ import Graphics.X11.Xlib.Extras
import Control.Monad.State (gets) import Control.Monad.State (gets)
import Data.Bits import Data.Bits
import Data.List (intercalate)
import Data.Monoid
import Numeric (showHex) import Numeric (showHex)
import System.IO (hPutStrLn import System.IO (hPutStrLn
,stderr) ,stderr)

View File

@ -24,6 +24,7 @@ module XMonad.Hooks.DebugStack (debugStack
) where ) where
import XMonad.Core import XMonad.Core
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.DebugWindow import XMonad.Util.DebugWindow
@ -31,10 +32,7 @@ import XMonad.Util.DebugWindow
import Graphics.X11.Types (Window) import Graphics.X11.Types (Window)
import Graphics.X11.Xlib.Extras (Event) import Graphics.X11.Xlib.Extras (Event)
import Control.Monad (foldM)
import Data.Map (member) import Data.Map (member)
import Data.Monoid (All(..))
import Data.List (intercalate)
-- | Print the state of the current window stack for the current workspace to -- | Print the state of the current window stack for the current workspace to
-- @stderr@, which for most installations goes to @~/.xsession-errors@. -- @stderr@, which for most installations goes to @~/.xsession-errors@.

View File

@ -29,15 +29,9 @@ module XMonad.Hooks.DynamicBars (
import Prelude import Prelude
import Control.Monad
import Control.Monad.Trans (lift) import Control.Monad.Trans (lift)
import Control.Monad.Writer (WriterT, execWriterT, tell) import Control.Monad.Writer (WriterT, execWriterT, tell)
import Data.List
import Data.Maybe
import Data.Monoid
import Data.Foldable (traverse_)
import Graphics.X11.Xinerama import Graphics.X11.Xinerama
import Graphics.X11.Xlib import Graphics.X11.Xlib
import Graphics.X11.Xlib.Extras import Graphics.X11.Xlib.Extras
@ -46,6 +40,7 @@ import Graphics.X11.Xrandr
import System.IO import System.IO
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS

View File

@ -23,12 +23,9 @@ module XMonad.Hooks.DynamicHooks (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Data.List
import Data.Maybe (listToMaybe)
import Data.Monoid
-- $usage -- $usage
-- Provides two new kinds of 'ManageHooks' that can be defined at runtime. -- Provides two new kinds of 'ManageHooks' that can be defined at runtime.
-- --

View File

@ -33,9 +33,7 @@ import qualified XMonad.StackSet as S
import qualified Data.Map as M import qualified Data.Map as M
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
import Data.Functor ((<&>)) import XMonad.Prelude (for, (<&>), (<=<), (>=>))
import Data.Traversable (for)
import Control.Monad ((<=<), (>=>))
-- $usage -- $usage
-- Dynamically augment Workspace's 'WorkspaceId' as shown on a status bar -- Dynamically augment Workspace's 'WorkspaceId' as shown on a status bar

View File

@ -26,8 +26,7 @@
module XMonad.Hooks.DynamicProperty where module XMonad.Hooks.DynamicProperty where
import XMonad import XMonad
import Data.Monoid import XMonad.Prelude
import Control.Monad (when)
-- | -- |
-- Run a 'ManageHook' when a specific property is changed on a window. Note -- Run a 'ManageHook' when a specific property is changed on a window. Note
@ -36,7 +35,7 @@ import Control.Monad (when)
-- their titles on the fly!): -- their titles on the fly!):
-- --
-- dynamicPropertyChange "WM_NAME" (className =? "Iceweasel" <&&> title =? "whatever" --> doShift "2") -- dynamicPropertyChange "WM_NAME" (className =? "Iceweasel" <&&> title =? "whatever" --> doShift "2")
-- --
-- Note that the fixity of (-->) won't allow it to be mixed with ($), so you -- Note that the fixity of (-->) won't allow it to be mixed with ($), so you
-- can't use the obvious $ shorthand. -- can't use the obvious $ shorthand.
-- --
@ -46,9 +45,9 @@ import Control.Monad (when)
-- other 'ManageHook': -- other 'ManageHook':
-- --
-- > , handleEventHook = dynamicPropertyChange "WM_NAME" myDynHook <+> handleEventHook baseConfig -- > , handleEventHook = dynamicPropertyChange "WM_NAME" myDynHook <+> handleEventHook baseConfig
-- > -- >
-- > {- ... -} -- > {- ... -}
-- > -- >
-- > myDynHook = composeAll [...] -- > myDynHook = composeAll [...]
-- --
dynamicPropertyChange :: String -> ManageHook -> Event -> X All dynamicPropertyChange :: String -> ManageHook -> Event -> X All

View File

@ -33,18 +33,14 @@ module XMonad.Hooks.EwmhDesktops (
import Codec.Binary.UTF8.String (encode) import Codec.Binary.UTF8.String (encode)
import Data.Bits import Data.Bits
import Data.List
import Data.Maybe
import Data.Monoid
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import XMonad import XMonad
import Control.Monad import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.SetWMName import XMonad.Hooks.SetWMName
import qualified XMonad.Util.ExtensibleState as E import qualified XMonad.Util.ExtensibleState as E
import XMonad.Util.XUtils (fi)
import XMonad.Util.WorkspaceCompare import XMonad.Util.WorkspaceCompare
import XMonad.Util.WindowProperties (getProp32) import XMonad.Util.WindowProperties (getProp32)
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS

View File

@ -27,9 +27,8 @@ module XMonad.Hooks.FadeInactive (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Control.Applicative (liftA2)
import Control.Monad
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -49,6 +49,7 @@ module XMonad.Hooks.FadeWindows (-- * Usage
) where ) where
import XMonad.Core import XMonad.Core
import XMonad.Prelude
import XMonad.ManageHook (liftX) import XMonad.ManageHook (liftX)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
@ -56,12 +57,10 @@ import XMonad.Hooks.FadeInactive (setOpacity
,isUnfocused ,isUnfocused
) )
import Control.Monad (forM_)
import Control.Monad.Reader (ask import Control.Monad.Reader (ask
,asks) ,asks)
import Control.Monad.State (gets) import Control.Monad.State (gets)
import qualified Data.Map as M import qualified Data.Map as M
import Data.Monoid
import Graphics.X11.Xlib.Extras (Event(..)) import Graphics.X11.Xlib.Extras (Event(..))

View File

@ -62,14 +62,11 @@ module XMonad.Hooks.Focus
) )
where where
import Data.Maybe import Control.Arrow ((&&&))
import Data.Monoid
import qualified Data.Semigroup as S
import Control.Monad
import Control.Monad.Reader import Control.Monad.Reader
import Control.Arrow hiding ((<+>))
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Hooks.ManageHelpers (currentWs) import XMonad.Hooks.ManageHelpers (currentWs)
@ -385,8 +382,8 @@ instance MonadReader Focus FocusQuery where
local f (FocusQuery mx) = FocusQuery (local f mx) local f (FocusQuery mx) = FocusQuery (local f mx)
instance MonadIO FocusQuery where instance MonadIO FocusQuery where
liftIO mx = FocusQuery (liftIO mx) liftIO mx = FocusQuery (liftIO mx)
instance S.Semigroup a => S.Semigroup (FocusQuery a) where instance Semigroup a => Semigroup (FocusQuery a) where
(<>) = liftM2 (S.<>) (<>) = liftM2 (<>)
instance Monoid a => Monoid (FocusQuery a) where instance Monoid a => Monoid (FocusQuery a) where
mempty = return mempty mempty = return mempty
mappend = (<>) mappend = (<>)
@ -577,4 +574,3 @@ activateOnCurrentWs = manageFocus (liftQuery activated <&&> newOnCur --> switchF
activateOnCurrentKeepFocus :: ManageHook activateOnCurrentKeepFocus :: ManageHook
activateOnCurrentKeepFocus = manageFocus (liftQuery activated <&&> newOnCur --> keepFocus) activateOnCurrentKeepFocus = manageFocus (liftQuery activated <&&> newOnCur --> keepFocus)
<+> activateOnCurrent' <+> activateOnCurrent'

View File

@ -21,10 +21,8 @@ module XMonad.Hooks.InsertPosition (
) where ) where
import XMonad(ManageHook, MonadReader(ask)) import XMonad(ManageHook, MonadReader(ask))
import XMonad.Prelude (Endo (Endo), find, fromMaybe)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Data.Maybe(fromMaybe)
import Data.List(find)
import Data.Monoid(Endo(Endo))
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -29,11 +29,11 @@ module XMonad.Hooks.ManageDebug (debugManageHook
) where ) where
import XMonad import XMonad
import XMonad.Prelude (when)
import XMonad.Hooks.DebugStack import XMonad.Hooks.DebugStack
import XMonad.Util.DebugWindow import XMonad.Util.DebugWindow
import XMonad.Util.EZConfig import XMonad.Util.EZConfig
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad (when)
-- persistent state for manageHook debugging to trigger logHook debugging -- persistent state for manageHook debugging to trigger logHook debugging
data ManageStackDebug = MSD (Bool,Bool) deriving Typeable data ManageStackDebug = MSD (Bool,Bool) deriving Typeable

View File

@ -39,14 +39,11 @@ import Foreign.C.Types (CLong)
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import XMonad.Util.Types import XMonad.Util.Types
import XMonad.Util.WindowProperties (getProp32s) import XMonad.Util.WindowProperties (getProp32s)
import XMonad.Util.XUtils (fi)
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Data.Monoid (All(..)) import XMonad.Prelude (All (..), fi, filterM, foldlM, void, when, (<=<))
import qualified Data.Set as S import qualified Data.Set as S
import qualified Data.Map as M import qualified Data.Map as M
import Control.Monad (when, filterM, void, (<=<))
import Data.Foldable (foldlM)
-- $usage -- $usage
-- To use this module, add the following import to @~\/.xmonad\/xmonad.hs@: -- To use this module, add the following import to @~\/.xmonad\/xmonad.hs@:

View File

@ -59,14 +59,10 @@ module XMonad.Hooks.ManageHelpers (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.WindowProperties (getProp32s) import XMonad.Util.WindowProperties (getProp32s)
import Control.Monad (filterM)
import Data.List ((\\))
import Data.Maybe
import Data.Monoid
import System.Posix (ProcessID) import System.Posix (ProcessID)
-- | Denotes a side of a screen. @S@ stands for South, @NE@ for Northeast -- | Denotes a side of a screen. @S@ stands for South, @NE@ for Northeast

View File

@ -19,11 +19,9 @@ module XMonad.Hooks.Minimize
minimizeEventHook minimizeEventHook
) where ) where
import Data.Monoid
import Control.Monad(when)
import XMonad import XMonad
import XMonad.Actions.Minimize import XMonad.Actions.Minimize
import XMonad.Prelude
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -34,18 +34,14 @@ module XMonad.Hooks.Place ( -- * Usage
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as S import qualified XMonad.StackSet as S
import XMonad.Layout.WindowArranger import XMonad.Layout.WindowArranger
import XMonad.Actions.FloatKeys import XMonad.Actions.FloatKeys
import XMonad.Util.XUtils
import qualified Data.Map as M import qualified Data.Map as M
import Data.Ratio ((%)) import Data.Ratio ((%))
import Data.List (sortBy, minimumBy, partition)
import Data.Maybe (fromMaybe, catMaybes)
import Data.Monoid (Endo(..))
import Control.Monad (guard, join)
import Control.Monad.Trans (lift) import Control.Monad.Trans (lift)
-- $usage -- $usage

View File

@ -34,15 +34,13 @@ module XMonad.Hooks.PositionStoreHooks (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.PositionStore import XMonad.Util.PositionStore
import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageDocks
import XMonad.Layout.Decoration import XMonad.Layout.Decoration
import System.Random(randomRIO) import System.Random(randomRIO)
import Control.Monad(when)
import Data.Maybe
import Data.Monoid
import qualified Data.Set as S import qualified Data.Set as S
-- $usage -- $usage

View File

@ -45,16 +45,13 @@ module XMonad.Hooks.RefocusLast (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (All (..), asum, fromMaybe, when)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Util.Stack (findS, mapZ_) import XMonad.Util.Stack (findS, mapZ_)
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import Data.Maybe (fromMaybe)
import Data.Monoid (All(..))
import Data.Foldable (asum)
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import Control.Monad (when)
-- }}} -- }}}
@ -292,4 +289,3 @@ withRecents :: (Window -> Window -> X ()) -> X ()
withRecents f = withWindowSet $ \ws -> withRecentsIn (W.currentTag ws) () f withRecents f = withWindowSet $ \ws -> withRecentsIn (W.currentTag ws) () f
-- }}} -- }}}

View File

@ -22,7 +22,7 @@ module XMonad.Hooks.RestoreMinimized
, restoreMinimizedEventHook , restoreMinimizedEventHook
) where ) where
import Data.Monoid import XMonad.Prelude
import XMonad import XMonad

View File

@ -30,10 +30,8 @@ module XMonad.Hooks.ScreenCorners
, screenCornerLayoutHook , screenCornerLayoutHook
) where ) where
import Data.Monoid import XMonad.Prelude
import Data.List (find)
import XMonad import XMonad
import XMonad.Util.XUtils (fi)
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import qualified Data.Map as M import qualified Data.Map as M

View File

@ -26,12 +26,10 @@ module XMonad.Hooks.ServerMode
, serverModeEventHookF , serverModeEventHookF
) where ) where
import Control.Monad (when)
import Data.Maybe
import Data.Monoid
import System.IO import System.IO
import XMonad import XMonad
import XMonad.Prelude
import XMonad.Actions.Commands import XMonad.Actions.Commands
-- $usage -- $usage
@ -47,7 +45,7 @@ import XMonad.Actions.Commands
-- in stderr (so that you can read it in @~\/.xsession-errors@). Uses "XMonad.Actions.Commands#defaultCommands" as the default. -- in stderr (so that you can read it in @~\/.xsession-errors@). Uses "XMonad.Actions.Commands#defaultCommands" as the default.
-- --
-- > main = xmonad def { handleEventHook = serverModeEventHook } -- > main = xmonad def { handleEventHook = serverModeEventHook }
-- --
-- > xmonadctl 0 # tells xmonad to output command list -- > xmonadctl 0 # tells xmonad to output command list
-- > xmonadctl 1 # tells xmonad to switch to workspace 1 -- > xmonadctl 1 # tells xmonad to switch to workspace 1
-- --

View File

@ -41,15 +41,11 @@ module XMonad.Hooks.SetWMName (
) )
where where
import Control.Monad (join)
import Data.Char (ord)
import Data.List (nub)
import Data.Maybe (fromJust, listToMaybe, maybeToList)
import Foreign.C.Types (CChar) import Foreign.C.Types (CChar)
import Foreign.Marshal.Alloc (alloca) import Foreign.Marshal.Alloc (alloca)
import XMonad import XMonad
import XMonad.Prelude (fromJust, join, listToMaybe, maybeToList, nub, ord)
-- | sets WM name -- | sets WM name
setWMName :: String -> X () setWMName :: String -> X ()
@ -117,4 +113,3 @@ getSupportWindow = withDisplay $ \dpy -> do
-- | Get WM name. -- | Get WM name.
getWMName :: X String getWMName :: X String
getWMName = getSupportWindow >>= runQuery title getWMName = getSupportWindow >>= runQuery title

View File

@ -53,7 +53,6 @@ module XMonad.Hooks.StatusBar (
) where ) where
import Control.Exception (SomeException, try) import Control.Exception (SomeException, try)
import Control.Monad (void)
import qualified Codec.Binary.UTF8.String as UTF8 (encode) import qualified Codec.Binary.UTF8.String as UTF8 (encode)
import System.Posix.Signals (sigTERM, signalProcessGroup) import System.Posix.Signals (sigTERM, signalProcessGroup)
import System.Posix.Types (ProcessID) import System.Posix.Types (ProcessID)
@ -63,6 +62,7 @@ import qualified Data.Map as M
import Foreign.C (CChar) import Foreign.C (CChar)
import XMonad import XMonad
import XMonad.Prelude (void)
import XMonad.Util.Run import XMonad.Util.Run
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS

View File

@ -1,5 +1,5 @@
{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE PatternGuards #-}
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
-- | -- |
-- Module : XMonad.Hooks.StatusBar.PP -- Module : XMonad.Hooks.StatusBar.PP
@ -46,15 +46,10 @@ module XMonad.Hooks.StatusBar.PP (
) where ) where
import Control.Applicative (liftA2)
import Control.Monad (msum)
import Data.Char (isSpace)
import Data.List (intercalate, isPrefixOf, sortOn, stripPrefix)
import Data.Maybe (catMaybes, fromMaybe, isJust, mapMaybe)
import qualified XMonad.StackSet as S import qualified XMonad.StackSet as S
import XMonad import XMonad
import XMonad.Prelude
import XMonad.Util.NamedWindows import XMonad.Util.NamedWindows
import XMonad.Util.WorkspaceCompare import XMonad.Util.WorkspaceCompare

View File

@ -39,9 +39,9 @@ module XMonad.Hooks.ToggleHook ( -- * Usage
import Prelude hiding (all) import Prelude hiding (all)
import XMonad import XMonad
import XMonad.Prelude (guard, join)
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad (join,guard)
import Control.Arrow (first, second) import Control.Arrow (first, second)
import Data.Map import Data.Map

View File

@ -70,6 +70,7 @@ module XMonad.Hooks.UrgencyHook (
) where ) where
import XMonad import XMonad
import XMonad.Prelude (delete, fromMaybe, listToMaybe, maybeToList, when, (\\))
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.ManageHelpers (windowTag) import XMonad.Hooks.ManageHelpers (windowTag)
@ -79,10 +80,7 @@ import XMonad.Util.NamedWindows (getName)
import XMonad.Util.Timer (TimerId, startTimer, handleTimer) import XMonad.Util.Timer (TimerId, startTimer, handleTimer)
import XMonad.Util.WindowProperties (getProp32) import XMonad.Util.WindowProperties (getProp32)
import Control.Monad (when)
import Data.Bits (testBit) import Data.Bits (testBit)
import Data.List (delete, (\\))
import Data.Maybe (listToMaybe, maybeToList, fromMaybe)
import qualified Data.Set as S import qualified Data.Set as S
import System.IO (hPutStrLn, stderr) import System.IO (hPutStrLn, stderr)
import Foreign.C.Types (CLong) import Foreign.C.Types (CLong)

View File

@ -24,6 +24,7 @@ module XMonad.Hooks.WallpaperSetter (
-- $todo -- $todo
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as S import qualified XMonad.StackSet as S
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
@ -34,13 +35,8 @@ import System.FilePath ((</>))
import System.Random (randomRIO) import System.Random (randomRIO)
import qualified Data.Map as M import qualified Data.Map as M
import Data.List (sortBy)
import Data.Char (isAlphaNum)
import Data.Ord (comparing) import Data.Ord (comparing)
import Control.Monad
import Data.Maybe
-- $usage -- $usage
-- This module requires imagemagick and feh to be installed, as these are utilized -- This module requires imagemagick and feh to be installed, as these are utilized
-- for the required image transformations and the actual setting of the wallpaper. -- for the required image transformations and the actual setting of the wallpaper.

View File

@ -44,14 +44,12 @@ module XMonad.Hooks.WindowSwallowing
) )
where where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Util.WindowProperties import XMonad.Util.WindowProperties
import XMonad.Util.Run ( runProcessWithInput ) import XMonad.Util.Run ( runProcessWithInput )
import Data.Semigroup ( All(..) )
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import Data.List ( isInfixOf )
import Control.Monad ( when )
-- $usage -- $usage
-- You can use this module by including the following in your @~\/.xmonad/xmonad.hs@: -- You can use this module by including the following in your @~\/.xmonad/xmonad.hs@:
@ -237,9 +235,3 @@ instance ExtensionClass SwallowingState where
, stackBeforeWindowClosing = Nothing , stackBeforeWindowClosing = Nothing
, floatingBeforeClosing = mempty , floatingBeforeClosing = mempty
} }
fi :: (Integral a, Num b) => a -> b
fi = fromIntegral

View File

@ -21,11 +21,10 @@ module XMonad.Hooks.WorkspaceByPos (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.XUtils (fi)
import Data.Maybe import Control.Monad.Except (lift, runExceptT, throwError)
import Control.Monad.Error ((<=<),guard,lift,runErrorT,throwError)
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
@ -43,7 +42,7 @@ needsMoving :: Window -> X (Maybe WorkspaceId)
needsMoving w = withDisplay $ \d -> do needsMoving w = withDisplay $ \d -> do
-- only relocate windows with non-zero position -- only relocate windows with non-zero position
wa <- io $ getWindowAttributes d w wa <- io $ getWindowAttributes d w
fmap (const Nothing `either` Just) . runErrorT $ do fmap (const Nothing `either` Just) . runExceptT $ do
guard $ wa_x wa /= 0 || wa_y wa /= 0 guard $ wa_x wa /= 0 || wa_y wa /= 0
ws <- gets windowset ws <- gets windowset
sc <- lift $ fromMaybe (W.current ws) sc <- lift $ fromMaybe (W.current ws)

View File

@ -34,7 +34,7 @@ import Prelude
import XMonad import XMonad
import XMonad.StackSet hiding (delete, filter, new) import XMonad.StackSet hiding (delete, filter, new)
import Data.List (delete, find, foldl', groupBy, nub, sortBy) import XMonad.Prelude (delete, find, foldl', groupBy, nub, sortBy)
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
-- $usage -- $usage

View File

@ -19,12 +19,10 @@ module XMonad.Hooks.XPropManage (
) where ) where
import Control.Exception as E import Control.Exception as E
import Data.Char (chr)
import Data.Monoid (Endo(..))
import Control.Monad.Trans (lift) import Control.Monad.Trans (lift)
import XMonad import XMonad
import XMonad.Prelude (Endo (..), chr)
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -20,7 +20,7 @@ module XMonad.Layout.AutoMaster (
-- $usage -- $usage
autoMaster, AutoMaster autoMaster, AutoMaster
) where ) where
import Control.Monad import XMonad.Prelude
import XMonad import XMonad
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W

View File

@ -26,11 +26,10 @@ module XMonad.Layout.AvoidFloats (
import XMonad import XMonad
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import XMonad.Prelude (fi, maximumBy, maybeToList, sortBy)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Data.List
import Data.Ord import Data.Ord
import Data.Maybe
import qualified Data.Map as M import qualified Data.Map as M
import qualified Data.Set as S import qualified Data.Set as S
@ -116,7 +115,7 @@ instance LayoutModifier AvoidFloats Window where
toRect :: WindowAttributes -> Rectangle toRect :: WindowAttributes -> Rectangle
toRect wa = let b = fi $ wa_border_width wa toRect wa = let b = fi $ wa_border_width wa
in Rectangle (fi $ wa_x wa) (fi $ wa_y wa) (fi $ wa_width wa + 2*b) (fi $ wa_height wa + 2*b) in Rectangle (fi $ wa_x wa) (fi $ wa_y wa) (fi $ wa_width wa + 2*b) (fi $ wa_height wa + 2*b)
bigEnough :: Rectangle -> Bool bigEnough :: Rectangle -> Bool
bigEnough rect = rect_width rect >= fi (minw lm) && rect_height rect >= fi (minh lm) bigEnough rect = rect_width rect >= fi (minw lm) && rect_height rect >= fi (minh lm)
@ -218,9 +217,6 @@ findGaps br rs = let (gaps,end) = foldr findGaps' ([], left br) $ sortBy (flip $
inBounds :: Rectangle -> Bool inBounds :: Rectangle -> Bool
inBounds r = left r < right br && left br < right r inBounds r = left r < right br && left br < right r
fi :: (Integral a, Num b) => a -> b
fi x = fromIntegral x
(?:) :: Maybe a -> [a] -> [a] (?:) :: Maybe a -> [a] -> [a]
Just x ?: xs = x:xs Just x ?: xs = x:xs
_ ?: xs = xs _ ?: xs = xs

View File

@ -34,6 +34,7 @@ module XMonad.Layout.BinarySpacePartition (
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.Stack hiding (Zipper) import XMonad.Util.Stack hiding (Zipper)
import XMonad.Util.Types import XMonad.Util.Types
@ -45,9 +46,6 @@ import XMonad.Util.XUtils
import qualified Data.Map as M import qualified Data.Map as M
import qualified Data.Set as S import qualified Data.Set as S
import Data.List ((\\), elemIndex, foldl')
import Data.Maybe (fromMaybe, isNothing, isJust, mapMaybe, catMaybes)
import Control.Monad
import Data.Ratio ((%)) import Data.Ratio ((%))
-- $usage -- $usage

View File

@ -31,7 +31,7 @@ import XMonad
import XMonad.Layout.Decoration import XMonad.Layout.Decoration
import XMonad.Layout.WindowArranger import XMonad.Layout.WindowArranger
import XMonad.Util.XUtils import XMonad.Util.XUtils
import Control.Monad(when) import XMonad.Prelude(when)
import qualified Data.Map as M import qualified Data.Map as M
-- $usage -- $usage

View File

@ -36,8 +36,8 @@ import XMonad.Layout.LayoutModifier(ModifiedLayout(..),
LayoutModifier(handleMessOrMaybeModifyIt, redoLayout)) LayoutModifier(handleMessOrMaybeModifyIt, redoLayout))
import XMonad(Typeable, LayoutClass, Message, X, fromMessage, import XMonad(Typeable, LayoutClass, Message, X, fromMessage,
broadcastMessage, sendMessage, windows, withFocused, Window) broadcastMessage, sendMessage, windows, withFocused, Window)
import Data.List((\\), union) import XMonad.Prelude (fromMaybe, listToMaybe, maybeToList, union, (\\))
import Data.Maybe(fromMaybe, listToMaybe, maybeToList) import XMonad.Util.Stack (reverseS)
import qualified Data.Map as M import qualified Data.Map as M
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W

View File

@ -20,7 +20,7 @@ module XMonad.Layout.Circle (
Circle (..) Circle (..)
) where -- actually it's an ellipse ) where -- actually it's an ellipse
import Data.List import XMonad.Prelude
import XMonad import XMonad
import XMonad.StackSet (integrate, peek) import XMonad.StackSet (integrate, peek)

View File

@ -22,9 +22,8 @@ module XMonad.Layout.Combo (
CombineTwo CombineTwo
) where ) where
import Data.List ( delete, intersect, (\\) )
import Data.Maybe ( isJust )
import XMonad hiding (focus) import XMonad hiding (focus)
import XMonad.Prelude (delete, intersect, isJust, (\\))
import XMonad.StackSet ( integrate', Workspace (..), Stack(..) ) import XMonad.StackSet ( integrate', Workspace (..), Stack(..) )
import XMonad.Layout.WindowNavigation ( MoveWindowToWindow(..) ) import XMonad.Layout.WindowNavigation ( MoveWindowToWindow(..) )
import qualified XMonad.StackSet as W ( differentiate ) import qualified XMonad.StackSet as W ( differentiate )

View File

@ -24,9 +24,7 @@ module XMonad.Layout.ComboP (
Property(..) Property(..)
) where ) where
import Data.List ( delete, intersect, (\\) ) import XMonad.Prelude
import Data.Maybe ( isJust )
import Control.Monad
import XMonad hiding (focus) import XMonad hiding (focus)
import XMonad.StackSet ( Workspace (..), Stack(..) ) import XMonad.StackSet ( Workspace (..), Stack(..) )
import XMonad.Layout.WindowNavigation import XMonad.Layout.WindowNavigation

View File

@ -19,7 +19,7 @@ module XMonad.Layout.Cross(
import XMonad( Dimension, Rectangle(..), LayoutClass(..), Resize(..), fromMessage ) import XMonad( Dimension, Rectangle(..), LayoutClass(..), Resize(..), fromMessage )
import XMonad.StackSet( focus, up, down ) import XMonad.StackSet( focus, up, down )
import Control.Monad( msum ) import XMonad.Prelude( msum )
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -36,12 +36,10 @@ module XMonad.Layout.Decoration
, DecorationState, OrigWin , DecorationState, OrigWin
) where ) where
import Control.Monad (when)
import Data.Maybe
import Data.List
import Foreign.C.Types(CInt) import Foreign.C.Types(CInt)
import XMonad import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.UrgencyHook import XMonad.Hooks.UrgencyHook
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier

View File

@ -30,7 +30,7 @@ import XMonad.Hooks.ManageDocks
import XMonad.Util.Font import XMonad.Util.Font
import XMonad.Util.PositionStore import XMonad.Util.PositionStore
import Data.Maybe import XMonad.Prelude
import qualified Data.Set as S import qualified Data.Set as S
minimizeButtonOffset :: Int minimizeButtonOffset :: Int

View File

@ -23,7 +23,7 @@ module XMonad.Layout.Dishes (
import XMonad import XMonad
import XMonad.StackSet (integrate) import XMonad.StackSet (integrate)
import Control.Monad (ap) import XMonad.Prelude (ap)
-- $usage -- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

@ -27,7 +27,7 @@ module XMonad.Layout.Dwindle ( -- * Usage
, Chirality(..) , Chirality(..)
) where ) where
import Data.List ( unfoldr ) import XMonad.Prelude ( unfoldr )
import XMonad import XMonad
import XMonad.StackSet ( integrate, Stack ) import XMonad.StackSet ( integrate, Stack )
import XMonad.Util.Types ( Direction2D(..) ) import XMonad.Util.Types ( Direction2D(..) )

View File

@ -22,8 +22,6 @@ module XMonad.Layout.FixedColumn (
FixedColumn(..) FixedColumn(..)
) where ) where
import Control.Monad (msum)
import Data.Maybe (fromMaybe)
import Graphics.X11.Xlib (Window, rect_width) import Graphics.X11.Xlib (Window, rect_width)
import Graphics.X11.Xlib.Extras ( getWMNormalHints import Graphics.X11.Xlib.Extras ( getWMNormalHints
, getWindowAttributes , getWindowAttributes
@ -31,6 +29,7 @@ import Graphics.X11.Xlib.Extras ( getWMNormalHints
, sh_resize_inc , sh_resize_inc
, wa_border_width) , wa_border_width)
import XMonad.Prelude (fromMaybe, msum)
import XMonad.Core (X, LayoutClass(..), fromMessage, io, withDisplay) import XMonad.Core (X, LayoutClass(..), fromMessage, io, withDisplay)
import XMonad.Layout (Resize(..), IncMasterN(..), tile) import XMonad.Layout (Resize(..), IncMasterN(..), tile)
import XMonad.StackSet as W import XMonad.StackSet as W

View File

@ -32,6 +32,7 @@ module XMonad.Layout.Fullscreen
) where ) where
import XMonad import XMonad
import XMonad.Prelude
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import XMonad.Layout.NoBorders (SmartBorder, smartBorders) import XMonad.Layout.NoBorders (SmartBorder, smartBorders)
import XMonad.Hooks.EwmhDesktops (fullscreenStartup) import XMonad.Hooks.EwmhDesktops (fullscreenStartup)
@ -40,11 +41,7 @@ import XMonad.Util.WindowProperties
import qualified XMonad.Util.Rectangle as R import qualified XMonad.Util.Rectangle as R
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import Data.List
import Data.Maybe
import Data.Monoid
import qualified Data.Map as M import qualified Data.Map as M
import Control.Monad
import Control.Arrow (second) import Control.Arrow (second)
-- $usage -- $usage

View File

@ -35,14 +35,12 @@ module XMonad.Layout.Gaps (
weakModifyGaps, modifyGap, setGaps, setGap weakModifyGaps, modifyGap, setGaps, setGap
) where ) where
import XMonad.Prelude (delete, fi)
import XMonad.Core import XMonad.Core
import Graphics.X11 (Rectangle(..)) import Graphics.X11 (Rectangle(..))
import XMonad.Layout.LayoutModifier import XMonad.Layout.LayoutModifier
import XMonad.Util.Types (Direction2D(..)) import XMonad.Util.Types (Direction2D(..))
import XMonad.Util.XUtils (fi)
import Data.List (delete)
-- $usage -- $usage
-- You can use this module by importing it into your @~\/.xmonad\/xmonad.hs@ file: -- You can use this module by importing it into your @~\/.xmonad\/xmonad.hs@ file:

View File

@ -27,7 +27,7 @@ module XMonad.Layout.GridVariants ( -- * Usage
, Orientation(..) , Orientation(..)
) where ) where
import Control.Monad import XMonad.Prelude
import XMonad import XMonad
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W

View File

@ -54,15 +54,12 @@ module XMonad.Layout.Groups ( -- * Usage
) where ) where
import XMonad import XMonad
import XMonad.Prelude hiding (group)
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Util.Stack import XMonad.Util.Stack
import Data.Maybe (isJust, isNothing, fromMaybe, catMaybes, fromJust)
import Data.List ((\\))
import Control.Arrow ((>>>)) import Control.Arrow ((>>>))
import Control.Applicative ((<|>))
import Control.Monad (forM,void)
-- $usage -- $usage
-- This module provides a layout combinator that allows you -- This module provides a layout combinator that allows you

View File

@ -47,7 +47,7 @@ import qualified XMonad.Layout.Groups as G
import XMonad.Actions.MessageFeedback (sendMessageB) import XMonad.Actions.MessageFeedback (sendMessageB)
import Control.Monad (unless) import XMonad.Prelude (unless)
import qualified Data.Map as M import qualified Data.Map as M
-- $usage -- $usage

View File

@ -24,10 +24,10 @@ module XMonad.Layout.HintedGrid (
import Prelude hiding ((.)) import Prelude hiding ((.))
import XMonad import XMonad
import XMonad.Prelude (replicateM, sortBy)
import XMonad.StackSet import XMonad.StackSet
import Control.Monad.State import Control.Monad.State (runState)
import Data.List
import Data.Ord import Data.Ord
infixr 9 . infixr 9 .

Some files were not shown because too many files have changed in this diff Show More