summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-08-11 13:55:36 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-08-11 13:55:36 -0400
commitab33fd5ecdc07a594ca1cc2a6da1780d1f22665d (patch)
treedaa3849d3a225b31c9ad246fff0dbdeed25ee2ca
parentMerge pull request #16 from taiyu-len/multikey_handling (diff)
parentChanged command handler to perform var subs on all cmd args (diff)
downloadsway-ab33fd5ecdc07a594ca1cc2a6da1780d1f22665d.tar.gz
sway-ab33fd5ecdc07a594ca1cc2a6da1780d1f22665d.tar.zst
sway-ab33fd5ecdc07a594ca1cc2a6da1780d1f22665d.zip
Merge pull request #19 from Luminarys/master
Changed command handler to perform var subs on all cmd args
-rw-r--r--sway/commands.c7
-rw-r--r--sway/config.c4
-rw-r--r--sway/main.c3
3 files changed, 10 insertions, 4 deletions
diff --git a/sway/commands.c b/sway/commands.c
index be9984e3..870a2377 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -34,7 +34,6 @@ bool cmd_bindsym(struct sway_config *config, int argc, char **argv) {
34 sway_log(L_ERROR, "Invalid set command (expected 2 arguments, got %d)", argc); 34 sway_log(L_ERROR, "Invalid set command (expected 2 arguments, got %d)", argc);
35 return false; 35 return false;
36 } 36 }
37 argv[0] = do_var_replacement(config, argv[0]);
38 37
39 struct sway_binding *binding = malloc(sizeof(struct sway_binding)); 38 struct sway_binding *binding = malloc(sizeof(struct sway_binding));
40 binding->keys = create_list(); 39 binding->keys = create_list();
@@ -381,6 +380,12 @@ bool handle_command(struct sway_config *config, char *exec) {
381 int argc; 380 int argc;
382 char **argv = split_directive(exec + strlen(handler->command), &argc); 381 char **argv = split_directive(exec + strlen(handler->command), &argc);
383 int i; 382 int i;
383
384 //Perform var subs on all parts of the command
385 for (i = 0; i < argc; ++i) {
386 argv[i] = do_var_replacement(config, argv[i]);
387 }
388
384 exec_success = handler->handle(config, argc, argv); 389 exec_success = handler->handle(config, argc, argv);
385 for (i = 0; i < argc; ++i) { 390 for (i = 0; i < argc; ++i) {
386 free(argv[i]); 391 free(argv[i]);
diff --git a/sway/config.c b/sway/config.c
index a1689f36..6fe681f6 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -8,6 +8,8 @@
8#include "commands.h" 8#include "commands.h"
9#include "config.h" 9#include "config.h"
10 10
11struct sway_config *config;
12
11bool load_config() { 13bool load_config() {
12 sway_log(L_INFO, "Loading config"); 14 sway_log(L_INFO, "Loading config");
13 // TODO: Allow use of more config file locations 15 // TODO: Allow use of more config file locations
@@ -82,7 +84,7 @@ _continue:
82 } 84 }
83 85
84 if (is_active) { 86 if (is_active) {
85 config->reloading = true; 87 config->reloading = false;
86 } 88 }
87 89
88 return config; 90 return config;
diff --git a/sway/main.c b/sway/main.c
index f84451de..a7814364 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -7,7 +7,6 @@
7#include "log.h" 7#include "log.h"
8#include "handlers.h" 8#include "handlers.h"
9 9
10struct sway_config *config;
11 10
12int main(int argc, char **argv) { 11int main(int argc, char **argv) {
13 init_log(L_DEBUG); // TODO: Control this with command line arg 12 init_log(L_DEBUG); // TODO: Control this with command line arg
@@ -42,8 +41,8 @@ int main(int argc, char **argv) {
42 if (!wlc_init(&interface, argc, argv)) { 41 if (!wlc_init(&interface, argc, argv)) {
43 return 1; 42 return 1;
44 } 43 }
45
46 setenv("DISPLAY", ":1", 1); 44 setenv("DISPLAY", ":1", 1);
45
47 if (!load_config()) { 46 if (!load_config()) {
48 sway_abort("Unable to load config"); 47 sway_abort("Unable to load config");
49 } 48 }