Archives for posts with tag: Script

QR-Codes aus Bildern lesen und den Text anzeigen.

Unter Linux gibt es nicht so viele Möglichkeiten, QR-Codes auszuwerten. Eine Möglichkeit auf der Kommandozeile ist ZBar, leider hat es keine GUI. Was ich will soll per Rechtsklick aus meinem Dateimanager funktionieren und mir anschließend in einem Dialog anzeigen, ob und was zbar gefunden hat.

Endlich mal wieder ein Bash-Script… Ein paar Dinge sind Voraussetzung: Als erstes braucht es ZBar zum Auslesen der QR-Codes. Mit Zenity kann man grafische Dialoge in einem Bash-Script anzeigen. Mehr ist nicht nötig.

Es kann dem Script als Parameter ein oder mehrere Bilder übergeben werden. Eine while-Schleife liest & entfernt die Übergabe-Parameter solange, bis keine mehr da sind. Sollte der ermittelte Code mit http:// beginnen, wird er als Webadresse interpretiert: Der dann folgende Dialog bietet an, ihn im Webbrowser zu öffnen.
#!/bin/bash
# swg, 25.8.2013
#
# Verwendet ZBarImg zum Lesen von QR-Codes aus Bildern.
# der ermittelte Text wird in einem Zenity-Dialog angezeigt, mit einer passenden
# Option zur Verwendung (Webadresse-> im Standard-Browser öffnen
#
# erwartet als Parameter wenigstens eine Bilddatei!
#
if [ ! $# -gt 0 ]; then
echo „Usage: zbarimggtk.sh IMG1.jpg [img2.jpg …]“;
exit;
fi;
while [ $# -gt 0 ] # Solange Parameter da sind…
do
IMG=$1;
if [[ -f $IMG ]]; then # ist der Parameter eine reguläre Datei?
CODE=$(zbarimg -Dq $IMG | sed -e „s/QR-Code://“); # vom zbarimg-Rückgabewert
# „QR-Code:“ vorn abschneiden
if [[ -z $CODE ]]; then
zenity –error –text „Kein QR-Code im Bild $IMG gefunden!“ &
else
if [ $(echo „$CODE“ | grep „http://“) ]; then # wenn Code mit „http://“ beginnt,
# ist es eine Webadresse
zenity –forms –title=“Webdresse in $IMG gefunden“ \
–separator=“,“ \
–text=“Webadresse $CODE öffnen?“;
case $? in
0)
x-www-browser $CODE; # Webadresse im X-Standard-Browser öffnen
;;
1)
# User-Cancel!
;;
-1)
zenity –error –text=“Ein unerwarteter Fehler ist aufgetreten.“;
;;
esac
else # bei einfachem Text nur einen Info-Dialog anzeigen
# (Text ist markier- und kopierbar)
zenity –info –title=“Text gefunden:“ –text=“$CODE“ &
fi;
fi;
else
zenity –error –text=“Bild $IMG nicht gefunden!“ &
fi;
shift; # Vordersten Übergabe-Parameter des Scripts löschen
done

Ich verwende es im Rox-Filer und in Geeqie jeweils im Kontextmenü – ein Rechtsklick aufs Bild und das Script als ausführendes Programm gewählt und ich weiß, was mir der fotografierte QR-Code sagen will…

Hier noch das fertige Script:
Symbol Shellscript zbarimggtk.sh

(swg)

Mein Rechner steht im Wohnzimmer und ist damit nicht allein mein persönliches Arbeitsgerät. Er ist Video- & Audio-Player, Messenger, Surfstation uvm. für uns. Ansich ist das kein Problem, was aber nervt ist beispielsweise die Umschalterei am Messenger: Wir haben beide Accounts für XMPP, ICQ und noch ein paar anderen. Pidgin kann das alles. Trotzdem ist es umständlich, jedesmal in die Kontenverwaltung zu seppeln und die jeweiligen Konten zu aktivieren bzw. zu deaktivieren. Einfach den Desktop zwischen Benutzern umzuschalten wär auch möglich, aber nicht minder unkomfortabel, will der andere an sein Zeug.

Je eine separate Instanz Pidgin im Benutzerkontext wär super, mit einem Klick wär das entsprechende Pidgin an oder aus. Die Werkzeuge dafür heißen sudo und xhost.

Als erstes muss /etc/sudoers editiert werden. Der eingeloggte User muss das Ausführen von Pidgin im Kontext des anderen erlaubt bekommen.

swg localhost=(Maria)NOPASSWD:/usr/bin/pidgin

Heißt soviel wie: „Der Nutzer swg darf auf localhost im Kontext von Maria ohne das Passwort eingeben zu müssen das Programm /usr/bin/pidgin ausführen!“.

Eine zweite Hürde besteht jetzt darin, dass der eingeloggte Nutzer seine X-Session exklusiv nutzen darf. Das dient schlicht der Sicherheit. Wär‘ ja doof, wenn jeder von extern eingeloggte da rumkritzeln oder – schlimmer – mitlesen dürfte.

In meinem Fall heißt das, aus dem Kontext Maria muss auf meine X-Session zugegriffen werden dürfen. Die schlichteste Variante ist xhost:

xhost localhost:Maria

Heißt: Nutzer Maria darf vom localhost aus auf meine X-Session. Generell sollte man mit sowas vorsichtig sein, in dem Fall halte ich das aber für unproblematisch. Maria darf sich eh nur lokal anmelden und auch sonst vertrau ich ihr soweit, dass sie hier nix mutwillig zerbröselt ;)

Also: Mit xhost Maria den Zugriff auf mein X erlauben und dann Pidgin mit sudo in ihrem Kontext aufrufen. Die zwei Zeilen hab ich in ein Bash-Script gesteckt

#!/bin/bash
xhost local:Maria;
sudo -u Maria /usr/bin/pidgin;

und auf meinem Desktop verlinkt.MenüFertsch. Sowas geht natürlich auch mit anderen Programmen – Email, Browser, wasweißich. Viel Spaß.

(swg)

Bildschirm auf Knopfdruck drehen

Unter X gibt es die Möglichkeit, den Bildschirminhalt in beliebiger Richtung lesbar darzustellen. Besitzt man einen Bildschirm mit Pivot-Funktion hat das auch Sinn: Die meisten Webseiten sind heute eher hoch als breit, den Bildschirm hochkannt zu drehen macht sie viel leichter lesbar – auf 24“ in 16:10 erst recht.

Damit man den Bilschirminhalt drehen kann, muss im X-Server die RandR-Erweiterung eingeschaltet sein. In der xorg.conf muss dazu in der Device-Section für Grafikkarte eine Zeile eingefügt werden:
Section „Device“
Identifier „nVidia Corporation G72 [Geforce 7500 LE]“
Driver „nvidia“
BusID „PCI:1:0:0“
Option „RandRRotation“
EndSection

(X muss neu gestartet werden: ausloggen, [Strg]+[Alt]+[Backspace]*2, einloggen)

Das Drehen des Bildschirminhalts besorgt ein kleines Commandline-Programm: xrandr. Meistens können pivot-fähige Bildschirme nur um 90° gedreht werden, in meinem Fall nach rechts, der Inhalt muss also nach links gedreht werden. Der Aufruf lautet xrandr -o left, zurück geht’s mit xrandr -o normal.

Nun soll das Drehen ein Klick auf ein Icon besorgen können, zurück soll es mit einem weiteren Klick gehen, das Script muss dazu den aktuellen Zustand des Bildschirms erkennen: Mit xrandr -q wird unter anderm die Drehrichtung ausgegeben. Wenn wir die Zeile, dass der Schirm nach links gedreht ist, nicht finden, muss er normal stehen -> es soll nach links gedreht werden. Das ganze Script sieht folgender Maßen aus:
#!/bin/bash
ROTSTATE=$(xrandr -q | grep „Current rotation – left“);
if [ -z „$ROTSTATE“ ]; then
xrandr -o left;
else
xrandr -o normal;
fi

Das Script wird mit einem Symbol in einer beliebigen Leiste auf dem Desktop verknüpft.

Hier noch das fertige Script:
Symbol Shellscript rotate.sh

(swg)

Neue TUD-Webserver – neue slubmagic-Version

Fast pünktlich zum neuen Semester habe ich die neue Version von slubmagic fertig. Zugegebener Maßen habe ich es über den Sommer vernachlässigt, wage mich hier aber damit aus der Affäre zu ziehen, dass die SLUB und auch die TUD ihre Rechentechnik grundlegend überholt haben.

slubmagics Benachrichtigung über fällige Bücher funktioniert wieder, auch offene Gebühren werden angezeigt.
Nicht funktionieren die Autoverlängerung, die Systemmeldungen und die Benachrichtigung über bereit liegende Vorbestellungen. Bis das wieder klappt brauche ich die Webseiten von SLUB-Benutzern, die solche Daten enthalten. Vorher kann ich meinen Parser nicht anpassen. Freiwillige vor: einfach ein Email senden und die Benutzerseite anhängen.

Link: slubmagic & Installationsanleitung

(swg)

PHP Code Snippets Powered By : XYZScripts.com