mirror of
https://github.com/swaywm/sway.git
synced 2025-11-01 22:58:41 -04:00
swaybar: handle mode/hidden_state changes
As well as adding the hidden_state property to the bar config struct, this commit handles barconfig_update events when the mode or hidden_state changes, and uses a new function determine_bar_visibility to hide or show the bar as required, using, respectively, destroy_layer_surface, which is also newly added, and add_layer_surface, which has been changed to allow dynamically adding the surface.
This commit is contained in:
parent
55ca16f2d8
commit
bcc61e5147
6 changed files with 127 additions and 11 deletions
|
|
@ -50,6 +50,11 @@ struct swaybar {
|
|||
char *mode;
|
||||
bool mode_pango_markup;
|
||||
|
||||
// only relevant when bar is in "hide" mode
|
||||
bool visible_by_modifier;
|
||||
bool visible_by_urgency;
|
||||
bool visible;
|
||||
|
||||
struct wl_display *display;
|
||||
struct wl_compositor *compositor;
|
||||
struct zwlr_layer_shell_v1 *layer_shell;
|
||||
|
|
@ -104,6 +109,19 @@ bool bar_setup(struct swaybar *bar, const char *socket_path);
|
|||
void bar_run(struct swaybar *bar);
|
||||
void bar_teardown(struct swaybar *bar);
|
||||
|
||||
/*
|
||||
* Determines whether the bar should be visible and changes it to be so.
|
||||
* If the current visibility of the bar is the different to what it should be,
|
||||
* then it adds or destroys the layer surface as required,
|
||||
* as well as sending the cont or stop signal to the status command.
|
||||
* If the current visibility of the bar is already what it should be,
|
||||
* then this function is a no-op, unless moving_layer is true, which occurs
|
||||
* when the bar changes from "hide" to "dock" mode or vice versa, and the bar
|
||||
* needs to be destroyed and re-added in order to change its layer.
|
||||
*
|
||||
* Returns true if the bar is now visible, otherwise false.
|
||||
*/
|
||||
bool determine_bar_visibility(struct swaybar *bar, bool moving_layer);
|
||||
void free_hotspots(struct wl_list *list);
|
||||
void free_workspaces(struct wl_list *list);
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ struct swaybar_config {
|
|||
char *font;
|
||||
char *sep_symbol;
|
||||
char *mode;
|
||||
char *hidden_state;
|
||||
bool strip_workspace_numbers;
|
||||
bool binding_mode_indicator;
|
||||
bool wrap_scroll;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue