dotfiles/dot_config/hypr/scripts/tools/executable_dynamic

83 lines
2.1 KiB
Text
Raw Normal View History

#!/usr/bin/python
import subprocess
from pathlib import Path
import json
import pickle
import time
import threading
OUT = f"{Path.home()}/.config/hypr/store/dynamic_out.txt"
# PREV_PATH = f"{Path.home()}/.config/hypr/store/prev.txt"
prev = None
def print(ar):
with open(OUT,"w") as f:
f.write(json.dumps(ar))
# with open(f"{Path.home()}/.config/hypr/im_here","w") as f:
# f.write("")
global PAUSE_MEDIA
PAUSE_MEDIA = False
def notif_watcher():
with open(f"{Path.home()}/.config/hypr/store/latest_notif","rb") as f:
new = pickle.load(f)
global prev
if new != prev:
print(json.dumps({"class":"none","text":""}))
global PAUSE_MEDIA
PAUSE_MEDIA = True
urgency = "low"
if new["urgency"] == "CRITICAL":
urgency = "critical"
elif new["urgency"] == "NORMAL":
urgency = "normal"
doc = {
"class":urgency,
"text":f'[{new["app_name"]}] {new["summary"]}',
"tooltip":"notification"
}
print(doc)
time.sleep(3)
print({"class":"none","text":""})
PAUSE_MEDIA = False
prev = new
def start_watcher():
while 1:
notif_watcher()
time.sleep(0.5)
def debug():
while 1:
print(PAUSE_MEDIA)
time.sleep(0.5)
t = threading.Thread(target=start_watcher)
d = threading.Thread(target=debug)
t.start()
# d.start()
with open("test.log", "wb") as f:
process = subprocess.Popen(
"waybar-mpris --position --autofocus".split(),
stdout=subprocess.PIPE
)
print(json.dumps({"class":"none","text":""}))
for line in iter(lambda: process.stdout.readline().decode("utf-8"), b""):
dat = json.loads(line)
if not PAUSE_MEDIA:
if "text" in dat:
dat["text"] = dat["text"].replace(" ", "").replace("", "")
print(dat)
else:
print({"class":"none","text":""})
t.join()
# d.join()