Attempting to focus a newly opened window from the launcher popup attempted to close the popup directly in an invalid manner, which caused the bar to hard crash. The controller already handles this correctly, so removed this code.
Resolves#41🎉
Previously images that could not be located were handled by throwing a
full report error, which incorrectly stated it was an invalid image
*type*.
This changes the image handling to instead log a single-line warning
directly in the image provider code, reducing the error handling
required by each consumer.
Resolves#146.
BREAKING CHANGE: To allow for the `name` property, any widgets that were previously targeted by name should be targeted by class instead. This affects **all modules and all popups**, as well as several widgets inside modules. **This will break a lot of rules in your stylesheet**. To attempt to mitigate the damage, a migration script can be found [here](https://raw.githubusercontent.com/JakeStanger/ironbar/master/scripts/migrate-styles.sh) that should get you most of the way.
Resolves#75.
* feat: more positioning options
Can now display the bar on the left/right, and avoid anchoring to edges to centre the bar.
BREAKING CHANGE: The `left` and `right` config options have been renamed to `start` and `end`
* refactor: major module restructuring
Modules now implement a "controller", which allows for separation of logic from UI code and enforces a tighter structure around how modules should be written. The introduction of this change required major refactoring or even rewriting of all modules.
This also better integrates the popup into modules, making it easier for data to be passed around without fetching the same thing twice
The refactor also improves some client code, switching from `ksway` to the much more stable `swayipc-async`. Partial multi-monitor for the tray module has been added.
BREAKING CHANGE: The `mpd` module config has changed, moving the icons to their own object.
This completely rewrites the item open state handling code (again) in a more logical way that should prevent incorrect states, and removes some locking issues.