diff --git a/awesomeConfig.cmake b/awesomeConfig.cmake index 1d4a4e5e0..79eae7e72 100644 --- a/awesomeConfig.cmake +++ b/awesomeConfig.cmake @@ -4,7 +4,7 @@ set(PROJECT_AWE_NAME awesome) # `git describe` later. set(VERSION devel) -set(CODENAME "Human after all") +set(CODENAME "Too long") option(WITH_DBUS "build with D-BUS" ON) option(GENERATE_MANPAGES "generate manpages" ON) diff --git a/docs/89-NEWS.md b/docs/89-NEWS.md index 736c2fd13..90a0355c5 100644 --- a/docs/89-NEWS.md +++ b/docs/89-NEWS.md @@ -1,10 +1,189 @@ # NEWS + +# Awesome window manager framework version 4.3 changes + +
+ +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.titlebar`s 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 following widgets have been added: + + + + + + + + + + +
NameExample
+ wibox.widget.separator +
+ +It is now possible to set `spacing` widgets for all layouts: + +[![The separator widget](../images/AUTOGEN_wibox_layout_flex_spacing_widget.svg)](../classes/wibox.layout.flex.html#wibox.layout.flex.spacing_widget) + +The `awful.widget.taglist` and `awful.widget.tasklist` now support creating +custom widgets for each elements: + +[![The separator widget](../images/AUTOGEN_wibox_awidget_taglist_indexed.svg)](../classes/wibox.layout.flex.html#wibox.layout.flex.spacing_widget) + +[![The separator widget](../images/AUTOGEN_wibox_awidget_tasklist_rounded.svg)](../classes/wibox.layout.flex.html#wibox.layout.flex.spacing_widget) + +[![The separator widget](../images/AUTOGEN_wibox_awidget_tasklist_windows10.svg)](../classes/wibox.layout.flex.html#wibox.layout.flex.spacing_widget) + +A new `popup` widget allows to bypass most of the boilerplate code and easily +display widgets on the screen: + +[![The ratio strategies](../images/AUTOGEN_awful_popup_wiboxtypes.svg)](../classes/awful.popup.html) + + +The `awful.widget.layoutlist` allows to easily display and select the client +layout from a widget: + +[![The layoutbox](../images/AUTOGEN_awful_widget_layoutlist_bar.svg)](../classes/awful.widget.layoutlist.html) + + +## 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. + # Awesome window manager framework version 4.2 changes -
- 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.