Releases: awesomeWM/awesome
Awesome v4.3
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 aendswith
andstartswith
functionsluarocks
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()
andsave_to_svg()
methods. - The client objects now have a
immobilized_horizontal
andimmobilized_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 acall_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
andtasklist
now support the declarative constructor syntax - There is now an
awesome.pixbuf_to_surface
to convert aGdkPixbuf
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 awith_shell
option to allow Bash/ZSH aliases, function and environment variables to be used in commands. - The
awful.titlebar
s now have afallback_name
when a client has noname
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 theawful.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
andawful.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
usesrequest::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 usespcall
to check if a screen exists. This code now needs to be changed to check for anil
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.
Awesome v4.2
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 titlebarhover
andpress
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.
Awesome v4.1
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.
Awesome v4.0
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).