aboutsummaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-12-14 19:57:39 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-12-14 19:57:39 -0500
commit7b0ea051c68375ef3a9392bd73feea708abc1706 (patch)
tree6a6bb4575659462befbb293a6ede6a03deda6100 /sway
parentMerge pull request #323 from gpyh/bar_cmd_status_command (diff)
parentAdded bar_cmd_modifier (diff)
downloadsway-7b0ea051c68375ef3a9392bd73feea708abc1706.tar.gz
sway-7b0ea051c68375ef3a9392bd73feea708abc1706.tar.zst
sway-7b0ea051c68375ef3a9392bd73feea708abc1706.zip
Merge pull request #325 from gpyh/bar_cmd_modifier
Added bar_cmd_modifier
Diffstat (limited to 'sway')
-rw-r--r--sway/commands.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/sway/commands.c b/sway/commands.c
index 2b28c472..f6c3b094 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -67,6 +67,7 @@ static sway_cmd cmd_ws_auto_back_and_forth;
67 67
68static sway_cmd bar_cmd_bindsym; 68static sway_cmd bar_cmd_bindsym;
69static sway_cmd bar_cmd_mode; 69static sway_cmd bar_cmd_mode;
70static sway_cmd bar_cmd_modifier;
70static sway_cmd bar_cmd_hidden_state; 71static sway_cmd bar_cmd_hidden_state;
71static sway_cmd bar_cmd_id; 72static sway_cmd bar_cmd_id;
72static sway_cmd bar_cmd_position; 73static sway_cmd bar_cmd_position;
@@ -1645,6 +1646,41 @@ static struct cmd_results *bar_cmd_id(int argc, char **argv) {
1645 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 1646 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
1646} 1647}
1647 1648
1649static struct cmd_results *bar_cmd_modifier(int argc, char **argv) {
1650 struct cmd_results *error = NULL;
1651 if ((error = checkarg(argc, "modifier", EXPECTED_EQUAL_TO, 1))) {
1652 return error;
1653 }
1654
1655 if (!config->current_bar) {
1656 return cmd_results_new(CMD_FAILURE, "modifier", "No bar defined.");
1657 }
1658
1659 uint32_t mod = 0;
1660
1661 list_t *split = split_string(argv[0], "+");
1662 for (int i = 0; i < split->length; ++i) {
1663 int j;
1664 bool is_mod = false;
1665 for (j = 0; j < (int)(sizeof(modifiers) / sizeof(struct modifier_key)); ++j) {
1666 if (strcasecmp(modifiers[j].name, split->items[i]) == 0) {
1667 mod |= modifiers[j].mod;
1668 is_mod = true;
1669 break;
1670 }
1671 }
1672 if (!is_mod) {
1673 free_flat_list(split);
1674 return cmd_results_new(CMD_INVALID, "modifier", "Unknown modifier '%s'", split->items[i]);
1675 }
1676 }
1677 free_flat_list(split);
1678
1679 config->current_bar->modifier = mod;
1680 sway_log(L_DEBUG, "Show/Hide the bar when pressing '%s' in hide mode.", argv[0]);
1681 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
1682}
1683
1648static struct cmd_results *bar_cmd_position(int argc, char **argv) { 1684static struct cmd_results *bar_cmd_position(int argc, char **argv) {
1649 struct cmd_results *error = NULL; 1685 struct cmd_results *error = NULL;
1650 if ((error = checkarg(argc, "position", EXPECTED_EQUAL_TO, 1))) { 1686 if ((error = checkarg(argc, "position", EXPECTED_EQUAL_TO, 1))) {
@@ -1773,7 +1809,7 @@ static struct cmd_handler bar_handlers[] = {
1773 { "hidden_state", bar_cmd_hidden_state }, 1809 { "hidden_state", bar_cmd_hidden_state },
1774 { "id", bar_cmd_id }, 1810 { "id", bar_cmd_id },
1775 { "mode", bar_cmd_mode }, 1811 { "mode", bar_cmd_mode },
1776 { "modifier", NULL }, 1812 { "modifier", bar_cmd_modifier },
1777 { "output", NULL }, 1813 { "output", NULL },
1778 { "position", bar_cmd_position }, 1814 { "position", bar_cmd_position },
1779 { "seperator_symbol", NULL }, 1815 { "seperator_symbol", NULL },