From 93ca7a4258e83996c0075ff5976658a12ffb6e02 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Thu, 6 Jun 2013 17:35:45 +0200 Subject: i3: unify scripts into one --- .i3/scripts/workspaces.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 .i3/scripts/workspaces.py (limited to '.i3/scripts/workspaces.py') diff --git a/.i3/scripts/workspaces.py b/.i3/scripts/workspaces.py new file mode 100755 index 0000000..4c0ec87 --- /dev/null +++ b/.i3/scripts/workspaces.py @@ -0,0 +1,74 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Copyright (C) René 'Necoro' Neumann + +# +# Some helper functions for managing workspaces in i3. +# + +import sys +from os.path import realpath, dirname, join + +cwd = realpath(dirname(__file__)) +sys.path.insert(1, join(cwd, "libs")) + +import i3 +import sh + +DEFAULT = "switch" + +def ws_dmenu(**kw): + """Call `dmenu` with the names of the current workspaces. + Arguments are directly passed to `dmenu`. + + Returns the stripped output of dmenu or `None`.""" + + ws = sorted(w["name"] for w in i3.get_workspaces()) + + try: + return sh.dmenu("-b", _in = "\n".join(ws), **kw).strip() or None + except sh.ErrorReturnCode: + return None + +def new_ws(): + """Create a new workspace by using the first free number > 0.""" + nums = (w["num"] for w in i3.get_workspaces()) + nums = filter(lambda n: n is not None and n >= 0, nums) + + for i,n in enumerate(sorted(nums)): + if i != n: + i3.workspace(str(i)) + break + else: + i3.workspace(str(i+1)) + + +def switch_ws(): + """Use `dmenu` to switch to a workspace.""" + sel = ws_dmenu(p="Switch to:") + if sel is not None: + i3.workspace(sel) + +def move_to_ws(): + """Use `dmenu` to move the current container to a workspace.""" + sel = ws_dmenu(p="Move to:") + if sel is not None: + i3.move("container to workspace", sel) + +if __name__ == "__main__": + try: + arg = sys.argv[1] + except IndexError: + arg = DEFAULT + + if arg == "switch": + switch_ws() + elif arg == "move": + move_to_ws() + elif arg == "new": + new_ws() + else: + print("Unknown arg: %s" % arg) + sys.exit(1) + -- cgit v1.2.3-54-g00ecf