summaryrefslogtreecommitdiff
path: root/.local/bin/blocks/dunst
blob: 6f7ab0c44b2542f7d87993fdd8acdab8fe694830 (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
#!/usr/bin/python
"""
A do-not-disturb button for muting Dunst notifications in i3 using i3blocks
Mute is handled by passing 'DUNST_COMMAND_PAUSE' and 'DUNST_COMMAND_RESUME' to
the notify-send script and the 'DUNST_MUTE' environment variable is set to keep
track of the toggle.
"""
import os
import subprocess
import json


def mute_on():
    '''Turns off dunst notifications'''
    subprocess.run(["notify-send", "DUNST_COMMAND_PAUSE"], check=True)
    return {
        "full_text":"<span font='Font Awesome 5 Free Solid' color='#BE616E'>\uf1f6</span>",
        "DUNST_MUTE":"on"
    }


def mute_off():
    '''Turns back on dunst notifications'''
    subprocess.run(["notify-send", "DUNST_COMMAND_RESUME"], check=True)
    return {
        "full_text":"<span font='Font Awesome 5 Free Solid' color='#A4B98E'>\uf0f3</span>",
        "DUNST_MUTE":"off"
    }


def clicked():
    '''Returns True if the button was clicked'''
    button = "BLOCK_BUTTON" in os.environ and os.environ["BLOCK_BUTTON"]
    return bool(button)


def muted():
    '''Returns True if Dunst is muted'''
    mute = "DUNST_MUTE" in os.environ and os.environ["DUNST_MUTE"]
    return mute == 'on'


if clicked():
    # toggle button click to turn mute on and off
    if muted():
        RTN = mute_off()
    else:
        RTN = mute_on()


else:
    # Set default state using 'DUNST_MUTE' environment variable
    if muted():
        RTN = mute_on()
    else:
        RTN = mute_off()


print(json.dumps(RTN))