xmonad-contrib-0.13: Third party extensions for xmonad

Copyright(c) David Roundy <droundy@darcs.net>
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

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 aditional constructor to Ambiguity), you can add the function as such:

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

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

layoutHook = lessBorders (Combine Difference Screen OnlyFloat) (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 -> Maybe (Stack Window) -> [(Window, Rectangle)] -> [Window] Source #

Instances

SetsAmbiguous Ambiguity Source # 

Methods

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

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.

OnlyFloat

Only remove borders on floating windows that cover the whole screen

Never

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

EmptyScreen

Focus in an empty screens 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.

Instances

data With Source #

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

data WithBorder a Source #

Instances

LayoutModifier WithBorder Window Source # 

Methods

modifyLayout :: LayoutClass l Window => WithBorder Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X ([(Window, Rectangle)], Maybe (l Window)) Source #

modifyLayoutWithUpdate :: LayoutClass l Window => WithBorder Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X (([(Window, Rectangle)], Maybe (l Window)), Maybe (WithBorder Window)) Source #

handleMess :: WithBorder Window -> SomeMessage -> X (Maybe (WithBorder Window)) Source #

handleMessOrMaybeModifyIt :: WithBorder Window -> SomeMessage -> X (Maybe (Either (WithBorder Window) SomeMessage)) Source #

pureMess :: WithBorder Window -> SomeMessage -> Maybe (WithBorder Window) Source #

redoLayout :: WithBorder Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> X ([(Window, Rectangle)], Maybe (WithBorder Window)) Source #

pureModifier :: WithBorder Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> ([(Window, Rectangle)], Maybe (WithBorder Window)) Source #

hook :: WithBorder Window -> X () Source #

unhook :: WithBorder Window -> X () Source #

modifierDescription :: WithBorder Window -> String Source #

modifyDescription :: LayoutClass l Window => WithBorder Window -> l Window -> String Source #

Read a => Read (WithBorder a) Source # 
Show a => Show (WithBorder a) Source # 

data ConfigurableBorder p w Source #

Instances

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

Methods

modifyLayout :: LayoutClass l Window => ConfigurableBorder p Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X ([(Window, Rectangle)], Maybe (l Window)) Source #

modifyLayoutWithUpdate :: LayoutClass l Window => ConfigurableBorder p Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X (([(Window, Rectangle)], Maybe (l Window)), Maybe (ConfigurableBorder p Window)) Source #

handleMess :: ConfigurableBorder p Window -> SomeMessage -> X (Maybe (ConfigurableBorder p Window)) Source #

handleMessOrMaybeModifyIt :: ConfigurableBorder p Window -> SomeMessage -> X (Maybe (Either (ConfigurableBorder p Window) SomeMessage)) Source #

pureMess :: ConfigurableBorder p Window -> SomeMessage -> Maybe (ConfigurableBorder p Window) Source #

redoLayout :: ConfigurableBorder p Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> X ([(Window, Rectangle)], Maybe (ConfigurableBorder p Window)) Source #

pureModifier :: ConfigurableBorder p Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> ([(Window, Rectangle)], Maybe (ConfigurableBorder p Window)) Source #

hook :: ConfigurableBorder p Window -> X () Source #

unhook :: ConfigurableBorder p Window -> X () Source #

modifierDescription :: ConfigurableBorder p Window -> String Source #

modifyDescription :: LayoutClass l Window => ConfigurableBorder p Window -> l Window -> String Source #

(Read p, Read w) => Read (ConfigurableBorder p w) Source # 
(Show p, Show w) => Show (ConfigurableBorder p w) Source #