Robert Cranston authored on 06/06/2026 11:06:46
Showing 1 changed files
... ...
@@ -4,18 +4,28 @@ import sys
4 4
 import subprocess
5 5
 import json
6 6
 
7
-I3_GET    = ['i3-msg', '-t', 'get_workspaces']
8
-I3_RENAME = ['i3-msg', 'rename', 'workspace', 'to']
7
+FILTER        = sys.argv[1:]
8
+I3_WORKSPACES = ['i3-msg', '-t', 'get_workspaces']
9
+I3_RENAME     = ['i3-msg', 'rename', 'workspace', 'to']
10
+ESCAPE        = [
11
+    ['\\', '\\\\'],
12
+    ['"',  '\\"' ],
13
+]
9 14
 
10
-def get():
11
-    for workspace in json.loads(subprocess.check_output(I3_GET)):
15
+def run(*args):
16
+    return subprocess.check_output(args, text=True).strip()
17
+
18
+def name():
19
+    for workspace in json.loads(run(*I3_WORKSPACES)):
12 20
         if workspace['focused']:
13 21
             return workspace['name']
14 22
 
15 23
 def filter(value):
16
-    return subprocess.check_output([*sys.argv[1:], value])
24
+    return run(*FILTER, value)
17 25
 
18 26
 def rename(value):
19
-    subprocess.call([*I3_RENAME, value])
27
+    for old, new in ESCAPE:
28
+        value.replace(old, new)
29
+    run(*I3_RENAME, f'"{value}"')
20 30
 
21
-rename(filter(get()))
31
+rename(filter(name()))
Browse code

Add dotfiles

Robert Cranston authored on 13/02/2022 02:03:57
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,21 @@
1
+#!/usr/bin/env python3
2
+
3
+import sys
4
+import subprocess
5
+import json
6
+
7
+I3_GET    = ['i3-msg', '-t', 'get_workspaces']
8
+I3_RENAME = ['i3-msg', 'rename', 'workspace', 'to']
9
+
10
+def get():
11
+    for workspace in json.loads(subprocess.check_output(I3_GET)):
12
+        if workspace['focused']:
13
+            return workspace['name']
14
+
15
+def filter(value):
16
+    return subprocess.check_output([*sys.argv[1:], value])
17
+
18
+def rename(value):
19
+    subprocess.call([*I3_RENAME, value])
20
+
21
+rename(filter(get()))