summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurélien DESBRIÈRES <aurelien@hackers.camp>2016-10-11 05:07:13 +0200
committerAurélien DESBRIÈRES <aurelien@hackers.camp>2016-10-11 05:07:13 +0200
commit3d2ddd2b505c16b888e199cbff88ef6ce174da83 (patch)
treeab93ddd7a6c7ee4dacfc781995a70eeb05041bf3
parent0e5e6044bea81babbc4b72b7c2357d9a734bba86 (diff)
paraboley.new testing version
-rwxr-xr-xparaboley.new261
1 files changed, 261 insertions, 0 deletions
diff --git a/paraboley.new b/paraboley.new
new file mode 100755
index 0000000..30dc17c
--- /dev/null
+++ b/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()