Liferea 1.12 von Hand unter Debian Stretch installieren

Liferea ist ein feiner Desktopclient für RSS-Feeds, der nebenbei auch noch mit TinyTinyRSS synchronisiert. So lassen sich mobil auf dem Smartphone und zu Hause am PC gelesene Feeds sauber auf dem gleichen Stand halten.

In den Repositories von Debian Stretch (wie auch in allen anderen Debian Suiten) ist selbstredend nur eine stabile Version von Liferea verfügbar. Leider ist diese Version seitens des Upstreams schon ziemlich alt (v1.10.19) und auch nur ein Wartungsrelease, was das ganze nicht gerade besser macht. Aber der Entwickler ist glücklicherweise fleißig und hat Mitte September einen ersten RC1 veröffentlicht der eine Vielzahl an Verbesserung bringt!

Hier nun die nötigen Schritte um Liferea 1.12-rc1 von Hand zu kompilieren:

  1. Liferea ist bei dir bereits installiert? Weg damit!
    sudo apt purge liferea liferea-data
  2. Abhängigkeiten installieren
    sudo apt install libtool gettext libxml2-dev libxslt1-dev sqlite3  libsqlite3-dev libwebkitgtk-dev libjson-glib-dev libgirepository1.0-dev gsettings-desktop-schemas-dev libpeas-dev libwebkit2gtk-4.0-dev

    Optional, aber für die Nutzung von Plugins nötig:

    sudo apt install python3-cairo
  3. Quellcode herunterladen, entpacken und ins Verzeichnis wechseln
    wget https://github.com/lwindolf/liferea/releases/download/v1.12-rc1/liferea-1.12-rc1a.tar.bz2
    
    tar jxvf liferea-1.12-rc1a.tar.bz2
    
    cd liferea-1.12-rc1a
  4. Stop – eigentlich käme jetzt ./configure, aber bei Debian Stretch würdest du in folgende Fehlermeldung laufen:
    "You should recreate aclocal.m4 with macros from libtool..."
    Um das zu vermeiden, erzwingst du die erneute Erzeugung der genannten Skripte mit den korrekten Versionen.

    autoreconf --force --install
  5. Aber jetzt, der bekannte Dreisatz:
    ./configure
    make
    sudo make install

    Das war alles. Ich bin gespannt, wie sich Liferea entwickelt. Bis jetzt sieht das alles schon recht gut aus. Und vielleicht schauen sich andere Clients (ja, Akregator – du bist gemeint!) dann auch mal endlich den TTRSS-Sync ab.

GIMP-Tipp: Grünen Rand beim Anti-Aliasing loswerden

gimp-logoGIMP verwendet für die Darstellung von Schriften sein eigenes Subpixel-Rendering. Das führt dazu, dass mit den Standardeinstellungen ein hässlicher grüner Rand um die Schriften angezeigt – und auch beim Export mit weitergegeben wird.

Dies lässt sich mit einem einfachen Tipp unterbinden:

  1. Eigene fonts.conf für GIMP erstellen:
     vim .gimp-2.8/fonts.conf
  2. Diese Einstellungen kopieren und einfügen:
    <fontconfig>
      <match target="font">
        <edit name="rgba" mode="assign">
          <const>none</const>
        </edit>
      </match>
    </fontconfig>
  3. Speichern, GIMP neu starten – fertig!

KShutdown manuell kompilieren unter Debian

KShutdown ist ein kleines aber recht bequemes Tool um Rechner zeitgesteuert herunterzufahren, in den Ruhezustand zu setzen oder einzelne Medienplayer zu steuern. Die Paketversion in Debian Jessie und Stretch ist zwar aktuell zur stabilen Upstreamversion, aber es gibt neuere Betaversionen. Falls man KShutdown also unter Debian mit KF5/Plasma 5 direkt aus den Quellen kompilieren möchte sind folgende Schritte nötig:

  1. Entwicklerpakete installieren
    sudo apt install build-essential libkf5config-dev libkf5configwidgets-dev libkf5xmlgui-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5idletime-dev gettext
  2. Quellcode holen
    Entweder das Zipfile herunterladen: http://kshutdown.sourceforge.net/download.html
    Oder über Subversion:

    svn checkout http://svn.code.sf.net/p/kshutdown/code/trunk/kshutdown2 kshutdown-code
  3. Im Quellcode-Verzeichnis:
    ./Setup-kf5.sh
    
    sudo make install

    Das war’s! Mehr Infos zum Kompilieren unter KDE4, generell Qt für Gnome und Xfce oder auch Windows gibt es auf der Seite von KShutdown.

Quicktipp: Systemressourcen sparen

Moderne Browser sind echte Monster wenn es um Systemressourcen geht. Egal ob Firefox, Chromium oder Epiphany Gnome Web – mit etwas Komfortbedarf steigt auch exponentiell die Speicher- und CPU-Last.

Anstatt jetzt das Programm zu beenden und beim nächsten Start ewig zu warten, bis alle zig Tabs wieder geladen sind, greifst du ganz einfach auf folgenden Befehl zurück:

pkill -STOP firefox

Und wenn es weitergehen soll:

pkill -CONT firefox

Fertig!

(Bildquelle CC0)

Quassel IRC und Let’s Encrypt unter Debian

Wer weechat/screen bzw. irssi kennt, dem ist das Prinzip geläufig: ein kleiner Server ist dauerhaft mit dem IRC verbunden, der Nutzer verbindet sich darauf und hat somit die Möglichkeit eines Backlogs um Chats auch später nachlesen zu können. Aus Gründen der Faulheit und weil ich lieber grafische Clients als terminalbasierte habe, verwende ich zu diesem Zweck den Client „Quassel„. Besser gesagt: die Kombination aus Quassel Core und Quassel Client, letzteren sowohl am PC als auch auf mobilen Android-Geräten. Auch unter Windows 7 funktioniert das übrigens einwandfrei!

Die Ausgangssituation

Quassel Core erstellt bei der Installation direkt ein selbst-signiertes Zertifikat für die Transportverschlüsselung über SSL. Das ist okay, mit der – optional einmaligen – Meldung dazu im Client kann ich gut leben. Nun hat der kleine VPS aber für den darauf laufenden Webserver seit kurzem ein gültiges Zertifikat von Let’s Encrypt. Warum also nicht das auch für Quassel nutzen?

So geht’s!

Ich gehe davon aus, dass du Debian auf deinem System nutzt. Bei anderen Distributionen sollte das aber ähnlich bis identisch funktionieren.

  1. Als erstes überprüfst du, ob dein Quassel Core normal gestartet wurde oder als Systemdienst läuft. Wenn dein init System dir folgende Ausgabe liefert,
    # service quasselcore status
     quasselcore.service - LSB: distributed IRC client using a central core component
     Loaded: loaded (/etc/init.d/quasselcore)
     Active: active (running)...
  2. Je nachdem, wie du Quassel serverseitig betreibst, liegt das bestehende Zertifikat unter:
    • ~/.config/quassel-irc.org/ (Nutzer)
    • /var/lib/quassel/ (Systemdienst)
  3. Das existierende Zertifikat sichern wir lieber mal, man weiß ja nie:
    # cp /var/lib/quassel/quasselCert.pem /var/lib/quassel/quasselCert.bkup
  4. Jetzt brauchst du ein PEM Bundle aus dem private key und den fullchain. Dazu fügst du beide Dateien zusammen. In meinem Fall lagen die Dateien im Unterordner für die entsprechende Domain.
    # cd /etc/letsencrypt/live/name.der.seite/
    # cat privkey.pem fullchain.pem >> /var/lib/quasselCert.pem
  5. Abschließend startest du den Quassel Dienst neu – ein einfacher reload genügt nicht!
    # service quassel restart

Das war’s schon. Ab sofort läuft alles wie bisher – nur eben mit gültigem SSL-Zertifikat.
Ach ja: wer lieber Weechat mag, der legt das PEM Bundle einfach unter ~/.weechat/ssl ab und lädt mit /relay sslcertkey das neu Zertifikat.

Mozilla Sync, die OwnCloud und ein großes Fragezeichen

Dank Mozilla Sync lassen sich Browserdaten über die eigene OwnCloud synchronisieren. Meine Passwörter vertraue ich denen aber doch nicht an und somit kommt meine OwnCloud in’s Spiel: Die Installation der entsprechenden App ist denkbar einfach und auch die Einrichtung im Desktop-Firefox geht mit dieser Anleitung ganz fix. Störrisch hingegen sind Android und der Firefox 44…

Dank Mozilla Sync lassen sich Browserdaten (Lesezeichen, Verlauf, Formulardaten, Passwörter etc.) über die eigene OwnCloud synchronisieren. Doch bei aller Liebe zu Mozilla, meine Passwörter vertraue ich denen dann doch nicht an und somit kommt an dieser Stelle meine OwnCloud in’s Spiel. Ich bin dann doch lieber selbst Schuld, wenn mir alles um die Ohren fliegt.

Die Installation der OwnCloud App ist denkbar einfach und auch die Einrichtung im Desktop-Firefox geht mit dieser Anleitung ganz fix:

Teil 1: Desktop

  1. Zip-Datei von apps.owncloud.com herunterladen, entpacken und in das Unterzeichnis /apps/ deiner OwnCloud schieben.
  2. Als Admin die App aktivieren und als User eine Email-Adresse hinterlegen, falls nicht eh schon geschehen.
  3. In der Adresszeile des Firefox öffnest du mit about:config die erweiterten Einstellungen und legst dort folgende zwei Strings an: services.sync.tokenServerURI mit https://deine-owncloud.url/remote.php/mozilla_sync/ sowie services.sync.username mit einem beliebigen Wert.
  4. Nach einem Neustart von Firefox legst du unter Einstellungen > Sync > Konto anlegen ein „neues“ Konto an, wählst „Eigenen Server“ und trägst dann deine OwnCloud-URL, deine Email-Adresse sowie das Passwort deines OC-Kontos ein.

Das war’s auf dem Desktop!
Aber wir wollen ja noch mit unseren mobilen Geräten synchronisieren:

Teil 2: Android

Bis Version 43 brauchte Firefox auf Android-Geräten wohl ein Add-On um mit benutzerdefinierten Sync-Servern zu sprechen. Seit v44 ist dies angeblich nicht mehr nötig. Und so geht’s – zumindest fast!

1. Wichtig ist, dass kein Sync-Konto verbunden ist. Falls doch, bitte zuerst über Einstellungen > Sync > Abmelden entfernen.

2. Die Konfiguration öffnest du – wie vom Desktop bekannt – mit about:config in der Adresszeile. Dort suchst du nach dem Wert „identity.sync.tokenserver.uri“, änderst den hinterlegten URI von http://sync.example.com/token/1.0/sync/1.5 auf https://deine-owncloud.url/remote.php/mozilla_sync/ und schließt das Tab danach.

3. Jetzt kannst du dich mit der Email-Adresse und dem Passwort deines OwnCloud-Kontos ganz normal am Sync-Service einloggen. Das Ganze sieht aus wie bisher, mit dem Unterschied dass deine OwnCloud jetzt als Syncserver fungiert.

Doch hier kommt das Problem: Alles sieht ok aus, keine Fehlermeldungen, nichts. Aber wenn man den Sync manuell anstößt, passiert nichts.
Hier wäre ich für Hinweise dankbar, sieht es doch momentan nicht danach aus als gäbe es eine Lösung für das Problem.

(Quelle 1, 2)

Howto: APT mit bash-completion

Im Zuge der Veröffentlichung von APT 1.1 hatte ich mir vorgenommen, nicht mehr das doch recht umständliche apt-get (mit Kosorten wie apt-cache) zu nutzen sondern stattdessen komplett auf die neue, deutlich einfacher Syntax umzustellen. Der Versuch lief bis dato auch recht gut, wobei ich aber von Anfang an die automatische Vervollständigung von Befehlen und Optionen vermisst habe. Oder kurz gesagt: bash-completion ging nicht.

Die Suche im Netz nach „apt“ und „bash-completion“ in verschiedenen Kombinationen war zwar ergiebig, aber nicht gerade hilfreich. Einzig auf askubuntu.com bin ich über ein kurzes Script gestolpert, das sowie dessen Einrichtung ich euch nicht vorenthalten möchte:

  1. Datei mit root Rechten anlegen/öffnen:
    # vim /usr/share/bash-completion/completions/apt
  2. Folgenden bash code kopieren und dort einfügen:
    # Debian apt(8) completion                             -*- shell-script -*-
    
    _apt()
    {
        local cur prev words cword
        _init_completion || return
    
        local special i
        for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(list|search|show|update|install|remove|upgrade|full-upgrade|edit-sources|dist-upgrade|purge) ]]; then special=${words[i]} fi done if [[ -n $special ]]; then case $special in remove|purge) if [[ -f /etc/debian_version ]]; then # Debian system COMPREPLY=( $( \ _xfunc dpkg _comp_dpkg_installed_packages $cur ) ) else # assume RPM based _xfunc rpm _rpm_installed_packages fi return 0 ;; *) COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \ 2> /dev/null ) )
                    return 0
                    ;;
            esac
        fi
    
        case $prev in
            -c|--config-file)
                 _filedir
                 return 0
                 ;;
            -t|--target-release|--default-release)
                 COMPREPLY=( $( apt-cache policy | \
                     command grep "release.o=Debian,a=$cur" | \
                     sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
                 return 0
                 ;;
        esac
    
        if [[ "$cur" == -* ]]; then
            COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o
                --download-only --fix-broken --help --version --ignore-missing
                --fix-missing --no-download --quiet --simulate --just-print
                --dry-run --recon --no-act --yes --assume-yes --show-upgraded
                --only-source --compile --build --ignore-hold --target-release
                --no-upgrade --force-yes --print-uris --purge --reinstall
                --list-cleanup --default-release --trivial-only --no-remove
                --diff-only --no-install-recommends --tar-only --config-file
                --option --auto-remove' -- "$cur" ) )
        else
            COMPREPLY=( $( compgen -W 'list search show update install 
                remove upgrade full-upgrade edit-sources dist-upgrade 
                purge' -- "$cur" ) )
        fi
    
        return 0
    } &&
    complete -F _apt apt
    
    # ex: ts=4 sw=4 et filetype=sh
  3. Speichern und abschließend als normaler Nutzer die .bashrc neu einlesen:
    $ source .bashrc

Fertig! Jetzt habt ihr die Vervollständigung für folgende APT Optionen: list search show update install remove upgrade full-upgrade edit-sources dist-upgrade purge

(Quelle, Code lizenziert unter GPL)

Spotify unter Linux: Zwei Kurztipps

Mit Debian & Derivaten Spotify zu nutzen ist ja kein Hexenwerk, hierfür gibt es zum Glück eine recht einfache Anleitung. Zwei Dinge funktionierten bei mir aber nicht bzw. haben mich gestört.

1. Fehlende libgcrypt.so.11

Sollte nach der Installation beim ersten Start nichts passieren und beim Aufruf über das Terminal eine fehlende „libgcrypt.so.11“ bemängelt werden, reicht es das Paket libgcrypt11 aus den Wheezy-Repositories zu installieren. Dies gilt natürlich nur für Jessie oder – wie in meinem Fall – für Stretch. Die Datei gibt es hier zum Download für die jeweilige Architektur, im Normalfall amd64.

sudo dpkg -i libgcrypt11_1.5.0-5+deb7u1_amd64.deb

2. Nervige Benachrichtigungen

screenshot-spotify-notification
Beim jedem Songwechsel meint Spotify mir das mitteilen zu müssen. Ich bin nicht doof, ich merke wenn ein Lied zu Ende ist und das nächste beginnt. Leider gibt es in den Einstellungen keine Möglichkeit diese Funktion zu deaktivieren. Also hilft nur die Brechstange über das config file:

vim ~/.config/spotify/Users/[Spotify Nutzername]-user/prefs

Dort folgende Zeile einfügen und danach Spotify neu starten:

ui.track_notifications_enabled=false

Das war’s, schon ist Ruhe!

 

KDE Plasma 5 und die Windowstaste

Ich arbeite beruflich mit Windows 7 und habe mich daher an das Verhalten der Windowstaste (Startmenü öffnet sich, ich dann durch Tippen nach Programmen suchen) gewöhnt. Unter KDE Plasma 5 lässt sich das mit einem kleinen Programm von Hans Chen recht einfach nachbauen:
ksuperkey biegt kurz gesagt das durch Super ausgelöste Signal so um, dass sich das Plasma Startmenü öffnet.

Installation
ksuperkey gibt es in manchen Distributionen (Arch, ROSA, OpenMandriva) direkt aus den Paketquellen. Für OpenSUSE existiert ein OBS-Repo.
Für Debian/Ubuntu/Mint führt leider kein Weg am Kompilieren vorbei:

  • Abhängigkeiten installieren:
    sudo apt-get install gcc make libx11-dev libxtst-dev pkg-config
  • Auf manchen Debian-basierten Systemen braucht es wohl auch build-essentials, die sollte man aber eh installiert haben.
  • Code holen und bauen:
    git clone https://github.com/hanschen/ksuperkey.git
    cd ksuperkey
    make

Einrichten
Mit ./ksuperkey kannst du das Programm schon mal starten. Wichtig ist, dass Alt + F1 als Tastenkürzel für das Startmenü festgelegt ist.
Einfach überprüfen und gegebenenfalls beheben:
screenshot-ksuperkey-1

Jetzt noch mit folgenden Schritten ksuperkey automatisch starten lassen:
Systemeinstellungen → Starten und Beenden → Autostart → Programm hinzufügen– → ksuperkey suchen oder auswählen

Das war’s schon!

Quicktipp: Firefox und die Adressleiste: Wie man Wort für Wort markiert

Was mich auf meiner aktuellen OpenSUSE-Installation genervt hat, war das Verhalten beim Markieren von Text in der Firefox Adressleiste. Ich bin es gewohnt mit Strg+Shift und den Cursortasten Teile der eingegebene Adresse Wort für Wort auswählen zu können.
Scheinbar hat man das beim Paketieren für OpenSUSE jedoch nicht gemacht, sondern lässt immer die komplette Zeile markieren.

Kurz und gut, du kannst das Problem recht einfach in den Anwendungseinstellungen beheben:
1. about:config aufrufen und – falls nötig – den Warnhinweis bestätigen
2. Nach layout.word_select.stop_at_punctuation und den Wert durch Doppelklick auf „true“ setzen.
2b. Wenn du Leerzeichen mit dem nächstgelegenen Wort zusammen markieren möchtest, noch layout.word_select.eat_space_to_next_word ebenfalls auf „true“ umstellen.

Fertig!