Skip to content

Instantly share code, notes, and snippets.

@ddevault
Created April 3, 2018 19:53

Revisions

  1. ddevault created this gist Apr 3, 2018.
    52 changes: 52 additions & 0 deletions hack.diff
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    diff --git a/sway/commands/reload.c b/sway/commands/reload.c
    index 5bca6cd..a3714d0 100644
    --- a/sway/commands/reload.c
    +++ b/sway/commands/reload.c
    @@ -2,6 +2,31 @@
    #include "sway/config.h"
    #include "sway/tree/layout.h"

    +#include <wlr/backend/x11.h>
    +#include "sway/server.h"
    +
    +struct wlr_multi_backend {
    + struct wlr_backend backend;
    +
    + struct wl_list backends;
    +
    + struct wl_listener display_destroy;
    +
    + struct {
    + struct wl_signal backend_add;
    + struct wl_signal backend_remove;
    + } events;
    +};
    +
    +struct subbackend_state {
    + struct wlr_backend *backend;
    + struct wlr_backend *container;
    + struct wl_listener new_input;
    + struct wl_listener new_output;
    + struct wl_listener destroy;
    + struct wl_list link;
    +};
    +
    struct cmd_results *cmd_reload(int argc, char **argv) {
    struct cmd_results *error = NULL;
    if ((error = checkarg(argc, "reload", EXPECTED_EQUAL_TO, 0))) {
    @@ -13,5 +38,15 @@ struct cmd_results *cmd_reload(int argc, char **argv) {

    load_swaybars();
    arrange_windows(&root_container, -1, -1);
    +
    + struct wlr_multi_backend *backend =
    + (struct wlr_multi_backend *)server.backend;
    + struct subbackend_state *subbackend;
    + wl_list_for_each(subbackend, &backend->backends, link) {
    + if (wlr_backend_is_x11(subbackend->backend)) {
    + wlr_x11_output_create(subbackend->backend);
    + }
    + }
    +
    return cmd_results_new(CMD_SUCCESS, NULL, NULL);
    }