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 System.Exit
import Data.Maybe
import XMonad.Prelude
-- $usage
--

View File

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

View File

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

View File

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

View File

@ -43,14 +43,10 @@ module XMonad.Actions.DynamicProjects
) 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 qualified Data.Map.Strict as Map
import Data.Maybe (fromMaybe, isNothing)
import System.Directory (setCurrentDirectory, getHomeDirectory, makeAbsolute)
import XMonad.Prelude
import XMonad
import XMonad.Actions.DynamicWorkspaces
import XMonad.Prompt

View File

@ -36,11 +36,11 @@ module XMonad.Actions.DynamicWorkspaceGroups
, WSGPrompt
) where
import Data.List (find)
import Control.Arrow ((&&&))
import qualified Data.Map as M
import XMonad
import XMonad.Prelude (find)
import qualified XMonad.StackSet as W
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.Set as S
import Data.Maybe (fromJust, fromMaybe)
import XMonad.Prelude (fromJust, fromMaybe)
import Data.Ord (comparing)
-- $usage

View File

@ -35,14 +35,12 @@ module XMonad.Actions.DynamicWorkspaces (
WorkspaceIndex
) where
import XMonad.Prelude (find, isNothing, when)
import XMonad hiding (workspaces)
import XMonad.StackSet hiding (filter, modify, delete)
import XMonad.Prompt.Workspace ( Wor(Wor), workspacePrompt )
import XMonad.Prompt ( XPConfig, mkXPrompt )
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 XMonad.Util.ExtensibleState as XS

View File

@ -38,18 +38,13 @@ module XMonad.Actions.EasyMotion ( -- * Usage
) where
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.XUtils (fi, createNewWindow, paintAndWrite, deleteWindow, showWindow)
import Control.Monad (replicateM)
import XMonad.Util.XUtils (createNewWindow, paintAndWrite, deleteWindow, showWindow)
import Control.Arrow ((&&&))
import Data.Functor (($>))
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)
import qualified Data.Map.Strict as M (Map, elems, map, mapWithKey)
-- $usage
--
@ -275,9 +270,9 @@ handleSelectWindow c = do
$ M.mapWithKey (\sid ks -> buildOverlays ks <$> sortedOverlayWindows sid) m
where
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 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 sid = sortOverlayWindows <$> buildOverlayWindows dpy th (visibleWindowsOnScreen sid)
status <- io $ grabKeyboard dpy rw True grabModeAsync grabModeAsync currentTime
@ -331,7 +326,7 @@ selectWindow conf =
where
-- make sure the key lists don't contain: backspace, our cancel key, or duplicates
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 cKeys =
case cKeys of
@ -381,12 +376,12 @@ handleKeyboard dpy drawFn cancel selected deselected = do
case x of
Backspace -> redraw >> handleKeyboard dpy drawFn cancel selected deselected
_ -> return x
isNextOverlayKey keySym = isJust (L.find ((== Just keySym) . listToMaybe .chord) selected)
isNextOverlayKey keySym = isJust (find ((== Just keySym) . listToMaybe .chord) selected)
handleNextOverlayKey keySym =
case fg of
[x] -> return $ Selected x
_ -> handleKeyboard dpy drawFn cancel (trim fg) (clear bg) >>= retryBackspace
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 })
clear = map (\o -> o { chord = [] })

View File

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

View File

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

View File

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

View File

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

View File

@ -35,15 +35,17 @@ module XMonad.Actions.GroupNavigation ( -- * Usage
import Control.Monad.Reader
import Control.Monad.State
import Data.Foldable as Fold
import Data.Map as Map
import Data.Sequence as Seq
import Data.Set as Set
import Data.Map ((!))
import qualified Data.Map as Map
import Data.Sequence (Seq, ViewL (EmptyL, (:<)), viewl, (<|), (><), (|>))
import qualified Data.Sequence as Seq
import qualified Data.Set as Set
import Graphics.X11.Types
import Prelude hiding (concatMap, drop, elem, filter, null, reverse)
import XMonad.Core
import XMonad.ManageHook
import XMonad.Operations (windows, withFocused)
import XMonad.Prelude (elem, foldl')
import qualified XMonad.StackSet as SS
import qualified XMonad.Util.ExtensibleState as XS
@ -132,7 +134,7 @@ orderedWindowList dir = withWindowSet $ \ss -> do
wsids <- asks (Seq.fromList . workspaces . config)
let wspcs = orderedWorkspaceList ss wsids
wins = dirfun dir
$ Fold.foldl' (><) Seq.empty
$ foldl' (><) Seq.empty
$ fmap (Seq.fromList . SS.integrate' . SS.stack) wspcs
cur = SS.peek ss
return $ maybe wins (rotfun wins) cur
@ -146,7 +148,7 @@ orderedWorkspaceList :: WindowSet -> Seq String -> Seq WindowSpace
orderedWorkspaceList ss wsids = rotateTo isCurWS wspcs'
where
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
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
let newcur = SS.peek 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)
where
ins x xs = maybe xs (<| xs) x
del x xs = maybe xs (\x' -> flt (/= 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
del x xs = maybe xs (\x' -> Seq.filter (/= x') xs) x
--- Some sequence helpers --------------------------------------------
@ -205,7 +192,7 @@ rotate xs = rotate' (viewl xs)
-- Rotates the sequence until an element matching the given condition
-- is at the beginning of the sequence.
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 ---------------------------------------------------
@ -239,4 +226,3 @@ isOnAnyVisibleWS = do
visibleWs = w `elem` allVisible
unfocused = maybe True (w /=) $ SS.peek ws
return $ visibleWs && unfocused

View File

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

View File

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

View File

@ -51,13 +51,11 @@ module XMonad.Actions.MessageFeedback
import XMonad ( Window )
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.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.Applicative ( liftA2 )
-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:

View File

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

View File

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

View File

@ -57,11 +57,10 @@ module XMonad.Actions.Navigation2D ( -- * Usage
, Direction2D(..)
) where
import Control.Applicative
import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe
import Data.Ord (comparing)
import XMonad.Prelude
import XMonad hiding (Screen)
import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS
@ -890,10 +889,6 @@ swap win winset = W.focusWindow cur
centerOf :: Rectangle -> (Position, Position)
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
thisLayer, otherLayer :: a -> a -> a
thisLayer = curry fst

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -19,11 +19,11 @@ module XMonad.Actions.TiledWindowDragging
dragWindow
)
where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Layout.DraggingVisualizer
import Control.Monad
-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
@ -32,7 +32,7 @@ import Control.Monad
-- > import XMonad.Layout.DraggingVisualizer
--
-- then edit your 'layoutHook' by adding the draggingVisualizer to your layout:
--
--
-- > myLayout = draggingVisualizer $ layoutHook def
--
-- Then add a mouse binding for 'dragWindow':
@ -54,10 +54,10 @@ dragWindow window = whenX (isClient window) $ do
mouseDrag
(\posX posY ->
let rect = Rectangle (fInt (fInt winX + (posX - fInt offsetX)))
(fInt (fInt winY + (posY - fInt offsetY)))
(fInt winWidth)
(fInt winHeight)
let rect = Rectangle (fi (fi winX + (posX - fi offsetX)))
(fi (fi winY + (posY - fi offsetY)))
(fi winWidth)
(fi winHeight)
in sendMessage $ DraggingWindow window rect
)
(sendMessage DraggingStopped >> performWindowSwitching window)
@ -67,13 +67,13 @@ dragWindow window = whenX (isClient window) $ do
getPointerOffset :: Window -> X (Int, Int)
getPointerOffset win = do
(_, _, _, 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
getWindowPlacement :: Window -> X (Int, Int, Int, Int)
getWindowPlacement window = do
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 ()
@ -91,11 +91,3 @@ performWindowSwitching win = do
switchEntries a b x | x == a = b
| x == b = a
| 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
import XMonad
import XMonad.Prelude
import qualified Data.Map.Strict as M
import qualified XMonad.Hooks.DynamicLog as DL
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 XMonad.Prompt (XPConfig)

View File

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

View File

@ -20,9 +20,8 @@ module XMonad.Actions.UpdateFocus (
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import Control.Monad (when)
import Data.Monoid
-- $usage
-- 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
import XMonad
import XMonad.Util.XUtils (fi)
import Control.Arrow
import Control.Monad
import XMonad.Prelude
import XMonad.StackSet (member, peek, screenDetail, current)
import Data.Maybe
import Control.Exception
import Control.Exception (SomeException, try)
import Control.Arrow ((&&&), (***))
-- $usage
-- 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 (lower, upper) x = if x < lower then lower
else if x > upper then upper else x

View File

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

View File

@ -36,10 +36,8 @@ module XMonad.Actions.WindowGo (
module XMonad.ManageHook
) where
import Control.Monad
import Data.Char (toLower)
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 Graphics.X11 (Window)
import XMonad.ManageHook

View File

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

View File

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

View File

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

View File

@ -44,6 +44,7 @@ module XMonad.Actions.WorkspaceNames (
) where
import XMonad
import XMonad.Prelude (fromMaybe, isInfixOf, (<&>), (>=>))
import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS
@ -54,11 +55,7 @@ import XMonad.Prompt (mkXPrompt, XPConfig)
import XMonad.Prompt.Workspace (Wor(Wor))
import XMonad.Util.WorkspaceCompare (getSortByIndex)
import Control.Monad ((>=>))
import Data.Functor ((<&>))
import qualified Data.Map as M
import Data.Maybe (fromMaybe)
import Data.List (isInfixOf)
-- $usage
-- 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)
where toWsId pairs name = fromMaybe "" (lookup name pairs)
contains completions input =
return $ filter (Data.List.isInfixOf input) completions
return $ filter (isInfixOf input) completions
-- | Workspace list transformation for
-- '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 System.Exit
import Control.Monad(when)
import XMonad.Prelude(when)
-- $usage
-- To use this module, start with the following @~\/.xmonad\/xmonad.hs@:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -24,6 +24,7 @@ module XMonad.Hooks.DebugStack (debugStack
) where
import XMonad.Core
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Util.DebugWindow
@ -31,10 +32,7 @@ import XMonad.Util.DebugWindow
import Graphics.X11.Types (Window)
import Graphics.X11.Xlib.Extras (Event)
import Control.Monad (foldM)
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
-- @stderr@, which for most installations goes to @~/.xsession-errors@.

View File

@ -29,15 +29,9 @@ module XMonad.Hooks.DynamicBars (
import Prelude
import Control.Monad
import Control.Monad.Trans (lift)
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.Xlib
import Graphics.X11.Xlib.Extras
@ -46,6 +40,7 @@ import Graphics.X11.Xrandr
import System.IO
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Hooks.DynamicLog
import qualified XMonad.Util.ExtensibleState as XS

View File

@ -23,12 +23,9 @@ module XMonad.Hooks.DynamicHooks (
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.Util.ExtensibleState as XS
import Data.List
import Data.Maybe (listToMaybe)
import Data.Monoid
-- $usage
-- 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 XMonad.Hooks.DynamicLog
import Data.Functor ((<&>))
import Data.Traversable (for)
import Control.Monad ((<=<), (>=>))
import XMonad.Prelude (for, (<&>), (<=<), (>=>))
-- $usage
-- Dynamically augment Workspace's 'WorkspaceId' as shown on a status bar

View File

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

View File

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

View File

@ -27,9 +27,8 @@ module XMonad.Hooks.FadeInactive (
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import Control.Applicative (liftA2)
import Control.Monad
-- $usage
-- 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
import XMonad.Core
import XMonad.Prelude
import XMonad.ManageHook (liftX)
import qualified XMonad.StackSet as W
@ -56,12 +57,10 @@ import XMonad.Hooks.FadeInactive (setOpacity
,isUnfocused
)
import Control.Monad (forM_)
import Control.Monad.Reader (ask
,asks)
import Control.Monad.State (gets)
import qualified Data.Map as M
import Data.Monoid
import Graphics.X11.Xlib.Extras (Event(..))

View File

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

View File

@ -21,10 +21,8 @@ module XMonad.Hooks.InsertPosition (
) where
import XMonad(ManageHook, MonadReader(ask))
import XMonad.Prelude (Endo (Endo), find, fromMaybe)
import qualified XMonad.StackSet as W
import Data.Maybe(fromMaybe)
import Data.List(find)
import Data.Monoid(Endo(Endo))
-- $usage
-- 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
import XMonad
import XMonad.Prelude (when)
import XMonad.Hooks.DebugStack
import XMonad.Util.DebugWindow
import XMonad.Util.EZConfig
import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad (when)
-- persistent state for manageHook debugging to trigger logHook debugging
data ManageStackDebug = MSD (Bool,Bool) deriving Typeable

View File

@ -39,14 +39,11 @@ import Foreign.C.Types (CLong)
import XMonad.Layout.LayoutModifier
import XMonad.Util.Types
import XMonad.Util.WindowProperties (getProp32s)
import XMonad.Util.XUtils (fi)
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.Map as M
import Control.Monad (when, filterM, void, (<=<))
import Data.Foldable (foldlM)
-- $usage
-- To use this module, add the following import to @~\/.xmonad\/xmonad.hs@:

View File

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

View File

@ -19,11 +19,9 @@ module XMonad.Hooks.Minimize
minimizeEventHook
) where
import Data.Monoid
import Control.Monad(when)
import XMonad
import XMonad.Actions.Minimize
import XMonad.Prelude
-- $usage
-- 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.Prelude
import qualified XMonad.StackSet as S
import XMonad.Layout.WindowArranger
import XMonad.Actions.FloatKeys
import XMonad.Util.XUtils
import qualified Data.Map as M
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)
-- $usage

View File

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

View File

@ -45,16 +45,13 @@ module XMonad.Hooks.RefocusLast (
) where
import XMonad
import XMonad.Prelude (All (..), asum, fromMaybe, when)
import qualified XMonad.StackSet as W
import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Util.Stack (findS, mapZ_)
import XMonad.Layout.LayoutModifier
import Data.Maybe (fromMaybe)
import Data.Monoid (All(..))
import Data.Foldable (asum)
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
-- }}}

View File

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

View File

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

View File

@ -26,12 +26,10 @@ module XMonad.Hooks.ServerMode
, serverModeEventHookF
) where
import Control.Monad (when)
import Data.Maybe
import Data.Monoid
import System.IO
import XMonad
import XMonad.Prelude
import XMonad.Actions.Commands
-- $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.
--
-- > main = xmonad def { handleEventHook = serverModeEventHook }
--
--
-- > xmonadctl 0 # tells xmonad to output command list
-- > xmonadctl 1 # tells xmonad to switch to workspace 1
--

View File

@ -41,15 +41,11 @@ module XMonad.Hooks.SetWMName (
)
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.Marshal.Alloc (alloca)
import XMonad
import XMonad.Prelude (fromJust, join, listToMaybe, maybeToList, nub, ord)
-- | sets WM name
setWMName :: String -> X ()
@ -117,4 +113,3 @@ getSupportWindow = withDisplay $ \dpy -> do
-- | Get WM name.
getWMName :: X String
getWMName = getSupportWindow >>= runQuery title

View File

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

View File

@ -1,5 +1,5 @@
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE PatternGuards #-}
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Hooks.StatusBar.PP
@ -46,15 +46,10 @@ module XMonad.Hooks.StatusBar.PP (
) 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 XMonad
import XMonad.Prelude
import XMonad.Util.NamedWindows
import XMonad.Util.WorkspaceCompare

View File

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

View File

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

View File

@ -24,6 +24,7 @@ module XMonad.Hooks.WallpaperSetter (
-- $todo
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as S
import qualified XMonad.Util.ExtensibleState as XS
@ -34,13 +35,8 @@ import System.FilePath ((</>))
import System.Random (randomRIO)
import qualified Data.Map as M
import Data.List (sortBy)
import Data.Char (isAlphaNum)
import Data.Ord (comparing)
import Control.Monad
import Data.Maybe
-- $usage
-- 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.

View File

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

View File

@ -21,11 +21,10 @@ module XMonad.Hooks.WorkspaceByPos (
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Util.XUtils (fi)
import Data.Maybe
import Control.Monad.Error ((<=<),guard,lift,runErrorT,throwError)
import Control.Monad.Except (lift, runExceptT, throwError)
-- $usage
-- 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
-- only relocate windows with non-zero position
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
ws <- gets windowset
sc <- lift $ fromMaybe (W.current ws)

View File

@ -34,7 +34,7 @@ import Prelude
import XMonad
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
-- $usage

View File

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

View File

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

View File

@ -26,11 +26,10 @@ module XMonad.Layout.AvoidFloats (
import XMonad
import XMonad.Layout.LayoutModifier
import XMonad.Prelude (fi, maximumBy, maybeToList, sortBy)
import qualified XMonad.StackSet as W
import Data.List
import Data.Ord
import Data.Maybe
import qualified Data.Map as M
import qualified Data.Set as S
@ -116,7 +115,7 @@ instance LayoutModifier AvoidFloats Window where
toRect :: WindowAttributes -> Rectangle
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)
bigEnough :: Rectangle -> Bool
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 r = left r < right br && left br < right r
fi :: (Integral a, Num b) => a -> b
fi x = fromIntegral x
(?:) :: Maybe a -> [a] -> [a]
Just x ?: xs = x:xs
_ ?: xs = xs

View File

@ -34,6 +34,7 @@ module XMonad.Layout.BinarySpacePartition (
) where
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Util.Stack hiding (Zipper)
import XMonad.Util.Types
@ -45,9 +46,6 @@ import XMonad.Util.XUtils
import qualified Data.Map as M
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 ((%))
-- $usage

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -19,7 +19,7 @@ module XMonad.Layout.Cross(
import XMonad( Dimension, Rectangle(..), LayoutClass(..), Resize(..), fromMessage )
import XMonad.StackSet( focus, up, down )
import Control.Monad( msum )
import XMonad.Prelude( msum )
-- $usage
-- 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
) where
import Control.Monad (when)
import Data.Maybe
import Data.List
import Foreign.C.Types(CInt)
import XMonad
import XMonad.Prelude
import qualified XMonad.StackSet as W
import XMonad.Hooks.UrgencyHook
import XMonad.Layout.LayoutModifier

View File

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

View File

@ -23,7 +23,7 @@ module XMonad.Layout.Dishes (
import XMonad
import XMonad.StackSet (integrate)
import Control.Monad (ap)
import XMonad.Prelude (ap)
-- $usage
-- 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(..)
) where
import Data.List ( unfoldr )
import XMonad.Prelude ( unfoldr )
import XMonad
import XMonad.StackSet ( integrate, Stack )
import XMonad.Util.Types ( Direction2D(..) )

View File

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

View File

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

View File

@ -35,14 +35,12 @@ module XMonad.Layout.Gaps (
weakModifyGaps, modifyGap, setGaps, setGap
) where
import XMonad.Prelude (delete, fi)
import XMonad.Core
import Graphics.X11 (Rectangle(..))
import XMonad.Layout.LayoutModifier
import XMonad.Util.Types (Direction2D(..))
import XMonad.Util.XUtils (fi)
import Data.List (delete)
-- $usage
-- 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(..)
) where
import Control.Monad
import XMonad.Prelude
import XMonad
import qualified XMonad.StackSet as W

View File

@ -54,15 +54,12 @@ module XMonad.Layout.Groups ( -- * Usage
) where
import XMonad
import XMonad.Prelude hiding (group)
import qualified XMonad.StackSet as W
import XMonad.Util.Stack
import Data.Maybe (isJust, isNothing, fromMaybe, catMaybes, fromJust)
import Data.List ((\\))
import Control.Arrow ((>>>))
import Control.Applicative ((<|>))
import Control.Monad (forM,void)
-- $usage
-- 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 Control.Monad (unless)
import XMonad.Prelude (unless)
import qualified Data.Map as M
-- $usage

View File

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

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