From d02d69c6908f70617d943d7f3ef26462cdb6d294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferit=20Yi=C4=9Fit=20BALABAN?= Date: Thu, 28 Apr 2022 02:25:32 +0300 Subject: [PATCH] Changed ascii art and added theming capability --- fetchpy | 151 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 77 insertions(+), 74 deletions(-) diff --git a/fetchpy b/fetchpy index df666ee..0809a66 100755 --- a/fetchpy +++ b/fetchpy @@ -4,21 +4,36 @@ # # fetchpy, fetch script alternative to neofetch import os -import subprocess as sp +from subprocess import run from rich.console import Console from rich.traceback import install install(show_locals=True) +COLOR1 = '#75FDFF' +COLOR2 = '#FFE252' +COLOR3 = '#D66565' +COLOR4 = '#FFAB3D' + + +def read_theme(): + with open('/home/ferit/scripts/fetch.theme', 'r') as f: + l = f.readlines() + f.close() + global COLOR1 + global COLOR2 + global COLOR3 + global COLOR4 + COLOR1 = l[0] + COLOR2 = l[1] + COLOR3 = l[2] + COLOR4 = l[3] + + def coloring(text): - color1 = '#' + '5BCEFA' - color2 = '#' + 'F5A9B8' - color3 = '#' + 'FFFFFF' - color4 = color2 - color5 = color1 - frame = color2 - info = color3 - title = color5 + frame = COLOR2 + info = COLOR3 + title = COLOR1 color_dictionary = { '╭': frame, '╰': frame, @@ -28,39 +43,31 @@ def coloring(text): '┤': frame, '│': frame, '├': frame, - 'DIST': info, - 'KERN': info, - 'SHEL': info, - 'TERM': info, - 'PACK': info, + 'DST': info, + 'KRN': info, + 'SHL': info, + 'PCK': info, 'CPU': info, - 'iGPU': info, - 'dGPU': info, + 'GPU': info, 'MEM': info, 'UPT': info, 'ferit@navi': title, 'Hardware': title, - '-@\n': color1, - '.##@': color1, - '.####@': color1, - '@#####@': color2, - '.**######@': color2, - '.##@o@#####@': color2, - '.############@': color3, - '.##############@': color3, - '@######@**%######@': color3, - '@######`': color4, - '%#####o': color4, - '@######@': color4, - '######%': color4, - '-@#######h': color4, - '######@.`': color4, - '.#####h**``': color5, - '`**%@####@': color5, - '@H@*`': color5, - '*`': color5, - '`*%#@': color5, - '`*': color5, + 'O': COLOR1, + 'o': COLOR1, + ':': COLOR2, + ';': COLOR2, + '>': COLOR3, + ',': COLOR4, + '.:/': COLOR4, + '/': COLOR4, + '\\\\\\': COLOR4, + '\\': COLOR4, + ',,///;,': COLOR4, + '\';\\': COLOR4, + '\';\\\\': COLOR4, + ',;/': COLOR4, + '\'\'\\\\\\\\\\\'"': COLOR4 } c = Console() iterator = 0 @@ -74,13 +81,21 @@ def coloring(text): print(' ', end='') word, jump_to = read_until_space(text, start_at=iterator + 1) if color_dictionary.__contains__(word): - c.print(word, style=color_dictionary[word], end='') + if '\\' in word: + word_style = color_dictionary[word] + for character in word: + c.print(character, style=word_style, end='') + else: + c.print(f'[{color_dictionary[word]}]{word}[/{color_dictionary[word]}]', end='') else: print(word, end='') iterator = jump_to print(' ', end='') elif color_dictionary.__contains__(character): - c.print(character, style=color_dictionary[character], end='') + if character == '\\': + c.print(character, style=color_dictionary[character], end='') + else: + c.print(f'[{color_dictionary[character]}]{character}[/{color_dictionary[character]}]', end='') else: print(character, end='') iterator += 1 @@ -98,34 +113,24 @@ def read_until_space(text, start_at): def main(): - padding_count = 29 + read_theme() + padding_count = 23 - distro_name = 'Arch GNU/Linux x86_64' + distro_name = 'Arch GNU/Linux' distro_name = distro_name.ljust(padding_count, ' ') kernel_version = str(os.uname().release) kernel_version = kernel_version.ljust(padding_count, ' ') + installed_packages = run(['pacman', '-Q'], text=True, capture_output=True).stdout.splitlines() shell_name = 'fish' - query_pacman = sp.Popen(['pacman', '-Q'], stdout=sp.PIPE) - grep_paclist = sp.Popen(['grep', f'{shell_name}'], stdin=query_pacman.stdout, stdout=sp.PIPE) - query_pacman.stdout.close() - shell_name, err = grep_paclist.communicate() - shell_name = str(shell_name).removeprefix('b\'').removesuffix('\\n\'').ljust(padding_count, ' ') + for _ in installed_packages: + if shell_name in _: + shell_name = _.removesuffix('\n').ljust(padding_count, ' ') + package_count = str(len(installed_packages)).ljust(padding_count, ' ') - terminal_name = 'kitty' - terminal_name = terminal_name.ljust(padding_count, ' ') - - query_pacman = sp.Popen(['pacman', '-Q'], stdout=sp.PIPE) - count_output = sp.Popen(['wc', '-l'], stdin=query_pacman.stdout, stdout=sp.PIPE) - output, err = count_output.communicate() - package_count = str(output).removeprefix('b\'').removesuffix('\\n\'').ljust(padding_count, ' ') - - total_memory, used_memory, free_memory, d1, d2, d3 = map(int, os.popen('free -m').readlines()[1].split()[1:]) - mem_percentage = round((used_memory / total_memory) * 100, 2) - used_memory = round((used_memory / 1024), 1) - total_memory = round((total_memory / 1024), 1) - memory_usage = f'{used_memory} GiB / {total_memory} GiB ({mem_percentage}%)'.ljust(padding_count, ' ') + total_memory, used_memory, free_memory, d1, d2, d3 = map(int, os.popen('free -g --si').readlines()[1].split()[1:]) + memory_usage = f'{used_memory} GB / {total_memory} GB'.ljust(padding_count, ' ') with open('/proc/uptime', 'r') as f: uptime_seconds = float(f.readline().split()[0]) @@ -141,21 +146,19 @@ def main(): uptime = uptime.ljust(padding_count, ' ') txt = f''' - -@ - .##@ ╭──────────── ferit@navi ────────────╮ - .####@ │ DIST {distro_name}│ - @#####@ │ KERN {kernel_version}│ - .**######@ │ SHEL {shell_name}│ - .##@o@#####@ │ TERM {terminal_name}│ - .############@ │ PACK {package_count}│ - .##############@ ├───────────── Hardware ─────────────┤ - @######@**%######@ │ CPU AMD Ryzen 7 5800H (16 Cores) │ - @######` %#####o │ iGPU AMD Radeon™ Graphics (2 GHz) │ - @######@ ######% │ dGPU NVIDIA GeForce RTX 3050 Ti │ - -@#######h ######@.` │ MEM {memory_usage}│ - .#####h**`` `**%@####@ │ UPT {uptime}│ - @H@*` `*%#@ ╰────────────────────────────────────╯ - *` `* + + ╭──────── ferit@navi ────────╮ + │ DST {distro_name}│ + O O , │ KRN {kernel_version}│ + o o .:/ │ SHL {shell_name}│ + o ,,///;, ,;/ │ PCK {package_count}│ + o o)::::::;;/// ├───────── Hardware ─────────┤ + >::::::::;;\\\\\\ │ CPU AMD Ryzen 7 5800H │ + ''\\\\\\\\\\'" ';\\ │ GPU NV GeForce RTX3050 Ti │ + ';\\ │ MEM {memory_usage}│ + │ UPT {uptime}│ + ╰────────────────────────────╯ + ''' coloring(txt)