xmonad-contrib-0.14: Third party extensions for xmonad

Copyright(c) -- David Roundy <droundy@darcs.net>
2018 Yclept Nemo
LicenseBSD3-style (see LICENSE)
MaintainerSpencer Janssen <spencerjanssen@gmail.com>
Stabilityunstable
Portabilityunportable
Safe HaskellNone
LanguageHaskell98

XMonad.Layout.NoBorders

Contents

Description

Make a given layout display without borders. This is useful for full-screen or tabbed layouts, where you don't really want to waste a couple of pixels of real estate just to inform yourself that the visible window has focus.

Synopsis

Usage

You can use this module with the following in your ~/.xmonad/xmonad.hs file:

import XMonad.Layout.NoBorders

and modify the layouts to call noBorders on the layouts you want to lack borders:

layoutHook = ... ||| noBorders Full ||| ...

For more detailed instructions on editing the layoutHook see:

XMonad.Doc.Extending

noBorders :: LayoutClass l Window => l Window -> ModifiedLayout WithBorder l Window Source #

Removes all window borders from the specified layout.

smartBorders :: LayoutClass l a => l a -> ModifiedLayout SmartBorder l a Source #

Removes the borders from a window under one of the following conditions:

  • There is only one screen and only one window. In this case it's obvious that it has the focus, so no border is needed.
  • A floating window covers the entire screen (e.g. mplayer).

withBorder :: LayoutClass l a => Dimension -> l a -> ModifiedLayout WithBorder l a Source #

Forces a layout to use the specified border width. noBorders is equivalent to withBorder 0.

lessBorders :: (SetsAmbiguous p, Read p, Show p, LayoutClass l a) => p -> l a -> ModifiedLayout (ConfigurableBorder p) l a Source #

Apply a datatype that has a SetsAmbiguous instance to provide a list of windows that should not have borders.

This gives flexibility over when borders should be drawn, in particular with xinerama setups: Ambiguity has a number of useful SetsAmbiguous instances

hasBorder :: Bool -> ManageHook Source #

ManageHook for sending HasBorder messages:

   title =? "foo" --> hasBorder True

There is no equivalent for ResetBorder.

class SetsAmbiguous p where Source #

SetsAmbiguous allows custom actions to generate lists of windows that should not have borders drawn through ConfigurableBorder

To add your own (though perhaps those options would better belong as an additional constructor to Ambiguity), you can add the following function. Note that lr, the parameter representing the Rectangle of the parent layout, was added to hiddens in 0.14. Update your instance accordingly.

data MyAmbiguity = MyAmbiguity deriving (Read, Show)
instance SetsAmbiguous MyAmbiguity where
 hiddens _ wset lr mst wrs = otherHiddens Screen \\ otherHiddens OnlyScreenFloat
    where otherHiddens p = hiddens p wset lr mst wrs

The above example is redundant, because you can have the same result with:

layoutHook = lessBorders (Combine Difference Screen OnlyScreenFloat) (Tall 1 0.5 0.03 ||| ... )

To get the same result as smartBorders:

layoutHook = lessBorders Never (Tall 1 0.5 0.03 ||| ...)

This indirect method is required to keep the Read and Show for ConfigurableBorder so that xmonad can serialize state.

Minimal complete definition

hiddens

Methods

hiddens :: p -> WindowSet -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> [Window] Source #

Instances
SetsAmbiguous Ambiguity Source # 
Instance details

Defined in XMonad.Layout.NoBorders

data Ambiguity Source #

In order of increasing ambiguity (less borders more frequently), where subsequent constructors add additional cases where borders are not drawn than their predecessors. These behaviors make most sense with with multiple screens: for single screens, Never or smartBorders makes more sense.

Constructors

Combine With Ambiguity Ambiguity

This constructor is used to combine the borderless windows provided by the SetsAmbiguous instances from two other Ambiguity data types.

OnlyScreenFloat

Only remove borders on floating windows that cover the whole screen.

OnlyLayoutFloatBelow

Like OnlyLayoutFloat, but only removes borders if no window stacked below remains visible. Considers all floating windows on the current screen and all visible tiled windows of the child layout. If any such window (that is stacked below) shows in any gap between the parent layout rectangle and the physical screen, the border will remain drawn.

OnlyLayoutFloat

Only remove borders on floating windows that exactly cover the parent layout rectangle.

Never

Never remove borders when ambiguous: this is the same as smartBorders.

EmptyScreen

Focus in an empty screen does not count as ambiguous.

OtherIndicated

No borders on full when all other screens have borders.

Screen

Borders are never drawn on singleton screens. With this one you really need another way such as a statusbar to detect focus.

data With Source #

Used to indicate to the SetsAmbiguous instance for Ambiguity how two lists should be combined.

Instances
Read With Source # 
Instance details

Defined in XMonad.Layout.NoBorders

Show With Source # 
Instance details

Defined in XMonad.Layout.NoBorders

Methods

showsPrec :: Int -> With -> ShowS #

show :: With -> String #

showList :: [With] -> ShowS #

data BorderMessage Source #

Constructors

HasBorder Bool Window

If True, never remove the border from the specified window. If False, always remove the border from the specified window.

ResetBorder Window

Reset the effects of any HasBorder messages on the specified window.

Instances
Message BorderMessage Source # 
Instance details

Defined in XMonad.Layout.NoBorders

borderEventHook :: Event -> X All Source #

Only necessary with BorderMessage - remove non-existent windows from the alwaysHidden or neverHidden lists.

data WithBorder a Source #

Instances
LayoutModifier WithBorder Window Source # 
Instance details

Defined in XMonad.Layout.NoBorders

Read a => Read (WithBorder a) Source # 
Instance details

Defined in XMonad.Layout.NoBorders

Show a => Show (WithBorder a) Source # 
Instance details

Defined in XMonad.Layout.NoBorders

data ConfigurableBorder p w Source #

Instances
(Read p, Show p, SetsAmbiguous p) => LayoutModifier (ConfigurableBorder p) Window Source # 
Instance details

Defined in XMonad.Layout.NoBorders

(Read p, Read w) => Read (ConfigurableBorder p w) Source # 
Instance details

Defined in XMonad.Layout.NoBorders

(Show p, Show w) => Show (ConfigurableBorder p w) Source # 
Instance details

Defined in XMonad.Layout.NoBorders