* feat: add sway-mode module
* refactor: Avoid making multiple connections to SwayIPC
Now `sway::Client` is store in `ironbar.clients`, and allow dynamically
registering event listeners, instead of hardcoding events for Workspace
updates.
Remove the use of `swayipc::Connection` from `sway-mode` module, and
replace it with the new event listener system.
#671
This splits most CLI/IPC commands into two categories:
- `var` for ironvars
- `bar` for controlling individual bars.
It also introduces more commands for visibility, as well as breaking existing ones.
New commands:
- `show`
- `hide`
- `toggle_visible`
- `set_popup_visible`
- `get_popup_visible`
Lastly, the implementation of some existing commands has been improved.
BREAKING CHANGE: All IPC commands have changed. Namely, `type` has been changed to `command`, and bar/var related commands are now under a `subcommand`. The full spec can be found on the wiki.
BREAKING CHANGE: Several CLI commands are now located under the `var` and `bar` categories. Usage of any commands to get/set Ironvars or control bar visibility will need to be updated.
BREAKING CHANGE: The `open_popup` and `close_popup` IPC commands are now called `show_popup` and `hide_popup` respectively.
BREAKING CHANGE: The popup `name` argument has been renamed to `widget_name` on all IPC commands.
BREAKING CHANGE: The `set-visibility` CLI command now takes a `true`/`false` positional argument in place of the `-v` flag.
BREAKING CHANGE: `ok_value` responses will no longer print `ok` as the first line when using the CLI
This PR includes the necessary code changes, CI changes and documentation to generate and deploy a full JSON schema for each release and the master branch, which can be used within config files for autocomplete and type checking.
* Add reverse order for launcher items/favorites
* Add lanucher reverse order to docs
* Add example configs for json,toml,yaml,corn
---------
Co-authored-by: SerraPi <serrapm2@gmail.com>
This allows for some options which are not actually bar-level to be separated, which makes some work moving forward a little easier and keeps things cleaner.
This allows you to configure a default bar to use, then override specific monitors.
Not setting anything at the top level will hide bars which are not explicitly configured.
This actually came about as a bug in the recent refactorings, but now it's a feature :)
Adds two new bar-level options:
- `start_hidden`, which stops a bar from showing when Ironbar starts. It can then be hidden via IPC or auto-hide.
- `autohide`, which takes a delay after which the bar will be hidden when the cursor leaves. Hovering at the screen edge where the bar is located reveals the bar again.
Resolves#167