summaryrefslogtreecommitdiff
path: root/.local/bin/lemonbar/bargen.py
blob: a4088d333f6551b4e726d20ba702386d0dcf5e86 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from chain import ArrowModuleChain
from modules import volume, battery, updates, language, clock
import bspc


def get_desktops_bar():
    bar = []
    focused_bg = idle_fg = urgent_fg = occupied_fg = "#ebdbb2"
    focused_fg = idle_bg = "#282828"
    urgent_bg = "#cc241d"
    occupied_bg = "#928374"

    for i, desktop in enumerate(bspc.get_desktops(), 1):
        if desktop.focused:
            fg = focused_fg
            bg = focused_bg
        elif desktop.urgent:
            fg = urgent_fg
            bg = urgent_bg
        elif desktop.occupied:
            fg = occupied_fg
            bg = occupied_bg
        else:
            fg = idle_fg
            bg = idle_bg

        bar.append({
            "callback": lambda idx=i: str(idx),
            "foreground": fg,
            "background": bg,
        })

    return bar


status_modules = [
    {
        "callback": updates.callback,
        "foreground": "#ebdbb2",
        "background": "#689d6a",
    },
    {
        "callback": volume.callback,
        "foreground": "#ebdbb2",
        "background": "#458588",
    },
    {
        "callback": battery.callback,
        "foreground": "#ebdbb2",
        "background": "#b16286",
    },
    {
        "callback": language.callback,
        "foreground": "#ebdbb2",
        "background": "#98971a",
    },
    {
        "callback": clock.callback,
        "foreground": "#ebdbb2",
        "background": "#cc241d",
    },
]

desktops = ArrowModuleChain(right=True, capped_left=True, capped_right=False)
desktops.extend(*get_desktops_bar())

focused_window = bspc.get_focused_window_name()

status = ArrowModuleChain(right=False, capped_left=False, capped_right=True)
status.extend(*status_modules)

print(f"%{{l}}{desktops} %{{F#ebdbb2}}{focused_window} %{{r}}{status}%{{B#000000}}")