Exemple #1
0
def xmonify():
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds

    # The following is done in a hackish way as there is no way to wait for a
    # successfull ending of previous command

    for window in other:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace temp')

    for window in current:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace 1')

    counter = 0
    for window in other:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace 1')

        if counter == 0:
            status = i3.command("split", "v")

        counter += 1

    for window in current:
        i3.focus(con_id=window['id'])
Exemple #2
0
def cycle():
    """
    Cycles the windows in an i3 workspace.
    """

    last_focused_id = _load()

    # Get focused workspace name
    wksp_name = _get_focused_workspace()['name']

    # Get actual workspace tree object
    wksp = i3.filter(type='workspace', name=wksp_name)[0]

    # Get list of all windows in workspace
    wksp_windows = _leaves(wksp['nodes'])
    window_ids = map(lambda n: n['id'], wksp_windows)

    # Go to next window if saved state exists
    if last_focused_id in window_ids:
        next_idx = window_ids.index(last_focused_id) + 1

        if next_idx >= len(wksp_windows):
            next_idx = 0

        next_focus_id = wksp_windows[next_idx]['id']

    # Set default state, first unfocused
    else:
        unfocused = filter(lambda n: not n['focused'], wksp_windows)
        next_focus_id = unfocused[0]['id']

    _write(next_focus_id)
    i3.focus(con_id=next_focus_id)
Exemple #3
0
def cycle(window_exe, window_title, window_class):
    current = i3.filter(nodes=[], focused=True)

    try:
        current_title = current[0]["window_properties"]["title"]
        current_class = current[0]["window_properties"]["class"]
        # There are not this parameters in current
        # That happens when trying to run a program in a empty workspace
    except:
        i3.command('exec', window_exe)
        return

    if current_class == window_class or current_title == window_title:
        return
    else:
        other = i3.filter(nodes=[], focused=False)
        for window in other:
            try:
                this_window_title = window['window_properties']['title']
                this_window_class = window['window_properties']['class']
                if this_window_class == window_class or this_window_title == window_title:
                    i3.focus(con_id=window['id'])
                    return
            except:
                pass

    i3.command('exec', window_exe)
Exemple #4
0
def focus_next_on_any_output():

    # Get all visible workspace(s) - the workspace(s) currently visible on output(s)
    workspaces = i3.filter(i3.get_workspaces(), visible=True)

    # Get list containing num of the visible workspaces
    workspaces_num = [ ws['num'] for ws in workspaces ]

    # Get visible nodes 
    nodes = [ i3.filter(num=ws_num)[0]['nodes'] for ws_num in workspaces_num ]

    # Get focused node
    curr = i3.filter(nodes, focused=True)[0]

    # Get ids of all nodes
    ids = [win['id'] for win in i3.filter(nodes, nodes=[])]

    # Get index of next node
    next_idx = (ids.index(curr['id']) + 1) % len(ids)

    # Set id of next node
    next_id = ids[next_idx]

    # Focus next node
    i3.focus(con_id=next_id)
Exemple #5
0
def cycle():
    """
    Cycles the windows in an i3 workspace.
    """

    last_focused_id = _load()

    # Get focused workspace name
    wksp_name = _get_focused_workspace()['name']

    # Get actual workspace tree object
    wksp = i3.filter(type='workspace', name=wksp_name)[0]

    # Get list of all windows in workspace
    wksp_windows = _leaves(wksp['nodes'])
    window_ids = map(lambda n: n['id'], wksp_windows)

    # Go to next window if saved state exists
    if last_focused_id in window_ids:
        next_idx = window_ids.index(last_focused_id) + 1

        if next_idx >= len(wksp_windows):
            next_idx = 0

        next_focus_id = wksp_windows[next_idx]['id']

    # Set default state, first unfocused
    else:
        unfocused = filter(lambda n: not n['focused'], wksp_windows)
        next_focus_id = unfocused[0]['id']

    _write(next_focus_id)
    i3.focus(con_id=next_focus_id)
def main():
    tree = i3.get_tree()
    result = {}
    win_map = {}
    focused_window = None
    for output in tree['nodes']:
        if output['name'].startswith('__'):
            continue
        result.update(handle_output(output['nodes']))
    text_list = []
    for workspace in result:
        for win in result[workspace]:
            text_list.append(u"{kind} [{workspace}] -> {name} #{wid}".format(wid=win['id'],
                                                                workspace=workspace,
                                                                kind=win['class'],
                                                                name=win['name']))
            win_map[win['id']] = win
            if win['focused']:
                focused_window = win
    old_output = get_active_output_name(focused_window)
    answer = dmenu(sorted(text_list), dmenu_cmd('select window: ', ))
    if answer:
        wid = answer.split('#')[-1]
        i3.focus(id=wid)
        if old_output != get_active_output_name(win_map[int(wid)]):
            os.system("i3-msg 'move workspace to output left'")
def xmonify():
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds

    # The following is done in a hackish way as there is no way to wait for a
    # successfull ending of previous command

    for window in other:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace temp')

    for window in current:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace 1')

    counter = 0
    for window in other:
        status = i3.focus(con_id=window['id'])
        status = i3.move('workspace 1')

        if counter==0:
            status = i3.command("split", "v")

        counter += 1

    for window in current:
        i3.focus(con_id=window['id'])
Exemple #8
0
def make_unfocused(current_id):
    """Reset the window's property to non-floating.

    This automatically resets size and position as well.
    """

    i3.focus(con_id=current_id)
    i3.floating('disable')
Exemple #9
0
def make_focused(current_id):
    """Make the focused window floating, set its dimensions
    and position.
    """

    i3.focus(con_id=current_id)
    i3.floating('enable')
    i3.resize(f'set {WIDTH} {HEIGHT}')
    i3.move('position center')
Exemple #10
0
def focus_num(switch_to_num):
    parent = i3.parent(i3.filter(focused=True)[0]['id'])

    print(parent)
    if len(parent['nodes']) >= switch_to_num:
        switch_to_cont = parent['nodes'][switch_to_num]
        i3.focus(con_id=switch_to_cont['id'])
        while i3.focus('child')[0]:
            pass
Exemple #11
0
def focus_num(switch_to_num):
    parent = i3.parent(i3.filter(focused=True)[0]['id'])

    print(parent)
    if len(parent['nodes']) >= switch_to_num:
        switch_to_cont = parent['nodes'][switch_to_num]
        i3.focus(con_id=switch_to_cont['id'])
        while i3.focus('child')[0]:
            pass
Exemple #12
0
def focus_num(idx):
    focused_container = i3.filter(focused=True)[0]
    top_container = get_top_parent_of(focused_container)

    if top_container is not None and len(top_container['nodes']) > idx:
        target_container_id = top_container['nodes'][idx]['id']
        i3.focus(con_id=target_container_id)
        while i3.focus('child')[0]:
            pass
Exemple #13
0
def apply_output_order(order=list(range(5))):

    # The length changes in the loop due to pop() so we need to save it
    iters = len(order)
    while len(order) > 0:
        idx = order.pop()
        for i in range(iters):
            i3.workspace('10')
            i3.focus(title=str(idx))
            result = i3.move('left')
Exemple #14
0
def create_tmp(current_id):
    """Create a temporary window"""

    i3.focus(con_id=current_id, title="tmp_window")
    i3.split('vertical')

    # we don't want the tmp window to have a border
    opts = ["border none"]

    i3.open(*opts)
Exemple #15
0
def focus_next():
    num = i3.filter(i3.get_workspaces(), focused=True)[0]['num']
    ws_nodes = i3.filter(num=num)[0]['nodes']
    curr = i3.filter(ws_nodes, focused=True)[0]

    ids = [win['id'] for win in i3.filter(ws_nodes, nodes=[])]

    next_idx = (ids.index(curr['id']) + 1) % len(ids)
    next_id = ids[next_idx]

    i3.focus(con_id=next_id)
Exemple #16
0
def cycle():
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds
    for window in other:
        i3.focus(con_id=window['id'])
        time.sleep(0.5)
    # focus the original windows
    for window in current:
        i3.focus(con_id=window['id'])
Exemple #17
0
def cycle():
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds
    for window in other:
        i3.focus(con_id=window['id'])
        time.sleep(0.5)
    # focus the original windows
    for window in current:
        i3.focus(con_id=window['id'])
Exemple #18
0
def main():
    i3.workspace(str(first_free()))
    i3.layout('default')
    i3.exec(browser)
    time.sleep(1)   # give browser window time to spawn
    i3.exec(term)
    time.sleep(0.5) # give terminal window time to spawn
    i3.split('v')
    i3.layout('stacking')
    i3.focus('left')
    i3.split('v')
    i3.layout('stacking')
Exemple #19
0
def fibonacci(num):
    i3.exec(term)
    time.sleep(0.5)
    if num % 2 == 0:
        if num % 4 == 0:
            i3.focus("up")
        i3.split("h")
    else:
        if num % 4 == 1:
            i3.focus("left")
        i3.split("v")
    if num > 1:
        fibonacci(num - 1)
Exemple #20
0
def fibonacci(num):
    i3.exec(term)
    time.sleep(0.5)
    if num % 2 == 0:
        if num % 4 == 0:
            i3.focus('up')
        i3.split('h')
    else:
        if num % 4 == 1:
            i3.focus('left')
        i3.split('v')
    if num > 1:
        fibonacci(num - 1)
Exemple #21
0
def fibonacci(num):
    i3.exec(term)
    time.sleep(0.5)
    if num % 2 == 0:
        if num % 4 == 0:
            i3.focus('up')
        i3.split('h')
    else:
        if num % 4 == 1:
            i3.focus('left')
        i3.split('v')
    if num > 1:
        fibonacci(num - 1)
Exemple #22
0
def copied_alt_tab():

    num = i3.filter(i3.get_workspaces(), focused=True)[0]['num']
    all_nodes = flatten_lists(list(map(get_nodes, i3.filter())))
    curr = i3.filter(all_nodes, focused=True)[0]
    print(get_id(curr))

    ids = list(map(get_id, all_nodes)) + [get_id(curr)]
    print(ids)

    next_id = ids[(ids.index(curr['id']) + 2) % len(ids)]
    print(next_id)

    i3.focus(con_id=next_id)
Exemple #23
0
def main():
    tree = check_output(['i3-msg', '-t', 'get_tree']).decode('UTF-8').strip()
    root = json.loads(tree)
    current = findWindow(root)
    current_id = current['id']
    if "on" in current['floating']:
        tmp_id = find_tmp(root)
        if tmp_id != None:
            i3.focus(con_id=tmp_id)
            make_unfloat(current_id)
            destroy_tmp(tmp_id)
    else:
        if find_tmp(root) == None:
            create_tmp(current_id)
            make_float(current_id)
Exemple #24
0
def main():
    current = i3.filter(nodes=[], focused=True)[0]
    current_id = current['id']
    if "on" in current['floating']:
        tmp_id = find_tmp()
        if tmp_id != None:
            i3.focus(con_id=tmp_id)
            make_unfloat(current_id)
            destroy_tmp(tmp_id)
        else:
            make_unfloat()
    else:
        if find_tmp() == None:
            create_tmp(current_id)
            make_float(current_id)
Exemple #25
0
def main():
    current = i3.filter(nodes=[], focused=True)[0]
    current_id = current['id']
    if "on" in current['floating']:
        tmp_id = find_tmp()
        if tmp_id != None:
            i3.focus(con_id=tmp_id)
            make_unfloat(current_id)
            destroy_tmp(tmp_id)
        else:
            make_unfloat()
    else:
        if find_tmp() == None:
            create_tmp(current_id)
            make_float(current_id)
Exemple #26
0
def cycle():
    # get workspace focused on each screen
    workspace_per_screen = i3.get_outputs()
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds
    for window in other:
        i3.focus(con_id=window['id'])
        time.sleep(0.5)
    # focus the old workspace on each screen
    for wks in workspace_per_screen:
        i3.workspace(wks['current_workspace'])
    # focus the original windows
    for window in current:
        i3.focus(con_id=window['id'])
Exemple #27
0
def cycle():
    # get workspace focused on each screen
    workspace_per_screen = i3.get_outputs()
    # get currently focused windows
    current = i3.filter(nodes=[], focused=True)
    # get unfocused windows
    other = i3.filter(nodes=[], focused=False)
    # focus each previously unfocused window for 0.5 seconds
    for window in other:
        i3.focus(con_id=window['id'])
        time.sleep(0.5)
    # focus the old workspace on each screen
    for wks in workspace_per_screen:
        i3.workspace(wks['current_workspace'])
    # focus the original windows
    for window in current:
        i3.focus(con_id=window['id'])
Exemple #28
0
def fibonacci(num):
    i3.exec(prog)
    i3.border('1pixel')
    time.sleep(0.5)
    if num % 2 == 0:
        i3.border('1pixel')
        if num % 4 == 0:
            i3.focus('up')
            i3.border('1pixel')
        i3.split('h')
        i3.border('1pixel')
    else:
        i3.border('1pixel')
        if num % 4 == 1:
            i3.focus('left')
        i3.split('v')
    if num > 1:
        fibonacci(num - 1)
Exemple #29
0
def fibonacci(num):
    i3.exec(prog)
    i3.border('none')
    i3.gaps('inner', 'all', 'set', '15')
    time.sleep(0.5)
    if num % 2 == 0:
        i3.border('none')
        if num % 4 == 0:
            i3.focus('up')
            i3.border('none')
        i3.split('h')
        i3.border('none')
    else:
        i3.border('none')
        if num % 4 == 1:
            i3.focus('left')
        i3.split('v')
    if num > 1:
        fibonacci(num - 1)
Exemple #30
0
def focus_next():
	# get the workspaces
	num = i3.filter(i3.get_workspaces(), focused=True)[0]['num']
	# get all windows
	all_nodes = i3.filter(num=num)[0]['nodes']
	#for node in i3.filter(num=num)[0]['floating_nodes']:
	#	if not node['window'] == None:
	#		all_nodes = all_nodes + node
	#all_nodes = all_nodes + i3.filter(num=num)[0]['floating_nodes']
	# find the currently focused window
	current_win = i3.filter(all_nodes, focused=True)[0]

	# find all id's
	all_ids = [win['id'] for win in i3.filter(all_nodes, nodes=[])]
	# get the next one
	next_idx = (all_ids.index(current_win['id']) + 1) % len(all_ids)
	next_win = all_ids[next_idx]

	# fokus
	i3.focus(con_id=next_win)
Exemple #31
0
def main():
    """
    Entry point
    """
    parser = ArgumentParser()
    parser.add_argument("direction",
                        choices=("up", "down", "left", "right", "next",
                                 "prev"),
                        help="Direction to put the focus on")
    args = parser.parse_args()

    tree = i3Tree()
    con = None

    if args.direction in ("next", "prev"):
        con = cycle_outputs(tree, args.direction)
    else:
        con = cycle_windows(tree, args.direction)

    if con:
        i3.focus(con_id=con.id)
Exemple #32
0
def flip(single_column=False):
    focused_workspace = get_focused_workspace()
    focused_output = xinerama_number(focused_workspace)
    queue = []

    for workspace in workspaces:
        workspace_output = xinerama_number(workspace)

        should_flip = (not single_column
                       or focused_output % 2 == workspace_output % 2)

        if (should_flip):
            add_to_queue(workspace, queue)

    for command in queue:
        i3.command(command)

    # Restore focus to originally focused workspace
    # Race conditions apply where focus is lost on movement, so sleep!
    time.sleep(0.25)
    i3.focus("output " + get_target_output(focused_workspace))
Exemple #33
0
def focus_next_on_output():
    
    # Get num of the focused workspace
    ws_num = i3.filter(i3.get_workspaces(), focused=True)[0]['num']

    # Get nodes on workspace
    ws_nodes = i3.filter(num=ws_num)[0]['nodes']

    # Get focused node
    curr = i3.filter(ws_nodes, focused=True)[0]

    # Get ids of all nodes
    ids = [win['id'] for win in i3.filter(ws_nodes, nodes=[])]

    # Get index of next node
    next_idx = (ids.index(curr['id']) + 1) % len(ids)

    # Set id of next node
    next_id = ids[next_idx]

    # Focus next node
    i3.focus(con_id=next_id)
Exemple #34
0
def main(argv1):
    currentLang = os.popen(
        "~/softwares/xkblayout-state/xkblayout-state print %n").read()

    if currentLang == "Hebrew":
        if argv1 == "whats-app":
            argv1 = "slack"
        else:
            argv1 = "whats-app"
    os.system("setxkbmap us")
    apps = ["slack", "whats-app"]
    if isAppInFocus(argv1):
        i3.focus(instance=argv1)
        i3.move('scratchpad')
        for app in apps:
            if isAppInFocus(app):
                i3.move('scratchpad')
    else:
        if argv1 == "whats-app":
            os.system("setxkbmap il")

        i3.scratchpad('show', instance=argv1 + ".*")
Exemple #35
0
def main():
    """Grab the current window, and, if it's not floating,
    replace it with an empty window and make it floating,
    thus giving it focus among the other windows.
    """

    current = i3.filter(nodes=[], focused=True)[0]
    current_id = current['id']

    if "on" in current['floating']:
        tmp_id = find_tmp()

        if tmp_id is not None:
            i3.focus(con_id=tmp_id)
            make_unfocused(current_id)
            destroy_tmp(tmp_id)
        else:
            make_unfocused(current_id)
    else:
        # only focus a window if no other is already focused
        if find_tmp() is None:
            create_tmp(current_id)
            make_focused(current_id)
Exemple #36
0
def main():
    """
    Entry point
    """
    parser = ArgumentParser()
    parser.add_argument("direction",
                        choices=(
                            "up", "down", "left", "right",
                            "next", "prev"
                        ),
                        help="Direction to put the focus on")
    args = parser.parse_args()

    tree = i3Tree()
    con = None

    if args.direction in ("next", "prev"):
        con = cycle_outputs(tree, args.direction)
    else:
        con = cycle_windows(tree, args.direction)

    if con:
        i3.focus(con_id=con.id)
Exemple #37
0
def main():
    # The color count should correspond to the output count
    color_count = 5

    # Spread color_count hues evenly in HSV space
    hues = np.linspace(0, 1, num=color_count + 1)[:-1]

    rgbs = []
    # Convert each hue to RGB
    for hue in hues:
        rgbs.append(colorsys.hsv_to_rgb(hue, 1, 1))

    rgbs = list(zip(np.arange(len(rgbs)), rgbs))

    print("indexes: %s" % [idx for idx, rgb in rgbs])

    for idx, color in rgbs:
        display_rect(color, idx)
        plt.show(False)
        i3.focus(title=str(idx))
        i3.move('workspace 10')

    input()
Exemple #38
0
def jump_next_tab(n_tab=1):
    focused_container = i3.filter(focused=True)[0]
    tab_container = get_tab_parent(focused_container)
    all_tab_ids = [node['id'] for node in tab_container['nodes']]
    focus_tab_idx = get_container_idx_in_parent(
        tab_container,
        focused_container,
    )
    i3.focus(con_id=all_tab_ids[(focus_tab_idx + n_tab) % len(all_tab_ids)])
    i3.focus('child')
    i3.focus('child')
Exemple #39
0
def make_unfloat(current_id):
    i3.focus(con_id=current_id)
    i3.floating('disable')
Exemple #40
0
 def enable_focus(self):
     id, child = self.get_current_i3_container()
     i3.focus(con_id=id)
Exemple #41
0
def focus(window):
    '''Focuses the given window.'''
    return i3.focus(id=window)
Exemple #42
0
import sys

current_node = i3.filter(focused=True)[0]
node = current_node
while node.get('type') != 4:
    node = i3.parent(node['id'])

all_windows = i3.filter(type=2, tree=node, nodes=[])

if not all_windows:
    sys.exit(0)

for num, window in enumerate(all_windows):
    if window['id'] == current_node['id']:
        break

if sys.argv[1] == 'next':
    try:
        new_focus = all_windows[num + 1]
    except IndexError:
        new_focus = all_windows[0]
elif sys.argv[1] == 'prev':
    try:
        new_focus = all_windows[num - 1]
    except IndexError:
        new_focus = all_windows[-1]
else:
    sys.exit(1)

i3.focus(con_id=new_focus['id'])
#!/usr/bin/env python
import io

import i3

UNREAD_FILE = "/tmp/unread_notifications"

def reset_counter_file():
    try:
        fp = io.open(UNREAD_FILE, "w")
        fp.write(u"0")
        fp.close()
    except:
        pass

if __name__=="__main__":
    reset_counter_file()
    i3.focus(title="Devecoop Slack")
Exemple #44
0
def focus(window):
    """Focuses the given window."""
    return i3.focus(id=window)
#!/usr/bin/env python

import i3
import time

currentWindow = i3.filter(focused=True)[0]
this_id = currentWindow['id']
i3.focus(con_id=this_id)
i3.move('scratchpad')
i3.focus(con_id=this_id)
i3.move('to workspace 10')
i3.floating('disable')

#parentContainer = i3.parent(currentWindow['id'])
#print(parentContainer)
#nodes = parentContainer['nodes']
#print([node['name'] for node in nodes])
#for node in nodes:
#    i3.focus(con_id=node['id'])
#    i3.move('scratchpad')
#
#i3.focus(parentContainer['id'])
#i3.focus(con_id=node['id'])
#i3.move('to workspace 10')

##if parentContainer['layout'] in ['splitv', 'stacked']:
##    direction = 'down'
##else:
##    direction = 'right'
#
#nodes = parentContainer['nodes']
Exemple #46
0
def make_float(current_id):
    i3.focus(con_id=current_id)
    i3.floating('enable')
    i3.resize('set 1000 1000')
    i3.move('position center')
Exemple #47
0
def make_unfloat(current_id):
    i3.focus(con_id=current_id)
    i3.floating('disable')
Exemple #48
0
def create_tmp(current_id):
    i3.focus(con_id=current_id)
    i3.split('vertical')
    i3.open()
Exemple #49
0
def make_float(current_id):
    size = get_size()
    i3.focus(con_id=current_id)
    i3.floating('enable')
    i3.resize('set {} {}'.format((size + int(size*.56)), size))
    i3.move('position center')
Exemple #50
0
#!/usr/bin/env python

import i3
from utils import workspaces, dmenu
from utils.children import get_scratchpad_children
from pprint import pprint

reverse_dict = {}
l = []

i = 0
for id, child in get_scratchpad_children().iteritems():
    name, mark = child["name"], child["mark"]
    if mark:
        str = "{} - {} - {}".format(i, name, mark)
    else:
        str = "{} - {}".format(i, name)
        i = i + 1

    l.append(str)
    reverse_dict[str] = id

str = dmenu.dmenu(l).strip()
id = reverse_dict[str]

i3.focus(con_id=id)

def focus(window):
    """Focuses the given window."""
    return i3.focus(id=window)
Exemple #52
0
 def test_criteria(self):
     self.assertTrue(i3.focus(clasS='xterm'))
Exemple #53
0
def create_tmp(current_id):
    i3.focus(con_id=current_id)
    i3.split('vertical')
    i3.open()
Exemple #54
0
#!/usr/bin/python

import i3
import subprocess
import sys

if __name__ == '__main__':
    direction = str(sys.argv[1])
    xdo_cmd_dict = {
        'left': 'control+h',
        'down': 'control+j',
        'up': 'control+k',
        'right': 'control+l'
    }
    current = i3.filter(nodes=[], focused=True)[0]
    if 'GVIM' in current['name']:
        wid = current['window']
        xdotool_call = ["xdotool", "key", "--window", str(wid), xdo_cmd_dict[direction]]
        subprocess.call(xdotool_call)
    else:
        i3.focus(direction)
Exemple #55
0
    else:
        extra.append(leaf)
left.sort(key=lambda n:n['name'])
right.sort(key=lambda n:n['name'])
extra.sort(key=lambda n:n['name'])

print("left")
print([node['name'] for node in left])
print("right")
print([node['name'] for node in right])
print("extra")
print([node['name'] for node in extra])


for leaf in leaves:
    i3.focus(con_id=leaf['id'])
    i3.move('scratchpad')

i3.focus(con_id=workspace['id'])
i3.layout('splitv')
for leaf in left:
    revisualize(leaf, workspace['name'])

first_right = right.pop(0)
revisualize(first_right, workspace['name'])
i3.move('right')
i3.split('v')
i3.focus(con_id=first_right['id'])
for leaf in right:
    revisualize(leaf, workspace['name'])
Exemple #56
0
            if win_str in instances:
                instances[win_str] += 1
                win_str = '%s (%d)' % (win_str, instances[win_str])
            else:
                instances[win_str] = 1
            clients[win_str] = window['id']
    return clients


def win_menu(clients, l=10):
    """
    Displays a window menu using dmenu. Returns window id.
    """
    dmenu = subprocess.Popen(['/usr/bin/dmenu', '-i', '-l', str(l),
                              '-fn', '"-*-cure-medium-*-*-*-11-*-*-*-*-*-*-*"',
                              '-nb', '#101010', '-nf', '#5f5f5f', '-sb', '#191919',
                              '-sf', '#b72f62'],
                             stdin=subprocess.PIPE,
                             stdout=subprocess.PIPE)
    menu_str = '\n'.join(sorted(clients.keys()))
    # Popen.communicate returns a tuple stdout, stderr
    win_str = dmenu.communicate(menu_str.encode('utf-8'))[0].decode('utf-8')\
        .rstrip()
    return clients.get(win_str, None)

if __name__ == '__main__':
    clients = i3clients()
    win_id = win_menu(clients)
    if win_id:
        i3.focus(con_id=win_id)
Exemple #57
0
def focus(window):
    '''Focuses the given window.'''
    return i3.focus(id=window)
Exemple #58
0
def revisualize(node, workspace_name):
    i3.focus(con_id=node['id'])
    i3.move('to workspace ' + workspace_name)
    i3.floating('disable')