diff options
author | Aurélien DESBRIÈRES <aurelien@hackers.camp> | 2016-11-06 17:59:17 +0100 |
---|---|---|
committer | Aurélien DESBRIÈRES <aurelien@hackers.camp> | 2016-11-06 17:59:17 +0100 |
commit | a34a291bead6c5084eaaf9c3d0a6cfec648b48cf (patch) | |
tree | 4dd1a5bff13ce7f6a4fa7d17938f3abeea0afc03 /pcr/paraboley/paraboley.new | |
parent | 8de964793f79d0d8db75729ec74bbfb0df29eea7 (diff) |
Last paraboley version
Diffstat (limited to 'pcr/paraboley/paraboley.new')
-rwxr-xr-x | pcr/paraboley/paraboley.new | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/pcr/paraboley/paraboley.new b/pcr/paraboley/paraboley.new new file mode 100755 index 000000000..30dc17c39 --- /dev/null +++ b/pcr/paraboley/paraboley.new @@ -0,0 +1,261 @@ +#!/usr/bin/env python3 +# +# Parabola-eye is maintain by Aurélien DESBRIÈRES <aurelien@hackers.camp> +# it is a fork inspired from: +# +# Archey [version 0.3.0] +# +# Archey is a simple system information tool written in Python. +# +# Copyright 2010 Melik Manukyan <melik@archlinux.us> +# +# ASCII art by Brett Bohnenkamper <kittykatt@silverirc.com> +# Changes Jerome Launay <jerome@projet-libre.org> +# Fedora support by YeOK <yeok@henpen.org> +# +# Distributed under the terms of the GNU General Public License v3. +# See http://www.gnu.org/licenses/gpl.txt for the full license text. + +# Import libraries +import os, sys, subprocess, optparse, re, linecache +from subprocess import Popen, PIPE +from optparse import OptionParser +from getpass import getuser +from time import ctime, sleep + +#---------------Output---------------# + +output = [ + 'User', + 'Hostname', + 'Distro', + 'Kernel', + 'Uptime', + 'WindowManager', + 'DesktopEnvironment', + 'Shell', + 'Terminal', + 'Packages', + 'CPU', + 'RAM', + 'Disk' + ] + +#---------------Dictionaries---------------# + +colorDict = { + 'Parabola GNU / Linux-libre': ['\x1b[0;34m', '\x1b[1;34m'], + 'Ubuntu': ['\x1b[0;31m', '\x1b[1;31m', '\x1b[0;33m'], + 'Debian': ['\x1b[0;31m', '\x1b[1;31m'], + 'Mint': ['\x1b[0;32m', '\x1b[1;37m'], + 'Crunchbang': ['\x1b[1;37m'], + 'Fedora': ['\x1b[0;34m', '\x1b[1;37m'], + 'Sensors': ['\x1b[0;31m', '\x1b[0;32m', '\x1b[0;33m'], + 'Clear': ['\x1b[0m'] + } + +deDict = { + 'gnome-session': 'GNOME', + 'ksmserver': 'KDE', + 'xfce4-session': 'Xfce', + 'lxsession': 'LXDE' + } + +wmDict = { + 'awesome': 'Awesome', + 'beryl': 'Beryl', + 'blackbox': 'Blackbox', + 'compiz': 'Compiz', + 'dwm': 'DWM', + 'enlightenment': 'Enlightenment', + 'fluxbox': 'Fluxbox', + 'fvwm': 'FVWM', + 'i3': 'i3', + 'icewm': 'IceWM', + 'kwin': 'KWin', + 'metacity': 'Metacity', + 'musca': 'Musca', + 'openbox': 'Openbox', + 'pekwm': 'PekWM', + 'ratpoison': 'ratpoison', + 'scrotwm': 'ScrotWM', + 'wmaker': 'Window Maker', + 'wmfs': 'Wmfs', + 'wmii': 'wmii', + 'xfwm4': 'Xfwm', + 'xmonad': 'xmonad' + } + +logosDict = {'Parabola GNU / Linux-libre': '''{color[1]} +{color[1]} ## ### {results[1]} +{color[1]} ## ## ##### {results[2]} +{color[1]} ## ## ## ####### {results[3]} +{color[1]} # ## ## ## ######## {results[4]} +{color[1]} ### ## ## ## ####### {results[5]} +{color[1]} ##### ## ## ## ####### {results[6]} +{color[1]} ## ## ## ####### {results[7]} +{color[1]} ## ####### {results[8]} +{color[1]} ###### {results[9]} +{color[0]} ###### {results[10]} +{color[0]} ##### {results[11]} +{color[0]} ##### {results[12]} +{color[0]} #### {results[13]} +{color[0]} ### {results[14]} +{color[0]} ### {results[15]} +{color[0]} ## {results[16]} +{color[0]} # {reuslts[17]} +\x1b[0m''' +} + +processes = str(subprocess.check_output(('ps', '-u', getuser(), '-o', 'comm', + '--no-headers')), encoding='utf8').rstrip('\n').split('\n') + +#---------------Classes---------------# + +class Output: + results = [] + results.extend(['']*(13)) + + def __init__(self): + self.distro = self.__detectDistro() + + def __detectDistro(self): + if os.path.exists('/etc/pacman.conf'): + return 'Parabola GNU / Linux-libre' + else: + sys.exit(1) + + def append(self, display): + self.results.append('%s%s: %s%s' % (colorDict[self.distro][1], display.key, colorDict['Clear'][0], display.value)) + + def output(self): + print(logosDict[self.distro].format(color = colorDict[self.distro], results = self.results)) + +class User: + def __init__(self): + self.key = 'User' + self.value = os.getenv('USER') + +class Hostname: + def __init__(self): + hostname = Popen(['uname', '-n'], stdout=PIPE).communicate()[0].decode('Utf-8').rstrip('\n') + self.key = 'Hostname' + self.value = hostname + +class Distro: + def __init__(self): + if os.path.exists('/etc/pacman.conf'): + distro = 'Parabola GNU / Linux-libre' + self.key = 'Distro' + self.value = distro + +class Kernel: + def __init__(self): + kernel = Popen(['uname', '-r'], stdout=PIPE).communicate()[0].decode('Utf-8').rstrip('\n') + self.key = 'Kernel' + self.value = kernel + +class Uptime: + def __init__(self): + fuptime = int(open('/proc/uptime').read().split('.')[0]) + day = int(fuptime / 86400) + fuptime = fuptime % 86400 + hour = int(fuptime / 3600) + fuptime = fuptime % 3600 + minute = int(fuptime / 60) + uptime = '' + if day == 1: + uptime += '%d day, ' % day + if day > 1: + uptime += '%d days, ' % day + uptime += '%d:%02d' % (hour, minute) + self.key = 'Uptime' + self.value = uptime + +class WindowManager: + def __init__(self): + wm = '' + for key in wmDict.keys(): + if key in processes: + wm = wmDict[key] + break + + self.key = 'Window Manager' + self.value = wm + +class DesktopEnvironment: + def __init__(self): + de = '' + for key in deDict.keys(): + if key in processes: + wm = wmDict[key] + break + + self.key = 'Desktop Environment' + self.value = de + +class Shell: + def __init__(self): + self.key = 'Shell' + self.value = os.getenv('SHELL') + +class Terminal: + def __init__(self): + self.key = 'Terminal' + self.value = os.getenv('TERM') + +class Packages: + def __init__(self): + p1 = Popen(['pacman', '-Q'], stdout=PIPE).communicate()[0].decode("Utf-8") + packages = len(p1.rstrip('\n').split('\n')) + self.key = 'Packages' + self.value = packages + +class CPU: + def __init__(self): + file = open('/proc/cpuinfo').readlines() + cpuinfo = re.sub(' +', ' ', file[4].replace('model name\t: ', '').rstrip('\n')) + output ('CPU', cpuinfo) + +class RAM: + def __init__(self): + raminfo = Popen(['free', '-m'], stdout=PIPE).communicate()[0].decode('Utf-8').split('\n') + ram = ''.join(filter(re.compile('M').search, raminfo)).split() + used = int(ram[2]) - int(ram[5]) - int(ram[6]) + usedpercent = ((float(used) / float(ram[1])) * 100) + if usedpercent <= 33: + ramdisplay = '%s%s MB %s/ %s MB' % (colorDict['Sensors'][2], used, colorDict['Clear'][0], ram[1]) + if usedpercent > 33 and usedpercent < 67: + ramdisplay = '%s%s MB %s/ %s MB' % (colorDict['Sensors'][1], used, colorDict['Clear'][0], ram[1]) + if usedpercent >= 67: + ramdisplay = '%s%s MB %s/ %s MB' % (colorDict['Sensors'][0], used, colorDict['Clear'][0], ram[1]) + self.key = 'RAM' + self.value = ramdisplay + +class Disk: + def __init__(self): + p1 = Popen(['df', '-Tlh', '--total', '-t', 'ext4', '-t', 'ext3', '-t', 'ext2', '-t', 'reiserfs', '-t', 'jfs', '-t', 'ntfs', '-t', 'fat32', '-t', 'btrfs', '-t', 'fuseblk'], stdout=PIPE).communicate()[0].decode("Utf-8") + total = p1.splitlines()[-1] + used = total.split()[3] + size = total.split()[2] + usedpercent = float(total.split()[5][:-1]) + + if usedpercent <= 33: + disk = '%s%s %s/ %s' % (colorDict['Sensors'][2], used, colorDict['Clear'][0], size) + if usedpercent > 33 and usedpercent < 67: + disk = '%s%s %s/ %s' % (colorDict['Sensors'][1], used, colorDict['Clear'][0], size) + if usedpercent >= 67: + disk = '%s%s %s/ %s' % (colorDict['Sensors'][0], used, colorDict['Clear'][0], size) + self.key = 'Disk' + self.value = disk + +## TEST ## <<< TEMPORARY +out = Output() +out.append(Shell()) +out.append(Packages()) +out.append(Disk()) +out.append(RAM()) +out.append(Distro()) +out.append(WindowManager()) +#out.append(DesktopEnvirornment()) +out.output() |