experiment 1

This commit is contained in:
stupidcomputer 2024-11-04 00:20:40 -06:00
parent 6667309c1a
commit e4793ab107
1 changed files with 45 additions and 24 deletions

View File

@ -1,8 +1,8 @@
from multiprocessing import Process, Queue from multiprocessing import Process, Queue
from collections import defaultdict from collections import defaultdict
from sys import argv from sys import argv, stdout
from sys import stdout
from math import floor from math import floor
from socket import gethostname
import datetime import datetime
import signal import signal
import subprocess import subprocess
@ -56,7 +56,10 @@ def filemodfactory(filename: str, modname: str):
def new_mail(queue, _): def new_mail(queue, _):
while True: while True:
dir_output = os.listdir("/home/usr/Mail/main/INBOX/new") try:
dir_output = os.listdir("/home/usr/Mail/main/INBOX/new")
except FileNotFoundError: # we're on the phone, no mail here
return
dir_output = len(dir_output) dir_output = len(dir_output)
queue.put({ queue.put({
"module": "newmail", "module": "newmail",
@ -69,7 +72,10 @@ def bspwm(queue, monitor):
socket.AF_UNIX, socket.AF_UNIX,
socket.SOCK_STREAM socket.SOCK_STREAM
) )
client.connect("/tmp/bspwm_1_0-socket") try:
client.connect("/tmp/bspwm_1_0-socket")
except: # perhaps we're on the phone?
client.connect("/data/data/com.termux/files/usr/tmp/bspwm_1_0-socket")
message = "subscribe\0".encode() message = "subscribe\0".encode()
client.send(message) client.send(message)
@ -143,6 +149,31 @@ def render(modules) -> str:
print(output, end='') print(output, end='')
stdout.flush() stdout.flush()
def start_statusbars():
# is there an actually good xrandr library?
xrandr = subprocess.Popen(['xrandr'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = list(xrandr.stdout)
output = [i.decode("utf-8") for i in output if " connected" in i.decode("utf-8")]
serialized = []
for i in output:
splitted = i.split(' ')
print(splitted)
displayname = splitted[0]
geometry = splitted[2]
if geometry == "primary":
geometry = splitted[3]
try:
geometry_splitted = [int(i) for i in geometry.replace('x', '+').split('+')]
except ValueError:
continue
geometry_splitted[1] = 20
print(displayname, geometry_splitted)
os.system("st -c statusbar -p -g {}x{}+{}+{} -e statusbar {} & disown".format(
*map(str, geometry_splitted),
displayname
))
def main(): def main():
try: try:
os.mkdir("/home/usr/.cache/statusbar") os.mkdir("/home/usr/.cache/statusbar")
@ -150,30 +181,20 @@ def main():
pass pass
if argv[1] == "start_statusbars": if argv[1] == "start_statusbars":
# get the monitors hostname = gethostname()
xrandr = subprocess.Popen(['xrandr'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = list(xrandr.stdout)
output = [i.decode("utf-8") for i in output if " connected" in i.decode("utf-8")]
serialized = []
for i in output:
splitted = i.split(' ')
print(splitted)
displayname = splitted[0]
geometry = splitted[2]
if geometry == "primary":
geometry = splitted[3]
try: print(hostname)
geometry_splitted = [int(i) for i in geometry.replace('x', '+').split('+')] if not hostname == "localhost": # if we're not the phone
except ValueError: start_statusbars()
continue else:
geometry_splitted[1] = 20 # we are the phone
print(displayname, geometry_splitted)
os.system("st -c statusbar -p -g {}x{}+{}+{} -e statusbar {} & disown".format( os.system("st -c statusbar -p -g {}x{}+{}+{} -e statusbar {} & disown".format(
*map(str, geometry_splitted), 1920, 100, 0, 980
displayname "VNC-0"
)) ))
return return
queue = Queue() queue = Queue()
modules = [bspwm, clock, battery, batterystatus, sxhkdmode, new_mail] modules = [bspwm, clock, battery, batterystatus, sxhkdmode, new_mail]
[Process(target=module, args=(queue, argv[1])).start() for module in modules] [Process(target=module, args=(queue, argv[1])).start() for module in modules]