forked from nicolasavru/swaymonad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaster_operations.py
40 lines (30 loc) · 1.07 KB
/
master_operations.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from typing import Optional
import i3ipc
import common
def find_biggest_window(container: i3ipc.Con) -> Optional[i3ipc.Con]:
return max(container.leaves(),
key=lambda leaf: leaf.rect.width * leaf.rect.height,
default=None)
def focus_master(i3: i3ipc.Connection, event: i3ipc.Event) -> None:
del event
workspace = common.get_focused_workspace(i3)
master = find_biggest_window(workspace)
if not master:
return
master.command("focus")
def resize_master(i3: i3ipc.Connection, event: i3ipc.Event, *resize: str) -> None:
del event
workspace = common.get_focused_workspace(i3)
master = find_biggest_window(workspace)
if not master:
return
master.command('resize ' + ' '.join(resize))
def promote_window(i3: i3ipc.Connection, event: i3ipc.Event) -> None:
del event
workspace = common.get_focused_workspace(i3)
focused_window = common.get_focused_window(i3)
master = find_biggest_window(workspace)
if not master:
return
focused_window.command(f"swap container with con_id {master.id}")
focused_window.command("focus")