This commit is contained in:
Zandr Martin 2016-08-06 10:07:42 +00:00 committed by GitHub
commit bf51941546
6 changed files with 20 additions and 2 deletions

View file

@ -13,6 +13,10 @@ void ipc_bar_init(struct bar *bar, const char *bar_id);
*/ */
bool handle_ipc_event(struct bar *bar); bool handle_ipc_event(struct bar *bar);
/**
* Tell Sway to rearrange layout (after Swaybar has rendered itself).
*/
void ipc_send_arrange_command();
/** /**
* Send workspace command to sway * Send workspace command to sway
@ -20,4 +24,3 @@ bool handle_ipc_event(struct bar *bar);
void ipc_send_workspace_command(const char *workspace_name); void ipc_send_workspace_command(const char *workspace_name);
#endif /* _SWAYBAR_IPC_H */ #endif /* _SWAYBAR_IPC_H */

View file

@ -137,7 +137,7 @@ struct bar_config {
int height; // -1 not defined int height; // -1 not defined
int tray_padding; int tray_padding;
bool workspace_buttons; bool workspace_buttons;
bool wrap_scroll; bool wrap_scroll;
char *separator_symbol; char *separator_symbol;
bool strip_workspace_numbers; bool strip_workspace_numbers;
bool binding_mode_indicator; bool binding_mode_indicator;

View file

@ -11,6 +11,7 @@ enum ipc_command_type {
IPC_GET_BAR_CONFIG = 6, IPC_GET_BAR_CONFIG = 6,
IPC_GET_VERSION = 7, IPC_GET_VERSION = 7,
IPC_GET_INPUTS = 8, IPC_GET_INPUTS = 8,
IPC_ARRANGE_LAYOUT = 9,
// Events send from sway to clients. Events have the highest bits set. // Events send from sway to clients. Events have the highest bits set.
IPC_EVENT_WORKSPACE = ((1<<31) | 0), IPC_EVENT_WORKSPACE = ((1<<31) | 0),
IPC_EVENT_OUTPUT = ((1<<31) | 1), IPC_EVENT_OUTPUT = ((1<<31) | 1),

View file

@ -476,6 +476,13 @@ void ipc_client_handle_command(struct ipc_client *client) {
goto exit_cleanup; goto exit_cleanup;
} }
case IPC_ARRANGE_LAYOUT:
{
arrange_windows(&root_container, -1, -1);
ipc_send_reply(client, "{\"success\": true}", 17);
goto exit_cleanup;
}
default: default:
sway_log(L_INFO, "Unknown IPC command type %i", client->current_command); sway_log(L_INFO, "Unknown IPC command type %i", client->current_command);
goto exit_cleanup; goto exit_cleanup;

View file

@ -202,6 +202,7 @@ void bar_run(struct bar *bar) {
render(output, bar->config, bar->status); render(output, bar->config, bar->status);
window_render(output->window); window_render(output->window);
wl_display_flush(output->registry->display); wl_display_flush(output->registry->display);
ipc_send_arrange_command();
} }
} }
} }

View file

@ -7,6 +7,12 @@
#include "bar/config.h" #include "bar/config.h"
#include "bar/ipc.h" #include "bar/ipc.h"
void ipc_send_arrange_command() {
char *cmd = strdup("");
uint32_t len = strlen(cmd);
ipc_single_command(swaybar.ipc_socketfd, IPC_ARRANGE_LAYOUT, cmd, &len);
}
void ipc_send_workspace_command(const char *workspace_name) { void ipc_send_workspace_command(const char *workspace_name) {
uint32_t size = strlen("workspace ") + strlen(workspace_name) + 1; uint32_t size = strlen("workspace ") + strlen(workspace_name) + 1;