79 lines
2.2 KiB
Python
Executable File
79 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Ferit Yiğit BALABAN <fyb@fybx.dev>, 2024
|
|
#
|
|
# fetchpy-null, fetch script alternative to neofetch
|
|
# revision 1
|
|
import os
|
|
import sys
|
|
import subprocess as sp
|
|
|
|
|
|
def add_color(text, props):
|
|
built = ''
|
|
_clr_start = '\u001b[31m'
|
|
_clr_end = '\u001b[0m'
|
|
|
|
i = 0
|
|
p = 0
|
|
char = lambda: text[i]
|
|
while i < len(text):
|
|
if char() == '{':
|
|
built += f"{_clr_start}{props[p]}"
|
|
p += 1
|
|
elif char() == '}':
|
|
built += _clr_end
|
|
else:
|
|
built += char()
|
|
|
|
i += 1
|
|
return built
|
|
|
|
|
|
def find_username():
|
|
return sp.run(['whoami'], text=True, capture_output=True).stdout[0:-1]
|
|
|
|
|
|
def find_hostname():
|
|
return sp.run(['uname', '-n'], text=True, capture_output=True).stdout[0:-1]
|
|
|
|
|
|
def main():
|
|
props = []
|
|
|
|
props.append(find_username()) # username
|
|
props.append(find_hostname()) # hostname
|
|
props.append('Arch GNU+Linux') # distro_name
|
|
props.append(os.uname().release) # kernel_version
|
|
|
|
installed_packages = sp.run(['pacman', '-Q'], text=True, capture_output=True).stdout.splitlines()
|
|
props.append(str(len(installed_packages))) # package_count
|
|
|
|
total_mem, used_mem, _, _, _, _ = map(int, os.popen('free -m').readlines()[1].split()[1:])
|
|
def rnd(x): return round(x, 1)
|
|
props.append(f'{rnd(used_mem / 1000)} GB / {rnd(total_mem / 1000)} GB') # mem_usage
|
|
|
|
with open('/proc/uptime', 'r', encoding='utf8') as file:
|
|
uptime_seconds = float(file.readline().split()[0])
|
|
file.close()
|
|
|
|
if uptime_seconds < 60:
|
|
uptime = str(uptime_seconds).split('.', maxsplit=1)[0] + ' seconds'
|
|
elif uptime_seconds < 3600:
|
|
number = str(uptime_seconds / 60).split('.', maxsplit=1)[0]
|
|
uptime = f'{number} minute' if number == '1' else f'{number} minutes'
|
|
else:
|
|
number = str(uptime_seconds / 3600).split('.', maxsplit=1)[0]
|
|
uptime = f'{number} hour' if number == '1' else f'{number} hours'
|
|
props.append(uptime)
|
|
|
|
txt = \
|
|
"""Hi {}, welcome to {}. I see that you're on {},
|
|
running with Linux {}. You've {} packages installed.
|
|
Your RAM usage is {} and uptime is {}.\n"""
|
|
print(add_color(txt, props))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|