From 4984593ce564bd485cc09f89825c6b75de6b2126 Mon Sep 17 00:00:00 2001 From: piotr Date: Mon, 10 Dec 2018 23:03:40 +0100 Subject: [PATCH] 1.0-2 Project structure clearance --- psuinfo-0.0.7-3 | 487 ------------------ void/psuinfo => psuinfo-1.0-2 | 1 - psuinfo-dev | 487 ------------------ void/configs/psuinfo-bottom-icons.tint2rc | 436 ---------------- .../psuinfo-bottom-text-single.tint2rc | 284 ---------- void/configs/psuinfo-bottom-text.tint2rc | 413 --------------- void/icons/cpu.svg | 71 --- void/icons/fan.svg | 73 --- void/icons/hdd.svg | 76 --- void/icons/mem.svg | 65 --- void/icons/net.svg | 275 ---------- void/icons/swap.svg | 67 --- void/icons/temp.svg | 95 ---- void/icons/up.svg | 81 --- void/icons/xfer-b.svg | 90 ---- void/icons/xfer-d.svg | 90 ---- void/icons/xfer-u.svg | 90 ---- void/icons/xfer.svg | 90 ---- void/psuinfo-1.0.tar.gz | Bin 15605 -> 0 bytes 19 files changed, 3271 deletions(-) delete mode 100755 psuinfo-0.0.7-3 rename void/psuinfo => psuinfo-1.0-2 (99%) delete mode 100755 psuinfo-dev delete mode 100644 void/configs/psuinfo-bottom-icons.tint2rc delete mode 100644 void/configs/psuinfo-bottom-text-single.tint2rc delete mode 100644 void/configs/psuinfo-bottom-text.tint2rc delete mode 100644 void/icons/cpu.svg delete mode 100644 void/icons/fan.svg delete mode 100644 void/icons/hdd.svg delete mode 100644 void/icons/mem.svg delete mode 100644 void/icons/net.svg delete mode 100644 void/icons/swap.svg delete mode 100644 void/icons/temp.svg delete mode 100644 void/icons/up.svg delete mode 100644 void/icons/xfer-b.svg delete mode 100644 void/icons/xfer-d.svg delete mode 100644 void/icons/xfer-u.svg delete mode 100644 void/icons/xfer.svg delete mode 100644 void/psuinfo-1.0.tar.gz diff --git a/psuinfo-0.0.7-3 b/psuinfo-0.0.7-3 deleted file mode 100755 index 3ba0c17..0000000 --- a/psuinfo-0.0.7-3 +++ /dev/null @@ -1,487 +0,0 @@ -#!/usr/bin/python -# _*_ coding: utf-8 _*_ - -""" -A psutil-based command to display customizable system usage info in a single line, intended for Tint2 executors - -Author: Piotr Miller -e-mail: nwg.piotr@gmail.com -Website: http://nwg.pl -Project: https://github.com/nwg-piotr/psuinfo -License: GPL3 - -Inspired by https://github.com/tknomanzr/scripts/blob/master/tint2/executors/cpu.py by William Bradley (@tknomanzr) -""" - -import sys -import psutil -import time -import os -import subprocess - - -def main(): - fahrenheit = False - names = False - testing = False - time_start = None - components = "gStfM" - separator = " " - home = os.getenv("HOME") - draw_icons = False - - pcpu, avg, speed, freqs, temp, fans, b_time, memory, swap, disks_usage, which, ul, dl, xfer_start, xfer_finish, \ - path_to_icon, c_name= None, None, None, None, None, None, None, None, None, None, None, None, None, None, \ - None, None, None - - for i in range(1, len(sys.argv)): - if sys.argv[i] == "-h" or sys.argv[i] == "--help": - print_help() - exit(0) - - if sys.argv[i] == "-F": - fahrenheit = True - - if sys.argv[i] == "-N": - names = True - - if sys.argv[i] == "-T": - testing = True - - if sys.argv[i].startswith("-C"): - components = sys.argv[i][2::] - - if sys.argv[i].startswith("-S"): - try: - # if number given - spacing = int(sys.argv[i][2::]) - separator = " " * spacing - except ValueError: - # string given - separator = sys.argv[i][2::] - - if sys.argv[i].startswith("-W"): - try: - which = int(sys.argv[i][2::]) - except ValueError: - pass - - if sys.argv[i].upper() == "-ALL": - components = "gpaQStfMcWDUk" - names = True - testing = True - - if sys.argv[i].startswith("-I"): - draw_icons = True - # We can only have one icon per executor, so let's strip components to the first one - components = sys.argv[i][2] - # exception for UL/DL speed; to assign an icon to it we need to calculate speeds first - if components != "k": - path_to_icon = icon_path(home, components) - - if sys.argv[i].startswith("-M"): - # We can only have a custom name for a single component - components = components[0] - names = True - c_name = sys.argv[i][2::] - - if testing: - time_start = int(round(time.time() * 1000)) - - output = "" - - # Prepare ONLY requested data, ONLY once - if "g" or "p" in components: - try: - pcpu = psutil.cpu_percent(interval=1, percpu=True) - except: - pass - - if "a" in components: - try: - avg = str(psutil.cpu_percent(interval=1)) - if len(avg) < 4: - avg = " " + avg - except: - pass - - if "s" or "S" in components: - try: - speed = psutil.cpu_freq(False) - except: - pass - - if "q" or "Q" in components: - try: - freqs = psutil.cpu_freq(True) - if len(freqs) == 0: - freqs = None - except: - pass - - if "t" in components: - try: - temp = psutil.sensors_temperatures(fahrenheit) - except: - pass - - if "f" in components: - try: - fans = psutil.sensors_fans() - except: - pass - - if "m" or "M" or "z" or "Z" in components: - try: - memory = psutil.virtual_memory() - except: - pass - - if "w" or "W" or "x" in components: - try: - swap = psutil.swap_memory() - except: - pass - - if "k" in components: - try: - xfer_start = psutil.net_io_counters() - time.sleep(1) - xfer_finish = psutil.net_io_counters() - ul = (xfer_finish[0] - xfer_start[0]) / 1024 - dl = (xfer_finish[1] - xfer_start[1]) / 1024 - # We've not selected an icon previously. Now we have enough data. - if draw_icons: - path_to_icon = net_icon(home, ul, dl) - except: - pass - - drives = [] - # Find drive names, mountpoints - if "d" or "D" or "n" or "N" in components: - try: - d = psutil.disk_partitions() - # This will store name, mountpoint - for entry in d: - n = entry[0].split("/") - name = n[len(n) - 1] - # name, mountpoint - drive = name, entry[1] - drives.append(drive) - except: - pass - - if "d" or "D" in components: - try: - disks_usage = [] - for drive in drives: - # Search drives by path - data = psutil.disk_usage(drive[1]) - # Store name, used, total, percent - essential = drive[0].upper(), data[1], data[0], data[3] - disks_usage.append(essential) - except: - pass - - if "n" in components or "N" in components: - try: - disks_usage = [] - for drive in drives: - # Search drives by path - data = psutil.disk_usage(drive[1]) - # Store mountpoint, used, total, percent - essential = drive[1], data[1], data[0], data[3] - disks_usage.append(essential) - except: - pass - - if "u" or "U" in components: - try: - b_time = psutil.boot_time() - except: - pass - - # Build output component after component - output += separator - - for char in components: - if char == "g" and pcpu is not None: - if c_name: - output += c_name - output += graph_per_cpu(pcpu) + separator - - if char == "p" and pcpu is not None: - if names: - output += c_name if c_name else "CPU: " - output += per_cpu(pcpu) + separator - - if char == "a" and avg is not None: - if names: - output += c_name if c_name else "avCPU: " - output += avg + "%" + separator - - if char == "q" and freqs is not None: - if names: - output += c_name if c_name else "CPU: " - output += freq_per_cpu(freqs)[0][:-1] + " GHz" + separator - - if char == "Q" and freqs is not None: - if names: - output += c_name if c_name else "CPU: " - result = freq_per_cpu(freqs) - output += result[0][:-1] + "/" + str(result[1]) + " GHz" + separator - - if char == "s" and speed is not None: - if names: - output += c_name if c_name else "SPD: " - output += str(round(speed[0] / 1000, 1)) + " GHz" + separator - - if char == "S" and speed is not None: - if names: - output += c_name if c_name else "avSPD: " - output += str(round(speed[0] / 1000, 1)) + "/" + str(round(speed[2] / 1000, 1)) + " GHz" + separator - - if char == "t" and temp is not None and len(temp) > 0: - if names: - output += c_name if c_name else "CORE: " - output += str(temp["coretemp"][0][1]) - output += "℉" if fahrenheit else "℃" - output += separator - - if char == "f" and fans is not None and len(fans) > 0: - if names: - output += c_name if c_name else "FAN: " - fan0 = next(iter(fans.values())) - output += str(fan0[0][1]) + "/m" + separator - - if char == 'm' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(round((memory[0] - memory[1]) / 1073741824, 1)) + " GB" + separator - - if char == 'M' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(round((memory[3]) / 1073741824, 1)) + "/" + str( - round(memory[0] / 1073741824, 1)) + " GB" + separator - - if char == 'c' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(memory[2]) + "%" + separator - - if char == 'C' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(100 - memory[2]) + "%" + separator - - if char == 'u' and b_time is not None: - up_time = int(time.time()) - b_time - m, s = divmod(up_time, 60) - h, m = divmod(m, 60) - if names: - output += c_name if c_name else "UP: " - output += "%d:%02d" % (h, m) + separator - - if char == 'U' and b_time is not None: - up_time = int(time.time()) - b_time - m, s = divmod(up_time, 60) - h, m = divmod(m, 60) - if names: - output += c_name if c_name else "UP: " - output += "%d:%02d:%02d" % (h, m, s) + separator - - if char == "w" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(round(swap[1] / 1073741824, 1)) + " GB" + separator - - if char == "W" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(round(swap[1] / 1073741824, 1)) + "/" - output += str(round(swap[0] / 1073741824, 1)) + " GB" + separator - - if char == "x" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(swap[3]) + "%" + separator - - if char == "d" or char == "n" and disks_usage is not None: - if which is not None: - try: - entry = disks_usage[which] - output += entry[0] + ": " - output += str(entry[3]) + "%" + separator - except IndexError: - pass - else: - for entry in disks_usage: - output += entry[0] + ": " - output += str(entry[3]) + "%" + separator - - if char == "D" or char == "N" and disks_usage is not None: - if c_name: - output += c_name - if which is not None: - try: - entry = disks_usage[which] - output += entry[0] + ": " - output += str(round(entry[1] / 1073741824, 1)) + "/" - output += str(round(entry[2] / 1073741824, 1)) + " GB" + separator - except IndexError: - pass - else: - for entry in disks_usage: - output += entry[0] + ": " - output += str(round(entry[1] / 1073741824, 1)) + "/" - output += str(round(entry[2] / 1073741824, 1)) + " GB" + separator - - if char == "k": - if names and xfer_start is not None and xfer_finish is not None: - output += c_name if c_name else "Net: " - output += '{:0.2f}'.format((xfer_finish[0] - xfer_start[0]) / 1024) + ' {:0.2f} kB/s'.format( - (xfer_finish[1] - xfer_start[1]) / 1024) + separator - - if testing: - output += "[" + str(int((round(time.time() * 1000)) - time_start) / 1000) + "s]" + separator - - # remove leading and trailing separator - l = len(separator) - if l > 0: - output = output[l:-l] - - if draw_icons: - print(path_to_icon) - - print(output) - - -def per_cpu(result): - string = "" - for val in result: - proc = str(int(round(val, 1))) - if len(proc) < 2: - proc = " " + proc - string += proc + "% " - return string - - -def freq_per_cpu(result): - string = "" - max_freq = 0 - for val in result: - freq = str(round(val[0] / 1000, 1)) - string += freq + "|" - max_freq = str(round(val[2] / 1000, 1)) - - return string, max_freq - - -def graph_per_cpu(result): - graph = "_▁▂▃▄▅▆▇███" - - string = "" - for val in result: - proc = int(round(val / 10, 0)) - string += graph[proc] - return string - - -def print_help(): - - print("\npsuinfo [-C{components}] | [-I{component}] [-F] [-N] [-S] | [-S] [-T] [-W{number}] [-all] [-h] [--help]") - - print("\n-C defines multiple components. -I defines a single component. If none given, -CgStfM argument will be used by default.\n") - print(" g - (g)raphical CPU load bar") - print(" p - (p)ercentage for each core (text)") - print(" a - (a)verage CPU load (text)") - print(" q - fre(q)ency for each thread") - print(" Q - fre(Q)ency for each thread/max frequency") - print(" s - current CPU (s)peed") - print(" S - current/max CPU (S)peed") - print(" t - CPU (t)emperature") - print(" f - (f)an speed") - print(" m - (m)emory in use") - print(" M - (M)emory in use/total") - print(" c - used memory per(c)entage") - print(" C - free memory per(C)entage") - print(" w - s(w)ap memory in use") - print(" W - s(W)ap memory in use/total") - print(" x - swap usage in %") - print(" d - (d)rives as names usage in %") - print(" D - (D)rives as names used/total") - print(" n - drives as mou(n)tpoints usage in %") - print(" N - drives as mou(N)tpoints used/total") - print(" u - (u)ptime HH:MM") - print(" U - (U)ptime HH:MM:SS") - print(" k - current networ(k) traffic as upload/download in kB/s") - - print("\n-F - use Fahrenheit instead of ℃") - print("-N - display field names (except for (g)raphical CPU load bar)") - print("-S - number of spaces between components (-S2 if none given)") - print("-S for custom separator (use \' | \' to include spaces)") - print("-M for custom component name (\'My custom name: \')") - print("-T - test execution time") - print("-all - display all possible data (for use in terminal)\n") - - print("-I - show an icon before text; 1 component per executor allowed") - print("-W - select 0 to n-th element from multiple output (drives, mountpoints)\n") - - -def icon_path(home, component): - icons = {'g': '', - 'p': 'cpu.svg', - 'a': 'cpu.svg', - 'q': 'cpu.svg', - 'Q': 'cpu.svg', - 's': 'cpu.svg', - 'S': 'cpu.svg', - 't': 'temp.svg', - 'f': 'fan.svg', - 'm': 'mem.svg', - 'M': 'mem.svg', - 'c': 'mem.svg', - 'C': 'mem.svg', - 'w': 'swap.svg', - 'W': 'swap.svg', - 'x': 'swap.svg', - 'd': 'hdd.svg', - 'D': 'hdd.svg', - 'n': 'hdd.svg', - 'N': 'hdd.svg', - 'u': 'up.svg', - 'U': 'up.svg'} - try: - f_name = icons[component] - except KeyError: - return "" - - return icon_to_use(home, f_name) - - -def net_icon(home, ul, dl): - - if ul >= 0.01 and dl >= 0.01: - f_name = "xfer-b.svg" - elif ul >= 0.01: - f_name = "xfer-u.svg" - elif dl >= 0.01: - f_name = "xfer-d.svg" - else: - f_name = "xfer.svg" - - return icon_to_use(home, f_name) - - -def icon_to_use(home, f_name): - icon_custom = home + '/.local/share/psuinfo/' + f_name - icon_default = "/usr/share/psuinfo/" + f_name - if os.path.isfile(icon_custom): - return icon_custom - else: - return icon_default - - -if __name__ == "__main__": - main() diff --git a/void/psuinfo b/psuinfo-1.0-2 similarity index 99% rename from void/psuinfo rename to psuinfo-1.0-2 index 330c339..9376537 100755 --- a/void/psuinfo +++ b/psuinfo-1.0-2 @@ -17,7 +17,6 @@ import sys import psutil import time import os -import subprocess def main(): diff --git a/psuinfo-dev b/psuinfo-dev deleted file mode 100755 index 3ba0c17..0000000 --- a/psuinfo-dev +++ /dev/null @@ -1,487 +0,0 @@ -#!/usr/bin/python -# _*_ coding: utf-8 _*_ - -""" -A psutil-based command to display customizable system usage info in a single line, intended for Tint2 executors - -Author: Piotr Miller -e-mail: nwg.piotr@gmail.com -Website: http://nwg.pl -Project: https://github.com/nwg-piotr/psuinfo -License: GPL3 - -Inspired by https://github.com/tknomanzr/scripts/blob/master/tint2/executors/cpu.py by William Bradley (@tknomanzr) -""" - -import sys -import psutil -import time -import os -import subprocess - - -def main(): - fahrenheit = False - names = False - testing = False - time_start = None - components = "gStfM" - separator = " " - home = os.getenv("HOME") - draw_icons = False - - pcpu, avg, speed, freqs, temp, fans, b_time, memory, swap, disks_usage, which, ul, dl, xfer_start, xfer_finish, \ - path_to_icon, c_name= None, None, None, None, None, None, None, None, None, None, None, None, None, None, \ - None, None, None - - for i in range(1, len(sys.argv)): - if sys.argv[i] == "-h" or sys.argv[i] == "--help": - print_help() - exit(0) - - if sys.argv[i] == "-F": - fahrenheit = True - - if sys.argv[i] == "-N": - names = True - - if sys.argv[i] == "-T": - testing = True - - if sys.argv[i].startswith("-C"): - components = sys.argv[i][2::] - - if sys.argv[i].startswith("-S"): - try: - # if number given - spacing = int(sys.argv[i][2::]) - separator = " " * spacing - except ValueError: - # string given - separator = sys.argv[i][2::] - - if sys.argv[i].startswith("-W"): - try: - which = int(sys.argv[i][2::]) - except ValueError: - pass - - if sys.argv[i].upper() == "-ALL": - components = "gpaQStfMcWDUk" - names = True - testing = True - - if sys.argv[i].startswith("-I"): - draw_icons = True - # We can only have one icon per executor, so let's strip components to the first one - components = sys.argv[i][2] - # exception for UL/DL speed; to assign an icon to it we need to calculate speeds first - if components != "k": - path_to_icon = icon_path(home, components) - - if sys.argv[i].startswith("-M"): - # We can only have a custom name for a single component - components = components[0] - names = True - c_name = sys.argv[i][2::] - - if testing: - time_start = int(round(time.time() * 1000)) - - output = "" - - # Prepare ONLY requested data, ONLY once - if "g" or "p" in components: - try: - pcpu = psutil.cpu_percent(interval=1, percpu=True) - except: - pass - - if "a" in components: - try: - avg = str(psutil.cpu_percent(interval=1)) - if len(avg) < 4: - avg = " " + avg - except: - pass - - if "s" or "S" in components: - try: - speed = psutil.cpu_freq(False) - except: - pass - - if "q" or "Q" in components: - try: - freqs = psutil.cpu_freq(True) - if len(freqs) == 0: - freqs = None - except: - pass - - if "t" in components: - try: - temp = psutil.sensors_temperatures(fahrenheit) - except: - pass - - if "f" in components: - try: - fans = psutil.sensors_fans() - except: - pass - - if "m" or "M" or "z" or "Z" in components: - try: - memory = psutil.virtual_memory() - except: - pass - - if "w" or "W" or "x" in components: - try: - swap = psutil.swap_memory() - except: - pass - - if "k" in components: - try: - xfer_start = psutil.net_io_counters() - time.sleep(1) - xfer_finish = psutil.net_io_counters() - ul = (xfer_finish[0] - xfer_start[0]) / 1024 - dl = (xfer_finish[1] - xfer_start[1]) / 1024 - # We've not selected an icon previously. Now we have enough data. - if draw_icons: - path_to_icon = net_icon(home, ul, dl) - except: - pass - - drives = [] - # Find drive names, mountpoints - if "d" or "D" or "n" or "N" in components: - try: - d = psutil.disk_partitions() - # This will store name, mountpoint - for entry in d: - n = entry[0].split("/") - name = n[len(n) - 1] - # name, mountpoint - drive = name, entry[1] - drives.append(drive) - except: - pass - - if "d" or "D" in components: - try: - disks_usage = [] - for drive in drives: - # Search drives by path - data = psutil.disk_usage(drive[1]) - # Store name, used, total, percent - essential = drive[0].upper(), data[1], data[0], data[3] - disks_usage.append(essential) - except: - pass - - if "n" in components or "N" in components: - try: - disks_usage = [] - for drive in drives: - # Search drives by path - data = psutil.disk_usage(drive[1]) - # Store mountpoint, used, total, percent - essential = drive[1], data[1], data[0], data[3] - disks_usage.append(essential) - except: - pass - - if "u" or "U" in components: - try: - b_time = psutil.boot_time() - except: - pass - - # Build output component after component - output += separator - - for char in components: - if char == "g" and pcpu is not None: - if c_name: - output += c_name - output += graph_per_cpu(pcpu) + separator - - if char == "p" and pcpu is not None: - if names: - output += c_name if c_name else "CPU: " - output += per_cpu(pcpu) + separator - - if char == "a" and avg is not None: - if names: - output += c_name if c_name else "avCPU: " - output += avg + "%" + separator - - if char == "q" and freqs is not None: - if names: - output += c_name if c_name else "CPU: " - output += freq_per_cpu(freqs)[0][:-1] + " GHz" + separator - - if char == "Q" and freqs is not None: - if names: - output += c_name if c_name else "CPU: " - result = freq_per_cpu(freqs) - output += result[0][:-1] + "/" + str(result[1]) + " GHz" + separator - - if char == "s" and speed is not None: - if names: - output += c_name if c_name else "SPD: " - output += str(round(speed[0] / 1000, 1)) + " GHz" + separator - - if char == "S" and speed is not None: - if names: - output += c_name if c_name else "avSPD: " - output += str(round(speed[0] / 1000, 1)) + "/" + str(round(speed[2] / 1000, 1)) + " GHz" + separator - - if char == "t" and temp is not None and len(temp) > 0: - if names: - output += c_name if c_name else "CORE: " - output += str(temp["coretemp"][0][1]) - output += "℉" if fahrenheit else "℃" - output += separator - - if char == "f" and fans is not None and len(fans) > 0: - if names: - output += c_name if c_name else "FAN: " - fan0 = next(iter(fans.values())) - output += str(fan0[0][1]) + "/m" + separator - - if char == 'm' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(round((memory[0] - memory[1]) / 1073741824, 1)) + " GB" + separator - - if char == 'M' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(round((memory[3]) / 1073741824, 1)) + "/" + str( - round(memory[0] / 1073741824, 1)) + " GB" + separator - - if char == 'c' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(memory[2]) + "%" + separator - - if char == 'C' and memory is not None: - if names: - output += c_name if c_name else "MEM: " - output += str(100 - memory[2]) + "%" + separator - - if char == 'u' and b_time is not None: - up_time = int(time.time()) - b_time - m, s = divmod(up_time, 60) - h, m = divmod(m, 60) - if names: - output += c_name if c_name else "UP: " - output += "%d:%02d" % (h, m) + separator - - if char == 'U' and b_time is not None: - up_time = int(time.time()) - b_time - m, s = divmod(up_time, 60) - h, m = divmod(m, 60) - if names: - output += c_name if c_name else "UP: " - output += "%d:%02d:%02d" % (h, m, s) + separator - - if char == "w" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(round(swap[1] / 1073741824, 1)) + " GB" + separator - - if char == "W" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(round(swap[1] / 1073741824, 1)) + "/" - output += str(round(swap[0] / 1073741824, 1)) + " GB" + separator - - if char == "x" and swap is not None: - if names: - output += c_name if c_name else "SWAP: " - output += str(swap[3]) + "%" + separator - - if char == "d" or char == "n" and disks_usage is not None: - if which is not None: - try: - entry = disks_usage[which] - output += entry[0] + ": " - output += str(entry[3]) + "%" + separator - except IndexError: - pass - else: - for entry in disks_usage: - output += entry[0] + ": " - output += str(entry[3]) + "%" + separator - - if char == "D" or char == "N" and disks_usage is not None: - if c_name: - output += c_name - if which is not None: - try: - entry = disks_usage[which] - output += entry[0] + ": " - output += str(round(entry[1] / 1073741824, 1)) + "/" - output += str(round(entry[2] / 1073741824, 1)) + " GB" + separator - except IndexError: - pass - else: - for entry in disks_usage: - output += entry[0] + ": " - output += str(round(entry[1] / 1073741824, 1)) + "/" - output += str(round(entry[2] / 1073741824, 1)) + " GB" + separator - - if char == "k": - if names and xfer_start is not None and xfer_finish is not None: - output += c_name if c_name else "Net: " - output += '{:0.2f}'.format((xfer_finish[0] - xfer_start[0]) / 1024) + ' {:0.2f} kB/s'.format( - (xfer_finish[1] - xfer_start[1]) / 1024) + separator - - if testing: - output += "[" + str(int((round(time.time() * 1000)) - time_start) / 1000) + "s]" + separator - - # remove leading and trailing separator - l = len(separator) - if l > 0: - output = output[l:-l] - - if draw_icons: - print(path_to_icon) - - print(output) - - -def per_cpu(result): - string = "" - for val in result: - proc = str(int(round(val, 1))) - if len(proc) < 2: - proc = " " + proc - string += proc + "% " - return string - - -def freq_per_cpu(result): - string = "" - max_freq = 0 - for val in result: - freq = str(round(val[0] / 1000, 1)) - string += freq + "|" - max_freq = str(round(val[2] / 1000, 1)) - - return string, max_freq - - -def graph_per_cpu(result): - graph = "_▁▂▃▄▅▆▇███" - - string = "" - for val in result: - proc = int(round(val / 10, 0)) - string += graph[proc] - return string - - -def print_help(): - - print("\npsuinfo [-C{components}] | [-I{component}] [-F] [-N] [-S] | [-S] [-T] [-W{number}] [-all] [-h] [--help]") - - print("\n-C defines multiple components. -I defines a single component. If none given, -CgStfM argument will be used by default.\n") - print(" g - (g)raphical CPU load bar") - print(" p - (p)ercentage for each core (text)") - print(" a - (a)verage CPU load (text)") - print(" q - fre(q)ency for each thread") - print(" Q - fre(Q)ency for each thread/max frequency") - print(" s - current CPU (s)peed") - print(" S - current/max CPU (S)peed") - print(" t - CPU (t)emperature") - print(" f - (f)an speed") - print(" m - (m)emory in use") - print(" M - (M)emory in use/total") - print(" c - used memory per(c)entage") - print(" C - free memory per(C)entage") - print(" w - s(w)ap memory in use") - print(" W - s(W)ap memory in use/total") - print(" x - swap usage in %") - print(" d - (d)rives as names usage in %") - print(" D - (D)rives as names used/total") - print(" n - drives as mou(n)tpoints usage in %") - print(" N - drives as mou(N)tpoints used/total") - print(" u - (u)ptime HH:MM") - print(" U - (U)ptime HH:MM:SS") - print(" k - current networ(k) traffic as upload/download in kB/s") - - print("\n-F - use Fahrenheit instead of ℃") - print("-N - display field names (except for (g)raphical CPU load bar)") - print("-S - number of spaces between components (-S2 if none given)") - print("-S for custom separator (use \' | \' to include spaces)") - print("-M for custom component name (\'My custom name: \')") - print("-T - test execution time") - print("-all - display all possible data (for use in terminal)\n") - - print("-I - show an icon before text; 1 component per executor allowed") - print("-W - select 0 to n-th element from multiple output (drives, mountpoints)\n") - - -def icon_path(home, component): - icons = {'g': '', - 'p': 'cpu.svg', - 'a': 'cpu.svg', - 'q': 'cpu.svg', - 'Q': 'cpu.svg', - 's': 'cpu.svg', - 'S': 'cpu.svg', - 't': 'temp.svg', - 'f': 'fan.svg', - 'm': 'mem.svg', - 'M': 'mem.svg', - 'c': 'mem.svg', - 'C': 'mem.svg', - 'w': 'swap.svg', - 'W': 'swap.svg', - 'x': 'swap.svg', - 'd': 'hdd.svg', - 'D': 'hdd.svg', - 'n': 'hdd.svg', - 'N': 'hdd.svg', - 'u': 'up.svg', - 'U': 'up.svg'} - try: - f_name = icons[component] - except KeyError: - return "" - - return icon_to_use(home, f_name) - - -def net_icon(home, ul, dl): - - if ul >= 0.01 and dl >= 0.01: - f_name = "xfer-b.svg" - elif ul >= 0.01: - f_name = "xfer-u.svg" - elif dl >= 0.01: - f_name = "xfer-d.svg" - else: - f_name = "xfer.svg" - - return icon_to_use(home, f_name) - - -def icon_to_use(home, f_name): - icon_custom = home + '/.local/share/psuinfo/' + f_name - icon_default = "/usr/share/psuinfo/" + f_name - if os.path.isfile(icon_custom): - return icon_custom - else: - return icon_default - - -if __name__ == "__main__": - main() diff --git a/void/configs/psuinfo-bottom-icons.tint2rc b/void/configs/psuinfo-bottom-icons.tint2rc deleted file mode 100644 index 3416757..0000000 --- a/void/configs/psuinfo-bottom-icons.tint2rc +++ /dev/null @@ -1,436 +0,0 @@ -#---- Generated by tint2conf 0be1 ---- -# See https://gitlab.com/o9000/tint2/wikis/Configure for -# full documentation of the configuration options. -#------------------------------------- -# Gradients -# Gradient 1 -gradient = vertical -start_color = #000000 0 -end_color = #000000 0 - -#------------------------------------- -# Backgrounds -# Background 1: Panel -rounded = 0 -border_width = 1 -border_sides = T -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 51 -border_color = #444444 52 -background_color_hover = #000000 60 -border_color_hover = #000000 30 -background_color_pressed = #000000 60 -border_color_pressed = #000000 30 - -# Background 2: Domyślne zadanie, Zminimalizowane -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #777777 30 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 3: Aktywne -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #ffffff 40 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 4: -rounded = 4 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #aa4400 100 -border_color = #aa7733 100 -background_color_hover = #cc7700 100 -border_color_hover = #aa7733 100 -background_color_pressed = #555555 4 -border_color_pressed = #aa7733 100 - -# Background 5: Podpowiedzi, Zegar -rounded = 1 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 100 -border_color = #333333 100 -gradient_id = 0 -background_color_hover = #646464 100 -border_color_hover = #000000 100 -gradient_id_hover = 0 -background_color_pressed = #646464 100 -border_color_pressed = #000000 100 - -#------------------------------------- -# Panel -panel_items = SETEEEEEEEE -panel_size = 100% 26 -panel_margin = 4 0 -panel_padding = 0 0 0 -panel_background_id = 1 -wm_menu = 1 -panel_dock = 0 -panel_position = bottom right horizontal -panel_layer = bottom -panel_monitor = primary -panel_shrink = 0 -autohide = 0 -autohide_show_timeout = 0 -autohide_hide_timeout = 0.5 -autohide_height = 2 -strut_policy = follow_size -panel_window_name = tint2 -disable_transparency = 0 -mouse_effects = 0 -font_shadow = 0 -mouse_hover_icon_asb = 99 0 10 -mouse_pressed_icon_asb = 99 0 0 -scale_relative_to_dpi = 0 -scale_relative_to_screen_height = 0 - -#------------------------------------- -# Taskbar -taskbar_mode = single_desktop -taskbar_hide_if_empty = 0 -taskbar_padding = 0 0 2 -taskbar_background_id = 0 -taskbar_active_background_id = 0 -taskbar_name = 0 -taskbar_hide_inactive_tasks = 1 -taskbar_hide_different_monitor = 0 -taskbar_hide_different_desktop = 0 -taskbar_always_show_all_desktop_tasks = 0 -taskbar_name_padding = 4 2 -taskbar_name_background_id = 0 -taskbar_name_active_background_id = 0 -taskbar_name_font_color = #e3e3e3 100 -taskbar_name_active_font_color = #ffffff 100 -taskbar_distribute_size = 0 -taskbar_sort_order = none -task_align = left - -#------------------------------------- -# Task -task_text = 1 -task_icon = 0 -task_centered = 1 -urgent_nb_of_blink = 3 -task_maximum_size = 130 20 -task_padding = 8 0 6 -task_tooltip = 0 -task_thumbnail = 0 -task_thumbnail_size = 210 -task_font_color = #ffffff 100 -task_background_id = 2 -task_active_background_id = 3 -task_iconified_background_id = 2 -mouse_left = toggle_iconify -mouse_middle = none -mouse_right = none -mouse_scroll_up = none -mouse_scroll_down = none - -#------------------------------------- -# System tray (notification area) -systray_padding = 10 0 2 -systray_background_id = 0 -systray_sort = ascending -systray_icon_size = 26 -systray_icon_asb = 100 0 0 -systray_monitor = 1 -systray_name_filter = - -#------------------------------------- -# Launcher -launcher_padding = 10 4 2 -launcher_background_id = 0 -launcher_icon_background_id = 0 -launcher_icon_size = 36 -launcher_icon_asb = 100 0 0 -launcher_icon_theme = Numix-Circle -launcher_icon_theme_override = 0 -startup_notifications = 1 -launcher_tooltip = 1 -launcher_item_app = /usr/share/applications/pamac-manager.desktop -launcher_item_app = /usr/share/applications/xfce4-terminal.desktop -launcher_item_app = /usr/share/applications/org.gnome.Nautilus.desktop -launcher_item_app = /usr/share/applications/org.gnome.gedit.desktop -launcher_item_app = /usr/share/applications/chromium.desktop -launcher_item_app = /usr/share/applications/inkscape.desktop -launcher_item_app = /usr/share/applications/gimp.desktop -launcher_item_app = ~/.local/share/applications/jetbrains-pycharm-ce.desktop -launcher_item_app = /usr/share/applications/obbackup.desktop -launcher_item_app = /usr/share/applications/virtualbox.desktop - -#------------------------------------- -# Clock -time1_format = %H:%M:%S -time2_format = %a %d %b -time1_font = Liberation Mono 10 -time1_timezone = -time2_timezone = -time2_font = Liberation Sans Bold 9 -clock_font_color = #ffffff 100 -clock_padding = 0 0 -clock_background_id = 5 -clock_tooltip = -clock_tooltip_timezone = -clock_lclick_command = gsimplecal -clock_rclick_command = -clock_mclick_command = -clock_uwheel_command = -clock_dwheel_command = - -#------------------------------------- -# Battery -battery_tooltip = 1 -battery_low_status = 31 -battery_low_cmd = obhud --battery LOW -battery_full_cmd = obhud --battery full -bat1_font = Liberation Sans Bold 10 -bat2_font = Liberation Sans Bold 9 -battery_font_color = #ffffff 100 -bat1_format = -bat2_format = -battery_padding = 1 0 -battery_background_id = 0 -battery_hide = 101 -battery_lclick_command = -battery_rclick_command = -battery_mclick_command = -battery_uwheel_command = -battery_dwheel_command = -ac_connected_cmd = obhud --ac connected -ac_disconnected_cmd = obhud --ac disconnected - -#------------------------------------- -# Executor 1 -execp = new -execp_command = psuinfo -Ik -execp_interval = 2 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 2 -execp = new -execp_command = psuinfo -Cg -execp_interval = 2 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 0 -execp_tooltip = -execp_lclick_command = xfce4-terminal -e 'htop' -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 10 -execp_font_color = #eeeeee 100 -execp_padding = 5 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 26 -execp_icon_h = 26 - -#------------------------------------- -# Executor 3 -execp = new -execp_command = psuinfo -Ia -execp_interval = 3 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 4 -execp = new -execp_command = psuinfo -It -execp_interval = 5 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 5 -execp = new -execp_command = psuinfo -If -execp_interval = 3 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 6 -execp = new -execp_command = psuinfo -IM -execp_interval = 4 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 7 -execp = new -execp_command = psuinfo -In -W0 -execp_interval = 30 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 8 -execp = new -execp_command = psuinfo -In -W1 -execp_interval = 30 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 5 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 9 -execp = new -execp_command = psuinfo -Iu -execp_interval = 30 -execp_has_icon = 1 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Tooltip -tooltip_show_timeout = 0.5 -tooltip_hide_timeout = 0.1 -tooltip_padding = 4 4 -tooltip_background_id = 5 -tooltip_font_color = #dddddd 100 - diff --git a/void/configs/psuinfo-bottom-text-single.tint2rc b/void/configs/psuinfo-bottom-text-single.tint2rc deleted file mode 100644 index 37b3948..0000000 --- a/void/configs/psuinfo-bottom-text-single.tint2rc +++ /dev/null @@ -1,284 +0,0 @@ -#---- Generated by tint2conf 6f2f ---- -# See https://gitlab.com/o9000/tint2/wikis/Configure for -# full documentation of the configuration options. -#------------------------------------- -# Gradients -# Gradient 1 -gradient = vertical -start_color = #000000 0 -end_color = #000000 0 - -#------------------------------------- -# Backgrounds -# Background 1: Panel -rounded = 0 -border_width = 1 -border_sides = T -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 51 -border_color = #444444 52 -background_color_hover = #000000 60 -border_color_hover = #000000 30 -background_color_pressed = #000000 60 -border_color_pressed = #000000 30 - -# Background 2: Domyślne zadanie, Zminimalizowane -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #777777 30 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 3: Aktywne -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #ffffff 40 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 4: -rounded = 4 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #aa4400 100 -border_color = #aa7733 100 -background_color_hover = #cc7700 100 -border_color_hover = #aa7733 100 -background_color_pressed = #555555 4 -border_color_pressed = #aa7733 100 - -# Background 5: Podpowiedzi, Zegar -rounded = 1 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 100 -border_color = #333333 100 -gradient_id = 0 -background_color_hover = #646464 100 -border_color_hover = #000000 100 -gradient_id_hover = 0 -background_color_pressed = #646464 100 -border_color_pressed = #000000 100 - -#------------------------------------- -# Panel -panel_items = STE:E -panel_size = 100% 26 -panel_margin = 4 0 -panel_padding = 0 0 0 -panel_background_id = 1 -wm_menu = 1 -panel_dock = 0 -panel_position = bottom right horizontal -panel_layer = bottom -panel_monitor = primary -panel_shrink = 0 -autohide = 0 -autohide_show_timeout = 0 -autohide_hide_timeout = 0.5 -autohide_height = 2 -strut_policy = follow_size -panel_window_name = tint2 -disable_transparency = 0 -mouse_effects = 0 -font_shadow = 0 -mouse_hover_icon_asb = 99 0 10 -mouse_pressed_icon_asb = 99 0 0 -scale_relative_to_dpi = 0 -scale_relative_to_screen_height = 0 - -#------------------------------------- -# Taskbar -taskbar_mode = single_desktop -taskbar_hide_if_empty = 0 -taskbar_padding = 0 0 2 -taskbar_background_id = 0 -taskbar_active_background_id = 0 -taskbar_name = 0 -taskbar_hide_inactive_tasks = 1 -taskbar_hide_different_monitor = 0 -taskbar_hide_different_desktop = 0 -taskbar_always_show_all_desktop_tasks = 0 -taskbar_name_padding = 4 2 -taskbar_name_background_id = 0 -taskbar_name_active_background_id = 0 -taskbar_name_font_color = #e3e3e3 100 -taskbar_name_active_font_color = #ffffff 100 -taskbar_distribute_size = 0 -taskbar_sort_order = none -task_align = left - -#------------------------------------- -# Task -task_text = 1 -task_icon = 0 -task_centered = 1 -urgent_nb_of_blink = 3 -task_maximum_size = 130 20 -task_padding = 8 0 6 -task_tooltip = 0 -task_thumbnail = 0 -task_thumbnail_size = 210 -task_font_color = #ffffff 100 -task_background_id = 2 -task_active_background_id = 3 -task_iconified_background_id = 2 -mouse_left = toggle_iconify -mouse_middle = none -mouse_right = none -mouse_scroll_up = none -mouse_scroll_down = none - -#------------------------------------- -# System tray (notification area) -systray_padding = 10 0 2 -systray_background_id = 0 -systray_sort = ascending -systray_icon_size = 26 -systray_icon_asb = 100 0 0 -systray_monitor = 1 -systray_name_filter = - -#------------------------------------- -# Launcher -launcher_padding = 10 4 2 -launcher_background_id = 0 -launcher_icon_background_id = 0 -launcher_icon_size = 36 -launcher_icon_asb = 100 0 0 -launcher_icon_theme = Numix-Circle -launcher_icon_theme_override = 0 -startup_notifications = 1 -launcher_tooltip = 1 -launcher_item_app = /usr/share/applications/pamac-manager.desktop -launcher_item_app = /usr/share/applications/xfce4-terminal.desktop -launcher_item_app = /usr/share/applications/org.gnome.Nautilus.desktop -launcher_item_app = /usr/share/applications/org.gnome.gedit.desktop -launcher_item_app = /usr/share/applications/chromium.desktop -launcher_item_app = /usr/share/applications/inkscape.desktop -launcher_item_app = /usr/share/applications/gimp.desktop -launcher_item_app = ~/.local/share/applications/jetbrains-pycharm-ce.desktop -launcher_item_app = /usr/share/applications/obbackup.desktop -launcher_item_app = /usr/share/applications/virtualbox.desktop - -#------------------------------------- -# Clock -time1_format = %H:%M:%S -time2_format = %a %d %b -time1_font = Liberation Mono 10 -time1_timezone = -time2_timezone = -time2_font = Liberation Sans Bold 9 -clock_font_color = #ffffff 100 -clock_padding = 0 0 -clock_background_id = 5 -clock_tooltip = -clock_tooltip_timezone = -clock_lclick_command = gsimplecal -clock_rclick_command = -clock_mclick_command = -clock_uwheel_command = -clock_dwheel_command = - -#------------------------------------- -# Battery -battery_tooltip = 1 -battery_low_status = 31 -battery_low_cmd = obhud --battery LOW -battery_full_cmd = obhud --battery full -bat1_font = Liberation Sans Bold 10 -bat2_font = Liberation Sans Bold 9 -battery_font_color = #ffffff 100 -bat1_format = -bat2_format = -battery_padding = 1 0 -battery_background_id = 0 -battery_hide = 101 -battery_lclick_command = -battery_rclick_command = -battery_mclick_command = -battery_uwheel_command = -battery_dwheel_command = -ac_connected_cmd = obhud --ac connected -ac_disconnected_cmd = obhud --ac disconnected - -#------------------------------------- -# Separator 1 -separator = new -separator_background_id = 0 -separator_color = #777777 87 -separator_style = dots -separator_size = 3 -separator_padding = 1 0 - -#------------------------------------- -# Executor 1 -execp = new -execp_command = psuinfo -Cknu -N -S' | ' -execp_interval = 10 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 16 -execp_icon_h = 16 - -#------------------------------------- -# Executor 2 -execp = new -execp_command = psuinfo -CgaftM -N -S' | ' -execp_interval = 2 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 0 -execp_tooltip = -execp_lclick_command = xfce4-terminal -e 'htop' -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 10 -execp_font_color = #eeeeee 100 -execp_padding = 5 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 26 -execp_icon_h = 26 - -#------------------------------------- -# Tooltip -tooltip_show_timeout = 0.5 -tooltip_hide_timeout = 0.1 -tooltip_padding = 4 4 -tooltip_background_id = 5 -tooltip_font_color = #dddddd 100 - diff --git a/void/configs/psuinfo-bottom-text.tint2rc b/void/configs/psuinfo-bottom-text.tint2rc deleted file mode 100644 index 920f08b..0000000 --- a/void/configs/psuinfo-bottom-text.tint2rc +++ /dev/null @@ -1,413 +0,0 @@ -#---- Generated by tint2conf bd37 ---- -# See https://gitlab.com/o9000/tint2/wikis/Configure for -# full documentation of the configuration options. -#------------------------------------- -# Gradients -# Gradient 1 -gradient = vertical -start_color = #000000 0 -end_color = #000000 0 - -#------------------------------------- -# Backgrounds -# Background 1: Panel -rounded = 0 -border_width = 1 -border_sides = T -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 51 -border_color = #444444 52 -background_color_hover = #000000 60 -border_color_hover = #000000 30 -background_color_pressed = #000000 60 -border_color_pressed = #000000 30 - -# Background 2: Domyślne zadanie, Zminimalizowane -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #777777 30 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 3: Aktywne -rounded = 4 -border_width = 1 -border_sides = -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #777777 20 -border_color = #ffffff 40 -background_color_hover = #aaaaaa 22 -border_color_hover = #eaeaea 44 -background_color_pressed = #555555 4 -border_color_pressed = #eaeaea 44 - -# Background 4: -rounded = 4 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #aa4400 100 -border_color = #aa7733 100 -background_color_hover = #cc7700 100 -border_color_hover = #aa7733 100 -background_color_pressed = #555555 4 -border_color_pressed = #aa7733 100 - -# Background 5: Podpowiedzi, Zegar -rounded = 1 -border_width = 1 -border_sides = TBLR -border_content_tint_weight = 0 -background_content_tint_weight = 0 -background_color = #222222 100 -border_color = #333333 100 -gradient_id = 0 -background_color_hover = #646464 100 -border_color_hover = #000000 100 -gradient_id_hover = 0 -background_color_pressed = #646464 100 -border_color_pressed = #000000 100 - -#------------------------------------- -# Panel -panel_items = SETEEEEEEE -panel_size = 100% 26 -panel_margin = 4 0 -panel_padding = 0 0 0 -panel_background_id = 1 -wm_menu = 1 -panel_dock = 0 -panel_position = bottom right horizontal -panel_layer = bottom -panel_monitor = primary -panel_shrink = 0 -autohide = 0 -autohide_show_timeout = 0 -autohide_hide_timeout = 0.5 -autohide_height = 2 -strut_policy = follow_size -panel_window_name = tint2 -disable_transparency = 0 -mouse_effects = 0 -font_shadow = 0 -mouse_hover_icon_asb = 99 0 10 -mouse_pressed_icon_asb = 99 0 0 -scale_relative_to_dpi = 0 -scale_relative_to_screen_height = 0 - -#------------------------------------- -# Taskbar -taskbar_mode = single_desktop -taskbar_hide_if_empty = 0 -taskbar_padding = 0 0 2 -taskbar_background_id = 0 -taskbar_active_background_id = 0 -taskbar_name = 0 -taskbar_hide_inactive_tasks = 1 -taskbar_hide_different_monitor = 0 -taskbar_hide_different_desktop = 0 -taskbar_always_show_all_desktop_tasks = 0 -taskbar_name_padding = 4 2 -taskbar_name_background_id = 0 -taskbar_name_active_background_id = 0 -taskbar_name_font_color = #e3e3e3 100 -taskbar_name_active_font_color = #ffffff 100 -taskbar_distribute_size = 0 -taskbar_sort_order = none -task_align = left - -#------------------------------------- -# Task -task_text = 1 -task_icon = 0 -task_centered = 1 -urgent_nb_of_blink = 3 -task_maximum_size = 130 20 -task_padding = 8 0 6 -task_tooltip = 0 -task_thumbnail = 0 -task_thumbnail_size = 210 -task_font_color = #ffffff 100 -task_background_id = 2 -task_active_background_id = 3 -task_iconified_background_id = 2 -mouse_left = toggle_iconify -mouse_middle = none -mouse_right = none -mouse_scroll_up = none -mouse_scroll_down = none - -#------------------------------------- -# System tray (notification area) -systray_padding = 10 0 2 -systray_background_id = 0 -systray_sort = ascending -systray_icon_size = 26 -systray_icon_asb = 100 0 0 -systray_monitor = 1 -systray_name_filter = - -#------------------------------------- -# Launcher -launcher_padding = 10 4 2 -launcher_background_id = 0 -launcher_icon_background_id = 0 -launcher_icon_size = 36 -launcher_icon_asb = 100 0 0 -launcher_icon_theme = Numix-Circle -launcher_icon_theme_override = 0 -startup_notifications = 1 -launcher_tooltip = 1 -launcher_item_app = /usr/share/applications/pamac-manager.desktop -launcher_item_app = /usr/share/applications/xfce4-terminal.desktop -launcher_item_app = /usr/share/applications/org.gnome.Nautilus.desktop -launcher_item_app = /usr/share/applications/org.gnome.gedit.desktop -launcher_item_app = /usr/share/applications/chromium.desktop -launcher_item_app = /usr/share/applications/inkscape.desktop -launcher_item_app = /usr/share/applications/gimp.desktop -launcher_item_app = ~/.local/share/applications/jetbrains-pycharm-ce.desktop -launcher_item_app = /usr/share/applications/obbackup.desktop -launcher_item_app = /usr/share/applications/virtualbox.desktop - -#------------------------------------- -# Clock -time1_format = %H:%M:%S -time2_format = %a %d %b -time1_font = Liberation Mono 10 -time1_timezone = -time2_timezone = -time2_font = Liberation Sans Bold 9 -clock_font_color = #ffffff 100 -clock_padding = 0 0 -clock_background_id = 5 -clock_tooltip = -clock_tooltip_timezone = -clock_lclick_command = gsimplecal -clock_rclick_command = -clock_mclick_command = -clock_uwheel_command = -clock_dwheel_command = - -#------------------------------------- -# Battery -battery_tooltip = 1 -battery_low_status = 31 -battery_low_cmd = obhud --battery LOW -battery_full_cmd = obhud --battery full -bat1_font = Liberation Sans Bold 10 -bat2_font = Liberation Sans Bold 9 -battery_font_color = #ffffff 100 -bat1_format = -bat2_format = -battery_padding = 1 0 -battery_background_id = 0 -battery_hide = 101 -battery_lclick_command = -battery_rclick_command = -battery_mclick_command = -battery_uwheel_command = -battery_dwheel_command = -ac_connected_cmd = obhud --ac connected -ac_disconnected_cmd = obhud --ac disconnected - -#------------------------------------- -# Executor 1 -execp = new -execp_command = psuinfo -Ck -M'Network: ' -execp_interval = 2 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 2 -execp = new -execp_command = psuinfo -Cg -execp_interval = 2 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 0 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 10 -execp_font_color = #eeeeee 100 -execp_padding = 5 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 3 -execp = new -execp_command = psuinfo -Ca -N -execp_interval = 3 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 4 -execp = new -execp_command = psuinfo -Ct -N -execp_interval = 5 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 5 -execp = new -execp_command = psuinfo -Cf -N -execp_interval = 3 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 6 -execp = new -execp_command = psuinfo -CM -N -execp_interval = 4 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 7 -execp = new -execp_command = psuinfo -Cn -N -execp_interval = 30 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Executor 8 -execp = new -execp_command = psuinfo -Cu -N -execp_interval = 30 -execp_has_icon = 0 -execp_cache_icon = 1 -execp_continuous = 0 -execp_markup = 1 -execp_tooltip = -execp_lclick_command = -execp_rclick_command = -execp_mclick_command = -execp_uwheel_command = -execp_dwheel_command = -execp_font = Monospace 9 -execp_font_color = #eeeeee 100 -execp_padding = 10 0 -execp_background_id = 0 -execp_centered = 0 -execp_icon_w = 0 -execp_icon_h = 0 - -#------------------------------------- -# Tooltip -tooltip_show_timeout = 0.5 -tooltip_hide_timeout = 0.1 -tooltip_padding = 4 4 -tooltip_background_id = 5 -tooltip_font_color = #dddddd 100 - diff --git a/void/icons/cpu.svg b/void/icons/cpu.svg deleted file mode 100644 index 92c55b3..0000000 --- a/void/icons/cpu.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/fan.svg b/void/icons/fan.svg deleted file mode 100644 index b311d2d..0000000 --- a/void/icons/fan.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/void/icons/hdd.svg b/void/icons/hdd.svg deleted file mode 100644 index 8dc8fd0..0000000 --- a/void/icons/hdd.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/void/icons/mem.svg b/void/icons/mem.svg deleted file mode 100644 index 71b487e..0000000 --- a/void/icons/mem.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/void/icons/net.svg b/void/icons/net.svg deleted file mode 100644 index 25a3bb3..0000000 --- a/void/icons/net.svg +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/swap.svg b/void/icons/swap.svg deleted file mode 100644 index c1720c6..0000000 --- a/void/icons/swap.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/temp.svg b/void/icons/temp.svg deleted file mode 100644 index 7cf045c..0000000 --- a/void/icons/temp.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/void/icons/up.svg b/void/icons/up.svg deleted file mode 100644 index 9383399..0000000 --- a/void/icons/up.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/void/icons/xfer-b.svg b/void/icons/xfer-b.svg deleted file mode 100644 index d092f6c..0000000 --- a/void/icons/xfer-b.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/xfer-d.svg b/void/icons/xfer-d.svg deleted file mode 100644 index 15176f8..0000000 --- a/void/icons/xfer-d.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/xfer-u.svg b/void/icons/xfer-u.svg deleted file mode 100644 index cfb9717..0000000 --- a/void/icons/xfer-u.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/icons/xfer.svg b/void/icons/xfer.svg deleted file mode 100644 index b6625c3..0000000 --- a/void/icons/xfer.svg +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/void/psuinfo-1.0.tar.gz b/void/psuinfo-1.0.tar.gz deleted file mode 100644 index 0840d9b602cbb57c7e1feb152d6e6689105d3512..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15605 zcma*NRcswR)Fm2bZkU-l4Kp({Gjn>v%*@Q3v}wc4%ndU$o`#vuneU(ba;15gk(RZs zWoyf_Wy@Y(Wbp_P1J$TT5YShFKrbTMwA0U1&E@%V+2ikOe|mIqoPDcUww#MIm#?$7 zMI77FRWa#P@DElyQqufw<~DXVwvb=vMCSTpimm!%{xGSLiz{SE{oZ%MjOmeP7)t%EAS zp?Jk2_iyNw6QA*H{e-u17cgG;vzM+|75sMMb8KAkFzP1Y+rjo}wx>wfYah(V@81F5 zd8qGN=!3^nexI}xkSDuVt@;3eZtPZr*RTANPwktOK6X#se6It!d>hYcnwJInOj&Km zWo5Iovq9|8?@MnR3#DsUL2d0X3^2}f4?-=1`ou5(=r7Gs%_{*T1RuTSfQ+Q2Ne_4G z0QVMCo14rH|K;~v$}8n@%L(@E0%nmKtD+ZpX_ui>4R>11@jG?$KS(7~Yvipgjv(M09YEMniE^hw?=zsR$S7jHgnu=_r3nfSa$Kyms z+nF^PsKOwJLBoNMoQGumQ{!Lu$!$39KdEmmFBDZT2k@N*i%_JNQMGhq zzUI^pmx2WJ)a2JtzS2H+G3juW)dd5GdjI<5F&hO7yJi)L^T;f{4SyxWeNJMjR6hg> z%%w92JIHI!yLJSe$VlpV??TqJ%Aw~i;ho6``@OlD*3p543X^`V@+Fk>nW$ccLZ&{p zCRsA^U@aK&%9J%WCa!9VKjI{2UpsIbNzjfTCEovjE8t8>(`D$I3BH%XJzJV?=1+A^ zNkDqH)}Aq`)Ai&pDDmG>DwAU7iAgz`s6=rHG{gmLILS*yKebsL9iO-fee%OjQR2nB zcPYJ3axz3xMC0Q!SPi;~f*$ZpJ567AfF!}9h5Zvjhmr(oOBYCTH^Dj~qE|0T9Ae{> z_ss|RpOuYYf+!QJ$x{&qrzgMl4RkJR3aeczcx$?YT!ktmWaqMm7tVXD!MZGxcC~U>~tT@`bB5P`pl+@Y7Y=QLbFjPbnzzv@07wtWKu%|!)G4!;&Xmpt0MF32y9w{FG2jbX4Kv9ne&RiPBNb&f~ z9bayL2<5$zN^;7^9Hta+v5&^PP9B;7)@Z6u=^g0Me%~S^WlZqp51EV%KC&Cl9QyA1 zH~bwPSp)AdgWP&ymH^!agV?(HjCsVsQc9w@2_HOqyUc`$<)VA&x)Qs^_l}O*-ioWIHhNvrR8B_qoGeh zw4atOjI9~xp{)W9V((=mu`xJ6H3LJ(Bn3ujg$Q*NjVqlJ!wd{5+$dA*mUU*i`LU?F z*}hejP;i>MQ~U1sV>tQ=YG@-i>c3J!*fnC&Khdypc@lr-W-!g)YB`( z&_eY0nM>RNBnEyZ#$MisNp0`~0kg*9RPj}>qyKwfVAMZwt&R6N$oLE#X%Np1Mvoh7 z0qt$Qwt!55;GIP989)IDs_hOQYX>48zv<_o=d_hKOg^NqqFb==> zeY^MN@Mf%h&GOUPyXC-T$h<{j%ynk23LRBP6>%@BG_ee=fQW(0!_faWE|70HHL@6* zH3DfiHbM=dLu4~09U2zK^c#7eSlK)J6wnBjVn=I5#H4D68@ zas!81Sg;HIdOrrqV=S<1%Nf=y^m-$%{OJ|9v z#!?|8&~!ZeE`)IEs}UMshYe}ut8pN36_6RTTlg|~ReIv{bgOug_9a6X)=FY%+3O(ZDgdE1sJhGyna##>0WfK7=5o~IF0ssJj zIEpR}NuERN3sYHX(F@%*m*D=+10nt5QyE(FGb;}b>LN8)%nobV?knaeN}M=^U;4f6cs0PSk8hLTKidc&iy(+uZ z$O*hyIl?RfWD7lua5pN{5;X||wH^1UoFi;`o}Ytuse1Ne1%KFKu(L9))15U}60=n9 z``?cU}n=iU0hAXJ~F_7r#MimY@4Tm!!!=nskErdO_jE0jGYKtNGig5m; z8x8=h1<&L0pjh}QyZ$%}Mo}ehiw>hQ-n?&cK4_G6n_O=})h0%!m^_>r?D;}Q$D9?~ zPB!a>(C50%B}Ah4S@CLyXjhv9M?62iSuVQ39Dna2xzA;5g2DpnX9>qNH=$HDxy8cv zcu^4{7oEY5`gOMQ*q2Hg=wcPt@V?>IPuvb0q!XPmvee=HZpUx_a5y4*X)4`+Hqr4R zUAp#tG->E*dz%I2$11K1ZU(SvEjhwGjkv96V)6J)iwifBMN!~mc*eP6e=84UsN}|G z(hLGC=H`!TbkanUS6TP4^RVjZS;*(0yz#&k%T4sjYL$i{awXQYTZ0fO;0|f!!=RcLOMD0EhDxe?x5MWupHb7b zxYve}H&uQEXe06pn9nSc+Gxf)^3F~NVUrYi7d!p%zj4~+8^B$ZDA3=)m=Q4(>L&PYLW+rICSFw%s7sVfhU zesCFk0yP!IA1f(seAzUP%*Iw$HA*yR@@5f2_;1H5f{zD?(J*1v31xM#Nb=+uMr8Cs z@Nv0Vp%C)Mogt1$5|+eBQSI2B_Y;gj3jzsy;&96()Per-kwOI7uC10F6V0&XAf=FW0Ljh9?!>MM!Fb0}tsq9KcMl^$ihHfSpdfb`|Oh3HLx?J z{w8qz$$ips4@s)zkPel!vWZZ#O<+Y!z&egzc!x%$ryv+!D+{4Gr(lqjh>4NHWG=0I zO3wLB0a+G9{LKI_A{2>V1Nt*;z1hj3A;lsF3L%ABI&5`72yGWa5X##4C!7|hxtZPf z2aF_&PZ%g9JGL@}QaLFD{+jR~tS}gHtW~t7ZR~u7grR#Ljox<&QDdn)n$%vb4Kh55s%JVOdYKant~fBg7T=; zOtdO4;V^-snKASxr!21SNTUbC&SfwYAO_|Pqu_l)9~RD1k-&+ZPbFrWXv;U0r{g!T z9%yz_vcfcp^9&iFmMw$sRgp_eidKU-}?6h_0Ggb;6O5e?pp*j5ggG)oZfI5)~#^DZBSU07Yc~j_(Rx z_ej+ao#KJd(HCyghtJQmCnR|OzjygT$*P0*cOgp(7bN0QiQVwk8335GfBXbri96CdSaGm2hpSh{}(lQ#kc?+e){Os zR;Eb)hB!v>-KYpXo550VV*8NTp+->gy=4e7?^$M8-@DJEwBWN~wpz@YBmB3&P=Q2+ONOPGEdrkdBhydlDWFwMT9Xt7sPb zIGhW9?O`ZI?oB9;x0ImG)nv69P9YHKoO-c0+(f|y6ldf@GL)}>|L(8kdzPd}bCWAB5;7N3 z?^8=Pz8ofe016)ce&5C6icC2#eBg>*J_qAwPm&Zt^x1&nlcEih!4ajK*WjK+)o$?8 zHF$dlq*|xBiCRLU3PGfdY%amO`$b*hdM-C7<7P($-njni>Gv0XdAh8=q)|@(q34_b zP0T%rw4Pv7s}HKYL9#MXVB!{Y8H#TE6GwpD`a9a-IB1` zEhPFJ0j&>pCFD)+pU2<2OBX%q`Dl4d#OMKgHS_nZ6@(dV$~EE^{nQqa+_;4(<$4&H zalqO(v3REXn)#keq>3as`p@Pqu$xAby}~qRKM(}&k$_a) zguvA53^qvunKmd`SMr9&wB>TKv6kz4l)}|2VPbJQFaDx?OcF!sXnRW(wP|=8VVqD{ zgNyZVsbnKRF`AIE*ieC4YPp0vg(&{G~#x+@*ktG#CbS zxOJ#%s%FH7VTj|9Ex#p2w80bUsr5KyLz#eP{fYx;NSSMbC)Kx>Dv~WmCEIF$;|pS> zZ?th{H5f_^rSso_S-X-@(pfJJ5Yu`e6Tf5x!c~T4hj*YI=d+o`vZAz@sTvS^XJ-@2 zNhuNYYw zSsUXhsj%aq*(LpTFq>K6n0}K#W_UXr9iS*EC~Lrfiq$!4dmSgELCR7+79*)*u*;0b$5eUj{B z2{CIK#$ZQB9fPW(S5!lRDVYpNhBYrmeJo2;2}?wZH4cFdK-g8bBEXiy0oa(R6|x&i z!q#D+R-|CYHr^#7TGo0M~=nRFgabb zNE;um$f%UA6wi=ByLc+hMmIvqpbSQzdZ$X~n8LUS%oV>9Si7S_U@GOQco^vrD)eau zcY%t(Q7OjL>cR=8=DHZ1{&FoUblfSWqT5{U7l68HkC8Jfxh(`fviC>;6=&=0&7HL1g87|onIu{`B4v*2L zG-tPdaUtbww)wZUeZwxXb0&&`(7pQZ^z@1}G(pH>$Iw?X`lYYePglGP;KVOtNxE)A z?K)b@seKW>_3KmhIsc44{2=>lOqm%ha{CnA4*s!w)8G9d8j1nt zr_y|g{ug)tfvp58cR>1kpi<3Y%x#s{BBgvW05v|^FQ*GIMjq5{Ch&&cF`g`1o*xTOqhr$kyvUAM zsAs+E2BK__aM$R^&I~3jWuD1s+gIzp{mI)?B)Q5csMxTP$RMIWffh_h@Wv`_pq=V@Ys}l zi460FVL*Ru7&6!>%1s&!?a)La1IO&K`%Y*YYkXfovvmdK%0eHfj9Y?euP){VUy=ak zXz+Ls&+m(63`x%)!6v75}3MOqwEF&o;z#eBP$ydgu_~C zGE#}hpM%oJ8Vp^dY4lR#D(4wU7+L0t1)$Scp_&I#|EaBc=(vv8yXlrKY^H8?v zYTb@>9(LKI_%lGt0dLPOdt)4IOvWxw;@g?swGLoRUGgapV`rj*OLYi7R`-}j-rV!-bb^0e7BMn70DDZG=;@NK5ayk`ynr?L zAv7-lV^Rh%L5<>kUXw-};yc8vx5V1a5PtPH)%pp7!ATr@aje?gEsmouvy8eiCnA{rPA=qbc7T z&#ex>ujHhx+<>pOTX{wTJIAf3{`R}KpYh2r(SWpBUzVH4%yA>S&fBmh>~iGd-sB!z z`^(g`t`MLfobGr2C;z3ph3{3PtgIdY{s0amVquHep_n`N6+e1@y+j$4K8eBRXkHSZ z>4#;YwLaH=0*Lujcm-2pT#bg}fW=V!pn$gV!RA}7cpe~4gUo;5otn)!c z%;%Af!n&}s(48hLlJw8J1bX0{#`j<$D&DEWg7idnig;9qO5Vj4n=Lx7^#| zAM|CxnHl%%9~J^ZPhilEU7DXL-Io=olHe|S!w~y$Qk1AFoA^0W;ZrN1kBT$;^UkV4 z{FJ#eRtlEj8^}k)h2lrveDJMJJ$3Ves(g4NiZ!<<<8RBG7q+Z=);(_x0nLS_8xDr2 zMsF%Y5%A|-@l8yUd>OZMJzRc-QW|@OHfWzw;n}YNk9S&EzPC3kf4)gWwJ--R4zO9Q z%oc4AKBE{5^vn9obc}P8){|@DOj$q0qn?tXDn~aQWT{NU&CoP=$uv>un!V=8vRH33 z)V9g%*rR|5_{; zPpP*Q%xPC?Dmnf#hZF4WYi8ABMrnm(4Wx$PZ(hyk;yQ@6Tnu4JJNgUUl&&Lg zzOd@B(wRNYu|2K7cPSW_{V|hL?1e`0`-`vi3L9aLudpub2^&@wr8t$c|#L%N#MwqjY&q5+zc)Gt`yI~>5U5+vRWN&9=k zFp;cfy8KvNG2TjqpkvmJ1S#TtjptSTs`EQ_(x|tI5@S0XURvRt;g-#9%NfeCMTKLp zU38m5WRrm6RDho*LdyCbvTBYb()bf^rl=$Sq=~_nTa>CwNkz3PJbfuu6Jg5wcxG~? zW8RyQoGU6_0Zj@+IG5i_ni1{F~WX=--R1{VX1QzU^=?R2XfDiJ<-r;h>swx{$fIjEH~h zz&}ZUm-?RYNkFX1V}UDTU=Hy$OG;7;5>bREr0-Bw$Qc8*I|May3}hw?mLA!uQln>s zW;&(YgI(_Ui$+cGEBKoBJax?u)|ehhFvP%3XfKbLlCYn>cEjm#)V@*;93c zz@0zUgEO}Ojb1u_HrXe-g<%?TM&u!Y)!H?XTkzNYJi~mM9lryk7^jFz8i9DSPW&4t z%W;(~M8ds7lFcOFh3EJrHNWCnkci`UMO1dUNlo`Ywlj2si}olW=(Je5>S#F_3EGU$ zfW@Rauen9kXtyS5_botxv~H}O(I|p+r|NdYO{lwRKbZesRx<}fITFlmTr``0V6{-# zdr6VY3hE(2Rh9pzt83X*dpn9@k(Z!S%@%*yjlLs$PJBv|6Mi@%omx_v+%E!poxB^L z!)Il>9r@_E2@EheK0B!$A71)yDD3~=f6t`BkBdh(B_l#*edYX=8G)ifz@tcU(z{8| z8r8qHIabzA8wKkIPZkSKAAU1n2%!zD^)hrU$C1i7ezn&422>NLf<49DNlyLQ#QqV> z?aGNS(y%Y|?q0~A)kU%wnd#usVLx|b#_+nEDeW|lJ)3s)%h>Y%<72?eOV5q zO}tTyM;8qdjd~xgI{gOy1euY^_+?qA^WWLcNhyx{ru+1GU0Tv-NfN*hjY&<;Ie8eI zCZ`5A)eS43qNd4vA?x%D-znOy^j-P33+U!*mHUb_9Qh3Ns0$qZ-@kY6Ajd`-F4j6nhnW2 z%2_UNe{x37qcNe0+lIvNonqLacRh9}Yb)5u*C8AqUZ`)>?%U&XDa<$S^s;Zuq)Ckv>{web;N&xRE*|{vUjzuV2C|6(+bbiktTqjr}`+EQ0_HT7vh z5y=TdL@d{_ZRq{{VDyKvUy8P(<)Mo2Znp}5NlP%i(Y(c!MmR5fL81Zh)T-UN;1TYt~H0lT?+c`W!Sn^v!inbI$gP5{|4X^ zAhErgSa0%HZI>db-2vXDwsHP_YPbT_vPpDde-+gETdX)MgU;W15 z{_ZERi$Cn`j5h>IKRvbbkzmRdnpijV{53?2AcV>PS5Z{I($MP0USXAP6@;kWbY8g* z)aoW1TG=M+Sae;J&-mtaxweMj$G_x~HV99==zHpsx+4J_}cm$KJu7Y?Q%-VHkG&G#~W zY#l7$Y0}uQ3lDWzTP{CXt+T@&V`I=ctkKK0X8p&%&==R;@EPE`)Uc;hz5BGMKgpJ{ zacBF3^y#G8+p$7c`%B*5wExUj{M+?MwFl_tv9J(~JoN9AY%oy}yw(T)(h<3O>wo^- zBPjw4I?sVuzHJdfY&``3Z_?BsR4)u(BbBm8FKdBU-wda}y6D%rXj5p{?y6nr!GU+`ji?*ZluhCjSX+RQ=jg7fd-4J5MK32=iL} z817|SQgr?dODURx$*-pT0hLDULn1?D?Q2SYOXKT)*%cUi_sVjO90PoYExBvAF3rbi zcSSjO9(5ps&eaRRaBQHtC1vR?T3H2BWx6^#|AIzRXIh^u#fg@lb$Tkftj8v4Rw9s`^i@3X>rIXg8GiB~Bkl8y9rJF| zqW~rXzF{ga5~Rh6@t_?jnW#pm#5mx*<%;T#bQ?!It{rT8cI;gW6l~Z-CgC;jK0<9X zL%Mf4iIZt&up%6FDv^2~)UwTMJ5_Q+m*zYV$C>n3 z%|oBWimMwJWF4yrz%EO78_&P%E>#RJ37$0V-`w8g1GD&E5r3$0g7700rQGqg7xzOD z^#}m2(RCpQ0fV<;6v*JuqHhdchLrYAE7m^!u@zz6G+0;OQe{mXO5Ipjrz2bMT8CiW zo6!$Zogbh599Qq)|0D?@_`gUp2Cm=q1o>HffK-XVdt>1CJ8*w(Z#567-x$g@dti&^ z_9YPUGaOCY`3P)Sxy88iB7f1ATo(x8&@K!)AGEtShjRn&0S$|8oLxQz|5EyIiokE#N9Tn4fP&u0!w#vl#hCRVzPCCLJK?#fp0^IJ zQ+gm1ll4i@7jBx<^N5W2+I?^hQI_{5t6ll@1LFxo*ml$JR9(00M8i6I)gZWEY)dU` z9}(gw6om=|-f6a1gl)A~moCfPufg+~y6ySTaN*y#OO4e#lWSBmnCvJ1p*j4^S~XtB zTzF5`0Au9Se@qn;nt*iAPqk;~ncN+%{CynAO`sF}3P;m$U)!~aB5gdO1p^>I*b zq^OU*EX#kjF7+jP*(-l?bf0+BWw-HC>RL8;rz^^~ zQ?Gei{&bhXte2l7k}K49O;1?u;rK;Wegs!eLwK&Wou$x-;3`#FK~`OV2YLz^}OE@=*zH2oVl!Q zBk8FC-pNzAv}rDt`;XU@?;YHjcQUTAJFHXC!r04GpzX_@!6=9tWEI*d>vip9Uf>(w zk@ByWpL6j1;J>!n^e=fY-HD_#{0V4%20g~C!Uum_n;C~`;i)Q&B8Xf<>tl4T`?OCNPaZYUYr6d4v$E00D*p6U8G4SUQS72R>9{tQ&6 zqm~1>QBSA*8<#CV&HVe!g$AH=XWax|j{M2ehxa0&q%#6R8hc?nIF*dS@uF0;&`YwO zXy@!(qqY*DB=s0DFX*4u@?(|F zB&?cBLrk7SsDxwaEJDma%k*!;6p$=4Us~xbZ`g_u&oy|u?lhpW_t{K+?Kwlrgm?yc z6>kJ`p==PUP0wRdb9u_?u1k+05qQ3;PYuuymwXn=QdmHO4h^4UN}p>p zB@8U8kQQ#R*jn^u(`gmsW1*OrvWko<{Du(5(1Z^Vo^#lfeo~T%7a&CWPK<2&!w7`` zq3Bv}6!Ea1k0ag1YDl;G3q>4-aW7K}I*1GP8>Z{OhX-V!5nikJpMEWPoQCPp1fpA3 zct4$G>ArWq7I!Cdl%63aY~X^^jrk;A`WX-bws^X&fRy!Nb z1V@@5UxU-3$Z$fy_-}2AU_YYbWKb$PZ!sF3Y_sn4!-dpU;Bn#SQtX+;KvM6D$9y6} zQ+qr5$Hxn{2=Z3?&H9zUuiJ&krS;3cpRgJLsXDH%{0{e8A!-FGs%BiheKhJ^M_KTExf6`-Hs}^boKB(<+22w zBtQVD4t8HI7=$t(*Qfv5&T?&jc!_-Jc5Srz#U8v(8C%3K8`shH!~M9qYsgl?{dtVO zC!*u;zo&%Te6Vetysj4XX2A(d5L86Q;`eai)X676qO6)chA1F9$12O*1z66n{oG)x zx%7Xu$w}y)`_JT@(RYsqs{DD8@~fAZc<%fZF@*zsIZ+HQJ74|$Xqjl%E1W%DGUN(((T@MO)Qo$A)0o*f!3j3%S>@FaE~I$zi5LbJ z)#g>?06FS;u80L*bz7@V&URABz1{eqe-U(%>YGB$#gM4t;9Gq7S3UUkc=}6H<=LXj)|7+#NJVKIo*iQ;InN%_y_JLaUEg7F zmUCS-KjHi<{vt$}vqu(bOcJjG9efI^Xl}7FvCXHopymF_K3TM=FS_{G^_xh+gEG5O z#e!2m^OSMX(u!?{o131ZoGDs1{NTZECTd`-j-m2?(VXtZ%4l&N&K&H+d)nNZLKakj zwtn$Oe+l_&_}6v$*RUTA_eLG|hdL=4xW%w=ZWU-WYq|pY_!e`S^JlEut#K|2@4|{o z_B0y`z2VG^Bzt(~vvr~U=1bFLm{8UK!s+6RhM;zl?d-?-CfxElD{V^;Y`ubDd-?o} zpnA;swMy?^scLgX%MtFePP4v%C?CM$>0>d@s;9-G{AqgkJ=)N^4Kq0iJQC){NnK37-bJxYws%^yjrFS1`P7TxS{!(O{2 z+#7xn(D>-#yeAh)C>mrSIno$@T}Y1eymM5}Mk>exLTrVQneR0o$Z&^-$vfnHqMZ=y z_nZ7V-d@wqi5#s`it)=5>N$1y5#+as znC=2Hqu8l~gRYQ8qr{=;-Rh#<3}syw`-{DW7oz<>w~Bx^e>@-j6?^%yWypL(UW%A2%b`l{Q-#XH4hUb4dkD>RfFC%SZKK~!3-#z%YIqHM0@ zo$TjK6$ABK-@z6yaEjm(C$BVC)u^R((hTa}<|Z4;=2fGFMSvGM8ZXcTG+LKgdoFY- zUP)dBS#LOq)Q{dvMQ{5HST!gk-l(JY9j}7nALME6B({r{z@dLa+%I1qRko<56^qBI z@tp1o`8>K#0H<+bVRO^V8oaxGg^?fy7t1YoesW=Q8va zvm`p&6_@3tJ|*@Ed}fP#6(pDmOB7Hb3!X5`w&0fj3mB`_fn(Xls&q+&&{un^C0X4g zjrnZG!-Tq%s61k#PZ+rGN(dm&^iq8fOWXJC-N4CDMof}JDJhxS$!^~)+8;i+xd?@Q z_cex&)`}Q6+%`X&>$1O>*q)3{dv`w!*QRCy1PWEM z>1L<)8h4U==5&YEMPH!ebb77CUe;E3@|c%yNV9&!oLJ!QYYzo_z30A$S~)&cu==&J=lel+W14)vM_e}B7Yx*@v_a-@ zLqmXjNFFy{S33`RiLMXcEkzIZgAWW5Z6ZwlwK*TjQs^mN^CfsVJ2*I#HleZIyM?^w zd}g^T-Ci8{G3vF-vDxD{h>+45FrtV@g3kJe+I9D@t~=GJ$3|9xN4sfq>)HF_eH!Fa z*^NRyor;ClJGa_ew5GQQmtFrlg2uKV7Zs5ANt=)XCZdKZ%0o zL|XMX0^P1a?_}UW$8y~zyOcz``|*4`DMZ&S8PhM&g+T1Q+(6&r^a-SJ(q!#BUdtkC z@{!vXJDs1#LP8X?*b(sLaPSqXDpLqYD|MhSb<1%Gh7v*E| z&3rrEjp5#M8wlGn5E@ojTt0t|T=r%soeCHYfa(gbyxm{umd!H}p_jUc`&mzXnJeCh z^R&X;zHV>d*F>+{*TZCFS`GARL0Kd-NvQq`{{t9r7B}WD7~W!QPUPk4ft&36@Ddz- z7QH45CYIxSC-aAo7MZsfAK+{#zNNr+Xp(jFdY~-mj+6taznYn?+Sqmsq6|^!m2tsZeoLBC}TM!=~z) z%w26VB7U%R;e)E{*qdSP@itkkJ0XRs)Si5$k!k9-cDobcvuNtLyV9b3xjwq^cq%8d zzbUulT14jsu0CVe(erf)&}keg`ugF%KRwtldb?xa5>E1h8w-Ul#Kv^h`}%38uGJWN zn6#CIs-vXorZ7tS&hZj9(bG*S2g{O0!4ka@hQQ^1rwNTNdVkum!=~|ii)e~8jZE=i z#aBl5WG)H(A_nA2qW>6?^&Ia<}YPKWF-oNDk3+4Av zDcmlV9Z6v=?nj&@*>6w1m^p^cG4)oHsO+zguSjtFLtK!wtSc%7)?Cdc&M*~dUS<@F zY*0!j?GS}ntENes$H|#nP(8g8kY+t0plSH0r%Cqcm}Wfwws3F_z%i|xwxE9j<;M2{wm-Auy=OoG)+0?7k_my zU({Rm*D$wGSF%uvK!Mm-k}e?e2lu(lf&Y$c+~Z7%(B6m50J>UN$r_sQkfeH%38&~0 z)x8TH`1=W}(y5t%j|4^W|ryUgbTqvlei!v_l<%ZA0jXP^C`A9&gh zp7H?y;&{P?DH#77r?EE8s>ajJ7LqEUN4&`R-wp3Qx8+BgNBTof@%WvH$=qUf(F^*Hiht9@pX~n> z;*w8Or&HCB8G5CZe$!)8RbBY>VP@*HIGrMw3_k;g*4kQ}gEoPJyR!K;Q!-KCrlKRk zsXJrt@w;YQV6KT)h0hRM9Z3%#HMBW9{xd@HN`lN5rm(^EFq$wqvb`o*;7P^kN6mIR zz6!2l0+p-4t(|4rDj>VNkmNTZ%96S$)s47Ka$E$`ZLS*@QA%oMh-`Gdk@ z2K};Mk6zSMGp0#ae)$wvl>P)y#ToBfUGn4b+JN;hDbD6%{RW^Be=(ICjf$U~`6u+g zHE0<~!Srmvy%%6mA_u7KmW(s&)ah-eth&Wmi6qfXP=fn@P%A( zTQn~6-`F{yry-Z*Xtai_M)vwO-en#0(9_F(F3cr)e*_a8?Do9B?tfdN$$LZg7eRq; z9T(4*D0WgiHn^MdPF0tNwN4?xOZzYl%l@H(!&B^6xYc3~UzODP^4JKSF3t0QtpM#q z8k)2)7o{)I)N;0N)ic9W&z`H&=V8sre`!?f6^zsmYY2*O812Ec_N~^r;z2Q?qj%#H za)rWq_Wj_DJ_Ezr36zyjEs5u)UQS`*LATk6UF~A@*wcokqal66!B+nXUGWZ@KZmx^ zeILh{UaIlG|8eL!ayzj!889_TGJQFuUMeUF7f*YB3v*It(;ktpiX`h=D(HV8T_$s! zH3}(*mm|zz@-+J1oQ~K(H9X}T`_+mCEkLh;G)=||H>~cbW)E@;f65$z8`9#k)+?E| vI~?g92pV$aqoV^DJs(pWPPyCK-h2qMT~&Xz6hAkE-oU;KSdS3%kP!b1_BZTl