In Ubuntu mittlere Maustaste emulieren

Ich benutze am PC mit derzeit Ubuntu 18 eine Tastatur TK820 (wird wohl leider nicht mehr produziert)von Logitech mit großem Touchpad (das Folgende gilt sicher auch für die K400). Das hat zwei “Maustasten” in den unteren Ecken (bei K400 richtige Tasten).

Bei allen (?) U**x-Systemen kann man eine einfache Technik für drag-and-drop in Konsolen oder anderen Texteingaben anwenden: Man markiert mit der linken Maustaste einen Text in Browsern, Shells, vielen Editoren und kann dann diesen Ausschnitt woanders mit der linken Maustaste ablegen. Das funktioniert nicht immer, abhängig von der Technologie der Programme. In Shellfenstern klappt das immer und ist gerade für die schnelle Arbeit mit Kommandozeilen sehr hilfreich.

Die genannten Keyboards haben aber eben keine mittlere Maustaste! Mein Ziel war also, diese Taste irgendwie im normalen Tastenfeld zu emulieren. So gehts:

Man nehme die in Ubuntu vorhandene “Einstellung > Tastatur > Tstenkürzel für Anwendungen” und erzeugt einen neuen Eintrag (“Hinzufügen”). In “Befehl” schreibt man “xdotool click 2” und drückt dann nach Aufforderung die Taste oder Kombination, die man gern hätte und sonst nicht braucht. Beim meinem PC ist das “altgr-strg” rechts von der Leertaste, bei meinem Laptop die sonst zu nichts zu gebrauchende Menütaste ebendort.

Fertig. Ich arbeite schon lange ohne echte Maus, um den Arm zu schonen und nutze diese Möglichkeit ohne hinzusehen.

Nachtrag 1: In eine Shell kann man den auf diese Weise kopierten Text nicht ohne weiteres mit “altgr-strg” einfügen – dachte ich bisher. Zufällig habe ich entdeckt, dass das zusammen mit shift doch geht! Damit ist diese Lösung ein vollwertiger Maus-Ersatz :-).

Nachtrag 2: xdotool ist möglicherweise nicht vorhanden und somit erst noch zu installieren (sudo apt install xdotool).

Thunderbird 60+: funktionierendes Addon FireTray

Seit der Version 60 von Thunderbird funktioniert das alte und vielbenutzte originale Addon FireTray nicht mehr. Es ermöglicht, den Thunderbird in die Trayleiste zu verkleinern, wobei er nicht beendet wird, und im dortigen Symbol die Anzahl der neu eingegangen Mails anzuzeigen. Ein Klick auf dieses Symbol weckt Thunderbird aus dem Schlaf. Somit ist es möglich, das Mailprogramm ständig laufen zu lassen und keine Mail zu verpassen – zusammen mit Lightning gilt das auch für Termine. Für mich jedenfalls eine essentielle Funktionalität eines der wichtigsten Büro-Programme!

Vor einiger Zeit habe ich hier das ebenfalls für die Version 60 angepasste Plugin “MinimizeToTray Reanimated 1.4.4” vorgestellt, das einen Teil dieser Funktionen hat. Leider ist das ziemlicher Krampf, weswegen ich es bald wieder entfernt habe und sogar auf den Thunderbird 52 zurückgegangen bin – ein wirklich unbefriedigendes Ergebnis! Auch das alternative zusätzliche Notifier-Programm Birdtray leistet nicht, was ich möchte, zumal die Konfiguration recht umständlich ist.

Nun habe ich heute beim Stöbern in der Community für Mozilla Thunderbird endlich eine Version von FireTray gefunden, die mit der derzeitigen Version 60.2 funktioniert. Sie muss zwar auf einem Linux-System (!) selbst kompiliert werden, aber das ist samt Download in 4 einfachen Schritten schnell erledigt. Danach liegt das AddOn als firetray-0.6.1.xpi vor und kann über “AddOn aus Datei installieren” in den Thunderbird geholt werden. Die einzelnen Schritte sind in diesem Artikel gut dokumentiert.

Der Autor meint, dass die entstehende Datei (xpi) auch für Windows funktionieren sollte – das habe ich mangels Windows nicht getestet. Vielen Dank, geier4711 in der Community!

Skype für Linux – Fehlanzeige 2

Bereits im letzten Jahr habe ich hier beschrieben, dass Skype auf “älteren” PCs (Hardware!) und Ubuntu 16.04 nicht funktionierte. Inzwischen habe ich das Upgrade auf Ubuntu 18.04 gemacht – und Skype funktioniert “anders nicht”. Man kann es problemlos installieren, egal ob als deb-Paket von der Skype-Website oder per “sudo snap install skype –classic”. Danach lassen sich die Nutzerdaten eingeben, das Hauptfenster startet und funktioniert, das Symbol in der Taskleiste erscheint und alles sieht gut aus.

Nur überlebt das den Neustart nicht. Mit etwas Glück erscheint das letzte Chatfenster von gestern. Schließt man das, merkt man, dass damit auch Skype selbst nicht mehr läuft. Startet man es händisch erneut, erscheint wie früher ein leeres Fenster, das beim Bewegen den Hintergrund “mitnimmt” und sich nur mit kill, pkill oder xkill schließen lässt. Eine Meisterleistung von Microsoft, vielen Dank!

Linux: überflüssige alte Kernel löschen

Ich habe mal gelesen, dass es mit neueren Linux-Distributionen nicht mehr zur früheren Ansammlung alter Kernel und zugehöriger Header-Pakete käme, wenn neue Kernel installiert werden. Obwohl meine derzeit noch laufende Ubuntu-Version 14.04 nun nicht unbedingt alt ist, fand ich heute ein gutes Dutzend solcher alter Pakete, die insgesamt über ein Gigabyte Platz benötigten.

Wenn das Boot-Verzeichnis in einer eigenen Partition liegt, kann das dazu führen, dass diese voll wird und dann keine Kernel-Updates mehr gemacht werden können.

Hier wiki.ubuntuusers.de/Skripte/Alte_Kernel_entfernen

wird beschrieben, wie man diesen Müll sicher und schnell entfernt. Die Kurzfassung:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel

cat zu_entfernende_Kernel | xargs sudo apt-get -y purge
rm zu_entfernende_Kernel

Nicht vergessen: entweder jeweils sudo davor oder gleich in einer root-Shell machen! Achtung, die erste Zeile ist überlang, bitte komplett markieren! Die Datei “zu_entfernende_Kernel” kann man nach dem ersten Schritt noch bearbeiten, falls man bestimmte Kernel dennoch aufheben möchte – das ist der Vorteil gegenüber Lösungen, die gleich alles in einem Rutsch machen.

Dienste in Linux beim Hochfahren starten lassen

Will man unter Linux einen Dienst selbständig starten, hilft ein schlaues Tool: update-rc.d. Das nimmt einem die Arbeit ab, den Dienst passend in die passenden Start- und Stopscripts aller Runlevel einzutragen. Ich nutze zum Beispiel zwei paralle installierte Webserver, natürlich nur einen als Standard – der andere schläft.

Beispiel

Nacheinder “Umschalten” zweier installierter Webserver:

sudo update-rc.d nginx defaults
sudo update-rc.d apache2 remove

schaltet den Webserver ngingx künftig an, den Apache aus. Das kann man natürlich auch in 1 Script packen un dieses mit gksu oder sudo aufrufen:

#!/bin/sh
update-rc.d nginx defaults
update-rc.d apache2 remove

Quelle: Dienste und Programme in Ubuntu beim Hochfahren starten lassen

Linux: Tails – das Betriebssystem für gemäßigt Paranoide

So gut vertragen sich Sicherheit und Benutzerfreundlichkeit heute: Tails ist ein Betriebssystem to go, vollgestopft mit Software zum Verschlüsseln und Verschleiern. Es gilt als das Lieblingsbetriebssystem von Edward Snowden: Tails, kurz für The amnesic incognito live system, ist eine Linux-Variante für gemäßigt Paranoide. Sie wird nicht fest auf einem Rechner installiert, sondern auf einem bootfähigen USB-Stick. Damit ist Tails eine Art Betriebssystem to go: Man steckt es unterwegs in irgendeinen Rechner, startet und benutzt Tails und zieht den Stick hinterher wieder ab. Auf der Hardware bleibt keine Spur davon zurück.

Quelle: Tails – das Betriebssystem für gemäßigt Paranoide

Und hier gehts zum Download vom Hersteller:
tails.boum.org (Torrent 1,15 GB)

Fix für logrotate errors für mySQL in Ubuntu

In seinem Blog beschreibt Shahar Evron eine Methode, mit einem Einzeiler den Fehler zu beseitigen, der bisher bei mir täglich in den Mails an root gemeldet wurde. Hier ist der Fehler:

/etc/cron.daily/logrotate:
error: error running shared postrotate script for 
'/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log 
/var/log/mysql/error.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1

Hier ist der Einzeiler:

echo "SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('`sudo cat /etc/mysql/debian.cnf | grep password | head -n 1 |</code></div>
<div class="line number2 index1 alt1"><code class="plain plain">awk -F= '{ gsub(/[ \t]+/, "", $2); print $2 }'`');" | mysql -u root -p

Verwirrend? Verstehen muss ich das ja nicht…

Quelle: arr.gr/blog/2014/06/fixing-logrotate-errors-and-other-mysql-issues…

Ich habe es ausprobiert und es funktioniert. Der Fehler war unbewusst entstanden – wie im Blog beschrieben -, weil ich das Betriebssystem neu aufgespielt und dann die alte DB-Sicherung zurückgeholt habe. Dabei bekommt der Systemuser “debian-sys-maint” von mySQL das falsche (zufällig generierte) Passwort. Das wird mit dem obigen Einzeiler korrigiert.

Danke, Shahar Evron!

Linux: Telnet beenden

Angenommen, ich möchte herausfinden, ob mein lokaler Mailserver läuft. Dann würde ich herkömmlich schreiben:

root@tux:~# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.

Und an dieser Stelle ist Schluss – jedenfalls ich weiß immer nicht mehr, wie ich da rauskomme, zurück in die Shell oder wenigstens auf eine Telnet-Kommandozeile, denn das Escape funktioniert mit einer deutschen Tastatur so nicht: wo ist denn ‘^]’?.

Hier las ich nun folgenden Trick:

root@tux:~# telnet -e x
Telnet escape character is 'x'.
telnet> open localhost 143 
Trying 127.0.0.1...
Connected to localhost.
Escape character is 'x'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.
x

telnet> quit
Connection closed
root@tux: ~# 

Es wird also vor dem Aufruf von Telnet mit -e ein anderer Escape-Code (hier x) vereinbart, der dann als Kommando zum Beenden der laufenden Verbindung genutzt wird. Cool! Danke :-).