diff --git a/cage.c b/cage.c index 7c3d89d..5c67d62 100644 --- a/cage.c +++ b/cage.c @@ -248,6 +248,7 @@ usage(FILE *file, const char *cage) " -m last Use only the last connected output\n" " -s\t Allow VT switching\n" " -v\t Show the version number and exit\n" + " -i app-id Set application idendifier for the toplevel window\n" "\n" " Use -- when you want to pass arguments to APPLICATION\n", cage); @@ -257,7 +258,7 @@ static bool parse_args(struct cg_server *server, int argc, char *argv[]) { int c; - while ((c = getopt(argc, argv, "dDhm:sv")) != -1) { + while ((c = getopt(argc, argv, "dDhm:svi:")) != -1) { switch (c) { case 'd': server->xdg_decoration = true; @@ -278,6 +279,9 @@ parse_args(struct cg_server *server, int argc, char *argv[]) case 's': server->allow_vt_switch = true; break; + case 'i': + server->app_id = optarg; + break; case 'v': fprintf(stdout, "Cage version " CAGE_VERSION "\n"); exit(0); diff --git a/output.c b/output.c index 9f2a708..5fc643d 100644 --- a/output.c +++ b/output.c @@ -258,6 +258,10 @@ handle_new_output(struct wl_listener *listener, void *data) return; } + if (server->app_id != NULL && wlr_output_is_wl(wlr_output)) { + wlr_wl_output_set_app_id(wlr_output, server->app_id); + } + output->wlr_output = wlr_output; wlr_output->data = output; output->server = server; diff --git a/server.h b/server.h index 27f212a..c681500 100644 --- a/server.h +++ b/server.h @@ -75,6 +75,7 @@ struct cg_server { bool return_app_code; bool terminated; enum wlr_log_importance log_level; + const char *app_id; }; void server_terminate(struct cg_server *server);