#!/usr/bin/env tclsh # * Variables set var(user) $env(USER) set var(path) $env(PWD) set var(home) $env(HOME) # * somewhere in /home or /usr/home? #if {![string match -nocase "/home*" $var(path)]} { if {![string match -nocase "/home*" $var(path)] && ![string match -nocase "/usr/home*" $var(path)] } { return 0 } # * last login set lastlog [exec -- lastlog -u $var(user)] set ll(p) [lindex $lastlog 5] if {![string match -nocase "tty*" $ll(p)] && ![string match -nocase "pts*" $ll(p)]} { set ll(1) [lindex $lastlog 7] set ll(2) [lindex $lastlog 8] set ll(3) [lindex $lastlog 9] set ll(4) [lindex $lastlog 10] set ll(5) [lindex $lastlog 6] } else { set ll(1) [lindex $lastlog 6] set ll(2) [lindex $lastlog 7] set ll(3) [lindex $lastlog 8] set ll(4) [lindex $lastlog 9] set ll(5) [lindex $lastlog 5] } # * current system uptime set uptime [exec -- /usr/bin/cut -d. -f1 /proc/uptime] set up(d) [expr {$uptime/60/60/24}] set up(h) [expr {$uptime/60/60%24}] set up(m) [expr {$uptime/60%60}] set up(s) [expr {$uptime%60}] expr { $up(d) > 1 ? [set timemod(d) "days"] : [set timemod(d) "day"]} expr { $up(h) > 1 ? [set timemod(h) "hours"] : [set timemod(h) "hours"]} expr { $up(m) > 1 ? [set timemod(m) "minutes"] : [set timemod(m) "minutes"]} expr { $up(s) > 1 ? [set timemod(s) "seconds"] : [set timemod(s) "seconds"]} # * calculate usage of home directory; only use if your disk is # * relatively small, otherwise it will take forever! # set usage [lindex [exec -- /usr/bin/du -ms $var(home)] 0] # * list processes set psa [expr {[lindex [exec -- ps -A h | wc -l] 0]-000}] set psu [expr {[lindex [exec -- ps U $var(user) h | wc -l] 0]-002}] set verb are if [expr $psu < 2] { if [expr $psu = 0] { set psu none } else { set verb is } } # * current system load set loadavg [exec -- /bin/cat /proc/loadavg] set sysload(1) [lindex $loadavg 0] set sysload(5) [lindex $loadavg 1] set sysload(15) [lindex $loadavg 2] # * memory and swap set memory [exec -- free -m] set mem(t) [lindex $memory 7] set mem(u) [lindex $memory 8] set mem(f) [lindex $memory 9] set mem(c) [lindex $memory 11] set swap(t) [lindex $memory 14] set swap(u) [lindex $memory 15] set swap(f) [lindex $memory 16] # * temperature from lm-sensors, probably need to change # * depending on your hardware set temperature [exec -- sensors | grep °C | tr -d '+'] set tem(c) [lindex $temperature 63] set tem(d) [lindex $temperature 34] set tem(g) [lindex $temperature 46] set title "WELCOME TO MAKAI" # * length of title string + 26 for left padding set titlepad 42 # * terminal width - 2 for the padding set w 70 puts "" puts [format " \033\[01;32m%*s\033\[0m" $titlepad $title] puts [format " \033\[0;96m%s\033\[0m" [string repeat - $w]] puts [format " \033\[35mLast Login....:\033\[0m \033\[36m%s, %s %s %s from\033\[0m \033\[33m%s\033\[0m" $ll(1) $ll(2) $ll(3) $ll(4) $ll(5)] puts [format " \033\[35mUptime........:\033\[0m \033\[36m%s %s, %s %s, %s %s, %s %s\033\[0m" $up(d) $timemod(d) $up(h) $timemod(h) $up(m) $timemod(m) $up(s) $timemod(s)] puts [format " \033\[35mLoad..........:\033\[0m \033\[36m%s (1minute), %s (5minutes), %s (15minutes)\033\[0m" $sysload(1) $sysload(5) $sysload(15)] puts [format " \033\[35mMemory MB.....:\033\[0m \033\[36mTotal: %5d Used: %5d Free: %5d Buff/Cache: %5d" $mem(t) $mem(u) $mem(f) $mem(c)] puts [format " \033\[35mSwap MB.......:\033\[0m \033\[36mTotal: %5d Used: %5d Free: %5d " $swap(t) $swap(u) $swap(f)] puts [format " \033\[35mTemperature...:\033\[0m \033\[36mCPU: %s GPU: %s SSD: %s\033\[0m" $tem(c) $tem(g) $tem(d)] # puts [format " \033\[35mDisk Usage....:\033\[0m \033\[36mYou're using %sMB in %s\033\[0m" $usage $var(home)] puts [format " \033\[35mProcesses.....:\033\[0m \033\[36m%s total running of which %s %s yours\033\[0m" $psa $psu $verb] puts "" if {[file exists /etc/changelog]&&[file readable /etc/changelog]} { puts " . .. More or less important system informations:\n" set fp [open /etc/changelog] while {-1!=[gets $fp line]} { puts " ..) $line" } close $fp puts "" }