I'm used to have System monitoring in the top Gnome Panel: CPU, Temperature, Net, Fan-Speed. (see screenshot below)

enter image description here

In Unity, the Top Panel is locked for window name and global menu, so I can't add panel applets. So my question is:

Is there a way to replace this kind of system monitoring (always visible, taking not much space) in Unity?

link|improve this question

50% accept rate
feedback

10 Answers

up vote 19 down vote accepted

Exactly like old gnome indicator: http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

link|improve this answer
3  
thank the good lord. – krumpelstiltskin May 6 '11 at 3:08
feedback

You can download and install a software package (.deb) from

https://launchpad.net/indicator-sysmonitor/+download here. Once installed you will find it under Applications > Accessories > Sysyem Monitor Indicator and it will look like this in Unity; enter image description here

link|improve this answer
2  
Now if only this included coloured graphs like the gnome applet did, that would be perfect. All I need is CPU and Net. – Patrick Apr 27 '11 at 16:05
feedback

I found the following question and answer that solved the problem for me. It contains a list of replacements for the old applets called application indicators. Unfortunately not all of them are available for natty yet, but at least I got a very basic system load monitor (indicator-sysmonitor) and a weather indicator (indicator-weather) working.

enter image description here

ppa:indicator-multiload/stable-daily and install package indicator-multiload

link|improve this answer
As a side note, the question might be tagged with indicator. That is how I found my answer. – Leo Apr 18 '11 at 8:38
This is perfect! Love how you can resize the graphs. Job done! – sgargan Feb 10 at 20:36
I'm unable to install this under Gnome Shell on 11.10. indicator-multiload exists in the standard repo, but it's the old one that only works in Gnome Classic. – Cerin Mar 11 at 2:50
feedback

Here is a quick and dirty system monitor that I hacked together out of python: enter image description here

It uses the "System Monitor Indicator" (here) to call the script that I wrote. To use it: 0. install indicator-sysmonitor

To do that, run the following command.

sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor

  1. copy the script below into a file called sysmonitor

  2. make the script executable (chmod +x path-to-file)

  3. click on the indicator and choose "Preferences". Example showing that

  4. choose "use this command" and give it the path to the sysmonitor file.

here's the code:

#!/usr/bin/python

import re
import sys
import time
import psutil





#Functions:_    __    __    __    __    __    __    __    __    __    __    __
#__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \_



#interface |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
net_re = re.compile(r"\s*\S+:\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+")

def getInOut():
  """
  Get a readout of bytes in and out from /proc/net/dev.
  """

  netfile = "/proc/net/dev"

  try: f = open(netfile)
  except:
    sys.stderr.write("ERROR: can't open "+netfile+".\n")
    sys.exit(2)

  f.readline()    #Burn the top header line.
  f.readline()    #Burn the second header line.

  inb = 0
  outb = 0
  for line in f:
    m = net_re.match(line)
    inb += int(m.group(1))
    outb += int(m.group(2))
  f.close()

  return (inb,outb)



def sampleNet():
  """
  Get a sample of I/O from the network interfaces.
  """
  return makeSample(getInOut)


def makeSample(function):
  inlist = list()
  outlist = list()

  (inbytes, outbytes) = function()
  inlist.append(inbytes)
  outlist.append(outbytes)
  time.sleep(1)

  (inbytes, outbytes) = function()
  inlist.append(inbytes)
  outlist.append(outbytes)

  return (inlist[1] - inlist[0], outlist[1] - outlist[0])



def diskstatWrapper():
  """
  Wrapper for the diskstats_parse function that returns just the in and out.
  """
  ds = diskstats_parse("sda")
  return (ds["sda"]["writes"], ds["sda"]["reads"])



def sampleDisk():
  """
  Get a sample of I/O from the disk.
  """
  return makeSample(diskstatWrapper)





def diskstats_parse(dev=None):
    """
    I found this on stackoverflow.
    (http://stackoverflow.com/questions/3329165/python-library-for-monitoring-proc-diskstats)
    """
    file_path = '/proc/diskstats'
    result = {}

    # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt
    columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors',
                    'ms_reading', 'writes', 'wr_mrg', 'wr_sectors',
                    'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted']

    columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors']

    lines = open(file_path, 'r').readlines()
    for line in lines:
        if line == '': continue
        split = line.split()
        if len(split) != len(columns_disk) and len(split) != len(columns_partition):
            # No match
            continue

        data = dict(zip(columns_disk, split))
        if dev != None and dev != data['dev']:
            continue
        for key in data:
            if key != 'dev':
                data[key] = int(data[key])
        result[data['dev']] = data

    return result





#MAIN:    __    __    __    __    __    __    __    __    __    __    __    __
#__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \_




(indiff, outdiff) = sampleNet()
outstr = ""
outstr += "cpu: "+str(int(psutil.cpu_percent()))+"%\t"
outstr += "net: "+str(indiff/1000)+"|"+str(outdiff/1000)+" K/s\t"

(diskin, diskout) = sampleDisk()
outstr += "disk: "
if(diskin):
  outstr += "+"
else:
  outstr += "o"
outstr += "|"
if(diskout):
  outstr += "+"
else:
  outstr += "o"

print outstr

EDIT: if you want memory usage (as report by "top") add the lines

memperc = int(100*float(psutil.used_phymem())/float(psutil.TOTAL_PHYMEM))
outstr += "mem: "+str(memperc)+"%\t"

If you have version 2.0 of psutil then you can get the memory usage as reported by the GNOME System Monitor with the following line:

memperc = int(100*float(psutil.used_phymem()-psutil.cached_phymem())/float(psutil.TOTAL_PHYMEM))
link|improve this answer
thanks James for the formatting and the missing step (apt-add-repository). – krumpelstiltskin Apr 28 '11 at 18:09
Could you please tell me how i could get the RAM % instead of disk usage? – neo May 3 '11 at 16:13
1  
@neo: make a function that parses "/proc/meminfo" much like the one called "getInOut()" (the fields in meminfo are self explainatory). Then call your new function with makeSample(). If there's demand for this I'll write and post the code. – krumpelstiltskin May 4 '11 at 21:21
could you please give the code?i don't know anything about coding. – neo May 5 '11 at 2:03
1  
@neo: i added the lines for memory usage to the post. if mem usage is all you want, I suggest you remove all the other lines from the script so python doesn't have to parse them. – krumpelstiltskin May 6 '11 at 20:19
show 5 more comments
feedback

It's not in the top panel, but you could use Conky.

I don't use Conky, but there are some slim themes out there and I think you can make it always on top. (Although I don't know what part of the screen would be good to cover...)

link|improve this answer
+1 I've been using Conky for this exactly (as a system monitor applet replacement). It's extremely configurable, and it's likely that it will take some work to get the desired result. For some good-looking and interesting configs, I've been using one suggested on webupd8.org – belacqua Apr 15 '11 at 3:27
feedback

There is someone working on hardware sensors for indicator-applet. See Is there a hardware temperature sensor indicator?

link|improve this answer
feedback

You can install a port of the gnome system monitor indicator from: https://launchpad.net/~indicator-multiload/+archive/stable-daily

link|improve this answer
feedback

My take on the problem: https://gist.github.com/982939

Screenshot:

enter image description here

link|improve this answer
feedback

I think this will be closest thing to it for now. Cpu monitor

link|improve this answer
feedback

krumpelstiltskin had it in one line:

sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor

That was all I needed!

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.