mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-18 19:10:21 -07:00
* First version of DecorationEx. * Fixed most warnings. * Fix build error with ghc-9.8.1. * Fix title shrinking with text decoration. * Add convinience re-exports. * Get rid of orphan instances. * Fix a couple of warnings. * Rename X.L.DecorationEx.Types -> X.L.DecorationEx.Common * Add instance Default StandardCommand. * Fix some typos and formatting thanks to @geekosaur Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> * Fix reference to xmonad.hs See also #859 Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> * Fix reference to xmonad.hs Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> * Fix formatting Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> * Fix some typos and formatting thanks to @geekosaur Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> * Remove commented code. * Update CHANGES.md. * calcWidgetPlace is now allowed to return rectangle with any X, but that will be ignored. * More generic instance for DecorationWidget GenericWidget. * Replace explicit definition of `fi` with import from X.Prelude. thanks to @slotThe. * Move fetch-all pattern to the end of definition. thanks to @slotThe. * X.L.DecorationEx: Add screenshot --------- Co-authored-by: brandon s allbery kf8nh <allbery.b@gmail.com> Co-authored-by: Tony Zorman <soliditsallgood@mailbox.org>
107 lines
4.4 KiB
Haskell
107 lines
4.4 KiB
Haskell
|
|
-----------------------------------------------------------------------------
|
|
-- |
|
|
-- Module : XMonad.Layout.DecorationEx
|
|
-- Description : Advanced window decorations module for XMonad
|
|
-- Copyright : (c) 2007 Andrea Rossato, 2009 Jan Vornberger, 2023 Ilya Portnov
|
|
-- License : BSD-style (see xmonad/LICENSE)
|
|
--
|
|
-- Maintainer : portnov84@rambler.ru
|
|
-- Stability : unstable
|
|
-- Portability : unportable
|
|
--
|
|
-- This set of modules contains a set of type classes and their implementations
|
|
-- which define a flexible and extensible mechanism of window decorations.
|
|
--
|
|
-- <<https://github.com/xmonad/xmonad-contrib/assets/50166980/ccc20e1b-6762-48d9-8195-579f77a98396>>
|
|
-- Click <https://github.com/xmonad/xmonad-contrib/assets/50166980/64847a85-33c4-4b5f-8ec8-df73d3e4d58d here>
|
|
-- for a larger version.
|
|
--
|
|
-- Within this mechanism, there are the following entities which define
|
|
-- how decorations will look and work:
|
|
--
|
|
-- * Main object is @DecorationEx@ layout modifier. It is from where everything
|
|
-- starts. It creates, shows and hides decoration windows (rectangles) when
|
|
-- needed. It is parameterized with decoration geometry, decoration engine and
|
|
-- theme. It calls these components to do their parts of the work.
|
|
-- * @DecorationGeometry@ defines where decoration rectangles should be placed.
|
|
-- For example, standard horizontal bar above each window; or tab bar.
|
|
-- * @DecorationEngine@ defines how decorations look and how they react on clicks.
|
|
-- Different implementations of the decoration engine can use different APIs
|
|
-- to draw decorations. Within this package, there is one implementation
|
|
-- (@TextDecoration@), which uses plain Xlib calls, and displays decoration
|
|
-- widgets with text fragments, like @[X]@ or @[_]@. Other engines can, for
|
|
-- example, use the Cairo library to draw nice gradients and image-based widgets.
|
|
-- * A Decoration widget is an element placed on a window decoration. It defines how
|
|
-- it looks and how it responds to clicks. Examples include usual window
|
|
-- buttons (minimize, maximize, close), window icon, window title.
|
|
-- * A Decoration theme defines colors and fonts for the decoration engine. It also
|
|
-- contains a list of decoration widgets and says where to place them (at the
|
|
-- left, at the right or in the center).
|
|
--
|
|
-- This mechanism makes major use of parameterized data types and type families,
|
|
-- in order to make it possible to define different types of decorations, and
|
|
-- easily combine different aspects of decorations. For example, each decoration
|
|
-- engine can be combined with each decoration geometry.
|
|
-----------------------------------------------------------------------------
|
|
|
|
module XMonad.Layout.DecorationEx (
|
|
-- * Usage:
|
|
-- $usage
|
|
|
|
-- * Standard decoration settings
|
|
decorationEx,
|
|
textDecoration, textTabbed, dwmStyleDeco,
|
|
-- * Decoration-related types
|
|
TextDecoration (..), DefaultGeometry (..),
|
|
TabbedGeometry (..), DwmGeometry (..),
|
|
DecorationEx,
|
|
-- * Theme types
|
|
BoxBorders (..), BorderColors,
|
|
SimpleStyle (..), GenericTheme (..),
|
|
ThemeEx,
|
|
-- * Widget types
|
|
StandardCommand (..), GenericWidget (..),
|
|
StandardWidget,
|
|
-- * Utility functions for themes
|
|
themeEx, borderColor, shadowBorder,
|
|
-- * Convinience re-exports
|
|
Shrinker (..), shrinkText,
|
|
-- * Standard widgets
|
|
titleW, toggleStickyW, minimizeW,
|
|
maximizeW, closeW, dwmpromoteW,
|
|
moveToNextGroupW, moveToPrevGroupW
|
|
) where
|
|
|
|
import XMonad.Layout.Decoration
|
|
import XMonad.Layout.DecorationEx.Common
|
|
import XMonad.Layout.DecorationEx.Widgets
|
|
import XMonad.Layout.DecorationEx.Geometry
|
|
import XMonad.Layout.DecorationEx.LayoutModifier
|
|
import XMonad.Layout.DecorationEx.TextEngine
|
|
import XMonad.Layout.DecorationEx.TabbedGeometry
|
|
import XMonad.Layout.DecorationEx.DwmGeometry
|
|
|
|
-- $usage
|
|
--
|
|
-- You can use this module with the following in your
|
|
-- @xmonad.hs@:
|
|
--
|
|
-- > import XMonad.Layout.DecorationEx
|
|
-- Then edit your @layoutHook@ by adding the DwmStyle decoration to
|
|
-- your layout:
|
|
--
|
|
-- > myTheme = ThemeEx {...}
|
|
-- > myL = textDecoration shrinkText myTheme (layoutHook def)
|
|
-- > main = xmonad def { layoutHook = myL }
|
|
--
|
|
-- For more detailed instructions on editing the layoutHook see:
|
|
--
|
|
-- "XMonad.Doc.Extending#Editing_the_layout_hook"
|
|
--
|
|
-- This module exports only some definitions from it's submodules,
|
|
-- most likely to be used from user configurations. To define
|
|
-- your own decoration types you will likely have to import specific
|
|
-- submodules.
|
|
|