[[doc_cls_root]]


=== clients: [[doc_cls_clientmanager]]
The managed windows. For every (managed) window id there is an entry here.

     * *+[entryname]#dragged#+*: the object of a client which is currently dragged by the mouse, if any. See the documentation of the  mousebind command for examples. For attributes and children, see <<doc_cls_client,+clients.focus+>>
     * *+[entryname]#focus#+*: the focused client (only exists if a client is focused). [[doc_cls_client]]a managed window

       ** '[datatype]#string#' *+[entryname]#class#+*: the class of it (second entry in WM_CLASS)
       ** '[datatype]#bool#' *+[entryname]#ewmhnotify#+* [defaultvalue]#= true#: if the client is told about its state via ewmh
       ** '[datatype]#bool#' *+[entryname]#ewmhrequests#+* [defaultvalue]#= true#: if ewmh requests are permitted for this client
       ** '[datatype]#bool#' *+[entryname]#floating#+* [defaultvalue]#= false#: whether this client is floated above the tiled clients.
       ** '[datatype]#bool#' *+[entryname]#fullscreen#+* [defaultvalue]#= false#: whether this client covers all other windows and panels on its monitor.
       ** '[datatype]#string#' *+[entryname]#instance#+*: the instance of it (first entry in WM_CLASS)
       ** '[datatype]#regex#' *+[entryname]#keymask#+* [defaultvalue]#= ""#: A regular expression that is matched against the string representation of all key bindings (as they are printed by list_keybinds). While this client is focused, only bindings that match the expression will be active. Any other bindings will be disabled. The default keymask is an empty string (), which does not disable any keybinding.
       ** '[datatype]#regex#' *+[entryname]#keys_inactive#+* [defaultvalue]#= ""#: A regular expression that describes which keybindings are inactive while the client is focused. If a key combination is pressed and its string representation (as given by list_keybinds) matches the regex, then the key press is propagated to the client.
       ** '[datatype]#bool#' *+[entryname]#minimized#+* [defaultvalue]#= false#: whether this client is minimized (also called iconified).
       ** '[datatype]#int#' *+[entryname]#pgid#+* [defaultvalue]#= -1#
       ** '[datatype]#int#' *+[entryname]#pid#+* [defaultvalue]#= -1#: the process id of it (-1 if unset).
       ** '[datatype]#bool#' *+[entryname]#pseudotile#+* [defaultvalue]#= false#: if activated, the client always has its floating window size, even if it is in tiling mode.
       ** '[datatype]#bool#' *+[entryname]#sizehints_floating#+* [defaultvalue]#= true#: if sizehints for this client should be respected in floating mode
       ** '[datatype]#bool#' *+[entryname]#sizehints_tiling#+* [defaultvalue]#= false#: if sizehints for this client should be respected in tiling mode
       ** '[datatype]#string#' *+[entryname]#tag#+*: the name of the tag it's currently on.
       ** '[datatype]#string#' *+[entryname]#title#+* [defaultvalue]#= ""#: its window title
       ** '[datatype]#bool#' *+[entryname]#urgent#+* [defaultvalue]#= false#: the urgency state (also known as: demands attention)
       ** '[datatype]#bool#' *+[entryname]#visible#+* [defaultvalue]#= visible_already#: whether this client is rendered currently
       ** '[datatype]#string#' *+[entryname]#winid#+* [defaultvalue]#= ""#: its window id (as a hexadecimal number with 0x prefix)
       ** *+[entryname]#parent_frame#+*: the frame contaning this client if the client is tiled. For attributes and children, see <<doc_cls_frameleaf,+tags.focus.tiling.root+>>

=== monitors: [[doc_cls_monitormanager]]
Every monitor is a rectangular part of the screen on which a tag is shown. These monitors may or maynot match the actual outputs.
This has an entry 'INDEX' for each monitor withindex 'INDEX'.

     * '[datatype]#uint#' *+[entryname]#count#+*
     * *+[entryname]#by-name#+*: [[doc_cls_byname]]This has an entry 'name' for every object with the given 'name'. If an object has an empty name then it is not listed here.

     * *+[entryname]#focus#+*: the focused monitor. [[doc_cls_monitor]]The monitor is a rectangular part on the screen that holds precisely one tag at a time. The pad attributes reserve space on the monitor's edge for panels, so this space (given in number of pixels) is never occupied by tiled clients.

       ** '[datatype]#Rectangle#' *+[entryname]#geometry#+* [defaultvalue]#= rect_#: the outer geometry of the monitor
       ** '[datatype]#uint#' *+[entryname]#index#+* [defaultvalue]#= 0#: the monitor's index (starts at index 0)
       ** '[datatype]#bool#' *+[entryname]#lock_tag#+* [defaultvalue]#= false#: if activated, then it it is not possible to switch this monitor to a different tag.
       ** '[datatype]#string#' *+[entryname]#name#+* [defaultvalue]#= ""#: the monitor's name (can be empty)
       ** '[datatype]#int#' *+[entryname]#pad_down#+* [defaultvalue]#= 0#: space for panels at the monitor's lower edge
       ** '[datatype]#int#' *+[entryname]#pad_left#+* [defaultvalue]#= 0#: space for panels at the monitor's left edge
       ** '[datatype]#int#' *+[entryname]#pad_right#+* [defaultvalue]#= 0#: space for panels at the monitor's right edge
       ** '[datatype]#int#' *+[entryname]#pad_up#+* [defaultvalue]#= 0#: space for panels at the monitor's upper edge
       ** '[datatype]#string#' *+[entryname]#tag#+*: the name of the tag viewed here

=== settings: [[doc_cls_settings]]
This has an attribute for each setting. Many settings are wrappers around attributes and only exist for compatibility.

     * '[datatype]#bool#' *+[entryname]#always_show_frame#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#auto_detect_monitors#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#auto_detect_panels#+* [defaultvalue]#= true#
     * '[datatype]#bool#' *+[entryname]#default_direction_external_only#+* [defaultvalue]#= false#
     * '[datatype]#uint#' *+[entryname]#default_frame_layout#+* [defaultvalue]#= 0#
     * '[datatype]#bool#' *+[entryname]#focus_crosses_monitor_boundaries#+* [defaultvalue]#= true#
     * '[datatype]#bool#' *+[entryname]#focus_follows_mouse#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#focus_stealing_prevention#+* [defaultvalue]#= true#
     * '[datatype]#int#' *+[entryname]#frame_active_opacity#+* [defaultvalue]#= 100#
     * '[datatype]#color#' *+[entryname]#frame_bg_active_color#+* [defaultvalue]#= black#
     * '[datatype]#color#' *+[entryname]#frame_bg_normal_color#+* [defaultvalue]#= black#
     * '[datatype]#bool#' *+[entryname]#frame_bg_transparent#+* [defaultvalue]#= false#
     * '[datatype]#color#' *+[entryname]#frame_border_active_color#+* [defaultvalue]#= red#
     * '[datatype]#color#' *+[entryname]#frame_border_inner_color#+* [defaultvalue]#= black#
     * '[datatype]#int#' *+[entryname]#frame_border_inner_width#+* [defaultvalue]#= 0#
     * '[datatype]#color#' *+[entryname]#frame_border_normal_color#+* [defaultvalue]#= blue#
     * '[datatype]#int#' *+[entryname]#frame_border_width#+* [defaultvalue]#= 2#
     * '[datatype]#int#' *+[entryname]#frame_gap#+* [defaultvalue]#= 5#
     * '[datatype]#int#' *+[entryname]#frame_normal_opacity#+* [defaultvalue]#= 100#
     * '[datatype]#int#' *+[entryname]#frame_padding#+* [defaultvalue]#= 0#
     * '[datatype]#int#' *+[entryname]#frame_transparent_width#+* [defaultvalue]#= 0#
     * '[datatype]#bool#' *+[entryname]#gapless_grid#+* [defaultvalue]#= true#
     * '[datatype]#bool#' *+[entryname]#hide_covered_windows#+* [defaultvalue]#= false#
     * '[datatype]#int#' *+[entryname]#monitors_locked#+* [defaultvalue]#= 0#
     * '[datatype]#int#' *+[entryname]#mouse_recenter_gap#+* [defaultvalue]#= 0#
     * '[datatype]#int#' *+[entryname]#pseudotile_center_threshold#+* [defaultvalue]#= 10#
     * '[datatype]#bool#' *+[entryname]#raise_on_click#+* [defaultvalue]#= true#
     * '[datatype]#bool#' *+[entryname]#raise_on_focus#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#raise_on_focus_temporarily#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#smart_frame_surroundings#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#smart_window_surroundings#+* [defaultvalue]#= false#
     * '[datatype]#int#' *+[entryname]#snap_distance#+* [defaultvalue]#= 10#
     * '[datatype]#int#' *+[entryname]#snap_gap#+* [defaultvalue]#= 5#
     * '[datatype]#bool#' *+[entryname]#swap_monitors_to_get_tag#+* [defaultvalue]#= true#
     * '[datatype]#string#' *+[entryname]#tree_style#+* [defaultvalue]#= "*| +`--."#
     * '[datatype]#bool#' *+[entryname]#update_dragged_clients#+* [defaultvalue]#= false#
     * '[datatype]#bool#' *+[entryname]#verbose#+* [defaultvalue]#= false#
     * '[datatype]#color#' *+[entryname]#window_border_active_color#+*
     * '[datatype]#color#' *+[entryname]#window_border_inner_color#+*
     * '[datatype]#int#' *+[entryname]#window_border_inner_width#+*
     * '[datatype]#color#' *+[entryname]#window_border_normal_color#+*
     * '[datatype]#color#' *+[entryname]#window_border_urgent_color#+*
     * '[datatype]#int#' *+[entryname]#window_border_width#+*
     * '[datatype]#int#' *+[entryname]#window_gap#+* [defaultvalue]#= 0#
     * '[datatype]#string#' *+[entryname]#wmname#+* [defaultvalue]#= herbstluftwm#

=== tags: [[doc_cls_tagmanager]]
The tags (or virtual desktops or workspaces). This contains  an entry 'index' for each tag with the given 'index'.

     * '[datatype]#uint#' *+[entryname]#count#+*
     * *+[entryname]#by-name#+*: For attributes and children, see <<doc_cls_byname,+monitors.by-name+>>
     * *+[entryname]#focus#+*: the object of the focused tag, equivalently, the tag on the focused monitor. [[doc_cls_hstag]]
       ** '[datatype]#int#' *+[entryname]#client_count#+*: the number of clients on this tag
       ** '[datatype]#int#' *+[entryname]#curframe_wcount#+*: number of clients in the selected frame
       ** '[datatype]#int#' *+[entryname]#curframe_windex#+*: index of the focused client in the selected frame
       ** '[datatype]#bool#' *+[entryname]#floating#+* [defaultvalue]#= false#: if the entire tag is set to floating mode
       ** '[datatype]#bool#' *+[entryname]#floating_focused#+* [defaultvalue]#= false#: if the floating layer is focused (otherwise the tiling layer is)
       ** '[datatype]#int#' *+[entryname]#frame_count#+*: the number of frames on this tag
       ** '[datatype]#uint#' *+[entryname]#index#+* [defaultvalue]#= 0#: index of this tag (the first index is 0)
       ** '[datatype]#string#' *+[entryname]#name#+* [defaultvalue]#= name_#: name of the tag (must be non-empty)
       ** '[datatype]#int#' *+[entryname]#urgent_count#+*: the number of urgent clients on this tag
       ** '[datatype]#bool#' *+[entryname]#visible#+* [defaultvalue]#= false#: if this tag is shown on some monitor
       ** *+[entryname]#focused_client#+*: For attributes and children, see <<doc_cls_client,+clients.focus+>>
       ** *+[entryname]#tiling#+*: [[doc_cls_frametree]]
         *** *+[entryname]#focused_frame#+*: The focused frame (leaf) in this frame tree. For attributes and children, see <<doc_cls_frameleaf,+tags.focus.tiling.root+>>
         *** *+[entryname]#root#+* can be a  frame leaf.  [[doc_cls_frameleaf]]
           **** '[datatype]#LayoutAlgorithm#' *+[entryname]#algorithm#+*
           **** '[datatype]#int#' *+[entryname]#client_count#+*
           **** '[datatype]#string#' *+[entryname]#index#+*
           **** '[datatype]#int#' *+[entryname]#selection#+*
         *** *+[entryname]#root#+* can be a  frame split.  [[doc_cls_framesplit]]
           **** '[datatype]#decimal#' *+[entryname]#fraction#+*
           **** '[datatype]#string#' *+[entryname]#index#+*
           **** '[datatype]#int#' *+[entryname]#selection#+*
           **** '[datatype]#SplitAlign#' *+[entryname]#split_type#+*
           **** *+[entryname]#0#+* can be a  frame leaf.  For attributes and children, see <<doc_cls_frameleaf,+tags.focus.tiling.root+>>
           **** *+[entryname]#0#+* can be a  frame split.  For attributes and children, see <<doc_cls_framesplit,+tags.focus.tiling.root+>>
           **** *+[entryname]#1#+* can be a  frame leaf.  For attributes and children, see <<doc_cls_frameleaf,+tags.focus.tiling.root+>>
           **** *+[entryname]#1#+* can be a  frame split.  For attributes and children, see <<doc_cls_framesplit,+tags.focus.tiling.root+>>

=== theme: [[doc_cls_theme]]
    inner_color/inner_width
          ╻        outer_color/outer_width
          │                  ╻
          │                  │
    ┌────╴│╶─────────────────┷─────┐ ⎫ border_width
    │     │      color             │ ⎬ + title_height
    │  ┌──┷─────────────────────┐  │ ⎭ + padding_top
    │  │====================....│  │
    │  │== window content ==....│  │
    │  │====================..╾──────── background_color
    │  │........................│  │
    │  └────────────────────────┘  │ ⎱ border_width +
    └──────────────────────────────┘ ⎰ padding_bottom

Setting an attribute of the theme object just propagates the value to the respective attribute of the +tiling+ and the +floating+ object.

     * '[datatype]#color#' *+[entryname]#background_color#+* [defaultvalue]#= black#
     * '[datatype]#uint#' *+[entryname]#border_width#+* [defaultvalue]#= 0#
     * '[datatype]#color#' *+[entryname]#color#+* [defaultvalue]#= black#
     * '[datatype]#color#' *+[entryname]#inner_color#+* [defaultvalue]#= black#
     * '[datatype]#uint#' *+[entryname]#inner_width#+* [defaultvalue]#= 0#
     * '[datatype]#color#' *+[entryname]#outer_color#+* [defaultvalue]#= black#
     * '[datatype]#uint#' *+[entryname]#outer_width#+* [defaultvalue]#= 0#
     * '[datatype]#uint#' *+[entryname]#padding_bottom#+* [defaultvalue]#= 0#
     * '[datatype]#uint#' *+[entryname]#padding_left#+* [defaultvalue]#= 0#
     * '[datatype]#uint#' *+[entryname]#padding_right#+* [defaultvalue]#= 0#
     * '[datatype]#uint#' *+[entryname]#padding_top#+* [defaultvalue]#= 0#
     * '[datatype]#string#' *+[entryname]#reset#+*: writing this resets all attributes to a default value
     * '[datatype]#bool#' *+[entryname]#tight_decoration#+* [defaultvalue]#= false#
     * '[datatype]#color#' *+[entryname]#title_color#+* [defaultvalue]#= black#
     * '[datatype]#font#' *+[entryname]#title_font#+* [defaultvalue]#= fixed#
     * '[datatype]#uint#' *+[entryname]#title_height#+* [defaultvalue]#= 0#
     * *+[entryname]#active#+*: configures the decoration of the focused client. [[doc_cls_decorationscheme]]
       ** '[datatype]#color#' *+[entryname]#background_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#border_width#+* [defaultvalue]#= 0#
       ** '[datatype]#color#' *+[entryname]#color#+* [defaultvalue]#= black#
       ** '[datatype]#color#' *+[entryname]#inner_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#inner_width#+* [defaultvalue]#= 0#
       ** '[datatype]#color#' *+[entryname]#outer_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#outer_width#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_bottom#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_left#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_right#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_top#+* [defaultvalue]#= 0#
       ** '[datatype]#string#' *+[entryname]#reset#+*: writing this resets all attributes to a default value
       ** '[datatype]#bool#' *+[entryname]#tight_decoration#+* [defaultvalue]#= false#
       ** '[datatype]#color#' *+[entryname]#title_color#+* [defaultvalue]#= black#
       ** '[datatype]#font#' *+[entryname]#title_font#+* [defaultvalue]#= fixed#
       ** '[datatype]#uint#' *+[entryname]#title_height#+* [defaultvalue]#= 0#
     * *+[entryname]#floating#+*: behaves analogously to +tiling+. [[doc_cls_dectriple]]
       ** '[datatype]#color#' *+[entryname]#background_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#border_width#+* [defaultvalue]#= 0#
       ** '[datatype]#color#' *+[entryname]#color#+* [defaultvalue]#= black#
       ** '[datatype]#color#' *+[entryname]#inner_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#inner_width#+* [defaultvalue]#= 0#
       ** '[datatype]#color#' *+[entryname]#outer_color#+* [defaultvalue]#= black#
       ** '[datatype]#uint#' *+[entryname]#outer_width#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_bottom#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_left#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_right#+* [defaultvalue]#= 0#
       ** '[datatype]#uint#' *+[entryname]#padding_top#+* [defaultvalue]#= 0#
       ** '[datatype]#string#' *+[entryname]#reset#+*: writing this resets all attributes to a default value
       ** '[datatype]#bool#' *+[entryname]#tight_decoration#+* [defaultvalue]#= false#
       ** '[datatype]#color#' *+[entryname]#title_color#+* [defaultvalue]#= black#
       ** '[datatype]#font#' *+[entryname]#title_font#+* [defaultvalue]#= fixed#
       ** '[datatype]#uint#' *+[entryname]#title_height#+* [defaultvalue]#= 0#
       ** *+[entryname]#active#+*: configures the decoration of the focused client. For attributes and children, see <<doc_cls_decorationscheme,+theme.active+>>
       ** *+[entryname]#normal#+*: the default decoration scheme for clients. For attributes and children, see <<doc_cls_decorationscheme,+theme.active+>>
       ** *+[entryname]#urgent#+*: configures the decoration of urgent clients. For attributes and children, see <<doc_cls_decorationscheme,+theme.active+>>
     * *+[entryname]#fullscreen#+*: configures clients in fullscreen state. For attributes and children, see <<doc_cls_dectriple,+theme.floating+>>
     * *+[entryname]#minimal#+*: configures clients with minimal decorations triggered by +smart_window_surroundings+. For attributes and children, see <<doc_cls_dectriple,+theme.floating+>>
     * *+[entryname]#normal#+*: the default decoration scheme for clients. For attributes and children, see <<doc_cls_decorationscheme,+theme.active+>>
     * *+[entryname]#tiling#+*: configures the decoration of tiled clients, setting one of its attributes propagates the respective attribute of the +active+, +normal+ and +urgent+ child objects. For attributes and children, see <<doc_cls_dectriple,+theme.floating+>>
     * *+[entryname]#urgent#+*: configures the decoration of urgent clients. For attributes and children, see <<doc_cls_decorationscheme,+theme.active+>>

=== watchers: [[doc_cls_watchers]]

     * '[datatype]#uint#' *+[entryname]#count#+*: the number of attributes that are watched
