mirror of
https://github.com/swaywm/sway.git
synced 2026-04-22 06:46:27 -04:00
Add --label support to sway{nag,bg,bar}_command
This commit is contained in:
parent
27c67cc2b3
commit
2704e07c49
8 changed files with 58 additions and 0 deletions
|
|
@ -321,6 +321,7 @@ enum pango_markup_config {
|
||||||
|
|
||||||
struct bar_config {
|
struct bar_config {
|
||||||
char *swaybar_command;
|
char *swaybar_command;
|
||||||
|
char *swaybar_label;
|
||||||
struct wl_client *client;
|
struct wl_client *client;
|
||||||
struct wl_listener client_destroy;
|
struct wl_listener client_destroy;
|
||||||
|
|
||||||
|
|
@ -473,6 +474,7 @@ enum xwayland_mode {
|
||||||
*/
|
*/
|
||||||
struct sway_config {
|
struct sway_config {
|
||||||
char *swaynag_command;
|
char *swaynag_command;
|
||||||
|
char *swaynag_label;
|
||||||
struct swaynag_instance swaynag_config_errors;
|
struct swaynag_instance swaynag_config_errors;
|
||||||
list_t *symbols;
|
list_t *symbols;
|
||||||
list_t *modes;
|
list_t *modes;
|
||||||
|
|
@ -512,6 +514,7 @@ struct sway_config {
|
||||||
|
|
||||||
// swaybg
|
// swaybg
|
||||||
char *swaybg_command;
|
char *swaybg_command;
|
||||||
|
char *swaybg_label;
|
||||||
struct wl_client *swaybg_client;
|
struct wl_client *swaybg_client;
|
||||||
struct wl_listener swaybg_client_destroy;
|
struct wl_listener swaybg_client_destroy;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define _XOPEN_SOURCE 700 // for strdup
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "sway/commands.h"
|
#include "sway/commands.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
@ -5,11 +6,22 @@
|
||||||
|
|
||||||
struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) {
|
struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) {
|
||||||
struct cmd_results *error = NULL;
|
struct cmd_results *error = NULL;
|
||||||
|
char *new_label = NULL;
|
||||||
if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 1))) {
|
if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 1))) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
if (strcmp(argv[0], "--label") == 0) {
|
||||||
|
if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 3))) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
new_label = strdup(argv[1]);
|
||||||
|
argv += 2;
|
||||||
|
argc -= 2;
|
||||||
|
}
|
||||||
free(config->current_bar->swaybar_command);
|
free(config->current_bar->swaybar_command);
|
||||||
config->current_bar->swaybar_command = join_args(argv, argc);
|
config->current_bar->swaybar_command = join_args(argv, argc);
|
||||||
|
free(config->current_bar->swaybar_label);
|
||||||
|
config->current_bar->swaybar_label = new_label;
|
||||||
sway_log(SWAY_DEBUG, "Using custom swaybar command: %s",
|
sway_log(SWAY_DEBUG, "Using custom swaybar command: %s",
|
||||||
config->current_bar->swaybar_command);
|
config->current_bar->swaybar_command);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define _XOPEN_SOURCE 700 // for strdup
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "sway/commands.h"
|
#include "sway/commands.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
@ -5,12 +6,23 @@
|
||||||
|
|
||||||
struct cmd_results *cmd_swaybg_command(int argc, char **argv) {
|
struct cmd_results *cmd_swaybg_command(int argc, char **argv) {
|
||||||
struct cmd_results *error = NULL;
|
struct cmd_results *error = NULL;
|
||||||
|
char *new_label = NULL;
|
||||||
if ((error = checkarg(argc, "swaybg_command", EXPECTED_AT_LEAST, 1))) {
|
if ((error = checkarg(argc, "swaybg_command", EXPECTED_AT_LEAST, 1))) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
if (strcmp(argv[0], "--label") == 0) {
|
||||||
|
if ((error = checkarg(argc, "swaybg_command", EXPECTED_AT_LEAST, 3))) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
new_label = strdup(argv[1]);
|
||||||
|
argv += 2;
|
||||||
|
argc -= 2;
|
||||||
|
}
|
||||||
|
|
||||||
free(config->swaybg_command);
|
free(config->swaybg_command);
|
||||||
config->swaybg_command = NULL;
|
config->swaybg_command = NULL;
|
||||||
|
free(config->swaybg_label);
|
||||||
|
config->swaybg_label = new_label;
|
||||||
|
|
||||||
char *new_command = join_args(argv, argc);
|
char *new_command = join_args(argv, argc);
|
||||||
if (strcmp(new_command, "-") != 0) {
|
if (strcmp(new_command, "-") != 0) {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#define _XOPEN_SOURCE 700 // for strdup
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "sway/commands.h"
|
#include "sway/commands.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
@ -5,12 +6,23 @@
|
||||||
|
|
||||||
struct cmd_results *cmd_swaynag_command(int argc, char **argv) {
|
struct cmd_results *cmd_swaynag_command(int argc, char **argv) {
|
||||||
struct cmd_results *error = NULL;
|
struct cmd_results *error = NULL;
|
||||||
|
char *new_label = NULL;
|
||||||
if ((error = checkarg(argc, "swaynag_command", EXPECTED_AT_LEAST, 1))) {
|
if ((error = checkarg(argc, "swaynag_command", EXPECTED_AT_LEAST, 1))) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
if (strcmp(argv[0], "--label") == 0) {
|
||||||
|
if ((error = checkarg(argc, "swaynag_command", EXPECTED_AT_LEAST, 3))) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
new_label = strdup(argv[1]);
|
||||||
|
argv += 2;
|
||||||
|
argc -= 2;
|
||||||
|
}
|
||||||
|
|
||||||
free(config->swaynag_command);
|
free(config->swaynag_command);
|
||||||
config->swaynag_command = NULL;
|
config->swaynag_command = NULL;
|
||||||
|
free(config->swaynag_label);
|
||||||
|
config->swaynag_label = new_label;
|
||||||
|
|
||||||
char *new_command = join_args(argv, argc);
|
char *new_command = join_args(argv, argc);
|
||||||
if (strcmp(new_command, "-") != 0) {
|
if (strcmp(new_command, "-") != 0) {
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,8 @@ void free_config(struct sway_config *config) {
|
||||||
free(config->font);
|
free(config->font);
|
||||||
free(config->swaybg_command);
|
free(config->swaybg_command);
|
||||||
free(config->swaynag_command);
|
free(config->swaynag_command);
|
||||||
|
free(config->swaybg_label);
|
||||||
|
free(config->swaynag_label);
|
||||||
free((char *)config->current_config_path);
|
free((char *)config->current_config_path);
|
||||||
free((char *)config->current_config);
|
free((char *)config->current_config);
|
||||||
keysym_translation_state_destroy(config->keysym_translation_state);
|
keysym_translation_state_destroy(config->keysym_translation_state);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <wordexp.h>
|
#include <wordexp.h>
|
||||||
|
#include "sway/client_label.h"
|
||||||
#include "sway/config.h"
|
#include "sway/config.h"
|
||||||
#include "sway/input/keyboard.h"
|
#include "sway/input/keyboard.h"
|
||||||
#include "sway/output.h"
|
#include "sway/output.h"
|
||||||
|
|
@ -37,6 +38,7 @@ void free_bar_config(struct bar_config *bar) {
|
||||||
free(bar->hidden_state);
|
free(bar->hidden_state);
|
||||||
free(bar->status_command);
|
free(bar->status_command);
|
||||||
free(bar->swaybar_command);
|
free(bar->swaybar_command);
|
||||||
|
free(bar->swaybar_label);
|
||||||
free(bar->font);
|
free(bar->font);
|
||||||
free(bar->separator_symbol);
|
free(bar->separator_symbol);
|
||||||
if (bar->bindings) {
|
if (bar->bindings) {
|
||||||
|
|
@ -205,6 +207,10 @@ static void invoke_swaybar(struct bar_config *bar) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bar->swaybar_label) {
|
||||||
|
wl_client_label_set(bar->client, strdup(bar->swaybar_label));
|
||||||
|
}
|
||||||
|
|
||||||
bar->client_destroy.notify = handle_swaybar_client_destroy;
|
bar->client_destroy.notify = handle_swaybar_client_destroy;
|
||||||
wl_client_add_destroy_listener(bar->client, &bar->client_destroy);
|
wl_client_add_destroy_listener(bar->client, &bar->client_destroy);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include <wlr/types/wlr_output.h>
|
#include <wlr/types/wlr_output.h>
|
||||||
#include <wlr/backend/drm.h>
|
#include <wlr/backend/drm.h>
|
||||||
|
#include "sway/client_label.h"
|
||||||
#include "sway/config.h"
|
#include "sway/config.h"
|
||||||
#include "sway/input/cursor.h"
|
#include "sway/input/cursor.h"
|
||||||
#include "sway/output.h"
|
#include "sway/output.h"
|
||||||
|
|
@ -779,6 +780,10 @@ static bool _spawn_swaybg(char **command) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config->swaybg_label) {
|
||||||
|
wl_client_label_set(config->swaybg_client, strdup(config->swaybg_label));
|
||||||
|
}
|
||||||
|
|
||||||
config->swaybg_client_destroy.notify = handle_swaybg_client_destroy;
|
config->swaybg_client_destroy.notify = handle_swaybg_client_destroy;
|
||||||
wl_client_add_destroy_listener(config->swaybg_client,
|
wl_client_add_destroy_listener(config->swaybg_client,
|
||||||
&config->swaybg_client_destroy);
|
&config->swaybg_client_destroy);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "sway/client_label.h"
|
||||||
|
#include "sway/config.h"
|
||||||
#include "sway/server.h"
|
#include "sway/server.h"
|
||||||
#include "sway/swaynag.h"
|
#include "sway/swaynag.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
@ -56,6 +58,10 @@ bool swaynag_spawn(const char *swaynag_command,
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config->swaynag_label) {
|
||||||
|
wl_client_label_set(swaynag->client, strdup(config->swaynag_label));
|
||||||
|
}
|
||||||
|
|
||||||
swaynag->client_destroy.notify = handle_swaynag_client_destroy;
|
swaynag->client_destroy.notify = handle_swaynag_client_destroy;
|
||||||
wl_client_add_destroy_listener(swaynag->client, &swaynag->client_destroy);
|
wl_client_add_destroy_listener(swaynag->client, &swaynag->client_destroy);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue