Class wibox.layout.stack

A stacked layout.

This layout display widgets on top of each other. It can be used to overlay a wibox.widget.textbox on top of a awful.widget.progressbar or manage “pages” where only one is visible at any given moment.

The indices are going from 1 (the bottom of the stack) up to the top of the stack. The order can be changed either using :swap or :raise.

Usage example

Usage:

    wibox.widget {
        generic_widget( 'first'  ),
        generic_widget( 'second' ),
        generic_widget( 'third'  ),
        layout  = wibox.layout.stack
    }
    

Info:

  • Copyright: 2016 Emmanuel Lepage Vallee
  • Author: Emmanuel Lepage Vallee

Functions

wibox.layout.stack () Create a new stack layout.

Object properties

children Get all direct children of this layout.
spacing Add spacing around the widget, similar to the margin container.
top_only If only the first stack widget is drawn
horizontal_offset Add an horizontal offset to each layers.
vertial_offset Add an vertical offset to each layers.
forced_height Force a widget height.
forced_width Force a widget width.
opacity The widget opacity (transparency).
visible The widget visibility.

Signals

widget::layout_changed When the layout (size) change.
widget::redraw_needed When the widget content changed.
button::press When a mouse button is pressed over the widget.
button::release When a mouse button is released over the widget.
mouse::enter When the mouse enter a widget.
mouse::leave When the mouse leave a widget.

Methods

wibox.layout.stack:set (index, widget2) Set a widget at a specific index, replace the current one.
wibox.layout.stack:replace_widget (widget, widget2[, recursive=false]) Replace the first instance of widget in the layout with widget2.
wibox.layout.stack:swap (index1, index2) Swap 2 widgets in a layout.
wibox.layout.stack:swap_widgets (widget1, widget2[, recursive=false]) Swap 2 widgets in a layout.
wibox.layout.stack:reset (layout) Reset a ratio layout.
wibox.layout.stack:add (layout, ...) Add some widgets to the given stack layout
wibox.layout.stack:remove (The) Remove a widget from the layout
wibox.layout.stack:insert (index, widget) Insert a new widget in the layout at position index
wibox.layout.stack:remove_widgets (widget) Remove one or more widgets from the layout The last parameter can be a boolean, forcing a recursive seach of the widget(s) to remove.
wibox.layout.stack:raise (index) Raise a widget at index to the top of the stack
wibox.layout.stack:raise_widget (widget[, recursive=false]) Raise the first instance of widget
wibox.layout.stack:get_all_children () Get all direct and indirect children widgets.
wibox.layout.stack:setup (args) Set a declarative widget hierarchy description.
wibox.layout.stack:buttons (_buttons) Set/get a widget’s buttons.
wibox.layout.stack:emit_signal_recursive (signal_name, ...) Emit a signal and ensure all parent widgets in the hierarchies also forward the signal.
wibox.layout.stack:emit_signal (name, ...) Emit a signal.
wibox.layout.stack:connect_signal (name, func) Connect to a signal.
wibox.layout.stack:weak_connect_signal (name, func) Connect to a signal weakly.


Functions

Methods
wibox.layout.stack ()
Create a new stack layout.

Returns:

    widget A new stack layout

Object properties

children
Get all direct children of this layout.

Type:

  • layout The layout you are modifying.
spacing
Add spacing around the widget, similar to the margin container.

Usage example

Type:

  • spacing number Spacing between widgets.

Usage:

    wibox.widget {
        generic_widget( 'first'  ),
        generic_widget( 'second' ),
        generic_widget( 'third'  ),
        spacing = 6,
        layout  = wibox.layout.stack
    }
top_only
If only the first stack widget is drawn
horizontal_offset
Add an horizontal offset to each layers.

Note that this reduces the overall size of each widgets by the sum of all layers offsets.

Usage example

Type:

  • number

Usage:

    wibox.widget {
        generic_widget( 'first'  ),
        generic_widget( 'second' ),
        generic_widget( 'third'  ),
        horizontal_offset = 5,
        vertical_offset   = 5,
        layout            = wibox.layout.stack
    }
vertial_offset
Add an vertical offset to each layers.

Note that this reduces the overall size of each widgets by the sum of all layers offsets.

Type:

  • number

See also:

forced_height
Force a widget height.

Type:

  • height number or nil The height (nil for automatic)
forced_width
Force a widget width.

Type:

  • width number or nil The width (nil for automatic)
opacity
The widget opacity (transparency).

Type:

  • opacity number The opacity (between 0 and 1) (default 1)
visible
The widget visibility.

Type:

  • boolean

Signals

widget::layout_changed
When the layout (size) change. This signal is emitted when the previous results of :layout() and :fit() are no longer valid. Unless this signal is emitted, :layout() and :fit() must return the same result when called with the same arguments.

See also:

widget::redraw_needed
When the widget content changed. This signal is emitted when the content of the widget changes. The widget will be redrawn, it is not re-layouted. Put differently, it is assumed that :layout() and :fit() would still return the same results as before.

See also:

button::press
When a mouse button is pressed over the widget.

Arguments:

  • lx number The horizontal position relative to the (0,0) position in the widget.
  • ly number The vertical position relative to the (0,0) position in the widget.
  • button number The button number.
  • mods table The modifiers (mod4, mod1 (alt), Control, Shift)
  • find_widgets_result The entry from the result of wibox.drawable:find_widgets for the position that the mouse hit.
    • drawable wibox.drawable The drawable containing the widget.
    • widget widget The widget being displayed.
    • hierarchy wibox.hierarchy The hierarchy managing the widget’s geometry.
    • x number An approximation of the X position that the widget is visible at on the surface.
    • y number An approximation of the Y position that the widget is visible at on the surface.
    • width number An approximation of the width that the widget is visible at on the surface.
    • height number An approximation of the height that the widget is visible at on the surface.
    • widget_width number The exact width of the widget in its local coordinate system.
    • widget_height number The exact height of the widget in its local coordinate system.

See also:

button::release
When a mouse button is released over the widget.

Arguments:

  • lx number The horizontal position relative to the (0,0) position in the widget.
  • ly number The vertical position relative to the (0,0) position in the widget.
  • button number The button number.
  • mods table The modifiers (mod4, mod1 (alt), Control, Shift)
  • find_widgets_result The entry from the result of wibox.drawable:find_widgets for the position that the mouse hit.
    • drawable wibox.drawable The drawable containing the widget.
    • widget widget The widget being displayed.
    • hierarchy wibox.hierarchy The hierarchy managing the widget’s geometry.
    • x number An approximation of the X position that the widget is visible at on the surface.
    • y number An approximation of the Y position that the widget is visible at on the surface.
    • width number An approximation of the width that the widget is visible at on the surface.
    • height number An approximation of the height that the widget is visible at on the surface.
    • widget_width number The exact width of the widget in its local coordinate system.
    • widget_height number The exact height of the widget in its local coordinate system.

See also:

mouse::enter
When the mouse enter a widget.

Arguments:

  • find_widgets_result The entry from the result of wibox.drawable:find_widgets for the position that the mouse hit.
    • drawable wibox.drawable The drawable containing the widget.
    • widget widget The widget being displayed.
    • hierarchy wibox.hierarchy The hierarchy managing the widget’s geometry.
    • x number An approximation of the X position that the widget is visible at on the surface.
    • y number An approximation of the Y position that the widget is visible at on the surface.
    • width number An approximation of the width that the widget is visible at on the surface.
    • height number An approximation of the height that the widget is visible at on the surface.
    • widget_width number The exact width of the widget in its local coordinate system.
    • widget_height number The exact height of the widget in its local coordinate system.

See also:

mouse::leave
When the mouse leave a widget.

Arguments:

  • find_widgets_result The entry from the result of wibox.drawable:find_widgets for the position that the mouse hit.
    • drawable wibox.drawable The drawable containing the widget.
    • widget widget The widget being displayed.
    • hierarchy wibox.hierarchy The hierarchy managing the widget’s geometry.
    • x number An approximation of the X position that the widget is visible at on the surface.
    • y