aboutsummaryrefslogtreecommitdiff
path: root/sway/commands
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-06-14 18:53:40 -0400
committerGitHub <noreply@github.com>2017-06-14 18:53:40 -0400
commit298f56353ef155f6a2ccc977c96b2ff5d971e65e (patch)
treedcb3b74f1dde93bce8657b7509662ffd7db667d0 /sway/commands
parenta5c07dde6aba87584ddb6c6a2769472a6003623a (diff)
parenteb6e38c86d2deb37cc6f378f8644c4a530fd7448 (diff)
Merge branch 'master' into server-decoration
Diffstat (limited to 'sway/commands')
-rw-r--r--sway/commands/assign.c3
-rw-r--r--sway/commands/bar/activate_button.c26
-rw-r--r--sway/commands/bar/context_button.c26
-rw-r--r--sway/commands/bar/icon_theme.c25
-rw-r--r--sway/commands/bar/secondary_button.c26
-rw-r--r--sway/commands/bar/tray_output.c26
-rw-r--r--sway/commands/bar/tray_padding.c34
-rw-r--r--sway/commands/bind.c8
-rw-r--r--sway/commands/client.c24
-rw-r--r--sway/commands/layout.c4
-rw-r--r--sway/commands/set.c2
11 files changed, 174 insertions, 30 deletions
diff --git a/sway/commands/assign.c b/sway/commands/assign.c
index ec262bb8..c3b03bbc 100644
--- a/sway/commands/assign.c
+++ b/sway/commands/assign.c
@@ -1,4 +1,4 @@
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 700
#include <stdio.h>
#include <string.h>
#include "sway/commands.h"
@@ -55,4 +55,3 @@ struct cmd_results *cmd_assign(int argc, char **argv) {
}
return error ? error : cmd_results_new(CMD_SUCCESS, NULL, NULL);
}
-
diff --git a/sway/commands/bar/activate_button.c b/sway/commands/bar/activate_button.c
new file mode 100644
index 00000000..32a1d3e5
--- /dev/null
+++ b/sway/commands/bar/activate_button.c
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+#include "sway/commands.h"
+#include "log.h"
+
+struct cmd_results *bar_cmd_activate_button(int argc, char **argv) {
+ const char *cmd_name = "activate_button";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command "
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
+ }
+
+ // User should be able to prefix with 0x or whatever they want
+ config->current_bar->secondary_button = strtoul(argv[0], NULL, 0);
+
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#endif
+}
diff --git a/sway/commands/bar/context_button.c b/sway/commands/bar/context_button.c
new file mode 100644
index 00000000..6d7d7aec
--- /dev/null
+++ b/sway/commands/bar/context_button.c
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+#include "sway/commands.h"
+#include "log.h"
+
+struct cmd_results *bar_cmd_context_button(int argc, char **argv) {
+ const char *cmd_name = "context_button";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command "
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
+ }
+
+ // User should be able to prefix with 0x or whatever they want
+ config->current_bar->context_button = strtoul(argv[0], NULL, 0);
+
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#endif
+}
diff --git a/sway/commands/bar/icon_theme.c b/sway/commands/bar/icon_theme.c
new file mode 100644
index 00000000..cbfc0be5
--- /dev/null
+++ b/sway/commands/bar/icon_theme.c
@@ -0,0 +1,25 @@
+#define _XOPEN_SOURCE 500
+#include <string.h>
+#include "sway/commands.h"
+
+struct cmd_results *bar_cmd_icon_theme(int argc, char **argv) {
+ const char *cmd_name = "tray_output";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command "
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
+ }
+
+ config->current_bar->icon_theme = strdup(argv[0]);
+
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#endif
+}
diff --git a/sway/commands/bar/secondary_button.c b/sway/commands/bar/secondary_button.c
new file mode 100644
index 00000000..745045c5
--- /dev/null
+++ b/sway/commands/bar/secondary_button.c
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+#include "sway/commands.h"
+#include "log.h"
+
+struct cmd_results *bar_cmd_secondary_button(int argc, char **argv) {
+ const char *cmd_name = "secondary_button";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command "
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
+ }
+
+ // User should be able to prefix with 0x or whatever they want
+ config->current_bar->secondary_button = strtoul(argv[0], NULL, 0);
+
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#endif
+}
diff --git a/sway/commands/bar/tray_output.c b/sway/commands/bar/tray_output.c
index 8a1b5d35..012304a9 100644
--- a/sway/commands/bar/tray_output.c
+++ b/sway/commands/bar/tray_output.c
@@ -1,7 +1,29 @@
+#define _XOPEN_SOURCE 500
+#include <string.h>
#include "sway/commands.h"
-#include "log.h"
struct cmd_results *bar_cmd_tray_output(int argc, char **argv) {
- sway_log(L_ERROR, "Warning: tray_output is not supported on wayland");
+ const char *cmd_name = "tray_output";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command "
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+
+ if (!config->current_bar) {
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
+ }
+
+ if (strcmp(argv[0], "all") == 0) {
+ // Default behaviour
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+ }
+ config->current_bar->tray_output = strdup(argv[0]);
+
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+#endif
}
diff --git a/sway/commands/bar/tray_padding.c b/sway/commands/bar/tray_padding.c
index 8c559f65..ac0572ce 100644
--- a/sway/commands/bar/tray_padding.c
+++ b/sway/commands/bar/tray_padding.c
@@ -1,30 +1,34 @@
#include <stdlib.h>
-#include <string.h>
#include <strings.h>
#include "sway/commands.h"
#include "log.h"
struct cmd_results *bar_cmd_tray_padding(int argc, char **argv) {
+ const char *cmd_name = "tray_padding";
+#ifndef ENABLE_TRAY
+ return cmd_results_new(CMD_INVALID, cmd_name, "Invalid %s command"
+ "%s called, but sway was compiled without tray support",
+ cmd_name, cmd_name);
+#else
struct cmd_results *error = NULL;
- if ((error = checkarg(argc, "tray_padding", EXPECTED_AT_LEAST, 1))) {
+ if ((error = checkarg(argc, cmd_name, EXPECTED_AT_LEAST, 1))) {
return error;
}
if (!config->current_bar) {
- return cmd_results_new(CMD_FAILURE, "tray_padding", "No bar defined.");
+ return cmd_results_new(CMD_FAILURE, cmd_name, "No bar defined.");
}
- int padding = atoi(argv[0]);
- if (padding < 0) {
- return cmd_results_new(CMD_INVALID, "tray_padding",
- "Invalid padding value %s, minimum is 0", argv[0]);
+ if (argc == 1 || (argc == 2 && strcasecmp("px", argv[1]) == 0)) {
+ char *inv;
+ uint32_t padding = strtoul(argv[0], &inv, 10);
+ if (*inv == '\0' || strcasecmp(inv, "px") == 0) {
+ config->current_bar->tray_padding = padding;
+ sway_log(L_DEBUG, "Enabling tray padding of %d px on bar: %s", padding, config->current_bar->id);
+ return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+ }
}
-
- if (argc > 1 && strcasecmp("px", argv[1]) != 0) {
- return cmd_results_new(CMD_INVALID, "tray_padding",
- "Unknown unit %s", argv[1]);
- }
- config->current_bar->tray_padding = padding;
- sway_log(L_DEBUG, "Enabling tray padding of %d px on bar: %s", padding, config->current_bar->id);
- return cmd_results_new(CMD_SUCCESS, NULL, NULL);
+ return cmd_results_new(CMD_FAILURE, cmd_name,
+ "Expected 'tray_padding <padding>[px]'");
+#endif
}
diff --git a/sway/commands/bind.c b/sway/commands/bind.c
index 8282277b..af5a01e5 100644
--- a/sway/commands/bind.c
+++ b/sway/commands/bind.c
@@ -1,7 +1,9 @@
#include <xkbcommon/xkbcommon.h>
#include <xkbcommon/xkbcommon-names.h>
+#include <strings.h>
#include "sway/commands.h"
#include "sway/config.h"
+#include "sway/input_state.h"
#include "list.h"
#include "log.h"
#include "stringop.h"
@@ -52,6 +54,12 @@ struct cmd_results *cmd_bindsym(int argc, char **argv) {
// Check for xkb key
xkb_keysym_t sym = xkb_keysym_from_name(split->items[i],
XKB_KEYSYM_CASE_INSENSITIVE);
+
+ // Check for mouse binding
+ if (strncasecmp(split->items[i], "button", strlen("button")) == 0 &&
+ strlen(split->items[i]) == strlen("button0")) {
+ sym = ((char *)split->items[i])[strlen("button")] - '1' + M_LEFT_CLICK;
+ }
if (!sym) {
free_sway_binding(binding);
free_flat_list(split);
diff --git a/sway/commands/client.c b/sway/commands/client.c
index 7954f670..f3d879cd 100644
--- a/sway/commands/client.c
+++ b/sway/commands/client.c
@@ -4,26 +4,30 @@
static struct cmd_results *parse_border_color(struct border_colors *border_colors, const char *cmd_name, int argc, char **argv) {
struct cmd_results *error = NULL;
- if (argc != 5) {
- return cmd_results_new(CMD_INVALID, cmd_name, "Requires exactly five color values");
+ if (argc < 3 || argc > 5) {
+ return cmd_results_new(CMD_INVALID, cmd_name, "Requires between three and five color values");
}
- uint32_t colors[5];
+ uint32_t *colors[5] = {
+ &border_colors->border,
+ &border_colors->background,
+ &border_colors->text,
+ &border_colors->indicator,
+ &border_colors->child_border
+ };
int i;
- for (i = 0; i < 5; i++) {
+ for (i = 0; i < argc; i++) {
char buffer[10];
error = add_color(cmd_name, buffer, argv[i]);
if (error) {
return error;
}
- colors[i] = strtoul(buffer+1, NULL, 16);
+ *colors[i] = strtoul(buffer + 1, NULL, 16);
}
- border_colors->border = colors[0];
- border_colors->background = colors[1];
- border_colors->text = colors[2];
- border_colors->indicator = colors[3];
- border_colors->child_border = colors[4];
+ if (argc < 5) {
+ border_colors->child_border = border_colors->background;
+ }
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}
diff --git a/sway/commands/layout.c b/sway/commands/layout.c
index 40ebd590..57a86565 100644
--- a/sway/commands/layout.c
+++ b/sway/commands/layout.c
@@ -85,6 +85,10 @@ static struct cmd_results *cmd_layout_auto(swayc_t *container, int argc, char **
enum swayc_layouts old_layout = container->layout;
enum swayc_layouts layout = old_layout;
+ if ((error = checkarg(argc, "layout auto", EXPECTED_MORE_THAN, 1))) {
+ return error;
+ }
+
if (strcasecmp(argv[1], "left") == 0) {
layout = L_AUTO_LEFT;
} else if (strcasecmp(argv[1], "right") == 0) {
diff --git a/sway/commands/set.c b/sway/commands/set.c
index 1d6bce04..e3d08dd3 100644
--- a/sway/commands/set.c
+++ b/sway/commands/set.c
@@ -1,4 +1,4 @@
-#define _XOPEN_SOURCE 500
+#define _XOPEN_SOURCE 700
#include <stdio.h>
#include <string.h>
#include <strings.h>