Archives for posts with tag: Linux

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)

Ne ganze Weile hab‘ ich rumgesucht, welche Software sich wohl für Videoschnitt eignet. Hauptaugenmerk: Kost’nix, nonlinear, einfach. Außerdem sollte sie unter Linux und Windows laufen. Nach ein paar eher quälenden Versuchen mit Cinelerra (instabil und Exportprobleme) und einer kurzen Folter mit Blender hab ich Windows aus der Wunschliste geschmissen (Sorry Spatz). So hab ich was schönes für Linux gefunden: Openshot.Logo OpenShot Video Editor
Per Drag’n’drop füllt sich die Clipliste, dann kann man schon anfangen, alles in die Tracks runterzuzerren.Openshot

Blenden für Anfang und Ende eines Clips finden sich im Kontextmenü der Tracks, komplexere Übergänge oben hinter der Clipliste. Klasse!Openshot ÜbergängeTitel und Credits bastelt man einfach mit Inkscape – Text nicht vergessen in ein Objekt zu wandeln! – und zieht sie ebenfalls in die Clipliste. Oder erstellt sie einfach direkt von der Clipliste aus neu. Wenn man auf kompliziert animiertes 3D-gefutzel steht, sollte man Blender noch installiert haben, dann wird’s wahrscheinlich „woah“. Will ich aber nicht – ’nen Badevideo ist schon durch Alina „woah“ genug ;)

Videoexport ist auch easy: Eine lange Liste voreingestellter Formate mit Seitenverhältnissen, Bildwiederholrate und Auflösung vereinfachen das zu einigen wenigen Klicks. Codec wählen & fert’sch ist das neueste Kindervideo für die Oma ganz weit weg. Krass!

Danke an Jonathan Thomas, war mir ’ne kleine Spende wert.

Wunsch: Macht mal noch was fürs Audio-Pegeln rein, dass man Musik runterpegeln und drüberquatschen kann.

(swg)

PS: Das Kindervideo gibt’s natürlich nicht öffentlich, wo kommen wir denn da hin?! Ich lass Euch ja nicht mal zugucken, wenn ich in der Wanne bade!

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)

PHP Code Snippets Powered By : XYZScripts.com