tazpanel annotate hardware.cgi @ rev 219
hardware.cgi: add battery support
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Thu Jan 05 16:32:48 2012 +0100 (2012-01-05) |
parents | 775fbfd01b04 |
children | 0b69a546638a |
rev | line source |
---|---|
pankso@46 | 1 #!/bin/sh |
pankso@46 | 2 # |
pankso@46 | 3 # Hardware part of TazPanel - Devices, drivers, printing |
pankso@46 | 4 # |
pankso@112 | 5 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License |
pankso@46 | 6 # |
pankso@46 | 7 |
pankso@46 | 8 # Common functions from libtazpanel |
pankso@46 | 9 . lib/libtazpanel |
pankso@46 | 10 get_config |
pascal@81 | 11 header |
pankso@46 | 12 |
pankso@46 | 13 # Include gettext helper script. |
pankso@46 | 14 . /usr/bin/gettext.sh |
pankso@46 | 15 |
pankso@46 | 16 # Export package name for gettext. |
pankso@46 | 17 TEXTDOMAIN='tazpanel' |
pankso@46 | 18 export TEXTDOMAIN |
pankso@46 | 19 |
pankso@46 | 20 TITLE="- Hardware" |
pankso@46 | 21 |
pankso@46 | 22 # |
pankso@46 | 23 # Commands |
pankso@46 | 24 # |
pankso@46 | 25 |
pascal@81 | 26 case " $(GET) " in |
pascal@81 | 27 *\ print\ *) |
pankso@46 | 28 echo "TODO" ;; |
pascal@81 | 29 *\ modules\ *|*\ modinfo\ *) |
pankso@46 | 30 xhtml_header |
pankso@46 | 31 cat << EOT |
pankso@46 | 32 <div id="wrapper"> |
pankso@66 | 33 <h2>`gettext "Kernel modules"`</h2> |
pankso@69 | 34 <div class="float-right"> |
pankso@69 | 35 <form method="get" action="$SCRIPT_NAME"> |
pankso@69 | 36 <input type="hidden" name="modules" /> |
pankso@69 | 37 <input type="text" name="search" /> |
pankso@69 | 38 </form> |
pankso@69 | 39 </div> |
pankso@72 | 40 <p>`gettext "Manage, search or get information about the Linux kernel modules`</p> |
pankso@46 | 41 </div> |
pankso@46 | 42 EOT |
pankso@66 | 43 # Request may be modinfo output that we want in the page itself |
pascal@81 | 44 if [ -n "$(GET modinfo)" ]; then |
pascal@81 | 45 echo '<strong>' |
pascal@81 | 46 gettext "Detailed information for module: "; echo "$(GET modinfo)" |
pascal@81 | 47 echo '</strong>' |
pascal@81 | 48 echo '<pre>' |
pascal@81 | 49 modinfo $(GET modinfo) |
pascal@81 | 50 echo '</pre>' |
pascal@81 | 51 fi |
pascal@81 | 52 if [ -n "$(GET modprobe)" ]; then |
pascal@81 | 53 echo '<pre>' |
pascal@81 | 54 modprobe -v $(GET modprobe) |
pascal@81 | 55 echo '</pre>' |
pascal@81 | 56 fi |
pascal@81 | 57 if [ -n "$(GET rmmod)" ]; then |
pascal@81 | 58 echo "Removing" |
pascal@81 | 59 rmmod -w $(GET rmmod) |
pascal@81 | 60 fi |
pascal@81 | 61 if [ -n "$(GET search)" ]; then |
pascal@81 | 62 gettext "Matching result(s) for: "; echo "$(GET search)" |
pascal@81 | 63 echo '<pre>' |
pascal@81 | 64 modprobe -l | grep "$(GET search)" | while read line |
pascal@81 | 65 do |
pascal@81 | 66 name=$(basename $line) |
pascal@81 | 67 mod=${name%.ko.gz} |
pascal@81 | 68 echo "Module : <a href='$SCRIPT_NAME?modinfo=$mod'>$mod</a> " |
pascal@81 | 69 done |
pascal@81 | 70 echo '</pre>' |
pascal@81 | 71 fi |
pankso@46 | 72 cat << EOT |
pankso@46 | 73 `table_start` |
pankso@46 | 74 <tr class="thead"> |
pankso@46 | 75 <td>`gettext "Module"`</td> |
pankso@46 | 76 <td>`gettext "Size"`</td> |
pankso@46 | 77 <td>`gettext "Used"`</td> |
pankso@46 | 78 <td>`gettext "by"`</td> |
pankso@46 | 79 </tr> |
pankso@46 | 80 EOT |
pankso@46 | 81 # Get the list of modules and link to modinfo |
pankso@46 | 82 lsmod | grep ^[a-z] | while read MOD SIZE USED BY |
pankso@46 | 83 do |
pankso@46 | 84 cat << EOT |
pankso@46 | 85 <tr> |
pankso@46 | 86 <td><a href="$SCRIPT_NAME?modinfo=$MOD">$MOD</a></td> |
pankso@46 | 87 <td>$SIZE</td> |
pankso@46 | 88 <td>$USED</td> |
pankso@46 | 89 <td>`echo $BY | sed s/","/" "/g`</td> |
pankso@46 | 90 </tr> |
pankso@46 | 91 EOT |
pankso@46 | 92 done |
pankso@66 | 93 table_end ;; |
pankso@66 | 94 *) |
pascal@217 | 95 [ -n "$(GET brightness)" ] && |
pascal@217 | 96 echo -n $(GET brightness) > /proc/acpi/video/$(GET dev)/LCD/brightness |
pascal@217 | 97 |
pankso@66 | 98 # |
pankso@66 | 99 # Default to summary with mounted filesystem, loaded modules |
pankso@66 | 100 # |
pankso@66 | 101 xhtml_header |
pankso@66 | 102 cat << EOT |
pankso@66 | 103 <div id="wrapper"> |
pankso@66 | 104 <h2>`gettext "Drivers & Devices"`</h2> |
pankso@66 | 105 <p>`gettext "Manage your computer hardware`</p> |
pascal@219 | 106 </div> |
pascal@219 | 107 <div> |
pascal@219 | 108 <a class="button" href="$SCRIPT_NAME?modules"> |
pascal@219 | 109 <img src="$IMAGES/tux.png" />Kernel modules</a> |
pascal@219 | 110 </div> |
pascal@219 | 111 |
pascal@219 | 112 <div id="wrapper"> |
pascal@217 | 113 EOT |
pascal@219 | 114 if [ -n "$(ls /proc/acpi/battery/*/info 2> /dev/null)" ]; then |
pascal@219 | 115 echo "<table>" |
pascal@219 | 116 for dev in /proc/acpi/battery/*; do |
pascal@219 | 117 grep ^present $dev/info | grep -q yes || continue |
pascal@219 | 118 design=$(sed '/design capacity:/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pascal@219 | 119 remain=$(sed '/remaining capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 120 rate=$(sed '/present rate/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/state) |
pascal@219 | 121 full=$(sed '/last full capacity/!d;s/[^0-9]*\([0-9]*\).*/\1/' < $dev/info) |
pascal@219 | 122 remtime=$(( ($remain * 60) / $rate )) |
pascal@219 | 123 rempct=$(( ($remain * 100) / $full )) |
pascal@219 | 124 cat << EOT |
pascal@219 | 125 <tr> |
pascal@219 | 126 <td><img src="$IMAGES/battery.png" /> |
pascal@219 | 127 Battery $(grep "^battery type" $dev/info | sed 's/.*: *//') |
pascal@219 | 128 $(grep "^design capacity:" $dev/info | sed 's/.*: *//') </td> |
pascal@219 | 129 <td>health $(( (100*$full)/$design))%</td> |
pascal@219 | 130 EOT |
pascal@219 | 131 if grep -qis discharging $dev/state; then |
pascal@219 | 132 cat <<EOT |
pascal@219 | 133 <td class="pct"><div class="pct" |
pascal@219 | 134 style="width: $rempct%;">charge $rempct% - $(printf "%d:%02d" $(($remtime/60)) $(($remtime%60)))</div></td> |
pascal@219 | 135 EOT |
pascal@219 | 136 else |
pascal@219 | 137 cat <<EOT |
pascal@219 | 138 <td class="pct"><div class="pct" |
pascal@219 | 139 style="width: $rempct%;">recharging $rempct%</div></td> |
pascal@219 | 140 EOT |
pascal@219 | 141 fi |
pascal@219 | 142 done |
pascal@219 | 143 echo "</table>" |
pascal@219 | 144 fi |
pascal@219 | 145 if [ -n "$(ls /proc/acpi/thermal_zone/*/temperature 2> /dev/null)" ]; then |
pascal@219 | 146 echo "Temperature: " |
pascal@219 | 147 for temp in /proc/acpi/thermal_zone/*/temperature; do |
pascal@219 | 148 sed 's/.*://' < $temp |
pascal@219 | 149 done |
pascal@219 | 150 fi |
pascal@217 | 151 if [ -n "$(ls /proc/acpi/video/*/LCD/brightness 2> /dev/null)" ]; then |
pascal@217 | 152 cat <<EOT |
pascal@217 | 153 <form method="get" action="$SCRIPT_NAME"> |
pascal@217 | 154 EOT |
pascal@217 | 155 for dev in /proc/acpi/video/*/LCD/brightness ; do |
pascal@217 | 156 name=$(echo $dev | sed 's|.*/video/||;s|/LCD/.*||') |
pascal@217 | 157 cat <<EOT |
pascal@217 | 158 <input type="hidden" name="dev" value="$name" /> |
pascal@217 | 159 $(gettext "LCD brightness") $name: <select name="brightness" onchange="submit();"> |
pascal@217 | 160 EOT |
pascal@217 | 161 awk '{ |
pascal@217 | 162 if ($1 == "levels:") |
pascal@217 | 163 for (i = 2; i <= NF; i++) level[$i] = i |
pascal@217 | 164 if ($1 == "current:") current=$2 |
pascal@217 | 165 } |
pascal@217 | 166 END { |
pascal@217 | 167 for (i in level) { |
pascal@217 | 168 s="<option value=\"" i "\"" |
pascal@217 | 169 if (current == i) s=s " selected=\"selected\"" |
pascal@217 | 170 s=s ">" i "%</option>" |
pascal@217 | 171 if (i == 100) last=s |
pascal@217 | 172 else print s |
pascal@217 | 173 } |
pascal@217 | 174 print last |
pascal@217 | 175 }' < $dev |
pascal@217 | 176 cat <<EOT |
pascal@217 | 177 </select> |
pascal@217 | 178 EOT |
pascal@217 | 179 done |
pascal@217 | 180 cat << EOT |
pascal@217 | 181 </form> |
pascal@217 | 182 EOT |
pascal@217 | 183 fi |
pascal@217 | 184 cat << EOT |
pankso@66 | 185 </div> |
pankso@152 | 186 |
pankso@152 | 187 <h3>$(gettext "Filesystem usage statistics")</h3> |
pankso@152 | 188 <pre> |
pankso@66 | 189 EOT |
pankso@152 | 190 fdisk -l | fgrep Disk |
pankso@66 | 191 echo '</pre>' |
pankso@153 | 192 # |
pankso@153 | 193 # Disk stats and management (mount, umount, heck) |
pankso@153 | 194 # |
pankso@153 | 195 table_start |
pankso@153 | 196 df_thead |
pankso@153 | 197 df -h | grep ^/dev | while read fs size used av pct mp |
pankso@153 | 198 do |
pankso@153 | 199 cat << EOT |
pankso@153 | 200 <tr> |
pankso@190 | 201 <td><img src="$IMAGES/harddisk.png" />${fs#/dev/}</td> |
pankso@153 | 202 <td>$size</td> |
pankso@153 | 203 <td>$av</td> |
pankso@153 | 204 <td class="pct"><div class="pct" |
pascal@217 | 205 style="width: $pct;">$used - $pct</div></td> |
pankso@153 | 206 <td>$mp</td> |
pankso@153 | 207 </tr> |
pankso@153 | 208 EOT |
pankso@153 | 209 done |
pankso@153 | 210 table_end |
pankso@152 | 211 echo "<h3>$(gettext "System memory")</h3>" |
pankso@152 | 212 echo '<pre>' |
pascal@219 | 213 free -m | sed \ |
pankso@152 | 214 -e s"#total.*\([^']\)#<span class='top'>\0</span>#"g \ |
pankso@152 | 215 -e s"#^[A-Z-].*:\([^']\)#<span class='sh-comment'>\0</span>#"g |
pankso@152 | 216 echo '</pre>' |
pankso@46 | 217 echo '<h3>lspci</h3>' |
pankso@46 | 218 echo '<pre>' |
pascal@155 | 219 lspci -k | sed \ |
pascal@155 | 220 -e s"#^[0-9].*\([^']\)#<span class='diff-at'>\0</span>#" \ |
pascal@155 | 221 -e s"#use: \(.*\)#use: <span class='diff-rm'>\1</span>#" |
pascal@61 | 222 echo '</pre>' |
pascal@61 | 223 echo '<h3>lsusb</h3>' |
pascal@61 | 224 echo '<pre>' |
pascal@61 | 225 lsusb |
pankso@46 | 226 echo '</pre>' |
pankso@46 | 227 ;; |
pankso@46 | 228 esac |
pankso@46 | 229 |
pankso@46 | 230 xhtml_footer |
pankso@46 | 231 exit 0 |