diff --git a/CHANGELOG.md b/CHANGELOG.md index 52625a99..39037a37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Changelog + All notable changes to this project will be documented in this file. Each release should have the following subsections, if entries exist, in the given order: `Breaking`, `Build`, `Deprecated`, `Removed`, `Added`, `Changed`, @@ -121,6 +122,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `internal/backlight`: With amdgpu backlights, the brightness indicator was slightly behind. ([`#2367](https://github.com/polybar/polybar/issues/2367)) +## [3.5.6] - 2021-05-24 +### Build +- Support building documentation on sphinx 4.0 ([`#2424`](https://github.com/polybar/polybar/issues/2424)) +### Fixed +- Tray icons sometimes appears outside of bar ([`#2430`](https://github.com/polybar/polybar/issues/2430), [`#1679`](https://github.com/polybar/polybar/issues/1679)) +- Crash in the i3 module ([`#2416`](https://github.com/polybar/polybar/issues/2416)) + ## [3.5.5] - 2021-03-01 ### Build - Support older python sphinx versions again ([`#2356`](https://github.com/polybar/polybar/issues/2356)) @@ -135,7 +143,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Empty color values are no longer treated as invalid and no longer produce an error. -[Unreleased]: https://github.com/polybar/polybar/compare/3.5.5...HEAD +[Unreleased]: https://github.com/polybar/polybar/compare/3.5.6...HEAD +[3.5.6]: https://github.com/polybar/polybar/releases/tag/3.5.6 [3.5.5]: https://github.com/polybar/polybar/releases/tag/3.5.5 [3.5.4]: https://github.com/polybar/polybar/releases/tag/3.5.4 [3.5.3]: https://github.com/polybar/polybar/releases/tag/3.5.3 diff --git a/doc/conf.py b/doc/conf.py index 9bd12125..656c7291 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -185,6 +185,9 @@ man_pages = [ ('man/polybar.5', 'polybar', 'configuration file for polybar(1)', [], 5) ] +man_make_section_directory = False + + # -- Options for Texinfo output ---------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples diff --git a/src/x11/tray_client.cpp b/src/x11/tray_client.cpp index 9075083f..12978fad 100644 --- a/src/x11/tray_client.cpp +++ b/src/x11/tray_client.cpp @@ -1,9 +1,10 @@ +#include "x11/tray_client.hpp" + #include #include #include "utils/memory.hpp" #include "x11/connection.hpp" -#include "x11/tray_client.hpp" #include "x11/xembed.hpp" POLYBAR_NS @@ -28,11 +29,7 @@ unsigned int tray_client::height() const { } void tray_client::clear_window() const { - try { - m_connection.clear_area_checked(1, window(), 0, 0, width(), height()); - } catch (const xpp::x::error::window& err) { - // ignore - } + m_connection.clear_area_checked(1, window(), 0, 0, width(), height()); } /** diff --git a/src/x11/tray_manager.cpp b/src/x11/tray_manager.cpp index 66bca404..f6ff9489 100644 --- a/src/x11/tray_manager.cpp +++ b/src/x11/tray_manager.cpp @@ -427,13 +427,21 @@ void tray_manager::refresh_window() { m_connection.poly_fill_rectangle(m_pixmap, m_gc, 1, &rect); } - if (m_surface) + if (m_surface) { m_surface->flush(); + } m_connection.clear_area(0, m_tray, 0, 0, width, height); for (auto&& client : m_clients) { - client->clear_window(); + try { + if (client->mapped()) { + client->clear_window(); + } + } catch (const std::exception& e) { + m_log.err("Failed to clear tray client %s '%s' (%s)", m_connection.id(client->window()), + ewmh_util::get_wm_name(client->window()), e.what()); + } } m_connection.flush(); @@ -477,8 +485,8 @@ void tray_manager::create_window() { << cw_class(XCB_WINDOW_CLASS_INPUT_OUTPUT) << cw_params_backing_store(XCB_BACKING_STORE_WHEN_MAPPED) << cw_params_event_mask(XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT - |XCB_EVENT_MASK_STRUCTURE_NOTIFY - |XCB_EVENT_MASK_EXPOSURE) + |XCB_EVENT_MASK_STRUCTURE_NOTIFY + |XCB_EVENT_MASK_EXPOSURE) << cw_params_override_redirect(true); // clang-format on @@ -726,7 +734,7 @@ void tray_manager::track_selection_owner(xcb_window_t owner) { * Process client docking request */ void tray_manager::process_docking_request(xcb_window_t win) { - m_log.info("Processing docking request from %s", m_connection.id(win)); + m_log.info("Processing docking request from '%s' (%s)", ewmh_util::get_wm_name(win), m_connection.id(win)); m_clients.emplace_back(factory_util::shared(m_connection, win, m_opts.width, m_opts.height)); auto& client = m_clients.back(); @@ -734,18 +742,15 @@ void tray_manager::process_docking_request(xcb_window_t win) { try { m_log.trace("tray: Get client _XEMBED_INFO"); xembed::query(m_connection, win, client->xembed()); - } catch (const application_error& err) { - m_log.err(err.what()); - } catch (const xpp::x::error::window& err) { + } catch (const std::exception& err) { m_log.err("Failed to query _XEMBED_INFO, removing client... (%s)", err.what()); remove_client(win, true); return; } try { - const unsigned int mask{XCB_CW_BACK_PIXMAP | XCB_CW_EVENT_MASK}; - const unsigned int values[]{ - XCB_BACK_PIXMAP_PARENT_RELATIVE, XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY}; + const unsigned int mask = XCB_CW_EVENT_MASK; + const unsigned int values[]{XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY}; m_log.trace("tray: Update client window"); m_connection.change_window_attributes_checked(client->window(), mask, values); @@ -767,8 +772,9 @@ void tray_manager::process_docking_request(xcb_window_t win) { m_log.trace("tray: Map client"); m_connection.map_window_checked(client->window()); } - } catch (const xpp::x::error::window& err) { - m_log.err("Failed to setup tray client, removing... (%s)", err.what()); + + } catch (const std::exception& err) { + m_log.err("Failed to setup tray client removing... (%s)", err.what()); remove_client(win, false); } } diff --git a/version.txt b/version.txt index 207bcec8..e870d52e 100644 --- a/version.txt +++ b/version.txt @@ -1,4 +1,4 @@ # Polybar version information # Update this on every release # This is used to create the version string if a git repo is not available -3.5.5 +3.5.6