Copyright | (c) José A. Romero L. |
---|---|
License | BSD3-style (see LICENSE) |
Maintainer | Ivan Malison <IvanMalison@gmail.com> |
Stability | unstable |
Portability | unportable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
System.Taffybar.Information.X11DesktopInfo
Description
Low-level functions to access data provided by the X11 desktop via window
properties. One of them (getVisibleTags
) depends on the
pagerHints
hook
being installed in your ~/.xmonad/xmonad.hs
configuration:
import XMonad.Hooks.TaffybarPagerHints (pagerHints) main = xmonad $ ewmh $ pagerHints $ ...
Synopsis
- data X11Context
- data DisplayName
- getX11Context :: DisplayName -> IO X11Context
- withX11Context :: DisplayName -> X11Property a -> IO a
- type X11Property a = X11PropertyT IO a
- type X11PropertyT m a = ReaderT X11Context m a
- eventLoop :: (Event -> IO ()) -> X11Property ()
- getDisplay :: X11Property Display
- getAtom :: String -> X11Property Atom
- type X11Window = Window
- type PropertyFetcher a = Display -> Atom -> X11Window -> IO (Maybe [a])
- fetch :: Integral a => PropertyFetcher a -> Maybe X11Window -> String -> X11Property (Maybe [a])
- readAsInt :: Maybe X11Window -> String -> X11Property Int
- readAsListOfInt :: Maybe X11Window -> String -> X11Property [Int]
- readAsListOfString :: Maybe X11Window -> String -> X11Property [String]
- readAsListOfWindow :: Maybe X11Window -> String -> X11Property [X11Window]
- readAsString :: Maybe X11Window -> String -> X11Property String
- isWindowUrgent :: X11Window -> X11Property Bool
- getPrimaryOutputNumber :: X11Property (Maybe Int)
- getVisibleTags :: X11Property [String]
- doLowerWindow :: X11Window -> X11Property ()
- postX11RequestSyncProp :: X11Property a -> a -> X11Property a
- sendCommandEvent :: Atom -> Atom -> X11Property ()
- sendWindowEvent :: Atom -> X11Window -> X11Property ()
Context
data X11Context Source #
Represents a connection to an X11 display.
Use getX11Context
to construct one of these.
data DisplayName Source #
Specifies an X11 display to connect to.
Constructors
DefaultDisplay | Use the |
DisplayName String | Of the form |
Instances
getX11Context :: DisplayName -> IO X11Context Source #
Builds a new X11Context
containing a connection to the default
X11 display and its root window.
If the X11 connection could not be opened, it will throw
. This can occur if the
userError
"openDisplay"X -maxclients
limit has been exceeded.
withX11Context :: DisplayName -> X11Property a -> IO a Source #
Makes a connection to the default X11 display using
getX11Context
and puts the current display and root window
objects inside a ReaderT
transformer for further computation.
Properties
type X11Property a = X11PropertyT IO a Source #
IO
actions with access to an X11Context
.
type X11PropertyT m a = ReaderT X11Context m a Source #
A ReaderT
with X11Context
.
Event loop
eventLoop :: (Event -> IO ()) -> X11Property () Source #
Spawn a new thread and listen inside it to all incoming events, invoking
the given function to every event of type MapNotifyEvent
that arrives, and
subscribing to all events of this type emitted by newly created windows.
Context getters
getDisplay :: X11Property Display Source #
An X11Property that returns the Display
object stored in the
X11Context
.
Basic properties of windows
Arguments
:: Integral a | |
=> PropertyFetcher a | Function to use to retrieve the property. |
-> Maybe X11Window | Window to read from. Nothing means the root Window. |
-> String | Name of the property to retrieve. |
-> X11Property (Maybe [a]) |
Apply the given function to the given window in order to obtain the X11 property with the given name, or Nothing if no such property can be read.
Arguments
:: Maybe X11Window | window to read from. Nothing means the root window. |
-> String | name of the property to retrieve |
-> X11Property Int |
Retrieve the property of the given window (or the root window, if Nothing) with the given name as a value of type Int. If that property hasn't been set, then return -1.
Arguments
:: Maybe X11Window | window to read from. Nothing means the root window. |
-> String | name of the property to retrieve |
-> X11Property [Int] |
Retrieve the property of the given window (or the root window, if Nothing) with the given name as a list of Ints. If that property hasn't been set, then return an empty list.
Arguments
:: Maybe X11Window | window to read from. Nothing means the root window. |
-> String | name of the property to retrieve |
-> X11Property [String] |
Retrieve the property of the given window (or the root window, if Nothing) with the given name as a list of Strings. If the property hasn't been set, then return an empty list.
Arguments
:: Maybe X11Window | window to read from. Nothing means the root window. |
-> String | name of the property to retrieve |
-> X11Property [X11Window] |
Retrieve the property of the given window (or the root window, if Nothing) with the given name as a list of X11 Window IDs. If the property hasn't been set, then return an empty list.
Arguments
:: Maybe X11Window | window to read from. Nothing means the root window. |
-> String | name of the property to retrieve |
-> X11Property String |
Retrieve the property of the given window (or the root window, if Nothing) with the given name as a String. If the property hasn't been set, then return an empty string.
Getters
isWindowUrgent :: X11Window -> X11Property Bool Source #
Determine whether the "urgent" flag is set in the WM_HINTS of the given window.
getPrimaryOutputNumber :: X11Property (Maybe Int) Source #
Get the index of the primary monitor as set and ordered by Xrandr.
getVisibleTags :: X11Property [String] Source #
Retrieve the value of the special _XMONAD_VISIBLE_WORKSPACES
hint set by the pagerHints
hook
provided by xmonad-contrib
(see module documentation for instructions on how to do this), or
an empty list of strings if the pagerHints
hook is not available.
Operations
doLowerWindow :: X11Window -> X11Property () Source #
Move the given X11Window
to the bottom of the X11 window stack.
postX11RequestSyncProp :: X11Property a -> a -> X11Property a Source #
Post the provided X11Property to taffybar's dedicated X11 thread, and wait for the result. The provided default value will be returned in the case of an error.
sendCommandEvent :: Atom -> Atom -> X11Property () Source #
Emit a "command" event with one argument for the X server. This is used to send events that can be received by event hooks in the XMonad process and acted upon in that context.
sendWindowEvent :: Atom -> X11Window -> X11Property () Source #
Similar to sendCommandEvent
, but with an argument of type X11Window
.