Jump to content



Photo

Linux System Stats Script


  • Please log in to reply
82 replies to this topic

#46 ncc50446

ncc50446

    Engage!

  • Tech Issues Solved: 1
  • Joined: 09-January 04
  • Location: Saskatchewan, Canada
  • OS: Windows 7
  • Phone: Android CM11 4.4.4

Posted 04 December 2012 - 20:58

I looked at the script quickly, and it doesn't have Cinnamon under your list of DE's. When I add in

elif [ "$DESKTOP_SESSION" = 'cinnamon' ]; then
    DE='Cinnamon'
it works. Must need that for Unity as well :)


#47 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 04 December 2012 - 21:06

Posted Imagelmao that would be why eh lol what a ######

ok latest one :)

http://www.haggistec...ts-V0.8b.tar.gz

#48 ncc50446

ncc50446

    Engage!

  • Tech Issues Solved: 1
  • Joined: 09-January 04
  • Location: Saskatchewan, Canada
  • OS: Windows 7
  • Phone: Android CM11 4.4.4

Posted 04 December 2012 - 21:12

Still shows Gnome...I think it has to be before Cinnamon. When it's placed before Gnome, it works :)

#49 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 04 December 2012 - 21:16

uploaded again same link lol

#50 ncc50446

ncc50446

    Engage!

  • Tech Issues Solved: 1
  • Joined: 09-January 04
  • Location: Saskatchewan, Canada
  • OS: Windows 7
  • Phone: Android CM11 4.4.4

Posted 04 December 2012 - 21:31

It's a gz inside a gz with the same script I think lol Still shows the same results

#51 +Majesticmerc

Majesticmerc

    Resident Idealist

  • Tech Issues Solved: 9
  • Joined: 24-August 05
  • Location: United Kingdom
  • OS: Arch Linux / Win 7
  • Phone: HTC One X

Posted 05 December 2012 - 00:05

You could make life easier for yourself and do something like this:

de="$(echo ${DESKTOP_SESSION} | sed 's/^./\U&/')"

That would assign the variable "de" with the desktop session value, with the first letter capitalized. ("Gnome", "Kde", "Xfce", etc).

If you wanted to be more advanced you could do something like this to save you having to update the script every time someone came out with a new DE (as long as the script handled the capitalization correctly):

GetDesktopEnvironmentVersion()
{
    case "${DESKTOP_SESSION}" in

        gnome)
            echo "$(gnome-session --version | awk {'print $2'})"
            return 0
            ;;

        kde)
            echo "$(kde-open -v | awk '/Platform/ {print $4}')"
            return 0
            ;;

    esac

    # Return 1 if the DE does not match a known DE we can get the version for.
    # This allows us to check the return code if we like.
    return 1
}

# Assume that any DE with a name shorter than 5 chars is an abbreviation. GNOME is an exception, since it should be capitalized still.
if [ ${#DESKTOP_SESSION} -le 4 ] || ${DESKTOP_SESSION} | grep -i "gnome" &> /dev/null; then
    de="$(echo ${DESKTOP_SESSION} | tr [:lower:] [:upper:])"
else
    de="$(echo ${DESKTOP_SESSION} | sed 's/^./\U&/')"
fi
de="${de} $(GetDesktopEnvironmentVersion)"

`echo $de` would result in the following:
  • "Cinnamon"
  • "GNOME 3.6.2"
  • "KDE 4.0.0"
  • "XFCE"
  • "Openbox
  • "Unity"
  • "MATE"


#52 wsgrant

wsgrant

    Neowinian

  • Joined: 25-October 11
  • Location: Kalifornia
  • OS: Slackware64 14.0

Posted 05 December 2012 - 03:46

With your stats-V0.8b.tar.gz version:

Running Openbox

Posted Image

#53 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 05 December 2012 - 08:09

yeah some openbox sessions set the $DESKTOP_SESSION some dont

new version hopefully will pick up unity and cinnamon

http://www.haggistec...s-V0.8.1.tar.gz

work to go to now :(

#54 ncc50446

ncc50446

    Engage!

  • Tech Issues Solved: 1
  • Joined: 09-January 04
  • Location: Saskatchewan, Canada
  • OS: Windows 7
  • Phone: Android CM11 4.4.4

Posted 05 December 2012 - 08:39

Xfce, Mate, Cinnamon, KDE and Openbox all work :)
Have to head to bed now, so can't do screenshots of them all, and forgot to copy the outputs, will later. But all showed the right DE :)

@Majesticmerc - Well, that's a simpler way to do it lol

#55 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 05 December 2012 - 08:59

Thanks Guys

wsgrant i cant see ur pic at work will check when i get home

Majesticmerc: i will give that a try when i get home it would tidy up my code a lot :)

#56 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 05 December 2012 - 17:48

GetDesktopEnvironmentVersion()
{
	case "${DESKTOP_SESSION}" in

		gnome)
			echo "$(gnome-session --version | awk {'print $2'})"
			return 0
			;;

		kde)
			echo "$(kde-open -v | awk '/Platform/ {print $4}')"
			return 0
			;;

	esac

	# Return 1 if the DE does not match a known DE we can get the version for.
	# This allows us to check the return code if we like.
	return 1
}

# Assume that any DE with a name shorter than 5 chars is an abbreviation. GNOME is an exception, since it should be capitalized still.
if [ ${#DESKTOP_SESSION} -le 4 ] || ${DESKTOP_SESSION} | grep -i "gnome" &> /dev/null; then
	de="$(echo ${DESKTOP_SESSION} | tr [:lower:] [:upper:])"
else
	de="$(echo ${DESKTOP_SESSION} | sed 's/^./\U&/')"
fi
de="${de} $(GetDesktopEnvironmentVersion)"

`echo $de` would result in the following:
  • "Cinnamon"
  • "GNOME 3.6.2"
  • "KDE 4.0.0"
  • "XFCE"
  • "Openbox
  • "Unity"
  • "MATE"



running your code i get this

not sure why though

	OS: Fedora 17 (Beefy Miracle)
	Hostname: haggislaptop
	Uptime: 21:18 hours
[b]./stats.sh: line 107: gnome: command not found[/b]
	CPU: Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz
	Total RAM: 1949 Mb
	Desktop Enviroment:
	Logged in as: haggis
	Kernel: 3.6.8-2.fc17.i686
	Resolution: 1440x900 pixels
	Load Averages: 0.63, 0.62, 0.68


#57 +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 05 December 2012 - 18:59

I think I have discovered why checking $DESKTOP_SESSION works for some people but not others. It has nothing to do with Debian, Ubuntu, Fedora, Openbox, Mate, etc. It is reliant on your display manager. I am using Slim on my laptop, which doesn't set $DESKTOP_SESSION. I noticed that switching to LightDM or GDM and logging into Openbox actually sets the $DESKTOP_SESSION to openbox.

Summary: Detecting desktop environment based on $DESKTOP_SESSION is unreliable at best.

#58 OP Haggis

Haggis

    Neowinian Senior

  • Tech Issues Solved: 16
  • Joined: 13-June 07
  • Location: Near Stirling, Scotland
  • OS: Debian 7
  • Phone: Samsung Galaxy S3 LTE (i9305)

Posted 05 December 2012 - 19:19

Ok so Gnome, KDE, and XFCE are fine as they use other methods

just need to work out

Unity
Mate
Cinnamon
LXDE

#59 +Majesticmerc

Majesticmerc

    Resident Idealist

  • Tech Issues Solved: 9
  • Joined: 24-August 05
  • Location: United Kingdom
  • OS: Arch Linux / Win 7
  • Phone: HTC One X

Posted 05 December 2012 - 21:23

running your code i get this

not sure why though

	OS: Fedora 17 (Beefy Miracle)
	Hostname: haggislaptop
	Uptime: 21:18 hours
[b]./stats.sh: line 107: gnome: command not found[/b]
	CPU: Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz
	Total RAM: 1949 Mb
	Desktop Enviroment:
	Logged in as: haggis
	Kernel: 3.6.8-2.fc17.i686
	Resolution: 1440x900 pixels
	Load Averages: 0.63, 0.62, 0.68


Because I borked up my code >.<.

I missed an echo command, the if statement should have read:
if [ ${#DESKTOP_SESSION} -le 4 ] || echo ${DESKTOP_SESSION} | grep -i "gnome" &> /dev/null; then

Doesn't really matter if DESKTOP_SESSION is unreliable though :(

#60 +Karl L.

Karl L.

    xorangekiller

  • Tech Issues Solved: 15
  • Joined: 24-January 09
  • Location: Virginia, USA
  • OS: Debian Testing

Posted 06 December 2012 - 00:16

I refactored stats 0.8.1 and developed a method to make desktop environment detection much more reliable. The new version is attached to this post, and the patch I created against 0.8.1 is below.

--- stats.sh.orig	2012-12-04 16:18:57.000000000 -0500
+++ stats.sh	2012-12-05 19:06:46.241149549 -0500
@@ -1,119 +1,322 @@
#!/bin/bash
-clear
-
-
-echo ""
-#echo "				  ___"
-#echo "			,g@@@@@@@@@@@p,			"
-#echo "		 ,@@@@@@@@@@@D****4@@.		 "
-#echo "	   ,@@@@@@@@@@P'		'%@.	   "
-#echo "	  y@@@@@@@@@@F   ,g@@p.  !3@k	  "
-#echo "	 !@@@@@@@@@@@.  !@@@@@@@@@@@@k	 "
-#echo "	:@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
-#echo "	J@@@@@@@@@***   '***@@@@@@@@@@)	"
-#echo "	J@@@@@@@@@		  @@@@@@@@@@)	"
-#echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
-#echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@F	 "
-#echo "	J@@@@@@@@@@@F   {@@@@@@@@@@@F	  "
-#echo "	J@@@E.  ''*^'   i@@@@@@@@@@B^	   "
-#echo "	J@@@@@._	  ,@@@@@@@@@@P'		 "
-#echo "	J@@@@@@@@@@@@@@@@@@BP*'	  "
-#echo ""
-echo ""
-
-
-
-
-os=$(cat /etc/*-release | grep "^PRETTY_NAME=" | sed -r 's/PRETTY_NAME="?([^"]+)"?/\1/')
-host=$(uname -n)
-kernel=$(uname -r)
-# get the uptime data
-days=$(uptime | awk '{print $3}' | sed 's/,//g')
-hours=$(uptime | awk '{print $5}' | sed 's/,//g')
-label=$(uptime | awk '{print $4}')
-totalram=$(awk '/MemTotal/{print $2}' /proc/meminfo)
-ram=$((totalram/1024))
-user=$(whoami)
-res=$(xdpyinfo | grep dimensions | awk {'print $2'})
-load=$(uptime | awk -F 'load average:' '{ print $2 }')
-cpu=$(cat /proc/cpuinfo | grep "model name" | sed -r 's/model name"?([^"]+)"?<img src='http://www.neowin.net/forum/public/style_emoticons/<#EMO_DIR#>/hmm.gif' class='bbc_emoticon' alt=':/' />\1/' | head -n 1)
-
-
-if [ -z "$os" ]
-then
-echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0)			 Not Found"
-else
-echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0)"			 $os
-fi
-
-echo "	$(tput bold)$(tput setaf 4)Hostname:$(tput sgr0)" $host
-
-
-# get the uptime data
-
-days=$(uptime | awk '{print $3}' | sed 's/,//g')
-hours=$(uptime | awk '{print $5}' | sed 's/,//g')
-label=$(uptime | awk '{print $4}')

+# Copyright (c) 2012, Haggis
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met :
+#
+#   * Redistributions of source code must retain the above copyright notice,
+#	 this list of conditions and the following disclaimer.
+#   * Redistributions in binary form must reproduce the above copyright notice,
+#	 this list of conditions and the following disclaimer in the documentation
+#	 and/or other materials provided with the distribution.
+#   * Neither the name of any individual or organization nor the names of its
+#	 contributors may be used to endorse or promote products derived from this
+#	 software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# ( INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+########################################################################
+#						   Global Variables						   #
+########################################################################
+
+unset os		 # Human-readable (pretty) name of the operating system
+unset host	   # Hostname
+unset kernel	 # Linux kernel build string
+
+unset days	   # Days the system has been online
+unset hours	  # Hours the system has been online (in relation to days)
+unset label	  # Precision of days, hours, minutes, or seconds
+unset day_label  # day/days
+unset hour_label # hour/hours
+
+unset totalram   # Size of installed RAM in kilabytes
+unset ram		# Size of installed RAM in megabytes
+unset user	   # Name of the user running this script
+unset res		# Resolution of the current X session
+unset load	   # Load average since the last reboot
+unset cpu		# CPU identifier information
+
+unset de		 # Desktop environment (or window manager) running
+unset ver		# DE version information, if available
+
+########################################################################
+#						   Primary Functions						  #
+########################################################################
+
+# Print a pretty logo for the Linux distribution the user is running.
+function print_logo
+{
+	id="$(cat /etc/*-release | grep -E '^ID[ ]*=[ ]*[A-Za-z]+[ ]*' | cut -d '=' -f 2)"
+	case $id in
+		ubuntu)
+			echo "									   "
+			echo "			  ..''''''..			   "
+			echo "		  .;::::::::::::::;.		   "
+			echo "	   .;::::::::::::::'.':::;.		"
+			echo "	 .;::::::::;,'..';.   .::::;.	  "
+			echo "	.:::::::,.,.	  ....:::::::.	 "
+			echo "   .:::::::.   :;::::,.   .:::::::.	"
+			echo "   ;::::::   .::::::::::.   ::::::;	"
+			echo "   :::.  .'  ::::::::::::...,::::::	"
+			echo "   :::.  .'  ::::::::::::...,::::::	"
+			echo "   ;::::::   .::::::::::.   ::::::;	"
+			echo "   .:::::::.   :,;::;,.   .:::::::.	"
+			echo "	.:::::::;.;.	  ....:::::::.	 "
+			echo "	  ;::::::::;,'..';.   .::::;	   "
+			echo "	   .;::::::::::::::'.':::;.		"
+			echo "		  .,::::::::::::::,.		   "
+			echo "			  ...''''...			   "
+			echo "									   "
+			;;
+		mint)
+			echo "									   "
+			echo ".:::::::::::::::::::::::::;,.		  "
+			echo ",0000000000000000000000000000Oxl,	  "
+			echo ",00,					   ..,cx0Oo.   "
+			echo ",00,	   ,,.				  .cO0o  "
+			echo ",00l,,.   '00;	   ..	 ..	.k0x "
+			echo "'kkkkO0l  '00;	ck000Odlk000Oo.  .00c"
+			echo "	 d0k  '00;   x0O:.'d00O;.,k00.  x0x"
+			echo "	 d0k  '00;  .00x   ,00o   ;00c  d0k"
+			echo "	 d0k  '00;  .00d   ,00o   ,00c  d0k"
+			echo "	 d0k  '00;  .00d   ,00o   ,00c  d0k"
+			echo "	 d0k  '00;   ;;'   .;;.   .cc'  d0k"
+			echo "	 d0O  .00d				...   d0k"
+			echo "	 ;00,  :00x:,,,,		.....   d0k"
+			echo "	  o0O,  .:dO000k...........	 d0k"
+			echo "	   :O0x,						x0k"
+			echo "		 :k0Odc,'.................;x00k"
+			echo "		   .;lxO0000000000000000000000k"
+			echo "				 ......................"
+			echo "									   "
+			;;
+		fedora)
+			echo "									   "
+			echo "				  ___				  "
+			echo "			,g@@@@@@@@@@@p,			"
+			echo "		 ,@@@@@@@@@@@D****4@@.		 "
+			echo "	   ,@@@@@@@@@@P'		'%@.	   "
+			echo "	  y@@@@@@@@@@F   ,g@@p.  !3@k	  "
+			echo "	 !@@@@@@@@@@@.  !@@@@@@@@@@@@k	 "
+			echo "	:@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
+			echo "	J@@@@@@@@@***   '***@@@@@@@@@@)	"
+			echo "	J@@@@@@@@@		  @@@@@@@@@@)	"
+			echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@@L	"
+			echo "	J@@@@@@@@@@@@   J@@@@@@@@@@@@F	 "
+			echo "	J@@@@@@@@@@@F   {@@@@@@@@@@@F	  "
+			echo "	J@@@E.  ''*^'   i@@@@@@@@@@B^	  "
+			echo "	J@@@@@._	  ,@@@@@@@@@@P'		"
+			echo "	J@@@@@@@@@@@@@@@@@@BP*'			"
+			echo "									   "
+			;;
+		debian)
+			echo "									   "
+			echo "			  _,met$$$$$gg.			"
+			echo "		   ,g$$$$$$$$$$$$$$$P.		 "
+			echo "		 ,g$$P$$	   $$$Y$$.$.	   "
+			echo "		,$$P'			  `$$$.	   "
+			echo "	  ',$$P	   ,ggs.	 `$$b:	  "
+			echo "	  `d$$'	 ,$P$'   .	$$$	   "
+			echo "	   $$P	  d$'	 ,	$$P	   "
+			echo "	   $$:	  $$.   -	,d$$'	   "
+			echo "	   $$;	  Y$b._   _,d$P'		 "
+			echo "	   Y$$.	`.`$Y$$$$P$'			"
+			echo "	   `$$b	  $-.__				 "
+			echo "		`Y$$b						  "
+			echo "		 `Y$$.						 "
+			echo "		   `$$b.					   "
+			echo "			 `Y$$b.					"
+			echo "			   `$Y$b._				 "
+			echo "				   `$$$$			   "
+			echo "									   "
+			;;
+		*)
+			echo "											"
+			echo "				 .88888888:.				"
+			echo "				88888888.88888.			 "
+			echo "			  .8888888888888888.			"
+			echo "			  888888888888888888			"
+			echo "			  88' _`88'_  `88888			"
+			echo "			  88 88 88 88  88888			"
+			echo "			  88_88_::_88_:88888			"
+			echo "			  88:::,::,:::::8888			"
+			echo "			  88`:::::::::'`8888			"
+			echo "			 .88  `::::'	8:88.		   "
+			echo "			8888			`8:888.		 "
+			echo "		  .8888'			 `888888.	   "
+			echo "		 .8888:..  .::.  ...:'8888888:.	 "
+			echo "		.8888.'	 :'	 `'::`88:88888	"
+			echo "	   .8888		'		 `.888:8888.   "
+			echo "	  888:8		 .		   888:88888   "
+			echo "	.888:88		.:		   888:88888:  "
+			echo "	8888888.	   ::		   88:888888   "
+			echo "	`.::.888.	  ::		  .88888888	"
+			echo "   .::::::.888.	::		 :::`8888'.:.  "
+			echo "  ::::::::::.888   '		 .::::::::::::  "
+			echo "  ::::::::::::.8	'	  .:8::::::::::::. "
+			echo " .::::::::::::::.		.:888::::::::::::: "
+			echo " :::::::::::::::88:.__..:88888:::::::::::'  "
+			echo "  `'.:::::::::::88888888888.88:::::::::'	"
+			echo "		`':::_:' -- '' -'-' `':_::::'`	  "
+			echo "											"
+			;;
+	esac
+}
+
+# Take a screenshot and save it in the user's home directory.
+function print_screenshot
+{
+	echo "	Screenshot being taken.....$(tput bold)$(tput setaf 4)Smile!!$(tput sgr0)"
+	echo
+	import -window root "$HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png"
+	echo "	Screenshot Saved as $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png"
+}
+
+# Collect release information.
+function get_release
+{
+	os=$(cat /etc/*-release | grep "^PRETTY_NAME=" | sed -r 's/PRETTY_NAME="?([^"]+)"?/\1/')
+	[ -z "$os" ] && os='Not Found'
+	host=$(uname -n)
+	kernel=$(uname -r)
+}
+
+# Save the uptime at the time this function is executed.
+function get_uptime
+{
+	# Since uptime changes constantly, save it before parsing so the output is consistent.
+	current_uptime="$(uptime)"
+	# Parse the uptime snapshot.
+	days=$(echo $current_uptime | awk '{print $3}' | sed 's/,//g')
+	if [ "$days" = 1 ]; then
+		day_label='day'
+	else
+		day_label='days'
+	fi
+	hours=$(echo $current_uptime | awk '{print $5}' | sed 's/,//g')
+	if [ "$hours" = 1 ]; then
+		hour_label='hour'
+	else
+		hour_label='hours'
+	fi
+	label=$(echo $current_uptime | awk '{print $4}')
+}
+
+# Collect generic system statistics.
+function get_system_stats
+{
+	totalram=$(awk '/MemTotal/{print $2}' /proc/meminfo)
+	ram=$((totalram/1024))
+	user=$(whoami)
+	res=$(xdpyinfo | grep dimensions | awk {'print $2'})
+	load=$(uptime | awk -F 'load average:' '{ print $2 }')
+	cpu=$(cat /proc/cpuinfo | grep 'model name' | head -n 1 | cut -d ':' -f 2-)
+}
+
+# Determine which desktop environment the user is running.
+function get_desktop_environment
+{
+	# $DESKTOP_SESSION in an UNRELIABLE method for determining which
+	# desktop environment is running. It is tied to the display manager,
+	# not the desktop environment itself. It is useful, though, when it
+	# is set.
+	if [ -z "$DESKTOP_SESSION" ]; then
+		if [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}kdeinit')" ]; then
+			DESKTOP_SESSION='kde-plasma'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}cinnamon')" ]; then
+			DESKTOP_SESSION='cinnamon'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}unity')" ]; then
+			DESKTOP_SESSION='unity'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}gnome-session')" ]; then
+			DESKTOP_SESSION='gnome'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}lxsession')" ]; then
+			DESKTOP_SESSION='LXDE'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}xfce.*-session')" ]; then
+			DESKTOP_SESSION='xfce'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}mate-session')" ]; then
+			DESKTOP_SESSION='mate'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}openbox')" ]; then
+			DESKTOP_SESSION='openbox'
+		elif [ -n "$(ps xo cmd | grep -v 'grep' | grep -E '([/][A-Za-z]+)*[/]{0,1}fluxbox')" ]; then
+			DESKTOP_SESSION='fluxbox'
+		fi
+	fi
+
+	if [ -n "$KDE_FULL_SESSION" ]; then
+		de='KDE'
+		ver=$(kde-open -v | awk '/Platform/ {print $4}')
+	elif [ "$DESKTOP_SESSION" == 'cinnamon' ]; then
+		de='Cinnamon'
+		ver=$(cinnamon --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'ubuntu' ]; then
+		de='Unity'
+		ver=$(unity --version | cut -d ' ' -f 2)
+	elif [ -n "$GNOME_DESKTOP_SESSION_ID" ]; then
+		de='GNOME'
+		ver=$(gnome-session --version | awk {'print $2'})
+	elif [ "$DESKTOP_SESSION" == 'LXDE' ]; then
+		de='LXDE'
+		ver=$(lxpanel --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'xfce' ]; then
+		de='XFCE'
+		ver=$(xfce4-session --version | head -n 1 | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'mate' ]; then
+		de='Mate'
+		ver=$(mate-session --version | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'openbox' ]; then
+		de='Openbox'
+		ver=$(openbox --version | head -n 1 | cut -d ' ' -f 2)
+	elif [ "$DESKTOP_SESSION" == 'fluxbox' ]; then
+		de='Fluxbox'
+		ver=$(fluxbox -version | head -n 1 | cut -d ' ' -f 2)
+	else
+		de='Not Found'
+	fi
+}
+
+########################################################################
+#								 Main								 #
+########################################################################

+clear

-
-
-if [ "$days" = 1 ]; then
-day_label='day'
-else
-day_label='days'
-fi
-
-#format labels
-if [ $hours = 1 ]; then
-hour_label='hour'
-else
-hour_label='hours'
-fi
-
-#format output
+get_release
+get_uptime
+get_system_stats
+get_desktop_environment
+
+echo
+print_logo
+echo
+echo "	$(tput bold)$(tput setaf 4)OS:$(tput sgr0) $os"
+echo "	$(tput bold)$(tput setaf 4)Hostname:$(tput sgr0) $host"
if [ "$label" = 'min,' ]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days "minutes"
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days minutes"
elif [[ "$label" = 'day,' || "$label" = 'days,' ]]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days $day_label, $hours $hour_label
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days $day_label, $hours $hour_label"
elif [ "$label" = '2' ]; then
-echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) "$days "hours"
-fi
-
-
-if [ x"$KDE_FULL_SESSION" = x"true" ]; then
-	DE='KDE'
-	ver=$(kde-open -v | awk '/Platform/ {print $4}')
-elif [ "$DESKTOP_SESSION" = 'cinnamon' ]; then
-	DE='Cinnamon'
-elif [ "$DESKTOP_SESSION" = 'unity' ]; then
-	DE='Unity'
-elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then
-	DE='GNOME'
-	ver=$(gnome-session --version | awk {'print $2'})
-elif [ "$DESKTOP_SESSION" = 'LXDE' ]; then
-	DE='LXDE'
-elif xprop -root _DT_SAVE_MODE | grep -qs ' = \"xfce4\"$'; then
-	DE='XFCE'
-elif [ "$DESKTOP_SESSION" = 'mate' ]; then
-	DE='Mate'
-elif [ "$DESKTOP_SESSION" = 'openbox' ]; then
-	DE='Openbox'
-
-else
-	DE='Not Found'
+	echo "	$(tput bold)$(tput setaf 4)Uptime:$(tput sgr0) $days hours"
fi
-echo "	$(tput bold)$(tput setaf 4)CPU:$(tput sgr0)" $cpu
-echo "	$(tput bold)$(tput setaf 4)Total RAM:$(tput sgr0)" $ram "$(tput bold)$(tput setaf 4)Mb$(tput sgr0)"
-echo "	$(tput bold)$(tput setaf 4)Desktop Enviroment:$(tput sgr0)" $DE $ver
-echo "	$(tput bold)$(tput setaf 4)Logged in as:$(tput sgr0)" $user
-echo "	$(tput bold)$(tput setaf 4)Kernel:$(tput sgr0)" $kernel
-echo "	$(tput bold)$(tput setaf 4)Resolution:$(tput sgr0)" $res "$(tput bold)$(tput setaf 4)pixels$(tput sgr0)"
-echo "	$(tput bold)$(tput setaf 4)Load Averages:$(tput sgr0)" $load
-echo ""
-echo ""
-#echo "	Screenshot being taken.....$(tput bold)$(tput setaf 4)Smile!!$(tput sgr0) (Disabled)"
-#echo ""
-# import -window root $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png
-# echo "Screenshot Saved as " $HOME/Screenshot_$(/bin/date +%Y%m%d.%H%M).png
+echo "	$(tput bold)$(tput setaf 4)CPU:$(tput sgr0)$cpu"
+echo "	$(tput bold)$(tput setaf 4)Total RAM:$(tput sgr0) $ram $(tput bold)$(tput setaf 4)Mb$(tput sgr0)"
+echo "	$(tput bold)$(tput setaf 4)Desktop Enviroment:$(tput sgr0) $de $ver"
+echo "	$(tput bold)$(tput setaf 4)Logged in as:$(tput sgr0) $user"
+echo "	$(tput bold)$(tput setaf 4)Kernel:$(tput sgr0) $kernel"
+echo "	$(tput bold)$(tput setaf 4)Resolution:$(tput sgr0) $res $(tput bold)$(tput setaf 4)pixels$(tput sgr0)"
+echo "	$(tput bold)$(tput setaf 4)Load Averages:$(tput sgr0)$load"
+echo
+echo
+# print_screenshot
+# echo
+# echo

PS: Attaching the patched version of the script in a zip file was not my choice. Apparently Neowin won't let me attach anything with the .tar.gz or .tar.lzma extension.