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 {
|
||||
char *swaybar_command;
|
||||
char *swaybar_label;
|
||||
struct wl_client *client;
|
||||
struct wl_listener client_destroy;
|
||||
|
||||
|
|
@ -473,6 +474,7 @@ enum xwayland_mode {
|
|||
*/
|
||||
struct sway_config {
|
||||
char *swaynag_command;
|
||||
char *swaynag_label;
|
||||
struct swaynag_instance swaynag_config_errors;
|
||||
list_t *symbols;
|
||||
list_t *modes;
|
||||
|
|
@ -512,6 +514,7 @@ struct sway_config {
|
|||
|
||||
// swaybg
|
||||
char *swaybg_command;
|
||||
char *swaybg_label;
|
||||
struct wl_client *swaybg_client;
|
||||
struct wl_listener swaybg_client_destroy;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#define _XOPEN_SOURCE 700 // for strdup
|
||||
#include <string.h>
|
||||
#include "sway/commands.h"
|
||||
#include "log.h"
|
||||
|
|
@ -5,11 +6,22 @@
|
|||
|
||||
struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) {
|
||||
struct cmd_results *error = NULL;
|
||||
char *new_label = NULL;
|
||||
if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 1))) {
|
||||
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);
|
||||
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",
|
||||
config->current_bar->swaybar_command);
|
||||
return cmd_results_new(CMD_SUCCESS, NULL);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#define _XOPEN_SOURCE 700 // for strdup
|
||||
#include <string.h>
|
||||
#include "sway/commands.h"
|
||||
#include "log.h"
|
||||
|
|
@ -5,12 +6,23 @@
|
|||
|
||||
struct cmd_results *cmd_swaybg_command(int argc, char **argv) {
|
||||
struct cmd_results *error = NULL;
|
||||
char *new_label = NULL;
|
||||
if ((error = checkarg(argc, "swaybg_command", EXPECTED_AT_LEAST, 1))) {
|
||||
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);
|
||||
config->swaybg_command = NULL;
|
||||
free(config->swaybg_label);
|
||||
config->swaybg_label = new_label;
|
||||
|
||||
char *new_command = join_args(argv, argc);
|
||||
if (strcmp(new_command, "-") != 0) {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#define _XOPEN_SOURCE 700 // for strdup
|
||||
#include <string.h>
|
||||
#include "sway/commands.h"
|
||||
#include "log.h"
|
||||
|
|
@ -5,12 +6,23 @@
|
|||
|
||||
struct cmd_results *cmd_swaynag_command(int argc, char **argv) {
|
||||
struct cmd_results *error = NULL;
|
||||
char *new_label = NULL;
|
||||
if ((error = checkarg(argc, "swaynag_command", EXPECTED_AT_LEAST, 1))) {
|
||||
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);
|
||||
config->swaynag_command = NULL;
|
||||
free(config->swaynag_label);
|
||||
config->swaynag_label = new_label;
|
||||
|
||||
char *new_command = join_args(argv, argc);
|
||||
if (strcmp(new_command, "-") != 0) {
|
||||
|
|
|
|||
|
|
@ -161,6 +161,8 @@ void free_config(struct sway_config *config) {
|
|||
free(config->font);
|
||||
free(config->swaybg_command);
|
||||
free(config->swaynag_command);
|
||||
free(config->swaybg_label);
|
||||
free(config->swaynag_label);
|
||||
free((char *)config->current_config_path);
|
||||
free((char *)config->current_config);
|
||||
keysym_translation_state_destroy(config->keysym_translation_state);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <wordexp.h>
|
||||
#include "sway/client_label.h"
|
||||
#include "sway/config.h"
|
||||
#include "sway/input/keyboard.h"
|
||||
#include "sway/output.h"
|
||||
|
|
@ -37,6 +38,7 @@ void free_bar_config(struct bar_config *bar) {
|
|||
free(bar->hidden_state);
|
||||
free(bar->status_command);
|
||||
free(bar->swaybar_command);
|
||||
free(bar->swaybar_label);
|
||||
free(bar->font);
|
||||
free(bar->separator_symbol);
|
||||
if (bar->bindings) {
|
||||
|
|
@ -205,6 +207,10 @@ static void invoke_swaybar(struct bar_config *bar) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (bar->swaybar_label) {
|
||||
wl_client_label_set(bar->client, strdup(bar->swaybar_label));
|
||||
}
|
||||
|
||||
bar->client_destroy.notify = handle_swaybar_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.h>
|
||||
#include <wlr/backend/drm.h>
|
||||
#include "sway/client_label.h"
|
||||
#include "sway/config.h"
|
||||
#include "sway/input/cursor.h"
|
||||
#include "sway/output.h"
|
||||
|
|
@ -779,6 +780,10 @@ static bool _spawn_swaybg(char **command) {
|
|||
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;
|
||||
wl_client_add_destroy_listener(config->swaybg_client,
|
||||
&config->swaybg_client_destroy);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include "log.h"
|
||||
#include "sway/client_label.h"
|
||||
#include "sway/config.h"
|
||||
#include "sway/server.h"
|
||||
#include "sway/swaynag.h"
|
||||
#include "util.h"
|
||||
|
|
@ -56,6 +58,10 @@ bool swaynag_spawn(const char *swaynag_command,
|
|||
goto failed;
|
||||
}
|
||||
|
||||
if (config->swaynag_label) {
|
||||
wl_client_label_set(swaynag->client, strdup(config->swaynag_label));
|
||||
}
|
||||
|
||||
swaynag->client_destroy.notify = handle_swaynag_client_destroy;
|
||||
wl_client_add_destroy_listener(swaynag->client, &swaynag->client_destroy);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue