AwesomeWM Awesome Versions Save

awesome window manager

v4.3

5 years ago

Awesome v4.3 is the third release of the 4.x API. It comes after one and a half years of little fixes and improvements. Awesome v4.2 was very stable thanks to everybody's effort to unit test everything. Given no major bug warranted a new release, this one adds a few large features while preserving full compatibility with existing user configurations.

New features

  • gears.string now has a endswith and startswith functions
  • luarocks modules are now automatically available in Awesome
  • A generic way to create or use widgets has been added (wibox.widget.base.make_widget_from_value)
  • It is now possible to connect to signals from all instances of a widget at once
  • The calendar widget now supports margins
  • The documentation has a new theme
  • Wiboxes now have to_widget() and save_to_svg() methods.
  • The client objects now have a immobilized_horizontal and immobilized_vertical property to know if they can currently be moved or resized (for example, it is set to false when maximized)
  • gears.timer objects now have a call_now method.
  • The hotkey popup now supports termite keybindings
  • The menubar loads faster
  • Wiboxes have an input_passthrough property to send mouse clicks to the object below.
  • The taglist and tasklist now support the declarative constructor syntax
  • There is now an awesome.pixbuf_to_surface to convert a GdkPixbuf to a cairo surface.
  • The notifications icon can now be resized and limited with notification_icon_size
  • A gears.sort module has been added with graph resolution
  • awesome-client now runs code in a protected context
  • The widget documentation has been extended to be more friendly to new users.
  • There is a new beautiful.maximized_hide_border theme option to hide the border for maximized clients.
  • The client startup_id field is now writable. This is useful when the client native implementation is not present or too buggy to be used.
  • The awful.widget.prompt now has a with_shell option to allow Bash/ZSH aliases, function and environment variables to be used in commands.
  • The awful.titlebars now have a fallback_name when a client has no name property.
  • Clients now have a motif_wm_hints property to reflect some hints using the Motif X11 property extension. This is used by some modern toolkits including GTK.
  • Clients now have a requests_no_titlebar property to expose when a client has client side titlebars (also known as decorations and CSD)
  • The hotkey popup now has a show_awesome_keys option.
  • The awful.widget.prompt now has more of the awful.prompt constructor arguments.
  • It is now possible to set a list of layouts per tag instead of a single global one.
  • There is now a awful.layout.get_tag_layout_index() function to get the index of the current layout in the global layout list (awful.layout..layouts)
  • The wibox.layout.manual layout now has an :insert() method.

Better DPI handling

The screen now has a read/write dpi property and awful.screen.set_auto_dpi_enabled(true) can be used to automatically set the DPI for many Awesome elements. Please note that it is not backward compatible and breaks many widget. As AwesomeWM always used pixels as the de-facto metric for sizes, enabling auto_dpi will break most existing configs. However, for people who use such setup, it might be worth speding some time to fix their config.

Extendable awful.rules providers and better awful.spawn functions

There is two new functions called awful.rules.add_rule_source and awful.rules.remove_rule_source. They allow to create a dependency graph for where a rule comes from and which provider has the priority when setting it.

Previously, there were the normal properties, awful.rules.high_priority_properties and awful.rules.delayed_properties. This didn't scale and could not represent all corner cases. Those table still exist and are still honored, but there is now a system that can handle the full complexity of the property priority graph.

This is used by default in awful.spawn. The reliability of attaching properties to spawn calls has been improved. On top of this, three new functions were added

  • awful.spawn.once
  • awful.spawn.single_instance
  • awful.spawn.raise_or_spawn

They allow to specify that a command should only have one running instance. This works across restart too, so all hacks to handle restarting Awesome are no longer required.

Note that the client.startup_id isn't supported by all applications and a Linux-specific workaround is recommended to improve the reliability of the awful.spawn functions.

A brand new keygrabber API

The keygrabber module API was rebuilt from scratch to make it more usable. The previous API was very low level, very close to how it actually work, but was disconnected from how keygrabbers are used in a window manager. Getting anything done with the previous API required a lot of boilerplate code and had many corner cases to handle. The new API has built-in support for the most common use cases and is fully declarative.

A new GTK color palette based theme

A new theme has been added. It reads the GTK theme colors and use them in the wibar, menu and titlebar. It helps create an uniform look and feel between the window manager and client applications with minimal efforts.

Widgets improvements

  • The wibox.widget.separator widget was added.
  • It is now possible to set spacing widgets for all layouts.
  • The awful.widget.taglist and awful.widget.tasklist now support creating custom widgets for each elements.
  • A new popup widget allows to bypass most of the boilerplate code and easily display widgets on the screen.
  • The awful.widget.layoutlist allows to easily display and select the client layout from a widget.

Noteworthy fixes

  • There is no longer an error when a tag defined by name in awful.rules is not found.
  • The menubar is now generally more robust thanks to a variety of improvements
  • Many dead links in the documentation have been fixed
  • The textclock is now generally more robust with formatting issues, timezones and declarative constructors.
  • The last screen is never removed. Previously, some laptops removed all screens during suspend, causing all clients to go to the first tag or getting lost completely.
  • The new default rc.lua uses request::activate to set the focus. This fixes many corner case such as unfocusable clients getting the focus.
  • Calling awful.spawn with a set of properties is now more reliable.
  • awful.key.execute is now much more reliable.

Behavior changes

  • Previously, when accessing a screen by RandR output name caused a Lua error when no output with the given name exists. This was changed to now return nil instead. This could break code that uses pcall to check if a screen exists. This code now needs to be changed to check for a nil return instead. In practice it is unlikely anyone will notice the difference.
  • In the previous release, unfocusable clients might also not be raised. It was decided that this is a bug and the default behavior was changed.

v4.2

6 years ago

Awesome v4.2 is the second release of the 4.x API. It mostly fixes the bugs reported over the last 3 months and adds a couple widgets. Almost 150 issues have been resolved or decided to be obsolete.

Noteworthy fixes

  • The annoying maximization regression from v4.1 has been fixed
  • Fixes broken drag&drop with some applications like FlowBlade
  • Changing the keyboard layout using xmodmap is now much faster
  • Fixes a regression that prevents Awesome to start when the wallpaper is invalid
  • The client history is now more reliable
  • Another instance where clients ended up in the wrong screen has been fixed
  • Awesome will no longer generate zombie processes when restarted
  • All official themes now support HiDPI screens
  • The magnifier layout has been fixed
  • The menubar has been fixed for Lua 5.1 users

New features

  • The hotkey popup has been extended to support Firefox, Qutebrowser and TMUX
  • Naughty (the notification system) has a new ignore_suspend flag
  • The textclock widget now supports timezones
  • New utility functions have been added:
    • gears.string.split
    • gears.table.map
    • gears.filesystem.make_parent_directories
  • New widget functions (moved out of the gears module):
    • wibox.widget.draw_to_cairo_context
    • wibox.widget.draw_to_svg_file
    • wibox.widget.draw_to_image_surface
  • Maximization requests from clients can now be intercepted using a request::geometry signal handler.
  • A new wibox.layout.manual layout has been added (see below)
  • Two new calendar widgets have been added, a widget and a popup (see below)
  • The ratio layout now supports various strategies to redistribute space
  • The stack layout now supports offsets
  • The notifications now have a naughty.destroy_all_notifications() function
  • The xresources theme now supports the titlebar hover and press states

Behavior changes

  • The client property::floating is now also emitted when the floating state changes implicitly, e.g. because the client gets maximized or fullscreened.
  • Building Awesome from its root source directory is no longer supported and will print an error.

v4.1

7 years ago

Awesome v4.1 is the first stable release for the Awesome 4.0 API. It adds non-breaking new features and fixes bugs. The main purpose of the release is to provide stability while also adding features submitted by our contributors. This release contains about 350 commits by 35 contributors, including many new developers. Thanks a lot.

New features

The shape API has been extended to both client, notifications and wibox.

The prompt now supports syntax highlight and more advanced key hooks.

The prompt widget gained many new themes variables.

There is a new 2D grid layout with rowspan and colspan support.

There is a new only_on_screen container to make it easier to share wiboxes across multiple screens.

Various documentation improvements. Thanks for the feedbacks.

The taglist now has volatile theme variables.

There is now extra enviroment variables such as AWESOME_ICON_PATH and AWESOME_THEMES_PATH for those who prefer not installing Awesome.

Dynamic "C" Lua libraries are now detected like pure Lua ones.

gears.timer gained many new constructor arguments to make it easier to use.

Input shape mask are now supported. It is possible to create a wibox with passthough inputs.

There is a new awful.widget.client_icon widget capable of fetching icons of different sizes.

New theme variables

This release adds a ton of new theme variables to make Awesome prettier. We also thank all users who submitted screenshot.

theme.arcchart_thickness
theme.enable_spawn_cursor
theme.fullscreen_hide_border
theme.hotkeys_bg
theme.hotkeys_border_colo
theme.hotkeys_border_width
theme.hotkeys_description_font
theme.hotkeys_fg
theme.hotkeys_font
theme.hotkeys_group_margin
theme.hotkeys_label_bg
theme.hotkeys_label_fg
theme.hotkeys_modifiers_fg
theme.hotkeys_shape
theme.maximized_honor_padding
theme.notification_bg
theme.notification_border_color
theme.notification_border_width
theme.notification_fg
theme.notification_font
theme.notification_height
theme.notification_margin
theme.notification_opacity
theme.notification_shape
theme.notification_width
theme.prompt_bg_cursor
theme.prompt_bg
theme.prompt_fg_cursor
theme.prompt_fg
theme.prompt_font
theme.taglist_bg_volatile
theme.taglist_fg_volatile
theme.taglist_shape_border_color_volatile
theme.taglist_shape_border_width_volatile
theme.taglist_shape_volatile
theme.taglist_spacing
theme.tasklist_disable_icon
theme.tasklist_disable_task_name
theme.titlebar_close_button_focus_hover
theme.titlebar_close_button_focus_press
theme.titlebar_close_button_normal_hover
theme.titlebar_close_button_normal_press
theme.titlebar_floating_button_focus_active_hover
theme.titlebar_floating_button_focus_active_press
theme.titlebar_floating_button_focus_inactive_hover
theme.titlebar_floating_button_focus_inactive_press
theme.titlebar_floating_button_normal_active_hover
theme.titlebar_floating_button_normal_active_press
theme.titlebar_floating_button_normal_inactive_hover
theme.titlebar_floating_button_normal_inactive_press
theme.titlebar_maximized_button_focus_active_hover
theme.titlebar_maximized_button_focus_active_press
theme.titlebar_maximized_button_focus_inactive_hover
theme.titlebar_maximized_button_focus_inactive_press
theme.titlebar_maximized_button_normal_active_hover
theme.titlebar_maximized_button_normal_active_press
theme.titlebar_maximized_button_normal_inactive_hover
theme.titlebar_maximized_button_normal_inactive_press
theme.titlebar_minimize_button_focus_hover
theme.titlebar_minimize_button_focus_press
theme.titlebar_minimize_button_normal_hover
theme.titlebar_minimize_button_normal_press
theme.titlebar_ontop_button_focus_active_hover
theme.titlebar_ontop_button_focus_active_press
theme.titlebar_ontop_button_focus_inactive_hover
theme.titlebar_ontop_button_focus_inactive_press
theme.titlebar_ontop_button_normal_active_hover
theme.titlebar_ontop_button_normal_active_press
theme.titlebar_ontop_button_normal_inactive_hover
theme.titlebar_ontop_button_normal_inactive_press
theme.titlebar_sticky_button_focus_active_hover
theme.titlebar_sticky_button_focus_active_press
theme.titlebar_sticky_button_focus_inactive_hover
theme.titlebar_sticky_button_focus_inactive_press
theme.titlebar_sticky_button_normal_active_hover
theme.titlebar_sticky_button_normal_active_press
theme.titlebar_sticky_button_normal_inactive_hover
theme.titlebar_sticky_button_normal_inactive_press
theme.wibar_bgimage
theme.wibar_bg
theme.wibar_border_color
theme.wibar_border_width
theme.wibar_cursor
theme.wibar_fg
theme.wibar_height
theme.wibar_ontop
theme.wibar_opacity
theme.wibar_shape
theme.wibar_stretch
theme.wibar_type
theme.wibar_width

Noteworthy fixes

  • Some applications such as VLC and Terminator had large unpainted areas
  • The magnifier layout has been fixed
  • Un-maximization misbehaved
  • Docking area is now per-tag again
  • CMake missing dependencies detection is fixed
  • Support for FreeBSD and OpenBSD have been restored.
  • Dialog and transient window can be moved to other screens again
  • The fallback mode (when Awesome fails to load rc.lua) is now more robust

Behavior changes

This is a stable release and we tried to minimize any upgrade impact. However various bugfixes induced minor, not noticeable, changes:

  • HiDPI support fix changed the default theme "taglist square". This is only true if the original theme file is used (not a copy).
  • Maximization now honor the screen padding. There is an option to restore the previous behavior.
  • Un-maximized clients are now restored to their current screen instead of the screen where they were maximized.
  • Hotkey popup no longer enable the Vim module by default due to user complaints

awful.util has been split into multiple modules in the gears library to reduce the dependency graph. This allows for better unit testing. awful.util will be deprecated in Awesome v5. For now, it is still safe to use it. However, new code should use the functions from gears instead of awful.util.

Other

  • The minimal LGI version is now 0.8.0. It was found that Awesome 4.0 also had an issue in the menubar module when used with 0.7.3.
  • GTK+3 is now required to run the integration tests.

v4.0

7 years ago

Highlights:

  • RandR screen changes without restarting
  • Lots of API improvements
  • Many new widgets and layouts
  • More efficient wibox redraws

For more information, look at the NEWS file (permanent link).