mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
It's often difficult to make contrib modules work together. When one depends on a functionality of another, it is often necessary to expose lots of low-level functions and hooks and have the user combine these into a complex configuration that works. This is error-prone, and arguably a bad UX in general. This commit presents a simple solution to that problem inspired by "extensible state": extensible config. It allows contrib modules to store custom configuration values inside XConfig. This lets them create custom hooks, ensure they hook into xmonad core only once, and possibly other use cases I haven't thought of yet. This requires changes to xmonad core: https://github.com/xmonad/xmonad/pull/294 A couple examples of what this gives us: * [X.H.RescreenHook](https://github.com/xmonad/xmonad-contrib/pull/460) can be made safe to apply multiple times, making it composable and usable in other contrib modules like X.H.StatusBar * `withSB` from X.H.StatusBar can also be made safe to apply multiple times, and we can even provide an API [similar to what we had before](https://hackage.haskell.org/package/xmonad-contrib-0.16/docs/XMonad-Hooks-DynamicLog.html#v:statusBar) if we want (probably not, consistency with the new dynamic status bars of https://github.com/xmonad/xmonad-contrib/pull/463 is more important) * The [X.H.EwmhDesktops refactor](https://github.com/xmonad/xmonad-contrib/pull/399) can possibly be made without breaking the `ewmh`/`ewmhFullscreen` API. And we will finally be able to have composable EWMH hooks. Related: https://github.com/xmonad/xmonad/pull/294
435 lines
19 KiB
Plaintext
435 lines
19 KiB
Plaintext
name: xmonad-contrib
|
|
version: 0.16.999
|
|
homepage: http://xmonad.org/
|
|
synopsis: Third party extensions for xmonad
|
|
description:
|
|
Third party tiling algorithms, configurations and scripts to xmonad,
|
|
a tiling window manager for X.
|
|
.
|
|
For an introduction to building, configuring and using xmonad
|
|
extensions, see "XMonad.Doc". In particular:
|
|
.
|
|
"XMonad.Doc.Configuring", a guide to configuring xmonad
|
|
.
|
|
"XMonad.Doc.Extending", using the contributed extensions library
|
|
.
|
|
"XMonad.Doc.Developing", introduction to xmonad internals and writing
|
|
your own extensions.
|
|
.
|
|
category: System
|
|
license: BSD3
|
|
license-file: LICENSE
|
|
author: Spencer Janssen & others
|
|
maintainer: xmonad@haskell.org
|
|
extra-source-files: README.md CHANGES.md scripts/generate-configs scripts/run-xmonad.sh
|
|
scripts/window-properties.sh
|
|
scripts/xinitrc scripts/xmonad-acpi.c
|
|
scripts/xmonad-clock.c
|
|
XMonad/Config/dmwit.xmobarrc
|
|
XMonad/Config/Example.hs
|
|
cabal-version: >= 1.8
|
|
build-type: Simple
|
|
bug-reports: https://github.com/xmonad/xmonad-contrib/issues
|
|
|
|
tested-with: GHC == 8.4.4 || == 8.6.5 || == 8.8.4 || == 8.10.3 || == 9.0.1
|
|
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/xmonad/xmonad-contrib
|
|
|
|
|
|
flag use_xft
|
|
description: Use Xft to render text
|
|
|
|
flag pedantic
|
|
description: Be pedantic (-Werror and the like)
|
|
default: False
|
|
manual: True
|
|
|
|
library
|
|
build-depends: base >= 4.9 && < 5,
|
|
bytestring >= 0.10 && < 0.11,
|
|
containers >= 0.5 && < 0.7,
|
|
directory,
|
|
filepath,
|
|
time >= 1.8 && < 1.12,
|
|
process,
|
|
random,
|
|
mtl >= 1 && < 3,
|
|
unix,
|
|
X11 >= 1.10 && < 1.11,
|
|
xmonad >= 0.16.999 && < 0.18,
|
|
utf8-string
|
|
|
|
ghc-options: -Wall -Wno-unused-do-bind
|
|
|
|
if flag(pedantic)
|
|
ghc-options: -Werror -Wwarn=deprecations
|
|
|
|
-- Keep this in sync with the oldest version in 'tested-with'
|
|
if impl(ghc > 8.4.4)
|
|
-- don't treat unused-imports warning as errors, they may be necessary
|
|
-- for compatibility with older versions of base (or other deps)
|
|
ghc-options: -Wwarn=unused-imports
|
|
|
|
if flag(use_xft)
|
|
build-depends: X11-xft >= 0.2
|
|
cpp-options: -DXFT
|
|
|
|
exposed-modules: XMonad.Actions.AfterDrag
|
|
XMonad.Actions.BluetileCommands
|
|
XMonad.Actions.Commands
|
|
XMonad.Actions.ConstrainedResize
|
|
XMonad.Actions.CopyWindow
|
|
XMonad.Actions.CycleRecentWS
|
|
XMonad.Actions.CycleSelectedLayouts
|
|
XMonad.Actions.CycleWS
|
|
XMonad.Actions.CycleWindows
|
|
XMonad.Actions.CycleWorkspaceByScreen
|
|
XMonad.Actions.DeManage
|
|
XMonad.Actions.DwmPromote
|
|
XMonad.Actions.DynamicProjects
|
|
XMonad.Actions.DynamicWorkspaceGroups
|
|
XMonad.Actions.DynamicWorkspaceOrder
|
|
XMonad.Actions.DynamicWorkspaces
|
|
XMonad.Actions.EasyMotion
|
|
XMonad.Actions.FindEmptyWorkspace
|
|
XMonad.Actions.FlexibleManipulate
|
|
XMonad.Actions.FlexibleResize
|
|
XMonad.Actions.FloatKeys
|
|
XMonad.Actions.FloatSnap
|
|
XMonad.Actions.FocusNth
|
|
XMonad.Actions.GridSelect
|
|
XMonad.Actions.GroupNavigation
|
|
XMonad.Actions.KeyRemap
|
|
XMonad.Actions.Launcher
|
|
XMonad.Actions.LinkWorkspaces
|
|
XMonad.Actions.MessageFeedback
|
|
XMonad.Actions.Minimize
|
|
XMonad.Actions.MouseGestures
|
|
XMonad.Actions.MouseResize
|
|
XMonad.Actions.Navigation2D
|
|
XMonad.Actions.NoBorders
|
|
XMonad.Actions.OnScreen
|
|
XMonad.Actions.PerWindowKeys
|
|
XMonad.Actions.PerWorkspaceKeys
|
|
XMonad.Actions.PhysicalScreens
|
|
XMonad.Actions.Plane
|
|
XMonad.Actions.Prefix
|
|
XMonad.Actions.Promote
|
|
XMonad.Actions.RandomBackground
|
|
XMonad.Actions.RotSlaves
|
|
XMonad.Actions.RotateSome
|
|
XMonad.Actions.Search
|
|
XMonad.Actions.ShowText
|
|
XMonad.Actions.Sift
|
|
XMonad.Actions.SimpleDate
|
|
XMonad.Actions.SinkAll
|
|
XMonad.Actions.SpawnOn
|
|
XMonad.Actions.Submap
|
|
XMonad.Actions.SwapPromote
|
|
XMonad.Actions.SwapWorkspaces
|
|
XMonad.Actions.TagWindows
|
|
XMonad.Actions.TiledWindowDragging
|
|
XMonad.Actions.TopicSpace
|
|
XMonad.Actions.TreeSelect
|
|
XMonad.Actions.UpdateFocus
|
|
XMonad.Actions.UpdatePointer
|
|
XMonad.Actions.Warp
|
|
XMonad.Actions.WindowBringer
|
|
XMonad.Actions.WindowGo
|
|
XMonad.Actions.WindowMenu
|
|
XMonad.Actions.WindowNavigation
|
|
XMonad.Actions.WithAll
|
|
XMonad.Actions.Workscreen
|
|
XMonad.Actions.WorkspaceCursors
|
|
XMonad.Actions.WorkspaceNames
|
|
XMonad.Config.Arossato
|
|
XMonad.Config.Azerty
|
|
XMonad.Config.Bepo
|
|
XMonad.Config.Bluetile
|
|
XMonad.Config.Desktop
|
|
XMonad.Config.Dmwit
|
|
XMonad.Config.Droundy
|
|
XMonad.Config.Gnome
|
|
XMonad.Config.Kde
|
|
XMonad.Config.Mate
|
|
XMonad.Config.Prime
|
|
XMonad.Config.Sjanssen
|
|
XMonad.Config.Xfce
|
|
XMonad.Doc
|
|
XMonad.Doc.Configuring
|
|
XMonad.Doc.Developing
|
|
XMonad.Doc.Extending
|
|
XMonad.Hooks.CurrentWorkspaceOnTop
|
|
XMonad.Hooks.DebugEvents
|
|
XMonad.Hooks.DebugKeyEvents
|
|
XMonad.Hooks.DebugStack
|
|
XMonad.Hooks.DynamicBars
|
|
XMonad.Hooks.DynamicHooks
|
|
XMonad.Hooks.DynamicIcons
|
|
XMonad.Hooks.DynamicLog
|
|
XMonad.Hooks.DynamicProperty
|
|
XMonad.Hooks.EwmhDesktops
|
|
XMonad.Hooks.FadeInactive
|
|
XMonad.Hooks.FadeWindows
|
|
XMonad.Hooks.FloatNext
|
|
XMonad.Hooks.Focus
|
|
XMonad.Hooks.ICCCMFocus
|
|
XMonad.Hooks.InsertPosition
|
|
XMonad.Hooks.ManageDebug
|
|
XMonad.Hooks.ManageDocks
|
|
XMonad.Hooks.ManageHelpers
|
|
XMonad.Hooks.Minimize
|
|
XMonad.Hooks.Place
|
|
XMonad.Hooks.PositionStoreHooks
|
|
XMonad.Hooks.RefocusLast
|
|
XMonad.Hooks.RestoreMinimized
|
|
XMonad.Hooks.ScreenCorners
|
|
XMonad.Hooks.Script
|
|
XMonad.Hooks.ServerMode
|
|
XMonad.Hooks.SetWMName
|
|
XMonad.Hooks.StatusBar
|
|
XMonad.Hooks.StatusBar.PP
|
|
XMonad.Hooks.ToggleHook
|
|
XMonad.Hooks.UrgencyHook
|
|
XMonad.Hooks.WallpaperSetter
|
|
XMonad.Hooks.WindowSwallowing
|
|
XMonad.Hooks.WorkspaceByPos
|
|
XMonad.Hooks.WorkspaceHistory
|
|
XMonad.Hooks.XPropManage
|
|
XMonad.Layout.Accordion
|
|
XMonad.Layout.AutoMaster
|
|
XMonad.Layout.AvoidFloats
|
|
XMonad.Layout.BinaryColumn
|
|
XMonad.Layout.BinarySpacePartition
|
|
XMonad.Layout.BorderResize
|
|
XMonad.Layout.BoringWindows
|
|
XMonad.Layout.ButtonDecoration
|
|
XMonad.Layout.CenteredMaster
|
|
XMonad.Layout.Circle
|
|
XMonad.Layout.Column
|
|
XMonad.Layout.Combo
|
|
XMonad.Layout.ComboP
|
|
XMonad.Layout.Cross
|
|
XMonad.Layout.Decoration
|
|
XMonad.Layout.DecorationAddons
|
|
XMonad.Layout.DecorationMadness
|
|
XMonad.Layout.Dishes
|
|
XMonad.Layout.DragPane
|
|
XMonad.Layout.DraggingVisualizer
|
|
XMonad.Layout.Drawer
|
|
XMonad.Layout.Dwindle
|
|
XMonad.Layout.DwmStyle
|
|
XMonad.Layout.FixedColumn
|
|
XMonad.Layout.Fullscreen
|
|
XMonad.Layout.Gaps
|
|
XMonad.Layout.Grid
|
|
XMonad.Layout.GridVariants
|
|
XMonad.Layout.Groups
|
|
XMonad.Layout.Groups.Examples
|
|
XMonad.Layout.Groups.Helpers
|
|
XMonad.Layout.Groups.Wmii
|
|
XMonad.Layout.Hidden
|
|
XMonad.Layout.HintedGrid
|
|
XMonad.Layout.HintedTile
|
|
XMonad.Layout.IM
|
|
XMonad.Layout.IfMax
|
|
XMonad.Layout.ImageButtonDecoration
|
|
XMonad.Layout.IndependentScreens
|
|
XMonad.Layout.LayoutBuilder
|
|
XMonad.Layout.LayoutBuilderP
|
|
XMonad.Layout.LayoutCombinators
|
|
XMonad.Layout.LayoutHints
|
|
XMonad.Layout.LayoutModifier
|
|
XMonad.Layout.LayoutScreens
|
|
XMonad.Layout.LimitWindows
|
|
XMonad.Layout.MagicFocus
|
|
XMonad.Layout.Magnifier
|
|
XMonad.Layout.Master
|
|
XMonad.Layout.Maximize
|
|
XMonad.Layout.MessageControl
|
|
XMonad.Layout.Minimize
|
|
XMonad.Layout.Monitor
|
|
XMonad.Layout.Mosaic
|
|
XMonad.Layout.MosaicAlt
|
|
XMonad.Layout.MouseResizableTile
|
|
XMonad.Layout.MultiColumns
|
|
XMonad.Layout.MultiDishes
|
|
XMonad.Layout.MultiToggle
|
|
XMonad.Layout.MultiToggle.Instances
|
|
XMonad.Layout.MultiToggle.TabBarDecoration
|
|
XMonad.Layout.Named
|
|
XMonad.Layout.NoBorders
|
|
XMonad.Layout.NoFrillsDecoration
|
|
XMonad.Layout.OnHost
|
|
XMonad.Layout.OneBig
|
|
XMonad.Layout.PerScreen
|
|
XMonad.Layout.PerWorkspace
|
|
XMonad.Layout.PositionStoreFloat
|
|
XMonad.Layout.Reflect
|
|
XMonad.Layout.Renamed
|
|
XMonad.Layout.ResizableThreeColumns
|
|
XMonad.Layout.ResizableTile
|
|
XMonad.Layout.ResizeScreen
|
|
XMonad.Layout.Roledex
|
|
XMonad.Layout.ShowWName
|
|
XMonad.Layout.SimpleDecoration
|
|
XMonad.Layout.SimpleFloat
|
|
XMonad.Layout.Simplest
|
|
XMonad.Layout.SimplestFloat
|
|
XMonad.Layout.SortedLayout
|
|
XMonad.Layout.Spacing
|
|
XMonad.Layout.Spiral
|
|
XMonad.Layout.Square
|
|
XMonad.Layout.StackTile
|
|
XMonad.Layout.StateFull
|
|
XMonad.Layout.Stoppable
|
|
XMonad.Layout.SubLayouts
|
|
XMonad.Layout.TabBarDecoration
|
|
XMonad.Layout.Tabbed
|
|
XMonad.Layout.TallMastersCombo
|
|
XMonad.Layout.ThreeColumns
|
|
XMonad.Layout.ToggleLayouts
|
|
XMonad.Layout.TrackFloating
|
|
XMonad.Layout.TwoPane
|
|
XMonad.Layout.TwoPanePersistent
|
|
XMonad.Layout.VoidBorders
|
|
XMonad.Layout.WindowArranger
|
|
XMonad.Layout.WindowNavigation
|
|
XMonad.Layout.WindowSwitcherDecoration
|
|
XMonad.Layout.WorkspaceDir
|
|
XMonad.Layout.ZoomRow
|
|
XMonad.Prelude
|
|
XMonad.Prompt
|
|
XMonad.Prompt.AppLauncher
|
|
XMonad.Prompt.AppendFile
|
|
XMonad.Prompt.ConfirmPrompt
|
|
XMonad.Prompt.DirExec
|
|
XMonad.Prompt.Directory
|
|
XMonad.Prompt.Email
|
|
XMonad.Prompt.FuzzyMatch
|
|
XMonad.Prompt.Input
|
|
XMonad.Prompt.Layout
|
|
XMonad.Prompt.Man
|
|
XMonad.Prompt.OrgMode
|
|
XMonad.Prompt.Pass
|
|
XMonad.Prompt.RunOrRaise
|
|
XMonad.Prompt.Shell
|
|
XMonad.Prompt.Ssh
|
|
XMonad.Prompt.Theme
|
|
XMonad.Prompt.Unicode
|
|
XMonad.Prompt.Window
|
|
XMonad.Prompt.Workspace
|
|
XMonad.Prompt.XMonad
|
|
XMonad.Prompt.Zsh
|
|
XMonad.Util.ActionCycle
|
|
XMonad.Util.ClickableWorkspaces
|
|
XMonad.Util.Cursor
|
|
XMonad.Util.CustomKeys
|
|
XMonad.Util.DebugWindow
|
|
XMonad.Util.Dmenu
|
|
XMonad.Util.DynamicScratchpads
|
|
XMonad.Util.Dzen
|
|
XMonad.Util.EZConfig
|
|
XMonad.Util.ExclusiveScratchpads
|
|
XMonad.Util.ExtensibleConf
|
|
XMonad.Util.ExtensibleState
|
|
XMonad.Util.Font
|
|
XMonad.Util.Hacks
|
|
XMonad.Util.Image
|
|
XMonad.Util.Invisible
|
|
XMonad.Util.Loggers
|
|
XMonad.Util.Loggers.NamedScratchpad
|
|
XMonad.Util.Minimize
|
|
XMonad.Util.NamedActions
|
|
XMonad.Util.NamedScratchpad
|
|
XMonad.Util.NamedWindows
|
|
XMonad.Util.NoTaskbar
|
|
XMonad.Util.Paste
|
|
XMonad.Util.PositionStore
|
|
XMonad.Util.PureX
|
|
XMonad.Util.Rectangle
|
|
XMonad.Util.RemoteWindows
|
|
XMonad.Util.Replace
|
|
XMonad.Util.Run
|
|
XMonad.Util.Scratchpad
|
|
XMonad.Util.SessionStart
|
|
XMonad.Util.SpawnNamedPipe
|
|
XMonad.Util.SpawnOnce
|
|
XMonad.Util.Stack
|
|
XMonad.Util.StringProp
|
|
XMonad.Util.Themes
|
|
XMonad.Util.Timer
|
|
XMonad.Util.TreeZipper
|
|
XMonad.Util.Types
|
|
XMonad.Util.Ungrab
|
|
XMonad.Util.WindowProperties
|
|
XMonad.Util.WindowState
|
|
XMonad.Util.WorkspaceCompare
|
|
XMonad.Util.XSelection
|
|
XMonad.Util.XUtils
|
|
|
|
test-suite tests
|
|
type: exitcode-stdio-1.0
|
|
main-is: Main.hs
|
|
other-modules: ManageDocks
|
|
NoBorders
|
|
RotateSome
|
|
Selective
|
|
SwapWorkspaces
|
|
XPrompt
|
|
Instances
|
|
Utils
|
|
ExtensibleConf
|
|
XMonad.Actions.CycleWS
|
|
XMonad.Actions.FocusNth
|
|
XMonad.Actions.PhysicalScreens
|
|
XMonad.Actions.RotateSome
|
|
XMonad.Actions.SwapWorkspaces
|
|
XMonad.Actions.TagWindows
|
|
XMonad.Hooks.ManageDocks
|
|
XMonad.Hooks.WorkspaceHistory
|
|
XMonad.Layout.LayoutModifier
|
|
XMonad.Layout.LimitWindows
|
|
XMonad.Layout.NoBorders
|
|
XMonad.Prelude
|
|
XMonad.Prompt
|
|
XMonad.Prompt.Shell
|
|
XMonad.Util.ExtensibleConf
|
|
XMonad.Util.ExtensibleState
|
|
XMonad.Util.Font
|
|
XMonad.Util.Image
|
|
XMonad.Util.PureX
|
|
XMonad.Util.Rectangle
|
|
XMonad.Util.Run
|
|
XMonad.Util.Stack
|
|
XMonad.Util.Types
|
|
XMonad.Util.WindowProperties
|
|
XMonad.Util.WorkspaceCompare
|
|
XMonad.Util.XSelection
|
|
XMonad.Util.XUtils
|
|
hs-source-dirs: tests, .
|
|
build-depends: base
|
|
, QuickCheck >= 2
|
|
, X11 >= 1.10 && < 1.11
|
|
, containers
|
|
, directory
|
|
, hspec >= 2.4.0 && < 3
|
|
, mtl
|
|
, process
|
|
, unix
|
|
, utf8-string
|
|
, xmonad >= 0.16.999 && < 0.18
|
|
cpp-options: -DTESTING
|
|
ghc-options: -Wall -Wno-unused-do-bind
|
|
|
|
if flag(pedantic)
|
|
ghc-options: -Werror -Wwarn=deprecations
|
|
|
|
-- Keep this in sync with the oldest version in 'tested-with'
|
|
if impl(ghc > 8.4.4)
|
|
-- don't treat unused-imports warning as errors, they may be necessary
|
|
-- for compatibility with older versions of base (or other deps)
|
|
ghc-options: -Wwarn=unused-imports
|