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

@@ -21,9 +21,7 @@ module XMonad.Util.ClickableWorkspaces (
clickableWrap,
) where
import Control.Monad ((>=>))
import Data.Functor ((<&>))
import XMonad.Prelude ((<&>), (>=>))
import XMonad
import XMonad.Hooks.StatusBar.PP (xmobarAction, PP(..))
import XMonad.Util.WorkspaceCompare (getSortByIndex)

View File

@@ -8,7 +8,7 @@
-- Stability : unstable
-- Portability : not portable
--
-- Module to dump window information for diagnostic/debugging purposes. See
-- Module to dump window information for diagnostic/debugging purposes. See
-- "XMonad.Hooks.DebugEvents" and "XMonad.Hooks.DebugStack" for practical uses.
--
-----------------------------------------------------------------------------
@@ -18,13 +18,10 @@ module XMonad.Util.DebugWindow (debugWindow) where
import Prelude
import XMonad
import XMonad.Prelude
import Codec.Binary.UTF8.String (decodeString)
import Control.Exception as E
import Control.Monad (when)
import Data.List (unfoldr
,intercalate
)
import Foreign
import Foreign.C.String
import Numeric (showHex)
@@ -96,7 +93,7 @@ debugWindow w = do
,show x
,',':show y
,if null c then "" else ' ':c
,if null cmd then "" else ' ':cmd
,if null cmd then "" else ' ':cmd
,rb
]

View File

@@ -42,7 +42,7 @@ module XMonad.Util.Dzen (
(>=>),
) where
import Control.Monad
import XMonad.Prelude
import XMonad
import XMonad.StackSet
import XMonad.Util.Run (runProcessWithInputAndWait, seconds)

View File

@@ -38,14 +38,13 @@ module XMonad.Util.EZConfig (
import XMonad
import XMonad.Actions.Submap
import XMonad.Prelude hiding (many)
import XMonad.Util.NamedActions
import qualified Data.Map as M
import Data.List (foldl', sortBy, groupBy, nub)
import Data.Ord (comparing)
import Data.Maybe
import Control.Arrow (first, (&&&))
import qualified Data.Map as M
import Data.Ord (comparing)
import Text.ParserCombinators.ReadP
@@ -382,9 +381,6 @@ mkSubmaps' subm binds = map combine gathered
subm . mkSubmaps' subm $ map (first tail) ks)
fstKey = (==) `on` (head . fst)
on :: (a -> a -> b) -> (c -> a) -> c -> c -> b
op `on` f = \x y -> f x `op` f y
-- | Given a configuration record and a list of (key sequence
-- description, action) pairs, parse the key sequences into lists of
-- @(KeyMask,KeySym)@ pairs. Key sequences which fail to parse will

View File

@@ -36,9 +36,7 @@ module XMonad.Util.ExclusiveScratchpads (
customFloating
) where
import Control.Applicative (liftA2)
import Control.Monad ((<=<),filterM)
import Data.Monoid (appEndo)
import XMonad.Prelude (appEndo, filterM, liftA2, (<=<))
import XMonad
import XMonad.Actions.Minimize
import XMonad.Actions.TagWindows (addTag,delTag)

View File

@@ -31,7 +31,7 @@ import qualified Data.Map as M
import XMonad.Core
import XMonad.Util.PureX
import qualified Control.Monad.State as State
import Data.Maybe (fromMaybe)
import XMonad.Prelude (fromMaybe)
-- ---------------------------------------------------------------------
-- $usage

View File

@@ -34,13 +34,12 @@ module XMonad.Util.Font
) where
import XMonad
import XMonad.Prelude
import Foreign
import Control.Exception as E
import Data.Maybe
import Text.Printf (printf)
#ifdef XFT
import Data.List
import Graphics.X11.Xft
import Graphics.X11.Xrender
#endif
@@ -204,7 +203,3 @@ printStringXMF dpy drw fs@(Xft font) gc fc bc x y s = do
\draw -> withXftColorName dpy visual colormap fc $
\color -> xftDrawString draw color font x y s
#endif
-- | Short-hand for 'fromIntegral'
fi :: (Integral a, Num b) => a -> b
fi = fromIntegral

View File

@@ -37,8 +37,7 @@ module XMonad.Util.Hacks (
import XMonad
import Data.Monoid (All(All))
import Control.Monad (when, filterM)
import XMonad.Prelude (All (All), filterM, when)
import System.Posix.Env (putEnv)

View File

@@ -55,8 +55,7 @@ import XMonad.Util.Font (Align (..))
import XMonad.Util.NamedWindows (getName)
import Control.Exception as E
import Data.List (find, isPrefixOf, isSuffixOf)
import Data.Maybe (fromMaybe)
import XMonad.Prelude (find, fromMaybe, isPrefixOf, isSuffixOf)
import Data.Time (defaultTimeLocale, formatTime, getCurrentTime)
import System.Directory (getDirectoryContents)
import System.IO (hGetLine)

View File

@@ -28,9 +28,7 @@ import Graphics.X11.Xlib.Extras (Event(..))
import XMonad.Util.Loggers (Logger)
import XMonad.Util.NamedScratchpad (NamedScratchpad(..))
import qualified XMonad.Util.ExtensibleState as XS
import Data.Monoid (All(..))
import Data.Char (chr)
import Control.Monad (forM, foldM)
import XMonad.Prelude (All (..), chr, foldM, forM)
import qualified Data.IntMap as M
import qualified XMonad.StackSet as W (allWindows)

View File

@@ -46,11 +46,11 @@ module XMonad.Util.NamedActions (
import XMonad.Actions.Submap(submap)
import XMonad.Prelude (groupBy)
import XMonad
import System.Posix.Process(executeFile)
import Control.Arrow(Arrow((&&&), second, (***)))
import Data.Bits(Bits((.&.), complement))
import Data.List (groupBy)
import System.Exit(ExitCode(ExitSuccess), exitWith)
import qualified Data.Map as M

View File

@@ -32,6 +32,7 @@ module XMonad.Util.NamedScratchpad (
) where
import XMonad
import XMonad.Prelude (filterM, listToMaybe, unless)
import XMonad.Hooks.ManageHelpers (doRectFloat)
import XMonad.Actions.DynamicWorkspaces (addHiddenWorkspace)
import XMonad.Hooks.DynamicLog (PP, ppSort)
@@ -39,9 +40,6 @@ import XMonad.Actions.SpawnOn (spawnHere)
import qualified Data.List.NonEmpty as NE
import Control.Monad (filterM, unless)
import Data.Maybe (listToMaybe)
import qualified XMonad.StackSet as W

View File

@@ -24,7 +24,7 @@ module XMonad.Util.NamedWindows (
) where
import Control.Exception as E
import Data.Maybe ( fromMaybe, listToMaybe )
import XMonad.Prelude ( fromMaybe, listToMaybe )
import qualified XMonad.StackSet as W ( peek )

View File

@@ -4,6 +4,7 @@ module XMonad.Util.NoTaskbar (-- * Usage
,markNoTaskbar) where
import XMonad.Core
import XMonad.Prelude (fi)
import XMonad.ManageHook
import Graphics.X11.Xlib (Window)
import Graphics.X11.Xlib.Atom (aTOM)
@@ -27,7 +28,3 @@ markNoTaskbar w = withDisplay $ \d -> do
ntb <- getAtom "_NET_WM_STATE_SKIP_TASKBAR"
npg <- getAtom "_NET_WM_STATE_SKIP_PAGER"
io $ changeProperty32 d w ws aTOM propModePrepend [fi ntb,fi npg]
-- sigh
fi :: (Integral i, Num n) => i -> n
fi = fromIntegral

View File

@@ -27,8 +27,7 @@ import Graphics.X11
import Graphics.X11.Xlib.Extras (none, setEventType, setKeyEvent)
import Control.Monad.Reader (asks)
import XMonad.Operations (withFocused)
import Data.Char (isUpper)
import Data.Maybe (listToMaybe)
import XMonad.Prelude (isUpper, listToMaybe)
import XMonad.Util.XSelection (getSelection)
import XMonad.Util.EZConfig (parseKey)
import Text.ParserCombinators.ReadP (readP_to_S)

View File

@@ -52,6 +52,7 @@ module XMonad.Util.PureX (
-- xmonad
import XMonad
import XMonad.Prelude (Any (..), liftA2)
import qualified XMonad.StackSet as W
import qualified XMonad.Actions.FocusNth
@@ -59,10 +60,6 @@ import qualified XMonad.Actions.FocusNth
import Control.Monad.State
import Control.Monad.Reader
-- base
import Data.Semigroup (Any(..))
import Control.Applicative (liftA2)
-- }}}
-- --< Usage >-- {{{
@@ -291,4 +288,3 @@ focusNth :: XLike m => Int -> m Any
focusNth i = focusWith (W.modify' (XMonad.Actions.FocusNth.focusNth' i))
-- }}}

View File

@@ -38,8 +38,7 @@ module XMonad.Util.RemoteWindows
import XMonad
import XMonad.Util.WindowProperties
import Data.Maybe
import Control.Monad
import XMonad.Prelude
import System.Posix.Env
-- $usage

View File

@@ -28,8 +28,7 @@ module XMonad.Util.Replace
) where
import XMonad
import Data.Function
import Control.Monad
import XMonad.Prelude
-- $usage
-- You must run the 'replace' action before starting xmonad proper, this

View File

@@ -40,7 +40,7 @@ import Control.Concurrent (threadDelay)
import System.IO
import System.Process (runInteractiveProcess)
import XMonad
import Control.Monad
import XMonad.Prelude
-- $usage
-- For an example usage of 'runInTerm' see "XMonad.Prompt.Ssh"

View File

@@ -22,7 +22,7 @@ module XMonad.Util.SessionStart
)
where
import Control.Monad (when)
import XMonad.Prelude (when)
import XMonad
import qualified XMonad.Util.ExtensibleState as XS

View File

@@ -25,7 +25,7 @@ import XMonad
import XMonad.Util.Run
import System.IO
import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad
import XMonad.Prelude
import qualified Data.Map as Map
-- $usage

View File

@@ -21,7 +21,7 @@ import XMonad
import XMonad.Actions.SpawnOn
import Data.Set as Set
import qualified XMonad.Util.ExtensibleState as XS
import Control.Monad
import XMonad.Prelude
data SpawnOnce = SpawnOnce { unspawnOnce :: (Set String) }
deriving (Read, Show, Typeable)

View File

@@ -80,10 +80,7 @@ module XMonad.Util.Stack ( -- * Usage
) where
import qualified XMonad.StackSet as W
import Control.Applicative ((<|>))
import Control.Monad (guard)
import Data.List (sortBy)
import XMonad.Prelude (guard, sortBy, (!?), (<|>))
type Zipper a = Maybe (W.Stack a)
@@ -328,9 +325,8 @@ elemZ a as = foldlZ_ step False as
-- | Safe version of '!!'
getI :: Int -> [a] -> Maybe a
getI _ [] = Nothing
getI 0 (a:_) = Just a
getI i (_:as) = getI (i-1) as
getI i xs = xs !? i
{-# DEPRECATED getI "Use XMonad.Prelude.(!?) instead." #-}
-- | Map a function across both 'Left's and 'Right's.
-- The 'Bool' argument is 'True' in a 'Right', 'False'

View File

@@ -22,10 +22,10 @@ module XMonad.Util.WindowProperties (
getProp32, getProp32s)
where
import Control.Monad
import Foreign.C.Types (CLong)
import XMonad
import XMonad.Actions.TagWindows (hasTag)
import XMonad.Prelude (filterM)
import qualified XMonad.StackSet as W
-- $edsl

View File

@@ -25,10 +25,8 @@ module XMonad.Util.WorkspaceCompare ( WorkspaceCompare, WorkspaceSort
import XMonad
import qualified XMonad.StackSet as S
import Data.List
import Data.Maybe
import XMonad.Prelude
import XMonad.Actions.PhysicalScreens (ScreenComparator(ScreenComparator), getScreenIdAndRectangle, screenComparatorById)
import Data.Function (on)
type WorkspaceCompare = WorkspaceId -> WorkspaceId -> Ordering
type WorkspaceSort = [WindowSpace] -> [WindowSpace]

View File

@@ -23,8 +23,8 @@ module XMonad.Util.XSelection ( -- * Usage
transformSafePromptSelection) where
import Control.Exception as E (catch,SomeException(..))
import Data.Maybe (fromMaybe)
import XMonad
import XMonad.Prelude (fromMaybe)
import XMonad.Util.Run (safeSpawn, unsafeSpawn)
import Codec.Binary.UTF8.String (decode)

View File

@@ -32,11 +32,10 @@ module XMonad.Util.XUtils
, fi
) where
import Data.Maybe
import XMonad.Prelude
import XMonad
import XMonad.Util.Font
import XMonad.Util.Image
import Control.Monad
-- $usage
-- See "XMonad.Layout.Tabbed" or "XMonad.Layout.DragPane" or