]> git.sur5r.net Git - i3/i3/commitdiff
Make all workspaces starting with "__" internal
authorAlexander Berntsen <alexander@plaimi.net>
Wed, 30 Apr 2014 09:12:22 +0000 (11:12 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 3 May 2014 13:00:15 +0000 (15:00 +0200)
Workspaces won't work properly if they start with "__", so reserve that
namespace altogether. Disallow renaming workspaces to reserved namespace
and using reserved namespace in configuration.

Fixes #1209.

src/commands.c
src/workspace.c

index e1aa063b541f8f0a5f66c85bc9dce8b05eb47d89..2ff3ee1eca58104127168d9717c1ae73ef5a1e0d 100644 (file)
@@ -483,7 +483,7 @@ void cmd_move_con_to_workspace_back_and_forth(I3_CMD) {
  *
  */
 void cmd_move_con_to_workspace_name(I3_CMD, char *name) {
-    if (strncasecmp(name, "__i3_", strlen("__i3_")) == 0) {
+    if (strncasecmp(name, "__", strlen("__")) == 0) {
         LOG("You cannot switch to the i3 internal workspaces.\n");
         ysuccess(false);
         return;
@@ -998,7 +998,7 @@ void cmd_workspace_back_and_forth(I3_CMD) {
  *
  */
 void cmd_workspace_name(I3_CMD, char *name) {
-    if (strncasecmp(name, "__i3_", strlen("__i3_")) == 0) {
+    if (strncasecmp(name, "__", strlen("__")) == 0) {
         LOG("You cannot switch to the i3 internal workspaces.\n");
         ysuccess(false);
         return;
@@ -1867,6 +1867,11 @@ void cmd_scratchpad_show(I3_CMD) {
  *
  */
 void cmd_rename_workspace(I3_CMD, char *old_name, char *new_name) {
+    if (strncasecmp(new_name, "__", strlen("__")) == 0) {
+        LOG("You cannot switch to the i3 internal workspaces.\n");
+        ysuccess(false);
+        return;
+    }
     if (old_name) {
         LOG("Renaming workspace \"%s\" to \"%s\"\n", old_name, new_name);
     } else {
index 670322a9428dbbe0c5cea78ccc3af5468b503856..5f8ec0bceb4c9b149996ad6b566f326c5d51bf9c 100644 (file)
@@ -142,6 +142,10 @@ Con *create_workspace_on_output(Output *output, Con *content) {
             continue;
         if (*target == '"')
             target++;
+        if (strncasecmp(target, "__", strlen("__")) == 0) {
+            LOG("Cannot create workspace. '__' is a reserved prefix.\n");
+            continue;
+        }
         FREE(ws->name);
         ws->name = strdup(target);
         if (ws->name[strlen(ws->name)-1] == '"')