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 &amp; 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&nbsp;$rempct%&nbsp;-&nbsp;$(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&nbsp;$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&nbsp;-&nbsp;$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