Projects - System Monitor
I am not good at decorating my Desktop, however, something like FVWM and torsmo did. The system monitor located in the left-bottom on my Desktop is named torsmo which means TyopoytaORvelo System MOnitor. It uses Xlib, sits in the corner of your desktop, and renders only text on the desktop (percentagebars if you want it to). Also it's simple and customizable like other GNU software.
The version I used is torsmo-0.18.tar.gz which is also the latest version until now. It's easy to install:
#tar xvfz torsmo-0.18.tar.gz #cd torsmo-0.18/ #./configure #make && make check #make install
$HOME/
|©¤©¤ .torsmorc
|©¤©¤ .torsmos/
|©¤©¤ README
|©¤©¤ VBat.sh
|©¤©¤ Vcore1.sh
|©¤©¤ fan2.sh
|©¤©¤ hdatemp.sh
|©¤©¤ seti.sh
|©¤©¤ temp1.sh
|©¤©¤ temp2.sh
|©¤©¤ weather.sh
|©¤©¤ torsmo_stuff.txt
Although torsmo works with the only lib - Xlib, you still to pay attention to your computer hardware and your kernel.1
Pay attention to the following part when you rebuild your kernel using torsmo to monitor the hardware section.
Device Drivers --->I2C support --->
The usage of torsmo has something to do with /proc psuedo file system. So here gives the basic knowledge about /proc and do not hesitate to Google the words you do not understand.
A Map of /proc:
loadavg Average of system load for the last 1, 5 and 15 minutes uptime Time in seconds since boot-up and total time used by processes meminfo The number of total, used and free bytes of memory and swap area(s) kmsg Kernel messages that have yet to be read in by the kernel version Current rev of the kernel and/or distribution (read from linux_banner cpuinfo Recognized processor parameters pci Current occupation of pci slots. self/ Information about processes currently accessing /proc net/ Descriptions about the network layer(s) scsi/ Contains files with information on individual scsi devices malloc Monitoring provisions for kmalloc and kfree operations kcore A core dump for the kernel (memory snapshot) modules Information regarding single loaded modules stat General Linux Statistics devices Information about kernel registered devices on the system interrupts Interrupt assignment information filesystems Existing filesystem implementations ksyms Symbols exported by the kernel dma Occupied DMA channels ioports Currently occupied IO ports smp Individual information about CPU's if SMP is enabled cmdline Command line parameters passed to the kernel at boot time sys/ Important kernel and network information mtab Currently mounted filesystems md Multiple device driver information (if enabled) rc Enhanced real time clock (if enabled) locks Currently locked files
For more information, read
### torsmo configuration ## set to yes if you want tormo to be forked in the background background yes ## X font when Xft is disabled, you can pick one with program xfontsel #font 5x7 #font 6x10 #font 7x13 #font 8x13 #font 9x15 #font *mintsmild.se* #font -*-*-*-*-*-*-34-*-*-*-*-*-*-* #font -bitstream-bitstream vera serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 font -bitstream-bitstream vera sans-medium-r-normal-*-14-*-*-*-*-*-*-* #font -*-stkaiti-medium-r-normal-*-16-*-*-*-*-*-*-* ## Use Xft? use_xft no ## Xft font when Xft is enabled xftfont courier-12 ## Text alpha when using Xft xftalpha 0.8 ## mail spool #mail_spool $MAIL ## Update interval in seconds update_interval 5.0 ## Create own window instead of using desktop (required in nautilus) own_window no ## Use double buffering (reduces flicker, may not work for everyone) double_buffer no ## Minimum size of text area minimum_size 80 5 ## Draw shades? draw_shades yes ## Draw outlines? draw_outline no ## Draw borders around text draw_borders no ## Stippled borders? #stippled_borders 8 stippled_borders 0 ## border margins #border_margin 4 border_margin 2 ## border width border_width 1 ## Default colors and also border colors default_color white default_shade_color black default_outline_color black ## Text alignment, other possible values are commented #alignment top_left #alignment top_right alignment bottom_left #alignment bottom_right ## Gap between borders of screen and text gap_x 5 gap_y 10 ## Subtract file system buffers from used memory? no_buffers yes ## set to yes if you want all text to be in uppercase uppercase no ## boinc (seti) dir ## seti_dir /opt/seti # Possible variables to be used: # # Variable Arguments Description # acpiacadapter ACPI ac adapter state. # acpifan ACPI fan state # acpitemp ACPI temperature. # adt746xcpu CPU temperature from therm_adt746x # adt746xfan Fan speed from therm_adt746x # battery (num) Remaining capasity in ACPI or APM # battery. ACPI battery number can be # given as argument (default is BAT0). # buffers Amount of memory buffered # cached Amount of memory cached # color (color) Change drawing color to color # cpu CPU usage in percents # cpubar (height) Bar that shows CPU usage, height is # bar's height in pixels # downspeed net Download speed in kilobytes # downspeedf net Download speed in kilobytes with one # decimal # exec shell command Executes a shell command and displays # the output in torsmo. warning: this # takes a lot more resources than other # variables. I'd recommend coding wanted # behaviour in C and posting a patch :-). # execi interval, shell Same as exec but with specific interval. # command Interval can't be less than # update_interval in configuration. # fs_bar (height), (fs) Bar that shows how much space is used on # a file system. height is the height in # pixels. fs is any file on that file # system. # fs_free (fs) Free space on a file system available # for users. # fs_free_perc (fs) Free percentage of space on a file # system available for users. # fs_size (fs) File system size # fs_used (fs) File system used space # hr (height) Horizontal line, height is the height in # pixels # i2c (dev), type, n I2C sensor from sysfs (Linux 2.6). dev # may be omitted if you have only one I2C # device. type is either in (or vol) # meaning voltage, fan meaning fan or temp # meaning temperature. n is number of the # sensor. See /sys/bus/i2c/devices/ on # your local computer. # kernel Kernel version # loadavg (1), (2), (3) System load average, 1 is for past 1 # minute, 2 for past 5 minutes and 3 for # past 15 minutes. # machine Machine, i686 for example # mails Mail count in mail spool. You can use # program like fetchmail to get mails from # some server using your favourite # protocol. See also new_mails. # mem Amount of memory in use # membar (height) Bar that shows amount of memory in use # memmax Total amount of memory # memperc Percentage of memory in use # new_mails Unread mail count in mail spool. # nodename Hostname # outlinecolor (color) Change outline color # pre_exec shell command Executes a shell command one time before # torsmo displays anything and puts output # as text. # processes Total processes (sleeping and running) # running_processes Running processes (not sleeping), # requires Linux 2.6 # shadecolor (color) Change shading color # stippled_hr (space), Stippled (dashed) horizontal line # (height) # swapbar (height) Bar that shows amount of swap in use # swap Amount of swap in use # swapmax Total amount of swap # swapperc Percentage of swap in use # sysname System name, Linux for example # time (format) Local time, see man strftime to get more # information about format # totaldown net Total download, overflows at 4 GB on # Linux with 32-bit arch and there doesn't # seem to be a way to know how many times # it has already done that before torsmo # has started. # totalup net Total upload, this one too, may overflow # updates Number of updates (for debugging) # upspeed net Upload speed in kilobytes # upspeedf net Upload speed in kilobytes with one # decimal # uptime Uptime # uptime_short Uptime in a shorter format # # seti_prog Seti@home current progress # seti_progbar (height) Seti@home current progress bar # seti_credit Seti@hoome total user credit ## variable is given either in format $variable or in ${variable}. Latter ## allows characters right after the variable and must be used in network ## stuff because of an argument ## ${color grey}Temperatures: ## CPU:$color ${i2c temp 1}C${color grey} - MB:$color ${i2c temp 2}C ## stuff after 'TEXT' will be formatted on screen TEXT $nodename - $sysname $kernel on $machine $stippled_hr ${color slate grey}${time %a, }${color }${time %e %B %G} ${color slate grey}${time %Z, }${color }${time %H:%M:%S} $stippled_hr ${color grey}Uptime$color $uptime ${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 6} ${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 6} ${color grey}CPU Usage:$color $cpu% ${cpubar 6} ${color grey}Processes:$color $processes ${color grey}Running:$color $running_processes ${color grey}Mails: ${color}$mails${color grey} New: ${color}$new_mails${color grey} $color$stippled_hr ${color grey}Networking: Up:$color ${upspeed eth0} k/s${color grey} - Down:$color ${downspeed eth0} k/s ${color grey}File systems: / $color${fs_free /}/${fs_size /} ${fs_bar 6 /} ${color grey}Temperatures: CPU:$color ${i2c 9191-1c00 temp 1}ˇăC${color grey} - MB:$color ${i2c 9191-1c00 temp 2}ˇăC ${stippled_hr 2 1} ${color slate grey}Weather :${color} ${execi 900 /home/flyzhy/.torsmos/weather.sh Today} ${stippled_hr 2 1} ${color slate grey}Tomorrow :${color} ${execi 900 /home/flyzhy/.torsmos/weather.sh Tomorrow} ${stippled_hr 2 1} ${color slate grey}Cpu Mem Process ${color } ${execi 10 ps gaxo %cpu,%mem,comm | sort +0nr | head -n 5 | sed -e 's/-bin//' | sed -e 's/-media-play//'}
This is a shell script to catch the information about the weather of current day and next day from Yahoo.
#!/bin/bash city="QingDao" link=CHXX0110_c.html?force_units=1 file=/tmp/weather.txt location=http://weather.yahoo.com/forecast/$link lynx -accept_all_cookies -dump $location > $file begin=`cat -n $file | grep "Currently" | cut -d ' ' -f5` end=`expr $begin + 40` head -n $end $file > tmp.t tail -n 41 tmp.t > $file case $1 in Today) head -n 6 $file | sed '3d' ;; Tomorrow) begin=`cat -n $file | grep 'Today Tomorrow' | cut -d ' ' -f5` end=`cat -n $file | grep 'Extended' | cut -d ' ' -f5` num=`expr $end - $begin - 1` end2=`expr $begin + 7` head -n $end2 $file > tmp.t tail -n 3 tmp.t | sed 's/sky/\n sky/' | sed '4d' ;; *) exit ;; esac rm tmp.t rm $file
After the configuration we want to start it when X is booting up. It's easy to do that if you use FVWM as your Window Manager. Check Startup Functions about
+ I FvwmTorsmo
in the InitFunction function and look up the FvwmTorsmo function in Program Lauching Functions.
1. Especially the kernel, or else you can not use some function of torsmo.