Commit Graph
31 Commits
Author SHA1 Message Date
Aleksei Bavshin f01996ae99 fix(bar): CamelCase SurfaceImpl method names 2020-10-28 08:07:40 -07:00
Aleksei Bavshin 7735c80d0e refactor(bar): Split GLS and raw layer-shell implementations
Extract two surface implementations from the bar class: GLSSurfaceImpl
and RawSurfaceImpl. This change allowed to remove _all_ surface type
conditionals and significantly simplify the Bar code.

The change also applies PImpl pattern to the Bar, allowing to remove
some headers and fields from `bar.hpp`.
2020-10-28 07:53:37 -07:00
Aleksei Bavshin 2b3d7be9cb feat(bar): let gtk-layer-shell manage exclusive zone
Previous attempts to use auto exclusive zone from gtk-layer-shell failed
because gls was expecting real booleans (`TRUE`/`FALSE`) as set_anchor
arguments. With that being fixed, gtk_layer_auto_exclusive_zone_enable
makes gls handle everything related to the bar resizing.

The only remaining purpose of onConfigureGLS is to log warnings and bar
size changes; gtk-layer-shell code path no longer needs saved width_ or
height_ values.
2020-10-28 07:53:32 -07:00
Aleksei Bavshin 67d54ef3d5 fix(wlr/taskbar): do not bind to unsupported protocol versions
It's not allowed to bind to a higher version of a wayland protocol than
supported by the client. Binding wlr-foreign-toplevel-manager-v1 v3 to
a generated code for v2 causes errors in libwayland due to a missing
handler for `zwlr_foreign_toplevel_handle_v1.parent` event.
2020-10-25 10:26:44 -07:00
Aleksei Bavshin f4e15dd93d chore(subprojects): update gtk-layer-shell to 0.3.0
Fixes warning about xdg_wm_base.version mismatch.
Fixes potential crash when GTK does not expect wl_surface to be committed.
2020-08-14 23:53:44 -07:00
Aleksei Bavshin 3663b9193d refactor(bar): separate GTK event handlers for gtk-layer-shell
Cleanly separate resizing logic for gtk-layer-shell and manually managed
layer surface code.
2020-08-14 22:47:57 -07:00
Aleksei Bavshin dcc0201b45 chore(protocol): update wlr-layer-shell-unstable-v1 protocol.
Statically linked gtk-layer-shell would use layer-shell protocol object
file from waybar and print runtime warning if the version does not match
2020-08-05 09:46:21 -07:00
Aleksei Bavshin 66aa3574d9 chore(subprojects): update gtk-layer-shell to 0.2.0
Fixes: #530, fixes #750
2020-08-05 09:46:10 -07:00
Aleksei Bavshin 40d3f1c1fe chore(subprojects): update date to 3.0.0
Fixes #776, fixes #780
2020-08-05 09:46:01 -07:00
Aleksei Bavshin dd0144c3cd fix(bar): set exclusive zone early for gtk-layer-shell
If the bar is using initial size from the config (i.e both width and
height are set and resize is not required), GtkWindow configure event
is is not emitted. Initialize exclusive zone earlier for that case.

Fixes #609
2020-03-04 06:56:25 -08:00
Aleksei Bavshin e70f8d8730 fix(clock): lower precision of zoned_time to avoid fractional seconds in output 2020-02-06 10:04:22 -08:00
Aleksei Bavshin ae6ca36fa7 fix(sway): resolve destruction dependency between Ipc and SleeperThread
Ipc destructor closes socket and thus wakes up SleeperThread which was
waiting for socket data in Ipc::handleEvent.
Ipc::handleEvent then proceeds with sending signal to already destroyed
object, causing heap-use-after-free Address Sanitizer error.
2020-02-04 23:22:43 -08:00
Aleksei Bavshin f80270519b refactor(client): use std::list<waybar_output> to store outputs
std::unique_ptr is not required here as the only benefit it gives is
stability of address on vector resize and it's easy to invalidate it
accidentaly. std::list provides the same guarantee of stable addresses
of the elements and correct destruction while avoiding smart pointer
overhead.

Also fixes #554, caused by incorrect usage of std::remove_if.
2020-01-14 07:27:08 -08:00
Aleksei Bavshin dde700f2c9 feat: use gtk-layer-shell library for correct positioning of popups
To enable: use sway >= 1.2, compile waybar with `-Dgtk-layer-shell=enabled` meson option.
Original behavior could be restored at runtime by setting `"gtk-layer-shell": false` in waybar config.
2019-12-27 16:42:14 -08:00
Aleksei Bavshin 0e87b3938a deps: meson dependencies for gtk-layer-shell feature 2019-12-27 16:42:13 -08:00
Aleksei Bavshin d1637d34cf refactor: fetch outputs from Gtk::Display instead of wl_registry.
gtk-layer-shell wants Gdk::Monitor instead of wl_output;
change code to deal with Gdk objects and slightly simplify it.
Requires gtkmm 3.22.0+ (first release with Gdk::Monitor support).
2019-12-27 16:42:12 -08:00
Aleksei Bavshin 529daedcec fix: correct handling of margins on anchored axis 2019-09-01 01:08:15 -07:00
Aleksei Bavshin 089d1299c4 fix: correct calculation of exclusive zone 2019-09-01 01:08:07 -07:00
Aleksei Bavshin 01ad3d96d8 fix(tray): pre-create dbusmenu for tray items
It seems that dbusmenu is not ready to display menu immediately and
needs some time to sync data via DBus.
Fixes LIBDBUSMENU-GLIB-CRITICAL: dbusmenu_menuitem_send_about_to_show:
assertion 'DBUSMENU_IS_MENUITEM(mi)' failed.
Also fixes initial render of the menu with layer shell popups support patch.
2019-08-27 00:34:00 -07:00
Aleksei Bavshin 642fd48af1 fix(tray): restore Activate support for compliant SNI implementation
Set ItemIsMenu to true by default because libappindicator supports
neither ItemIsMenu nor Activate method and compiant SNI implementations
are expected to reset the flag during initial property fetch.
To be revisited if anyone finds the implementation that has Activate
but does not set ItemIsMenu.
2019-08-27 00:33:59 -07:00
Aleksei Bavshin 8f9e6c132d fix(network): stack-use-after-return found by address sanitizer
Fixes compilation with clang.
2019-08-27 00:11:40 -07:00
Aleksei Bavshin 50bfe78aed refactor(tray): improve error handling and add debug logs 2019-05-20 08:00:07 -07:00
Aleksei Bavshin afd291a566 fix(tray): Fix glib assertion when old property value is missing
xembedsniproxy sets WindowId as 'i' instead of 'u' and DBus::Proxy
ignores incorrectly typed value.
2019-05-20 07:16:08 -07:00
Aleksei Bavshin 316a9be656 refactor(tray): Use spdlog for SNI::Item error messages 2019-05-20 07:16:08 -07:00
Aleksei Bavshin cdb347aaca Add --log-level command line option 2019-05-20 06:48:44 -07:00
Aleksei Bavshin 5a2b5624dc feat(tray): process tray icon update signals 2019-03-29 18:40:28 -07:00
Aleksei Bavshin 82fcee33b3 refactor(tray): use Gio::DBus bindings in SNI Item class 2019-03-29 18:28:29 -07:00
Aleksei Bavshin 842e8501f9 fix(tray): free icon data on pixbuf update 2019-03-28 10:52:25 -07:00
Aleksei Bavshin 9ad80849b1 fix(pulseaudio): Avoid allocation of string vector on every call of getPortIcon() 2019-03-14 18:35:16 -07:00
Aleksei Bavshin 492d151079 fix(pulseaudio) use case-insensitive comparison for icon lookup 2019-03-14 18:08:12 -07:00
Aleksei Bavshin 00176c9514 fix(sway): ipc client crash when compiled with -D_GLIBCXX_ASSERTIONS
reserve() does not change string size and any access beyond data() + size() is UB
2019-03-14 17:53:45 -07:00