summaryrefslogtreecommitdiff
path: root/archey
diff options
context:
space:
mode:
authorDjMelik <melik@archlinux.us>2011-01-14 00:59:58 -0800
committerDjMelik <melik@archlinux.us>2011-01-14 00:59:58 -0800
commitb8624558a9620b7bb2457fc668ace490a02ec4d3 (patch)
tree497f1bd00e610c4934e46aee1df7aa62724e1b7e /archey
parenteda92485a33efee53dc6daebdeadad8086962c79 (diff)
moved archey.new > archey
Diffstat (limited to 'archey')
-rw-r--r--[-rwxr-xr-x]archey661
1 files changed, 238 insertions, 423 deletions
diff --git a/archey b/archey
index a46d848..e94f90c 100755..100644
--- a/archey
+++ b/archey
@@ -1,14 +1,15 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python
#
-# Archey [version 0.2.8]
+# Archey [version 0.3.0]
#
-# Archey is a system information tool written in Python.
+# Archey is a simple system information tool written in Python.
+#
+# Copyright 2010 Melik Manukyan <melik@archlinux.us>
#
-# Maintained by 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.
@@ -19,423 +20,237 @@ from optparse import OptionParser
from getpass import getuser
from time import ctime, sleep
-# Display [Comment/Uncomment to Enable/Disable information.]
-display = [
- 'user', # Display Username
- 'hostname', # Display Machine Hostname
- 'distro', # Display Distribution
- 'kernel', # Display Kernel Version
- 'uptime', # Display System Uptime
- 'wm', # Display Window Manager
- 'de', # Display Desktop Environment
- 'sh', # Display Current Shell
- 'term', # Display Current Terminal
- 'packages', # Display Number of Packages Installed
- 'cpu', # Display CPU Model
- 'ram', # Display RAM Usage
- 'disk' # Display Disk Usage
- ]
-
-# Array containing Values
-result = []
-
-# Options
-if __name__=='__main__':
- parser = OptionParser(usage='%prog [-s, --screenshot]', description='Archey is a system information tool written in Python.', version="%prog 0.2.8")
- parser.add_option('-s', '--screenshot',
- action='store_true', dest='screenshot', help='take a screenshot')
- (options, args) = parser.parse_args()
-
-# Define processes for identifying Desktop Environmentss, Window Managers, Shells.
-de_dict = {
- 'gnome-session': 'GNOME',
- 'ksmserver': 'KDE',
- 'xfce4-session': 'Xfce'}
-
-wm_dict = {
- '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'}
-
-sh_dict = {
- 'zsh': 'Zsh',
- 'bash': 'Bash',
- 'dash': 'Dash',
- 'fish': 'Fish',
- 'ksh': 'Ksh',
- 'csh': 'Csh',
- 'jsh': 'Jsh',
- 'tcsh': 'Tcsh'}
-
-# Define Colour Scheme
-
-clear = '\x1b[0m'
-blackB = '\x1b[0;30m'
-blackB = '\x1b[1;30m'
-redN = '\x1b[0;31m'
-redB = '\x1b[1;31m'
-greenN = '\x1b[0;32m'
-greenB = '\x1b[1;32m'
-yellowN = '\x1b[0;33m'
-yellowB = '\x1b[1;33m'
-blueN = '\x1b[0;34m'
-blueB = '\x1b[1;34m'
-magentaN = '\x1b[0;35m'
-magentaB = '\x1b[1;35m'
-cyanN = '\x1b[0;36m'
-cyanB = '\x1b[1;36m'
-whiteN = '\x1b[0;37m'
-whiteB = '\x1b[1;37m'
-
-# Find running processes.
-def xmonadfix(str):
- if re.compile("xmonad").match(str): return "xmonad"
- return str
-p1 = Popen(['ps', '-u', getuser()], stdout=PIPE).communicate()[0].split('\n')
-processes = map(xmonadfix, [process.split()[3] for process in p1 if process])
-p1 = None
-
-# Find Distro.
-DetectDistro = Popen(['lsb_release', '-i'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
-
-# Print coloured key with normal value.
-def output(key, value):
- if DetectDistro == 'Ubuntu':
- output ='%s%s:%s %s' % (redB, key, clear, value)
- if DetectDistro == 'Arch':
- output = '%s%s:%s %s' % (blueB, key, clear, value)
- if DetectDistro == 'Debian':
- output = '%s%s:%s %s' % (redB, key, clear, value)
- if DetectDistro == 'Fedora':
- output = '%s%s:%s %s' % (blueB, key, clear, value)
- if DetectDistro == 'CrunchBang':
- output = '%s%s:%s %s' % (whiteN, key, clear, value)
- if DetectDistro == 'LinuxMint':
- output = '%s%s:%s %s' % (greenB, key, clear, value)
- result.append(output)
-
-# RAM Function.
-def ram_display():
- raminfo = Popen(['free', '-m'], stdout=PIPE).communicate()[0].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' % (greenB, used, clear, ram[1])
- output('RAM', ramdisplay)
- if usedpercent > 33 and usedpercent < 67:
- ramdisplay = '%s%s MB %s/ %s MB' % (yellowB, used, clear, ram[1])
- output('RAM', ramdisplay)
- if usedpercent >= 67:
- ramdisplay = '%s%s MB %s/ %s MB' % (redB, used, clear, ram[1])
- output('RAM', ramdisplay)
-
-# Screenshot Function.
-screen = '%s' % options.screenshot
-def screenshot():
- print 'Taking shot in',
- list = range(1,6)
- list.reverse()
- for x in list:
- print '%s..' % x,
- sys.stdout.flush()
- sleep(1)
- print 'Say Cheeze!'
- subprocess.check_call(['scrot'])
-
-# Operating System Function.
-def distro_display():
- arch = Popen(['uname', '-m'], stdout=PIPE).communicate()[0].rstrip('\n')
- if DetectDistro == 'Debian':
- release = Popen(['lsb_release', '-r'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
- distro = 'Debian %s %s' % (release, arch)
- if DetectDistro == 'Ubuntu':
- release = Popen(['lsb_release', '-r'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
- distro = 'Ubuntu %s %s' % (release, arch)
- if DetectDistro == 'Arch':
- distro = 'Arch Linux %s' % arch
- if DetectDistro == 'Fedora':
- release = Popen(['lsb_release', '-r'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
- distro = 'Fedora %s %s' % (release, arch)
- if DetectDistro == 'CrunchBang':
- release = Popen(['lsb_release', '-r'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
- if DetectDistro == 'LinuxMint':
- release = Popen(['lsb_release', '-r'], stdout=PIPE).communicate()[0].split(':')[1].lstrip('\t').rstrip('\n')
- distro = 'Mint %s %s' % (release, arch)
- output('OS', distro)
-
-# Kernel Function.
-def kernel_display():
- kernel = Popen(['uname', '-r'], stdout=PIPE).communicate()[0].rstrip('\n')
- output ('Kernel', kernel)
-
-def user_display():
- username= os.getenv('USER')
- output ('User', username)
+#---------------Output---------------#
-# Hostname Function.
-def hostname_display():
- hostname = Popen(['uname', '-n'], stdout=PIPE).communicate()[0].rstrip('\n')
- output('Hostname', hostname)
-
-# CPU Function.
-def cpu_display():
- file = open('/proc/cpuinfo').readlines()
- cpuinfo = re.sub(' +', ' ', file[4].replace('model name\t: ', '').rstrip('\n'))
- output ('CPU', cpuinfo)
-
-# Uptime Function.
-def uptime_display():
- 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)
- output('Uptime', uptime)
-
-# Desktop Environment Function.
-def de_display():
- for key in de_dict.keys():
- if key in processes:
- de = de_dict[key]
- output ('Desktop Environment', de)
-
-# Window Manager Function.
-def wm_display():
- for key in wm_dict.keys():
- if key in processes:
- wm = wm_dict[key]
- output ('Window Manager', wm)
-
-# Shell Function.
-def sh_display():
- sh = os.getenv("SHELL").split('/')[-1].capitalize()
- output ('Shell', sh)
-
-# Terminal Function.
-def term_display():
- term = os.getenv("TERM").split('/')[-1].capitalize()
- output ('Terminal', term)
-
-# Packages Function.
-def packages_display():
- if DetectDistro == 'Ubuntu':
- p1 = Popen(['dpkg', '--get-selections'], stdout=PIPE)
- p2 = Popen(['grep', '-v', 'deinstall'], stdin=p1.stdout, stdout=PIPE)
- p3 = Popen(['wc', '-l'], stdin=p2.stdout, stdout=PIPE)
- packages = p3.communicate()[0].rstrip('\n')
- output ('Packages', packages)
- if DetectDistro == 'Arch':
- p1 = Popen(['pacman', '-Q'], stdout=PIPE)
- p2 = Popen(['wc', '-l'], stdin=p1.stdout, stdout=PIPE)
- packages = p2.communicate()[0].rstrip('\n')
- output ('Packages', packages)
- if DetectDistro == 'Debian':
- p1 = Popen(['dpkg', '--get-selections'], stdout=PIPE)
- p2 = Popen(['grep', '-v', 'deinstall'], stdin=p1.stdout, stdout=PIPE)
- p3 = Popen(['wc', '-l'], stdin=p2.stdout, stdout=PIPE)
- packages = p3.communicate()[0].rstrip('\n')
- output ('Packages', packages)
- if DetectDistro == 'CrunchBang':
- p1 = Popen(['dpkg', '--get-selections'], stdout=PIPE)
- p2 = Popen(['grep', '-v', 'deinstall'], stdin=p1.stdout, stdout=PIPE)
- p3 = Popen(['wc', '-l'], stdin=p2.stdout, stdout=PIPE)
- packages = p3.communicate()[0].rstrip('\n')
- output ('Packages', packages)
- if DetectDistro == 'Fedora':
- p1 = Popen(['rpm', '-qa'], stdout=PIPE)
- p2 = Popen(['wc', '-l'], stdin=p1.stdout, stdout=PIPE)
- packages = p2.communicate()[0].rstrip('\n')
- if DetectDistro == 'LinuxMint':
- p1 = Popen(['dpkg', '--get-selections'], stdout=PIPE)
- p2 = Popen(['grep', '-v', 'deinstall'], stdin=p1.stdout, stdout=PIPE)
- p3 = Popen(['wc', '-l'], stdin=p2.stdout, stdout=PIPE)
- packages = p3.communicate()[0].rstrip('\n')
- output ('Packages', packages)
-
-# Disk Function.
-def disk_display():
- 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]
- total = p1.splitlines()[-1]
- used = total.split()[3]
- size = total.split()[2]
- usedpercent = float(total.split()[5][:-1])
- if usedpercent <= 33:
- fs = '%s%s %s/ %s' % (greenB, used, clear, size)
- output ('Disk', fs)
- if usedpercent > 33 and usedpercent < 67:
- fs = '%s%s %s/ %s' % (yellowB, used, clear, size)
- output ('Disk', fs)
- if usedpercent >= 67:
- fs = '%s%s %s/ %s' % (redB, used, clear, size)
- output ('Disk', fs)
-
+output = [ 'User', 'Hostname', 'Distro', 'Kernel', 'Uptime', 'WindowManager', 'DesktopEnvironment', 'Shell', 'Terminal', 'Packages', 'CPU', 'RAM', 'Disk' ]
-# Run functions found in 'display' array.
-for x in display:
- funcname=x+'_display'
- func=locals()[funcname]
- func()
-
-# Array containing values.
-result.extend(['']*(20 - len(display)))
-
-# Result.
-if DetectDistro == 'Ubuntu':
- print """
-%s .oyhhs: %s
-%s ..--.., %sshhhhhh- %s
-%s -+++++++++`:%syyhhyo` %s
-%s .-- %s-++++++++/-.-%s::-` %s
-%s .::::- %s:-----:/+++/++/. %s
-%s -:::::-. %s.:++++++: %s
-%s ,,, %s.:::::-` %s.++++++- %s
-%s./+++/-%s`-::- %s./////: %s
-%s+++++++ %s.::- %s
-%s./+++/-`%s-::- %s:yyyyyo %s
-%s ``` `%s-::::-` %s:yhhhhh: %s
-%s -:::::-. %s`-ohhhhhh+ %s
-%s .::::-` %s-o+///+oyhhyyyhy: %s
-%s `.-- %s/yhhhhhhhy+%s,.... %s
-%s /hhhhhhhhh%s-.-:::; %s
-%s `.:://::- %s-:::::; %s
-%s `.-:-' %s
-%s %s
-%s""" % ( redN, result[0], redB, redN, result[1], redB, redN, result[2], yellowB, redB, redN, result[3], yellowB, redB, result[4], yellowB, redB, result[5], redB, yellowB, redB, result[6], redB, yellowB, redB, result[7], redB, yellowB, result[8], redB, yellowB, redN, result[9], redB, yellowB, redN, result[10], yellowB, redN, result[11], yellowB, redN, result[12], yellowB, redN, yellowB, result[13], redN, yellowB, result[14], redN, yellowB, result[15], yellowB, result[16], yellowB, result[17], clear )
-
-if DetectDistro == 'Arch':
- print """%s
-%s + %s
-%s # %s
-%s ### %s
-%s ##### %s
-%s ###### %s
-%s ; #####; %s
-%s +##.##### %s
-%s +########## %s
-%s ######%s#####%s##; %s
-%s ###%s############%s+ %s
-%s #%s###### ####### %s
-%s .######; ;###;`\". %s
-%s .#######; ;#####. %s
-%s #########. .########` %s
-%s ######' '###### %s
-%s ;#### ####; %s
-%s ##' '## %s
-%s #' `# %s%s """ % (blueB, blueB, result[0], blueB, result[1], blueB, result[2], blueB, result[3], blueB, result[4], blueB, result[5], blueB, result[6], blueB, result[7], blueB, blueN, blueB, result[8], blueB, blueN, blueB, result[9], blueB, blueN, result[10], blueN, result[11], blueN, result[12], blueN, result[13], blueN, result[14], blueN, result[15], blueN, result[16], blueN, result[17], clear)
-
-if DetectDistro == 'Debian':
- print """%s
-%s %s
-%s _sudZUZ#Z#XZo=_ %s
-%s _jmZZ2!!~---~!!X##wx %s
-%s .<wdP~~ -!YZL, %s
-%s .mX2' _xaaa__ XZ[. %s
-%s oZ[ _jdXY!~?S#wa ]Xb; %s
-%s _#e' .]X2( ~Xw| )XXc %s
-%s .2Z` ]X[. xY| ]oZ( %s
-%s .2#; )3k; _s!~ jXf` %s
-%s 1Z> -]Xb/ ~ __#2( %s
-%s -Zo; +!4ZwerfgnZZXY' %s
-%s *#[, ~-?!!!!!!-~ %s
-%s XUb;. %s
-%s )YXL,, %s
-%s +3#bc, %s
-%s -)SSL,, %s
-%s ~~~~~ %s
-%s %s
-%s """ % (redB, redB, result[0], redB, result[1], redB, result[2], redB, result[3], redB, result[4], redB, result[5], redB, result[6], redB, result[7], redB, result[8], redN, result[9], redN, result[10], redN, result[11], redN, result[12], redN, result[13], redN, result[14], redN, result[15], redN, result[16], redN, result[17], clear)
-
-if DetectDistro == 'Fedora':
- print """
-%s :/------------:// %s
-%s :------------------:// %s
-%s :-----------%s/shhdhyo/%s-:// %s
-%s /-----------%somMMMNNNMMMd/%s-:/ %s
-%s :-----------%ssMMMdo:/%s -:/ %s
-%s :-----------%s:MMMd%s------- --:/ %s
-%s /-----------%s:MMMy%s------- ---/ %s
-%s :------ --%s/+MMMh/%s-- ---: %s
-%s :--- %soNMMMMMMMMMNho%s -----: %s
-%s :-- %s+shhhMMMmhhy++%s ------: %s
-%s :- -----%s:MMMy%s--------------/ %s
-%s :- ------%s/MMMy%s-------------: %s
-%s :- ----%s/hMMM+%s------------: %s
-%s :--%s:dMMNdhhdNMMNo%s-----------: %s
-%s :---%s:sdNMMMMNds:%s----------: %s
-%s :------%s:://:%s-----------:// %s
-%s :--------------------:// %s
-%s %s
-%s """ % ( blueN, result[0], blueN, result[1], blueN, whiteB, blueN, result[2], blueN, whiteB, blueN, result[3], blueN, whiteB, blueN, result[4], blueN, whiteB, blueN, result[5], blueN, whiteB, blueN, result[6], blueN, whiteB, blueN, result[7], blueN, whiteB, blueN, result[8], blueN, whiteB, blueN, result[9], blueN, whiteB, blueN, result[10], blueN, whiteB, blueN, result[11], blueN, whiteB, blueN, result[12], blueN, whiteB, blueN, result[13], blueN, whiteB, blueN, result[14], blueN, whiteB, blueN, result[15], blueN, result[16], blueN, result[17], clear )
-
-if DetectDistro == 'CrunchBang':
- print """
-%s ___ ___ _ %s
-%s / / / / | | %s
-%s / / / / | | %s
-%s / / / / | | %s
-%s _______/ /______/ /______ | | %s
-%s /______ _______ _______/ | | %s
-%s / / / / | | %s
-%s / / / / | | %s
-%s / / / / | | %s
-%s ______/ /______/ /______ | | %s
-%s/_____ _______ _______/ | | %s
-%s / / / / | | %s
-%s / / / / |_| %s
-%s / / / / _ %s
-%s / / / / | | %s
-%s /__/ /__/ |_| %s
-%s %s
-%s %s
-%s""" % ( whiteN, result[0], whiteN, result[1], whiteN, result[2], whiteN, result[3], whiteN, result[4], whiteN, result[5], whiteN, result[6], whiteN, result[7], whiteN, result[8], whiteN, result[9], whiteN, result[10], whiteN, result[11], whiteN, result[12], whiteN, result[13], whiteN, result[14], whiteN, result[15], whiteN, result[16], whiteN, result[17], clear )
-
-if DetectDistro == 'LinuxMint':
- print """%s %s
-%s MMMMMMMMMMMMMMMMMMMMMMMMMmds+. %s
-%s MMm----::-://////////////oymNMd+` %s
-%s MMd %s/++ %s-sNMd: %s
-%s MMNso/` %sdMM `.::-. .-::.` %s.hMN: %s
-%s ddddMMh %sdMM :hNMNMNhNMNMNh: `%sNMm %s
-%s NMm %sdMM .NMN/-+MMM+-/NMN` %sdMM %s
-%s NMm %sdMM -MMm `MMM dMM. %sdMM %s
-%s NMm %sdMM -MMm `MMM dMM. %sdMM %s
-%s NMm %sdMM .mmd `mmm yMM. %sdMM %s
-%s NMm %sdMM` ..` ... ydm. %sdMM %s
-%s hMM- %s+MMd/-------...-:sdds %sMMM %s
-%s -NMm- %s:hNMNNNmdddddddddy/` %sdMM %s
-%s -dMNs-``%s-::::-------.`` %sdMM %s
-%s `/dMNmy+/:-------------:/yMMM %s
-%s ./ydNMMMMMMMMMMMMMMMMMMMMM %s
-%s %s
-%s %s
-%s""" % ( whiteB, result[0], whiteB, result[1], whiteB, result[2], whiteB, greenB, whiteB, result[3], whiteB, greenB, whiteB, result[4], whiteB, greenB, whiteB, result[5], whiteB, greenB, whiteB, result[6], whiteB, greenB, whiteB, result[7], whiteB, greenB, whiteB, result[8], whiteB, greenB, whiteB, result[9], whiteB, greenB, whiteB, result[10], whiteB, greenB, whiteB, result[11], whiteB, greenB, whiteB, result[12], whiteB, greenB, whiteB, result[13], whiteB, result[14], whiteB, result[15], whiteB, result[16], whiteB, result[17], clear )
-
-if screen == 'True':
- screenshot()
+#---------------Dictionaries---------------#
+
+colorDict = {
+ 'Arch Linux': ['\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 = {'Arch Linux': '''{color[1]}
+{color[1]} + {results[0]}
+{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]} ######{color[0]}#####{color[1]}##; {results[8]}
+{color[1]} ###{color[0]}############{color[1]}+ {results[9]}
+{color[1]} #{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]} #' `# {results[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(['']*(18-len(output)))
+
+ def __init__(self):
+ self.distro = self.__detectDistro()
+
+ def __detectDistro(self):
+ if os.path.exists('/etc/pacman.conf'):
+ return 'Arch Linux'
+ 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 = 'Arch Linux'
+ 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'))
+ self.key = 'CPU'
+ self.value = 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
+
+classes = {
+ 'User': User,
+ 'Hostname': Hostname,
+ 'Distro': Distro,
+ 'Kernel': Kernel,
+ 'Uptime': Uptime,
+ 'WindowManager': WindowManager,
+ 'DesktopEnvironment': DesktopEnvironment,
+ 'Shell': Shell,
+ 'Terminal': Terminal,
+ 'Packages': Packages,
+ 'CPU': CPU,
+ 'RAM': RAM,
+ 'Disk': Disk
+ }
+
+out = Output()
+for x in output:
+ out.append(classes[x]())
+out.output()