name:               xmonad-contrib
version:            0.17.1.9
-- ^ also update cpp-options: -DXMONAD_CONTRIB_VERSION_*

homepage:           https://xmonad.org/
synopsis:           Community-maintained extensions for xmonad
description:
    Community-maintained tiling algorithms and extension modules for xmonad,
    an X11 tiling window manager.
    .
    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/run-xmonad.sh
                    scripts/window-properties.sh
                    scripts/xinitrc
                    scripts/xmonad-acpi.c
                    scripts/xmonad-clock.c
                    scripts/xmonadctl.hs
                    scripts/xmonadpropread.hs
                    XMonad/Config/dmwit.xmobarrc
                    XMonad/Config/Example.hs
cabal-version:      1.12
build-type:         Simple
bug-reports:        https://github.com/xmonad/xmonad-contrib/issues

tested-with:        GHC == 8.6.5 || == 8.8.4 || == 8.10.7 || == 9.0.2 || == 9.2.5 || == 9.4.3

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.11 && < 5,
                   bytestring >= 0.10 && < 0.12,
                   containers >= 0.5 && < 0.7,
                   directory,
                   filepath,
                   time >= 1.8 && < 1.13,
                   process,
                   random,
                   mtl >= 1 && < 3,
                   unix,
                   X11 >= 1.10 && < 1.11,
                   xmonad >= 0.16.99999 && < 0.18,
                   utf8-string,
                   deepseq
    default-language: Haskell2010

    cpp-options:   -DXMONAD_CONTRIB_VERSION_MAJOR=0
                   -DXMONAD_CONTRIB_VERSION_MINOR=17
                   -DXMONAD_CONTRIB_VERSION_PATCH=1
    ghc-options:   -Wall -Wno-unused-do-bind

    if flag(pedantic)
       ghc-options: -Werror -Wwarn=deprecations -Wwarn=dodgy-imports

    -- Keep this in sync with the oldest version in 'tested-with'
    if impl(ghc > 8.6.5)
       -- 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.MostRecentlyUsed
                        XMonad.Actions.MouseGestures
                        XMonad.Actions.MouseResize
                        XMonad.Actions.Navigation2D
                        XMonad.Actions.NoBorders
                        XMonad.Actions.OnScreen
                        XMonad.Actions.PerLayoutKeys
                        XMonad.Actions.PerWindowKeys
                        XMonad.Actions.PerWorkspaceKeys
                        XMonad.Actions.PhysicalScreens
                        XMonad.Actions.Plane
                        XMonad.Actions.Prefix
                        XMonad.Actions.Promote
                        XMonad.Actions.RandomBackground
                        XMonad.Actions.RepeatAction
                        XMonad.Actions.Repeatable
                        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.BorderPerWindow
                        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.InsertPosition
                        XMonad.Hooks.ManageDebug
                        XMonad.Hooks.ManageDocks
                        XMonad.Hooks.ManageHelpers
                        XMonad.Hooks.Minimize
                        XMonad.Hooks.Modal
                        XMonad.Hooks.OnPropertyChange
                        XMonad.Hooks.Place
                        XMonad.Hooks.PositionStoreHooks
                        XMonad.Hooks.RefocusLast
                        XMonad.Hooks.Rescreen
                        XMonad.Hooks.ScreenCorners
                        XMonad.Hooks.Script
                        XMonad.Hooks.ServerMode
                        XMonad.Hooks.SetWMName
                        XMonad.Hooks.ShowWName
                        XMonad.Hooks.StatusBar
                        XMonad.Hooks.StatusBar.PP
                        XMonad.Hooks.StatusBar.WorkspaceScreen
                        XMonad.Hooks.TaffybarPagerHints
                        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.CenteredIfSingle
                        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.FixedAspectRatio
                        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.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.SideBorderDecoration
                        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.ActionQueue
                        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.Grab
                        XMonad.Util.Hacks
                        XMonad.Util.History
                        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.Parser
                        XMonad.Util.Paste
                        XMonad.Util.PositionStore
                        XMonad.Util.Process
                        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:  CycleRecentWS
                  EZConfig
                  ExtensibleConf
                  GridSelect
                  Instances
                  ManageDocks
                  NoBorders
                  OrgMode
                  RotateSome
                  Selective
                  SwapWorkspaces
                  Utils
                  XMonad.Actions.CycleRecentWS
                  XMonad.Actions.CycleWS
                  XMonad.Actions.FocusNth
                  XMonad.Actions.GridSelect
                  XMonad.Actions.PhysicalScreens
                  XMonad.Actions.Repeatable
                  XMonad.Actions.RotateSome
                  XMonad.Actions.Submap
                  XMonad.Actions.SwapWorkspaces
                  XMonad.Actions.TagWindows
                  XMonad.Actions.WindowBringer
                  XMonad.Hooks.ManageDocks
                  XMonad.Hooks.ManageHelpers
                  XMonad.Hooks.UrgencyHook
                  XMonad.Hooks.WorkspaceHistory
                  XMonad.Layout.Decoration
                  XMonad.Layout.LayoutModifier
                  XMonad.Layout.LimitWindows
                  XMonad.Layout.NoBorders
                  XMonad.Layout.WindowArranger
                  XMonad.Prelude
                  XMonad.Prompt
                  XMonad.Prompt.OrgMode
                  XMonad.Prompt.Shell
                  XMonad.Util.Dmenu
                  XMonad.Util.Dzen
                  XMonad.Util.EZConfig
                  XMonad.Util.ExtensibleConf
                  XMonad.Util.ExtensibleState
                  XMonad.Util.Font
                  XMonad.Util.Image
                  XMonad.Util.Invisible
                  XMonad.Util.NamedActions
                  XMonad.Util.NamedWindows
                  XMonad.Util.Parser
                  XMonad.Util.Process
                  XMonad.Util.PureX
                  XMonad.Util.Rectangle
                  XMonad.Util.Run
                  XMonad.Util.Stack
                  XMonad.Util.Timer
                  XMonad.Util.Types
                  XMonad.Util.WindowProperties
                  XMonad.Util.WorkspaceCompare
                  XMonad.Util.XSelection
                  XMonad.Util.XUtils
                  XPrompt
  hs-source-dirs: tests, .
  build-depends: base
               , QuickCheck >= 2
               , X11 >= 1.10 && < 1.11
               , bytestring >= 0.10 && < 0.12
               , containers
               , directory
               , time >= 1.8 && < 1.13
               , hspec >= 2.4.0 && < 3
               , mtl
               , random
               , process
               , unix
               , utf8-string
               , deepseq
               , xmonad >= 0.16.9999 && < 0.18
  cpp-options: -DTESTING
  ghc-options: -Wall -Wno-unused-do-bind
  default-language: Haskell2010

  if flag(pedantic)
     ghc-options: -Werror -Wwarn=deprecations -Wwarn=dodgy-imports

  -- Keep this in sync with the oldest version in 'tested-with'
  if impl(ghc > 8.6.5)
     -- 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