Adds a dependency array system to `recv_glib` which internally clones the passed deps and then passes by reference to the callback.
This cleans up a lot of the big `{}` blocks full of `widget.clone()` and removes a lot of boilerplate. Yay!
Adds a new Menu module which allows users to create XDG or custom menus that open after clicking on a button.
Resolves#534
Co-authored-by: Jake Stanger <mail@jstanger.dev>
Rewrites the desktop file parser code and image resolver code to introduce caching system and make fully async. They should be much faster now.
BREAKING CHANGE: The `icon_theme` setting has been moved from per-bar to top-level
Due to a GTK bug, the bar relied on GDK and the compositor reporting monitors in the same order. This broke down when monitors were connected, or occasionally on reload.
This reverts the workaround put in place for the bug, since it has since been patched upstream
Aparently Rust doesn't implicitly cast a `Result<Arc<T>>` to
`Result<Arc<dyn T>>`, so the `Result` was being mapped with a explicity
cast.
But unwrapping the `Result` with a `?` and then wrapping it back into
`Ok` make the implicit cast work. This avoid typing the entire type,
which was breaking the code in multiple lines.
This allows Ironbar to run on a wider range of compositors, where support for the `wlr_foreign_toplevel` protocol used by focused/launcher, and the `wlr_data_control_device` protocol used by clipboard is missing
* Fix compilation for many feature combinations
* fix: keep Mpris as the default music player type
* fix: update futures-lite comment
* fix: remove redundant "clap" feature dependency from "cli"
* fix: don't make IPC a dependency of sysinfo module
* refactor: move serde_json feature to "shared" section
* refactor: avoid cfgs inside listen_workspace_events
by splitting list_keyboards_events out of it, which manages its own
connection to the Hyprland IPC socket.
* refactor: sort multiline cfg any's
* Revert "refactor: avoid cfgs inside listen_workspace_events"
This reverts commit 1b4202ed80c9483c609ada8c4436e0fec26a9eef.
* refactor: split listen_workspace_events in more functions
* style: fix broken identation
Not sure why rustfmt didn't catch this.