Class awful.widget.layoutlist
Display the available client layouts for a screen.
This is what the layoutlist looks like by default with a vertical layout:
awful.popup { widget = awful.widget.layoutlist { screen = 1, base_layout = wibox.layout.flex.vertical }, maximum_height = #awful.layout.layouts * 24, minimum_height = #awful.layout.layouts * 24, placement = awful.placement.centered, }
In the second example, it is shown how to create a popup in the center of the screen:
local ll = awful.widget.layoutlist { base_layout = wibox.widget { spacing = 5, forced_num_cols = 5, layout = wibox.layout.grid.vertical, }, widget_template = { { { id = 'icon_role', forced_height = 22, forced_width = 22, widget = wibox.widget.imagebox, }, margins = 4, widget = wibox.container.margin, }, id = 'background_role', forced_width = 24, forced_height = 24, shape = gears.shape.rounded_rect, widget = wibox.container.background, }, } local layout_popup = awful.popup { widget = wibox.widget { ll, margins = 4, widget = wibox.container.margin, }, border_color = beautiful.border_color, border_width = beautiful.border_width, placement = awful.placement.centered, ontop = true, visible = false, shape = gears.shape.rounded_rect } -- Make sure you remove the defaultMod4+Space
andMod4+Shift+Space
-- keybindings before adding this. awful.keygrabber { start_callback = function() layout_popup.visible = true end, stop_callback = function() layout_popup.visible = false end, export_keybindings = true, release_event = 'release', stop_key = {'Escape', 'Super_L', 'Super_R'}, keybindings = { {{ modkey } , ' ' , function() awful.layout.set(gears.table.iterate_value(ll.layouts, ll.current_layout, 1)) end}, {{ modkey, 'Shift' } , ' ' , function() awful.layout.set(gears.table.iterate_value(ll.layouts, ll.current_layout, -1), nil) end}, } }
This example extends ‘awful.widget.layoutbox’ to show a layout list popup:
-- Normally you would use your existing bars, but for this example, we add one local lb = awful.widget.layoutbox(screen[1]) local l = wibox.layout.align.horizontal(nil, lb, nil) l.expand = 'outside' awful.wibar { widget = l } local p = awful.popup { widget = wibox.widget { awful.widget.layoutlist { source = awful.widget.layoutlist.source.default_layouts, screen = 1, base_layout = wibox.widget { spacing = 5, forced_num_cols = 3, layout = wibox.layout.grid.vertical, }, widget_template = { { { id = 'icon_role', forced_height = 22, forced_width = 22, widget = wibox.widget.imagebox, }, margins = 4, widget = wibox.container.margin, }, id = 'background_role', forced_width = 24, forced_height = 24, shape = gears.shape.rounded_rect, widget = wibox.container.background, }, }, margins = 4, widget = wibox.container.margin, }, preferred_anchors = 'middle', border_color = beautiful.border_color, border_width = beautiful.border_width, shape = gears.shape.infobubble, } p:bind_to_widget(lb)
This example shows how to add a layout subset to the default wibar:
wb:setup { layout = wibox.layout.align.horizontal, { -- Left widgets mytaglist, awful.widget.layoutlist { screen = 1, style = { disable_name = true, spacing = 3, }, source = function() return { awful.layout.suit.floating, awful.layout.suit.tile, awful.layout.suit.tile.left, awful.layout.suit.tile.bottom, awful.layout.suit.tile.top, } end }, layout = wibox.layout.fixed.horizontal, }, mytasklist, -- Middle widget { -- Right widgets layout = wibox.layout.fixed.horizontal, mykeyboardlayout, mytextclock, mylayoutbox, }, }
Info:
- Copyright: 2010, 2018 Emmanuel Lepage Vallee
- Author: Emmanuel Lepage Vallee <[email protected]>
Functions
awful.widget.layoutlist (args) | Create a layout list. |
Object properties
base_layout | The layoutlist default widget layout. |
widget_template | The delegate widget template. |
screen | The layoutlist screen. |
source | A function that returns the list of layout to display. |
filter | The layoutlist filter function. |
buttons | The layoutlist buttons. |
layouts | The currenly displayed layouts. |
current_layout | The currently selected layout. |
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. |
Theme variables
beautiful.layoutlist_fg_normal | The default foreground (text) color. |
beautiful.layoutlist_bg_normal | The default background color. |
beautiful.layoutlist_fg_selected | The selected layout foreground (text) color. |
beautiful.layoutlist_bg_selected | The selected layout background color. |
beautiful.layoutlist_disable_icon | Disable the layout icons (only show the name label). |
beautiful.layoutlist_disable_name | Disable the layout name label (only show the icon). |
beautiful.layoutlist_font | The layoutlist font. |
beautiful.layoutlist_align | The selected layout alignment. |
beautiful.layoutlist_font_selected | The selected layout title font. |
beautiful.layoutlist_spacing | The space between the layouts. |
beautiful.layoutlist_shape | The default layoutlist elements shape. |
beautiful.layoutlist_shape_border_width | The default layoutlist elements border width. |
beautiful.layoutlist_shape_border_color | The default layoutlist elements border color. |
beautiful.layoutlist_shape_selected | The selected layout shape. |
beautiful.layoutlist_shape_border_width_selected | The selected layout border width. |
beautiful.layoutlist_shape_border_color_selected | The selected layout border color. |
List source functions
awful.widget.layoutlist.source.for_screen | The layout list for the first selected tag of a screen. |
awful.widget.layoutlist.source.current_screen | The layouts available for the first selected tag of awful.screen.focused() . |
awful.widget.layoutlist.source.default_layouts | The default layout list. |
Methods
awful.widget.layoutlist:get_all_children () | Get all direct and indirect children widgets. |
awful.widget.layoutlist:setup (args) | Set a declarative widget hierarchy description. |
awful.widget.layoutlist:buttons (_buttons) | Set/get a widget’s buttons. |
awful.widget.layoutlist:emit_signal_recursive (signal_name, ...) | Emit a signal and ensure all parent widgets in the hierarchies also forward the signal. |
awful.widget.layoutlist:emit_signal (name, ...) | Emit a signal. |
awful.widget.layoutlist:connect_signal (name, func) | Connect to a signal. |
awful.widget.layoutlist:weak_connect_signal (name, func) | Connect to a signal weakly. |
Functions
Methods- awful.widget.layoutlist (args)
-
Create a layout list.
- args
- layout widget The widget layout (not to be confused with client layout).
- buttons
table
The list of
awful.buttons
. (default nil) - source function A function to generate the list of layouts. (default awful.widget.layoutlist.source.for_screen)
- widget_template table A custom widget to be used for each action. (optional)
- screen screen A screen (default ascreen.focused())
- buttons
table
The list of
awful.buttons
. (default nil) - style table Extra look and feel parameters (default {})
- style.disable_icon boolean
- style.disable_name boolean
- style.fg_normal string or pattern
- style.bg_normal string or pattern
- style.fg_selected string or pattern
- style.bg_selected string or pattern
- style.font string
- style.font_selected string
- style.align string left, right or center
- style.spacing number
- style.shape gears.shape
- style.shape_border_width number
- style.shape_border_color string or pattern
- style.shape_selected gears.shape
- style.shape_border_width_selected string or pattern
- style.shape_border_color_selected string or pattern
Returns:
-
widget
The action widget.
- args
Object properties
- base_layout
-
The layoutlist default widget layout.
If no layout is specified, a wibox.layout.fixed.vertical will be created
automatically.
Type:
- widget
See also:
- widget_template
-
The delegate widget template.
Type:
- table
- screen
-
The layoutlist screen.
Type:
- screen
- source
-
A function that returns the list of layout to display.
Type:
- function (default awful.widget.layoutlist.source.for_screen)
- filter
-
The layoutlist filter function.
Type:
- function (default awful.widget.layoutlist.source.for_screen)
- buttons
-
The layoutlist buttons.
The default is:
gears.table.join( awful.button({ }, 1, awful.layout.set) )
Type:
- table
- layouts
-
The currenly displayed layouts.
Type:
- table
- current_layout
-
The currently selected layout.
Type:
- layout
- forced_height
-
Force a widget height.
Type:
- height
number or nil
The height (
nil
for automatic)
- height
number or nil
The height (
- forced_width
-
Force a widget width.
Type:
- width
number or nil
The width (
nil
for automatic)
- width
number or nil
The width (
- 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:
- find_widgets_result The entry from the result of
wibox.drawable:find_widgets for the position that the mouse hit.
- 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 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:
- find_widgets_result The entry from the result of
wibox.drawable:find_widgets for the position that the mouse hit.
Theme variables
- beautiful.layoutlist_fg_normal
-
The default foreground (text) color.
Type:
- fg_normal string or pattern (default nil)
See also:
- beautiful.layoutlist_bg_normal
-
The default background color.
Type:
- bg_normal string or pattern (default nil)
See also:
- beautiful.layoutlist_fg_selected
-
The selected layout foreground (text) color.
Type:
- fg_selected string or pattern (default nil)
See also:
- beautiful.layoutlist_bg_selected
-
The selected layout background color.
Type:
- bg_selected string or pattern (default nil)
See also:
- beautiful.layoutlist_disable_icon
-
Disable the layout icons (only show the name label).
Type:
- layoutlist_disable_icon boolean (default false)
- beautiful.layoutlist_disable_name
-
Disable the layout name label (only show the icon).
Type:
- layoutlist_disable_name boolean (default false)
- beautiful.layoutlist_font
-
The layoutlist font.
Type:
- font string (default nil)
- beautiful.layoutlist_align
-
The selected layout alignment.
Type:
- align string left, right or center (default left)
- beautiful.layoutlist_font_selected
-
The selected layout title font.
Type:
- font_selected string (default nil)
- beautiful.layoutlist_spacing
-
The space between the layouts.
Type:
- spacing number The spacing between tasks. (default 0)
- beautiful.layoutlist_shape
-
The default layoutlist elements shape.
Type:
- shape gears.shape (default nil)
- beautiful.layoutlist_shape_border_width
-
The default layoutlist elements border width.
Type:
- shape_border_width number (default 0)
- beautiful.layoutlist_shape_border_color
-
The default layoutlist elements border color.
Type:
- shape_border_color string or color (default nil)
See also:
- beautiful.layoutlist_shape_selected
-
The selected layout shape.
Type:
- shape_selected gears.shape (default nil)
- beautiful.layoutlist_shape_border_width_selected
-
The selected layout border width.
Type:
- shape_border_width_selected number (default 0)
- beautiful.layoutlist_shape_border_color_selected
-
The selected layout border color.
Type:
- shape_border_color_selected string or color (default nil)
See also:
List source functions
- awful.widget.layoutlist.source.for_screen
-
The layout list for the first selected tag of a screen.
- s screen The screen.
- awful.widget.layoutlist.source.current_screen
-
The layouts available for the first selected tag of
awful.screen.focused()
. - awful.widget.layoutlist.source.default_layouts
-
The default layout list.
See also:
Methods
- awful.widget.layoutlist:get_all_children ()
-
Get all direct and indirect children widgets.
This will scan all containers recursively to find widgets
Warning: This method it prone to stack overflow id the widget, or any of its
children, contain (directly or indirectly) itself.
Returns:
-
table
The children
- awful.widget.layoutlist:setup (args)
-
Set a declarative widget hierarchy description.
See The declarative layout system
- args An array containing the widgets disposition
- awful.widget.layoutlist:buttons (_buttons)
-
Set/get a widget’s buttons.
- _buttons The table of buttons that should bind to the widget.
- awful.widget.layoutlist:emit_signal_recursive (signal_name, ...)
-
Emit a signal and ensure all parent widgets in the hierarchies also
forward the signal. This is useful to track signals when there is a dynamic
set of containers and layouts wrapping the widget.
- signal_name string
- ... Other arguments
- awful.widget.layoutlist:emit_signal (name, ...)
-
Emit a signal.
- name string The name of the signal.
- ... Extra arguments for the callback functions. Each connected function receives the object as first argument and then any extra arguments that are given to emit_signal().
- awful.widget.layoutlist:connect_signal (name, func)
-
Connect to a signal.
- name string The name of the signal.
- func function The callback to call when the signal is emitted.
- awful.widget.layoutlist:weak_connect_signal (name, func)
-
Connect to a signal weakly.
This allows the callback function to be garbage collected and automatically disconnects the signal when that happens.
Warning: Only use this function if you really, really, really know what you are doing.
- name string The name of the signal.
- func function The callback to call when the signal is emitted.