Einige meiner WeTab Skripte…

Hi,

da ich ja mein WeTab wieder hergegeben habe, will ich einige der zusammengeschriebenen/zusammengesuchten/selbst erstellten Skripte nicht vorenthalten:

1. Rotation in den Hochkant-Modus mit korrekter Touch Ausrichtung (Multitouch)

#!/bin/bash

# Prueft ob $HOME/.left existiert
# wenn ja -> rechts drehung
# wenn nein -> links drehung

FILE=$HOME/.left

if [ -f "$FILE" ];
then
	rm -f $FILE;
	xrandr -o normal;
	xinput set-int-prop 9 "Evdev Axes Swap" 8 0;
	xinput set-int-prop 9 "Evdev Axis Calibration" 32 0 32760 0 32760;
	xinput set-int-prop 10 "Evdev Axes Swap" 8 0;
	xinput set-int-prop 10 "Evdev Axis Calibration" 32 0 32760 0 32760;
else
	touch $FILE;
	xrandr -o left;
	xinput set-int-prop 9 "Evdev Axes Swap" 8 1;
	xinput set-int-prop 9 "Evdev Axis Calibration" 32 32760 0 0 32760;
	xinput set-int-prop 10 "Evdev Axes Swap" 8 1;
	xinput set-int-prop 10 "Evdev Axis Calibration" 32 32760 0 0 32760;
fi

exit 0

Das konnte man sich in Gnome auf den Sensorbutton legen und damit dann in den Hochkant-Modus wechseln.
Quelle dafür war The WeTab Blog hier. (Dort findet sich auch die Herkunft der Zahlen, damit sind dann auch andere Drehungen möglich!) Unter Natty hat sich wohl was geändert, das findet sich hier.

Benutzung: ./rotate.sh (vllt. als root, weiß ich grad nicht). -> wechselt zwischen hochkant und quermodus.

2. SwitchWirelessTAB.sh – damit konnte man (soweit es eben ging ohne das closed source pegaap Kernel Modul) BT/WLAN/UTMS/GPS an/aus schalten. Viele der Features sind aus der tiitoo-3g-functions.sh(gibt es hier) abgeschaut. Benötigt wird dafür rfkill sowie notify-send und gpsd.

#!/bin/bash

##########Exec######################
if lsusb | grep '19d2:0031 ONDA Communication' > /dev/null ;
then
	dev=/dev/ttyUSB2
elif lsusb | grep '19d2:0063 ONDA Communication' > /dev/null ;
then
	dev=/dev/ttyUSB3
elif lsusb | grep '12d1:1003 Huawei Technologies' > /dev/null ;
then
	dev=/dev/ttyUSB1
elif lsusb | grep '12d1:140c Huawei Technologies' > /dev/null ;
then
	dev=/dev/ttyUSB3
else
	dev=/dev/ttyUSB4
fi

is_modem_HuaweiEM770W() {
	lsusb | grep "12d1:1404" &> /dev/null
	return $?
}

exec_at_command() {
	chat -e ABORT OK ABORT ERROR '' ATE0 OK  < $dev 2> /dev/null > $dev
	output=$(chat -e ABORT OK ABORT ERROR '' "AT$1" OK < $dev 2>&1 > $dev)
	if echo $output | grep ERROR &> /dev/null ; then
		echo $output
		return 1
	else
		new_output=""
		# ignore unnecessary and unmotivated output from modem
		for word in $output; do
			word_out=1
			for ignored_word in OK POSITION; do
				if echo $word | grep $ignored_word &> /dev/null; then
					word_out=0
					break
				fi
			done
			if [ $word_out -eq 1 ]; then
				new_output="$new_output $word"
			fi
		done
	       echo $new_output
	fi
}

##########UMTS Funktionen##############
get_rf_switch_state() {
	local out=$(exec_at_command "\^RFSWITCH?")
	if [ "$out" == "^RFSWITCH:1,1" ]; then
		return 1;
	else
		return 0;
	fi
}

set_rf_switch_state() {
	local out=$(exec_at_command "\^RFSWITCH=$1")
}

##########GPS Funktionen#################

enable_gps() {
	AGPS_SUPL="http://supl.nokia.com"
	if [ -f /etc/sysconfig/agps ]; then
		. /etc/sysconfig/agps
	fi
	out=$(exec_at_command "\^WPURL=$AGPS_SUPL")
	if [ $? -ne 0 ]; then
		break
	fi
	# configure AGPS to work speed optimal
	out=$(exec_at_command "\^WPDOM=2")
	if [ $? -ne 0 ]; then
		break
	fi

	out=$(exec_at_command "\^WPDGP")
}

disable_gps() {
	local out=$(exec_at_command "\^WPEND")
}

#####################################

wifi=$(rfkill list | grep "Wireless LAN" -A 1 | grep Soft | tr -d "[:blank:]");
bt=$(rfkill list | grep Bluetooth -A 1 | grep Soft | tr -d "[:blank:]");
get_rf_switch_state;
wwan=$?

if [ "$1" == "wlan" ];
then
	name="WIFI";
	if [ "$wifi" == "Softblocked:no" ];
	then
		rfkill block wifi;
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde deaktiviert.";
	elif  [ "$wifi" == "Softblocked:yes" ];
	then
		rfkill unblock wifi;
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde aktiviert.";
	else
		sudo -u user notify-send -t 1 "Switch Wireless" "$name: Fehler beim Umschalten.";
	fi;
elif [ "$1" == "wwan" ];
then
	name="WWAN";
	if [ $wwan -eq 0 ];
	then
		set_rf_switch_state 1
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde aktiviert.";
	else
		set_rf_switch_state 0
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde deaktiviert.";
	fi;
elif [ "$1" == "wwand" ];
then
	set_rf_switch_state 0
elif [ "$1" == "gpsa" ];
then
	name="GPS";
	enable_gps
	sleep 5
	gpsd -n -b /dev/ttyUSB3
	sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde aktiviert.";
elif [ "$1" == "gpsd" ];
then
	name="GPS";
	killall gpsd
	disable_gps
	sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde deaktiviert.";
elif [ "$1" == "gpsdd" ];
then
	disable_gps
elif [ "$1" == "bt" ];
then
	name="BT";
	if [ "$bt" == "Softblocked:no" ];
	then
		rfkill block bluetooth;
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde deaktiviert.";
	elif  [ "$bt" == "Softblocked:yes" ];
	then
		rfkill unblock bluetooth;
		sudo -u user notify-send -t 1 "Switch Wireless" "$name wurde aktiviert.";
	else
		sudo -u user notify-send -t 1 "Switch Wireless" "$name: Fehler beim Umschalten.";
	fi;
else
	if [ $wwan -eq 1 ] && [ "$wifi" == "Softblocked:yes" ] ;
	then
		set_rf_switch_state 0
		rfkill unblock wifi;
		sudo -u user notify-send -t 1 "Switch Wireless" "WWAN wurde deaktiviert. WIFI wurde aktiviert.";
	elif [ $wwan -eq 0 ] && [ "$wifi" == "Softblocked:no" ] ;
	then
		set_rf_switch_state 1
		rfkill block wifi;
		sudo -u user notify-send -t 1 "Switch Wireless" "WWAN wurde aktiviert. WIFI wurde deaktiviert.";
	elif [ $wwan -eq 0 ] && [ "$wifi" == "Softblocked:yes" ] ;
	then
		rfkill unblock wifi;
		sudo -u user notify-send -t 1 "Switch Wireless" "WWAN bleibt deaktiviert. WIFI wurde aktiviert.";
	elif [ $wwan -eq 1 ] && [ "$wifi" == "Softblocked:no" ] ;
	then
		set_rf_switch_state 0
		sudo -u user notify-send -t 1 "Switch Wireless" "WWAN wurde deaktiviert. WIFI bleibt aktiviert.";

	else
		sudo -u user notify-send -t 1 "Switch Wireless" "WWAN/WIFI: Fehler beim Umschalten.";
	fi;
fi;

Man muss es als root aufrufen und vorher user durch den “normalen” Nutzernamen ersetzen in den notify-send Zeilen.
(sonst kommen die Notfiys manchmal nicht irgendwie, wenn sie als root geschickt werden.)
Anwendung: (es kommt immer eine Notification via Notify-Send, wenn nicht explizit anders angegeben)
sudo ./SwitchWireless.sh -> Wechsel zwischen Wlan/UMTS, wenn beiden an bzw. aus sind. schaltet es Wlan ein und Umts aus.
sudo ./SwitchWireless.sh wwan -> Schaltet UMTS an bzw. aus im Wechsel.
sudo ./SwitchWireless.sh wwand -> Schaltet UMTS aus ohne Meldung. (für boot eintrag in /etc/rc.local)
sudo ./SwitchWireless.sh wlan -> Schaltet Wlan an bzw. aus im Wechsel.
sudo ./SwitchWireless.sh gpsa -> aktiviert GPS und startet gpsd.
sudo ./SwitchWireless.sh gpsd -> deaktiviert GPS und killt gpsd.
sudo ./SwitchWireless.sh gpsdd -> deaktiviert GPS ohne Meldung. (für boot eintrag in /etc/rc.local)
sudo ./SwitchWireless.sh bt -> Schaltet Bluetooth im Wechsel an/aus

Man sollte beim Skript natürlich als Owner root setzen und die Bearbeitungsrechte für alle anderen User entziehen. Danach kann es ab in die Sudoers Datei und man braucht kein Passwort mehr dafür eingeben -> Icon auf dem Desktop für die verschiedenen Schalter erzeugen (als Tipp!) ;)

Bei Gnome 3 sollte man

sudo -u  notify-send -t 1 ...

durch

sudo -u  notify-send --hint=int:transient:1 -t 1 ...

ersetzen, damit die Notifications von selbst verschwinden.
Ich hoffe es sind keine großen Schnitzer drin, das ist nämlich nicht die aktuellste Version – ich hab die neuere nur nicht mehr.

Vllt. kann ja jemand etwas damit anfangen ;)

Sorry für die teilweise beschissene Einrückung, das liegt an dem Quelltext-Anzeig-Plugin. (“Syntax Highlighter and Code Prettifier Plugin for WordPress”)… EDIT: Jetzt passt es :)

Comments (0)

› No comments yet.

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pingbacks (0)

› No pingbacks yet.