| ... | ... |
@@ -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())) |
| 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())) |