aboutsummaryrefslogtreecommitdiff
path: root/sxhkd/terminal_bspwm.py
blob: eee787535cf2b8e4bd9a9266630c457f61dcd4a8 (plain) (blame)
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
41
42
43
44
45
46
import subprocess


desktop_name = 'term'
instance_name = 'tmux_term'


def is_term_running():
    p = subprocess.run(['xdo', 'id', '-n', instance_name])
    return p.returncode == 0


def run_term():
    subprocess.Popen(['alacritty', '--class', instance_name,
                      '-e', 'tmux', 'new-session', '-A', '-s', 'default'])


def get_focused_desktop():
    p = subprocess.run(['bspc', 'query', '-D', '--names', '-d', 'focused'],
                       capture_output=True,
                       check=True)
    return p.stdout.decode('utf-8').strip()


def hide_term():
    subprocess.run(['bspc', 'desktop', '-f', 'last.local'], check=True)


def show_term():
    subprocess.run(['bspc', 'desktop', 'term', '-m', 'focused'])
    subprocess.run(['bspc', 'desktop', '-f', 'term'], check=True)


def main():
    if not is_term_running():
        run_term()

    focused_desktop = get_focused_desktop()
    if focused_desktop == desktop_name:
        hide_term()
    else:
        show_term()


if __name__ == '__main__':
    main()