first worked dwmbar on python
This commit is contained in:
		
							
								
								
									
										289
									
								
								dwmbar
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										289
									
								
								dwmbar
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,289 @@ | ||||
| #!/usr/bin/python3 | ||||
|  | ||||
| import time | ||||
| import asyncio | ||||
| import signal | ||||
| import psutil | ||||
| import alsaaudio | ||||
| import requests | ||||
| from subprocess import run, check_output | ||||
| from Xlib import X, display, Xutil | ||||
| from datetime import datetime | ||||
|  | ||||
|  | ||||
| DD = ';' | ||||
| DELIM = '  ' | ||||
|  | ||||
|  | ||||
| def shutdown(): | ||||
| 	for task in asyncio.Task.all_tasks(): | ||||
| 		if task is not asyncio.tasks.Task.current_task(): | ||||
| 			task.cancel() | ||||
|  | ||||
|  | ||||
| async def dwmbar(): | ||||
| 	global bl, br | ||||
|  | ||||
| 	await asyncio.sleep(1) | ||||
| 	while True: | ||||
| 		bar = f"{status()}{DD}{bl}{DD}{br}" | ||||
|  | ||||
| #		print(bar.encode('utf-8')) | ||||
| #		print(br) | ||||
| 		run(["xprop", "-root", "-set", "WM_NAME", bar], check=True) | ||||
|  | ||||
| 		await asyncio.sleep(0.1) | ||||
|  | ||||
|  | ||||
| def status(): | ||||
| 	global DELIM, net, ram, cpu, gpu, wlan, disk, vol, lang, dat, tim | ||||
|  | ||||
| 	try: | ||||
| 		bar = [ | ||||
| 			net, | ||||
| 			ram, | ||||
| 			cpu, | ||||
| 			gpu, | ||||
| 			disk, | ||||
| 			vol, | ||||
| 			lang, | ||||
| 			dat, | ||||
| 			tim | ||||
| 		] | ||||
|  | ||||
| 		return DELIM.join(bar) | ||||
| 	except: | ||||
| 		return '' | ||||
|  | ||||
|  | ||||
| async def bl(): | ||||
| 	global bl | ||||
|  | ||||
| 	COLOR1='#AAAAAA' | ||||
| 	COLOR2='#444444' | ||||
|  | ||||
| 	while True: | ||||
| 		curs = [] | ||||
| 		curs.append(['', f"${float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=XMRUSDT').json()['lastPrice']):.2f}"]) | ||||
| 		curs.append(['', f"${float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT').json()['lastPrice']):.2f}"]) | ||||
| 		curs.append(['', f"${float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=LTCUSDT').json()['lastPrice']):.2f}"]) | ||||
| 		curs.append(['Ð', f"${float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=DOGEUSDT').json()['lastPrice']):.2f}"]) | ||||
| 		curs.append(['$', f"{float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=USDTRUB').json()['lastPrice']):.2f} RUB"]) | ||||
|  | ||||
| 		curs.append(['', | ||||
| 			f"""{ | ||||
| 				float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=USDTRUB').json()['lastPrice']) / | ||||
| 				float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=USDTTRY').json()['lastPrice']) | ||||
| 			:.2f} RUB""" | ||||
| 		]) | ||||
| 		curs.append(['₴', | ||||
| 			f"""{ | ||||
| 				float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=USDTRUB').json()['lastPrice']) / | ||||
| 				float(requests.get('https://api.binance.com/api/v3/ticker/24hr?symbol=USDTUAH').json()['lastPrice']) | ||||
| 			:.2f} RUB""" | ||||
| 		]) | ||||
|  | ||||
| 		row = list(map(lambda x: f'^b{COLOR1}^^c{COLOR2}^ {x[0]} ^c{COLOR1}^^b{COLOR2}^ {x[1]} ^d^', curs)) | ||||
|  | ||||
| 		bl = DELIM.join(row) | ||||
|  | ||||
| 		await asyncio.sleep(60 * 10) | ||||
|  | ||||
|  | ||||
| async def br(): | ||||
| 	global br | ||||
|  | ||||
| 	COLOR1='#AAAAAA' | ||||
| 	COLOR2='#444444' | ||||
|  | ||||
| 	CITY='Tyumen' | ||||
|  | ||||
| 	while True: | ||||
| 		i = requests.get(f"https://wttr.in/{CITY}?format=%c").text.strip() #.encode('utf-8')[0:3].decode('utf-8') | ||||
| 		t = requests.get(f"https://wttr.in/{CITY}?format=%t").text.strip() | ||||
| 		w = requests.get(f"https://wttr.in/{CITY}?format=j2").json()['current_condition'][0]['windspeedKmph'].strip() | ||||
|  | ||||
| 		br = f"^b{COLOR2}^^c{COLOR1}^ {w} km/h ^b{COLOR1}^^c{COLOR2}^ {i} ^c{COLOR1}^^b{COLOR2}^ {t} ^d^" | ||||
|  | ||||
| 		await asyncio.sleep(60 * 30) | ||||
|  | ||||
|  | ||||
| async def net(): | ||||
| 	global net | ||||
|  | ||||
| 	COLOR1='#FF9B00' | ||||
| 	COLOR2='#A16200' | ||||
|  | ||||
| 	osent = psutil.net_io_counters().bytes_sent | ||||
| 	orecv = psutil.net_io_counters().bytes_recv | ||||
|  | ||||
| 	while True: | ||||
| 		sent = psutil.net_io_counters().bytes_sent | ||||
| 		recv = psutil.net_io_counters().bytes_recv | ||||
|  | ||||
| 		inb = f'{(recv - orecv) / 1024:0.0f} KB/s' | ||||
| 		outb = f'{(sent - osent) / 1024:0.0f} KB/s' | ||||
|  | ||||
| 		orecv = recv | ||||
| 		osent = sent | ||||
|  | ||||
| 		net = f'^c{COLOR1}^^b{COLOR2}^ {inb} ^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {outb} ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def ram(): | ||||
| 	global ram | ||||
|  | ||||
| 	COLOR1='#C700FF' | ||||
| 	COLOR2='#590073' | ||||
|  | ||||
| 	while True: | ||||
| 		ramt = psutil.virtual_memory().total / 1024 / 1024 / 1024 | ||||
| 		ramu = psutil.virtual_memory().used / 1024 / 1024 / 1024 | ||||
|  | ||||
| 		ram = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {ramu:0.1f}/{ramt:0.1f}G ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def cpu(): | ||||
| 	global cpu | ||||
|  | ||||
| 	COLOR1='#990057' | ||||
| 	COLOR2='#FF00B2' | ||||
|  | ||||
| 	while True: | ||||
| 		load = psutil.cpu_percent() | ||||
|  | ||||
| 		cpu = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {load:0.0f}% ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def gpu(): | ||||
| 	global gpu | ||||
|  | ||||
| 	COLOR1='#990057' | ||||
| 	COLOR2='#FF00B2' | ||||
|  | ||||
| 	while True: | ||||
| 		load = open('/sys/class/drm/card0/device/gpu_busy_percent').read().strip() | ||||
|  | ||||
| 		gpu = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {load}% ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def wlan(): | ||||
| 	global cpu | ||||
|  | ||||
| 	COLOR1='#009CFF' | ||||
| 	COLOR2='#005083' | ||||
|  | ||||
| 	while True: | ||||
| 		c = psutil.cpu_percent() | ||||
| 		i = '' | ||||
|  | ||||
| 		cpu = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {c:0.0f}% ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def disk(): | ||||
| 	global disk | ||||
|  | ||||
| 	COLOR1='#00FF90' | ||||
| 	COLOR2='#00A45D' | ||||
|  | ||||
| 	while True: | ||||
| 		f = psutil.disk_usage('/').free / 1024 / 1024 / 1024 | ||||
| 		t = psutil.disk_usage('/').total / 1024 / 1024 / 1024 | ||||
|  | ||||
| 		disk = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {f:0.0f}/{t:0.0f}G ^d^' | ||||
| 		await asyncio.sleep(3) | ||||
|  | ||||
|  | ||||
| async def vol(): | ||||
| 	global vol | ||||
|  | ||||
| 	COLOR1='#FF0000' | ||||
| 	COLOR2='#700000' | ||||
|  | ||||
| 	while True: | ||||
| 		v = alsaaudio.Mixer().getvolume()[0] | ||||
|  | ||||
| 		if v > 67: | ||||
| 			i = '' | ||||
| 		elif v > 34: | ||||
| 			i = '' | ||||
| 		elif v > 1: | ||||
| 			i = '' | ||||
| 		else: | ||||
| 			i = '' | ||||
|  | ||||
| 		if alsaaudio.Mixer().getmute()[0]: | ||||
| 			i = '' | ||||
|  | ||||
| 		vol = f'^b{COLOR1}^^c{COLOR2}^ {i} ^c{COLOR1}^^b{COLOR2}^ {v}% ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def lang(): | ||||
| 	global lang | ||||
|  | ||||
| 	COLOR1='#FF5800' | ||||
| 	COLOR2='#973400' | ||||
|  | ||||
| 	while True: | ||||
| 		l = run(["xkblayout-state", "print", "%s"], check=True, capture_output=True, text=True).stdout | ||||
|  | ||||
| 		lang = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {l} ^d^' | ||||
| 		await asyncio.sleep(0.1) | ||||
|  | ||||
|  | ||||
| async def tim(): | ||||
| 	global tim | ||||
|  | ||||
| 	COLOR1='#00E9FF' | ||||
| 	COLOR2='#008592' | ||||
|  | ||||
| 	while True: | ||||
| 		t = datetime.now().strftime("%H:%M:%S") | ||||
|  | ||||
| 		tim = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {t} ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| async def dat(): | ||||
| 	global dat | ||||
|  | ||||
| 	COLOR1='#17FF00' | ||||
| 	COLOR2='#0EA100' | ||||
|  | ||||
| 	while True: | ||||
| 		d = datetime.now().strftime("%d.%m.%y") | ||||
|  | ||||
| 		dat = f'^b{COLOR1}^^c{COLOR2}^  ^c{COLOR1}^^b{COLOR2}^ {d} ^d^' | ||||
| 		await asyncio.sleep(1) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
| 	signal.signal(signal.SIGINT, lambda n, f: shutdown()) | ||||
|  | ||||
| 	loop = asyncio.get_event_loop() | ||||
| 	main_task = asyncio.wait([ | ||||
| 		dwmbar(), | ||||
| 		net(), | ||||
| 		ram(), | ||||
| 		cpu(), | ||||
| 		gpu(), | ||||
| 		disk(), | ||||
| 		vol(), | ||||
| 		lang(), | ||||
| 		dat(), | ||||
| 		tim(), | ||||
| 		bl(), | ||||
| 		br() | ||||
| 	]) | ||||
|  | ||||
| 	try: | ||||
| 		loop.run_until_complete(main_task) | ||||
| 	except asyncio.CancelledError: | ||||
| 		loop.run_until_complete(main_task) | ||||
| 	loop.close() | ||||
		Reference in New Issue
	
	Block a user