Archive for the ‘Linux’ Category.

Tastaturlayout unter Ubuntu für die Konsole anpassen

Irgendwie greift da Tastaturlayout nicht immer, Rekonfiguration unter Ubuntu mit

sudo dpkg-reconfigure keyboard-configuration

Debugging Ncurses applications with QT Creator

Today I stumbled over the problems while toying around with a small C project using the Ncurses library.

I recently discovered QT Creator as a decent IDE so I started to use it.

Problem 1 with running the application at all

The program builds fine and runs with ncurses if run in a seperate terminal window.
Upon run from within QT-Creator with checkmark “run in terminal” I got this error message: “Error opening terminal: unknown

After quite some googling I found the solution as the environment passed to my application in this way does not define the TERM environment variable.

So I added the definition “TERM=xterm” to the list of passed environment variables. Now the Ncurses application runs in its own terminal window.

Problem 2 with debugging the application

Naturally I do not only want to run my application, I also want to debug it using gdb. QT creator handles this normally fine so I click on “Debug.”
I see the extra terminal window opening but I get a small notice “ptrace: Operation not permitted” and all collapses.

Some more googling and I discover that Ubuntu  10.04 and later deactivate the option to attach gdb to running processes. This is something QT Creator seems to try here when running the application inside the terminal window.
I simply used the directions found here at AskUbuntu and now it works. I have the application ruuning in a seperate terminal window and I can trace, singlestep and debug it with the gdb frontend from QT Creator.

What a mess!

But it only affects debugging Ncurses and maybe S-lang projects. Normal terminal output is fine and so should be SDL based stuff aswell. It is dirty and slight hacky, but all in all it is working.

Ebookkonvertierung mit Thunar

Mein Kindle unterstützt Ebooks im MOBI Format, aber leider nicht das stärker verbreitete Epubformat. Heute wollte ich ein paar EBooks mit .epub nach .mobi konvertieren und das natürlich gleich komfortabel per Mausklick erledigen.
Die Konvertierung selbst wird von Calibre und seinen Werkzeugen durchgeführt.

Für die Integration in XFCE und Thunar habe ich mir einfach eine “Benutzerdefinierte Aktion” alias Custom Action in Thunar definiert und Dateien mit Endung .epub zugeordnet. Da das Konvertierungstool Ausgaben erzeugt, wird diese in einem eigenen Terminalfenster angezeigt, welches man nach erledigter Konvertierung einfach schliessen kann. Dazu habe ich ein einfaches Shellskript geschrieben, dem man den Dateinamen samt Pfad zum *.epub übergibt. Die konvertierte Ausgabedatei bekommt automatisch die Endung .mobi zugeteilt.

Das Skript wird von der Custom Action mit Parameter %f aufgerufen und sieht so aus:


#!/bin/bash
#
# Thunar helper to convert *.epub to *.mobi with Calibre
#
# Syntax: thunar-convert-epub-to-mobi.sh
#
# (c) 2016 by Matthias Arndt
# The GNU General Public License v2 applies.
#
# extract pathname and filename without extension
basename=$(basename "${1}")
filename="${basename%.*}"
#
xfce4-terminal -T "MOBI Conversion result" -H -x ebook-convert "${1}" "${filename}.mobi"

Backup der Filtereinstellungen von Claws Mail

Ich bin vor ein paar Wochen auf Claws Mail umgestiegen, da mich Thunderbird mit Plugins und Erweiterungen anfing, zu nerven, welche nicht mehr funktionieren.

Leider kann man die Mailfilter bei Claws Mail nicht einfach im- und exportieren, daher ist es nervig, wenn mühsam konfigurierte Filter für Spam und wichtige Mails verloren gehen. Wo also liegen die Einstellungen?

Ich habe mal ein bißchen mit find und grep gesucht, und siehe da, unter $HOME/.claws-mail/matcherrc findet sich alles, was man sucht. Die Emailaccountbezüge sind dort leider recht hart reincodiert. Wenn man bei einer Neuinstallation andere Namen verwendet, dann muß man hier möglicherweise umkonfigurieren. Aber das ist besser, als alle Regeln von Hand wieder erneut erstellen zu müssen.

Kombination find und xargs

Das folgende Konstrukt funktioniert mit den GNU Versionen von xargs, mv und find, so wie es die meisten Linuxdistributionen mitbringen.

Manchmal hat man über mehrere Verzeichnisse verteilt gleichartige Dateien, die man in einen gemeinsamen Ordner bringen möchte. Händisch geht das natürlich, das kann aber auch unübersichtlich werden. Eine geschickte Verkettung von  vorhandenen Kommandos erleichtert dem Anwender dabei das Leben.

find . -name "*.mobi" -print0 | xargs -r0 mv -t ~/tmp/

Das find-Kommando sucht die Dateien mit dem genannten Muster ab dem aktuellen Verzeichnis.

Das xargs-Kommando führt dann für jede gefundene Datei den mv-Befehl aus. Hier wird über die -t Option ein GNU-spezifisches Feature aktiviert, bei dem immer zuserst das Zielverzeichnis angegeben wird. Die zusätzlichen Optionen bei find und xargs  sorgen für korrektes Quoting der Dateinamen, wenn Leer- und Sonderzeichen enthalten sind.

Ein praktisches Beispiel sähe wie folgt aus:

Find ergibt folgendes Resultat:

./a/a.mobi
./b/b.mobi

xargs führt folgende Kommandozeilen aus:

mv -t ~/tmp/ ./a/a.mobi
mv -t ~/tmp/ ./b/b.mobi

ClamAV in Thunar einbinden

Ab und an möchte man auch unter Linux Dateien nach Viren scannen. Da ich meistens doch über graphische Oberflächen arbeite, habe ich mir ClamAV im Thunar unter XFCE eingebunden. Dies geschieht als “Custom Action” aktiv für alle Dateien.

Ich habe mich grob an die Anleitung unter http://blog.quiptime.com/node/28 gehalten. Das Skript habe ich ein bißchen erweitert und für die Verwendung von zenity umgebaut.

Das Skript sieht dann bei mir so aus:

#!/bin/bash
#!/bin/bash # # clamavscan 0.1, 05.10.2006 # # by Siegfried Neumann, www.quiptime.com # Zenity output and desktop notify by Matthias Arndt <marndt@asmsoftware.de> # # Used by Thunar with a custom action. # Custom action: clamavscan %f # TITLE="ClamAV Scan" SCANUSER=`whoami` LOGDATE=`date +"%Y-%m-%d %T"` LOGDATE_FNAME=`date +"%Y%m%d.%H%M%S"` LOGFILE="/tmp/clamavscan-$SCANUSER-$LOGDATE_FNAME.log" notify-send 'ClamAV Scan' "started" echo "ClamAV Scan Log $LOGDATE " > $LOGFILE echo "" >> $LOGFILE echo "Report location: $LOGFILE" >> $LOGFILE echo "" >> $LOGFILE echo "--------------------------------------------------------------------------" >> $LOGFILE echo "" >> $LOGFILE chmod 600 $LOGFILE clamscan -r "$1" >> $LOGFILE if [ $? -eq 0 ] then notify-send 'ClamAV Scan' "No virus found" else zenity --title "$TITLE $LOGDATE" --error --text="One or more virii found!" fi zenity --title "$TITLE $LOGDATE" --text-info --width 500 --height 400 --filename=$LOGFILE case $? in 0) echo "Finished.";; 1) xdg-open $LOGFILE;; 255) echo "Box closed.";; esac

Tips und Tricks mit der GNU/Linux Kommandozeile

Ich brauche ab und unter Linux auf der bash Kommandozeilentools. Für viele Zwecke vergesse ich auch wieder, was ich für eine bestimmte Aufgabe genau gemacht habe. Daher habe ich jetzt eine öffentliche Merkliste angelegt.

Falls jemand sinnvolle Ergänzungen hat, einfach bei mir melden.

Classic hexdump of files with the GNU Coreutils

Sometimes I’m in need of having a classic hexdump from a given binary file.
As there is no obvious command under Linux, all seem to require more or less long command line options to work, I have to note down the standard solution using the od tool provided by the GNU Coreutils.

od -w16 -A x -t x1z -v <filename>

This gives an output like this:
000000 00 00 00 05 00 00 aa 00 00 bb 00 00 cc 00 00 00  >................<
000010 00 00 ee ee dd ff 00 00 44 00 00 44 84 cd ab fe  >........D..D....<
000020

I did not find out how to remove the final address without having to use grep or sed.

The tool has a manual page and I recommend having a simple alias in your .bashrc like this:

alias dump='od -w16 -A x -t x1z -v'

United Internet schaltet XMPP/Jabber Server ab – ein Kommentar

Bei Heise gab es vor ein paar Tagen die Information, daß 1&1 und alle über die Firma United Internet verwandten Firmen, z.B. web.de und GMX, zum 1.Dezember 2014 ihre Jabberserver abschalten werden.

Mehr dazu bei heise:
http://www.heise.de/newsticker/meldung/MultiMessenger-United-Internet-schaltet-XMPP-Jabber-Server-ab-2455588.html

Das XMPP Protokoll hat durchaus Vorteile gegenüber Skype oder ICQ, ich selber nutze Jabber und damit XMPP seit gut 10 Jahren. Bislang konnte man so jeden GMX oder web.de Nutzer zum jabbern bringen, da es einfach funktioniert, die Emailadresse war gleich der Jabber ID.

Und nun fällt das weg, nachdem Google das auch schon getan hat. Für mich persönlich heisst das, mein Jabberroster ist wieder auf 4-5 aktive Nutzer geschrumpft. Schade eigentlich!

Aber am Ende denke ich darüber nach und faktisch ersetzen Facebook  und andere Soziale Netzwerke immer mehr die klassischen Instant Messenger. Rein persönlich betrachtet läuft 80% des Chats bei mir mittlerweile über Facebook, nicht unbedingt weil es toll ist, sondern es hat einfach jeder und funktioniert ohne Probleme. ICQ vorallem ist bei mir zwar aktiv, aber zum Chatten nutze ich es einfach nicht mehr. Über die Zeit hat sich die Dienstelandschaft verändert und ich sehe darin jetzt auch kein Problem.

Aus rein finanziellen Erwägungen trifft United Internet eine logische Konsequenz, wenn sie einen wenig genutzten Dienst jetzt abschalten.
Das Protokoll XMPP bleibt weiterhin bestehen, Facebook selbst verwendet es auch, leider nicht Serverübergreifend, aber besser, als etwas proprietäres.

Persönliche Konsequenz: je nach Aluhuttragebedürfnis, bevorzuge ich IM über Facebook oder Skype. Wer mich nur über ICQ in der Liste hat und behalten will, darf gerne wechseln. Reines Jabber werde ich wohl nicht mehr so religös vertreten, wie vor 8-9 Jahren noch.

Auf Wiedersehen, klassisches Instant Messaging, es waren schöne 16 Jahre mit Dir, aber Facebook und Co haben gewonnen!

Emblemauswahl für XFCE erweitern

erweiterte_Embleme

Da man unter XFCE keine individuellen Ordnericons vergeben kann, muss man auf die sogenannten Embleme ausweichen, eine Art Miniicon, welches zusätzlich zum vorhandenen Icon angezeigt wird.

Leider gibt es keinen einfachen Weg, selber Embleme über das GUI hinzuzufügen, aber mit folgendem Weg ist es von Hand möglich:

  1. Neue Embleme im Ordner des Iconthemas ablegen (ich empfehle .svg Dateien unter symbolic abzulegen):
    /usr/share/icons/elementary-xfce/emblems/symbolic
  2. Den Cache für das Thema per Kommandozeile auffrischen:
    sudo gtk-update-icon-cache /usr/share/icons/elementary-xfce
  3. In der Oberfläche das Iconset erst zu einem anderen Set wechseln, dann wieder zurück zum gewünschten.
  4. Danach stehen  die neuen Embleme in der Auswahl zur Verfügung und können normal verwendet, d.h. zugewiesen,  werden.