Desktop Command Execution Widget scripts

(Internal (LAN) IP)
Line 59: Line 59:
  /sbin/ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
  /sbin/ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
 +
 +
This one displays only wlan0 (LAN) IP (this is the one used for SSH, WinSCP, VNC...)
 +
 +
/sbin/ifconfig | grep wl -A 2 | grep ine | awk -F: '{print $2}' | awk '{print $1}'
====Rootfs (percentage)====
====Rootfs (percentage)====

Revision as of 20:31, 15 March 2010

Desktop Command Execution widget is one of the most useful widgets on your Maemo desktop. It can be used to show certain information (for example battery level in percentage) or as a button which can be used for example to disconnect active internet connection (you need to tap 3 times and also wait for menus to appear without this widget). Therefore it can replace many other applications/widgets/applets and you can also make something new. Here you'll find a collection of scripts that can be added to the widget. The discussion about the widget is on the forum.


Contents

Making your own scripts

When there's no output (for example if you're using widget as a button and you use dbus call), the widget displays "Invalid Command". This can be most easily avoided if you pipe echo "" at the end of the command. Example:

dbus-send -options -moreoptions | echo ""

This also works:

dbus-send -options -moreoptions; echo ""

...but the piping is preferred for buttons as it doesn't display ANY output (some dbus calls work only with reply). All of the dbus commands should be working in the same way. Collection of these can be found on Phone control wiki page. The basic principle is the same as above (dbus command and piping an echo).

Scripts

To display information

Uptime

uptime|cut -d" " -f4-|sed 's/\\, *load.*//'

Battery level percentage

hal-device bme | awk -F"[. ]" '$5 == "is_charging" {chrg = $7}; $5 == "percentage" {perc = $7} END if (chrg == "false") {print perc " %"} else {print "Chrg"}'

This one is slightly modified as the default one. The percentage sign (%) is added so the widget doesn't have an ugly name like Battery(%) or it doesn't have to have a name at all and you still know what is it about.

Here is a more simple one showing only percentage, not also "Chrg" when charging.

hal-device bme | grep perc | awk '{print $3" %"}'

Battery level in mAh

hal-device bme | grep battery.reporting | awk -F. '{print $3}' | sort | awk '$1 == "current" { current = $3}; $1== "last_full" {print current "/" $3 " mAh"}'

This one is slightly modified as the default one. The unit (mAh) is added so the widget doesn't have an ugly name like Battery(mAh) or it doesn't have to have a name at all and you still know what is it about. The second value (design charge) is also changed to last full charge. This is important because you can also monitor battery wear level with that. So the values in this script are "current charge"/"last full charge" mAh.

Boot reason

cat /proc/bootreason

Boot count

cat /var/lib/dsme/boot_count

External (WAN) IP

WAN IP only:

wget -q -O - api.myiptest.com | awk -F"\"" '{print $4}'

WAN IP, ISP and country code:

wget -q -O - api.myiptest.com | awk -F"\"" '{print $4 " ("$12" "toupper($28)")"}'

Internal (LAN) IP

/sbin/ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

This one displays only wlan0 (LAN) IP (this is the one used for SSH, WinSCP, VNC...)

/sbin/ifconfig | grep wl -A 2 | grep ine | awk -F: '{print $2}' | awk '{print $1}'

Rootfs (percentage)

df | awk '$1 == "rootfs" {print $5}'

Rootfs (free)

df -h | awk ' $1 == "rootfs" {print $4"B"}'

Buttons

Make sure that update policy for button widgets is set only to "update when clicked". "Update when switched to desktop", "update interval" and "network presence" should be disabled to avoid automatic actions. Also keep in mind that widgets are executed at every boot so they can for example automatically disable Wi-Fi when phone boots.

Connect internet (show connections)

dbus-send --system --type=method_call --dest=com.nokia.icd_ui /com/nokia/icd_ui com.nokia.icd_ui.show_conn_dlg boolean:false | echo ""

Disconnect internet

dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true | echo ""

Enable/disable Wi-Fi

rootsh /path/to/script/enable-disable_wi-fi.sh | echo ""

enable-disable_wi-fi.sh:

#!/bin/sh
out=`ifconfig wlan0`
if [ $? -eq "0" ] ; then
if [ `echo "$out" | grep -c RUNNING` -gt "0" ] ; then
run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true
fi
ifconfig wlan0 down
rmmod wl12xx
run-standalone.sh dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:'Wi-Fi disabled'
exit 2
else
modprobe wl12xx
wl1251-cal
stop wlancond
start wlancond
ifconfig wlan0 up
run-standalone.sh dbus-send --system --type=method_call --dest=com.nokia.icd_ui /com/nokia/icd_ui com.nokia.icd_ui.show_conn_dlg boolean:false
exit 0
fi

Don't forget to make it executable.

Increase FM transmitter power

rootsh echo 118 > /sys/class/i2c-adapter/i2c-2/2-0063/power_level | echo ""

Lock screen and keys

dbus-send --system --type=method_call --dest=com.nokia.mce /com/nokia/mce/request com.nokia.mce.request.req_tklock_mode_change string:locked | echo ""

Reboot

rootsh reboot | echo ""

Switch radio mode to 2G

dbus-send --system --type=method_call --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.set_selected_radio_access_technology byte:1 | echo ""

Switch radio mode to 3G

dbus-send --system --type=method_call --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.set_selected_radio_access_technology byte:2 | echo ""

Switch radio mode to Dual

dbus-send --system --type=method_call --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.set_selected_radio_access_technology byte:0 | echo ""