Font-Darstellung in Java-Programmen

Da hat man nun seit Ewigkeiten diverse Verbesserungen der Darstellung von Schrift wie Hinting und Antialiasing, daß das Ganze nicht aussieht wie Bitmap-Fonts auf dem Amiga, dennoch wirken sie sich in Java-Programmen nicht aus, selbst, wenn es in diesen zusätzlich aktiviert werden kann und worden ist.

Ein Beispiel ist der bekannte TV-Browser. Wenigstens betrifft es nicht das Innere des Hauptfensters, also den Programminhalt der Sender, wohl aber den Kopf und auch “about”:

ohne Hinting

Es gibt jedoch Möglichkeiten, auch in Java-Programmen ein halbwegs anständiges Font-Rendering zu erhalten. Direkt verglichen:

mit Hinting

(Btw., falls jemand auf die Idee kommen sollte, nein, das hat absolut nichts mit beta zu tun.)

  • Möglichkeit auf Userebene:
    1
    
    $ nano ~/.xprofile

    Hinzufügen:

    Xft/Hinting 1
    Xft/HintStyle "hintslight"
    Xft/Antialias 1
    Xft/RGBA "rgb"
  • Möglichkeit auf Systemebene mit einem xsettings-Daemon:
    1
    
    # nano /etc/environment

    Hinzufügen:

    _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'

    Für “setting” trägt man einen der folgenden Werte ein:

    off, false, defaultkein Antialiasing
    onvolles Antialiasing
    gaspin TTF integriertes Hinting
    lcd, lcd_hrgbAntialiasing für viele gebräuchliche LCDs
    lcd_hbgr, lcd_vrgb, lcd_vbgralternatives AA-Setting für LCDs

Relogin ist nötig. Ich selbst habe sowohl User als auch System getestet (kein Unterschied in der Ausgabe) und mich für den systemweiten Eintrag und gasp entschieden.

uude wird gesundgeschrumpft

Der Projektleiter des bekannten Portals ubuntuusers.de hat heute bekanntgegeben, daß die Datenbank der registrierten User (derzeit 155250) um sämtliche inaktiven bereinigt wird. Dies beträfe auch explizit Mitglieder des Teams (derzeit 37).

“Auch, wenn wir allein damit schon enorm an Server-Kosten sparen”, freut er sich demonstrativ eine Diskette hochhaltend, “wir gehen noch einen Schritt weiter, indem wir all die Threads löschen, in denen ohne nachzudenken und selbst zu recherchieren stets dasselbe gefragt, nichts verstanden und über zig Seiten falsch supportet wird”. Um diese Mammutaufgabe zu stemmen, wolle man sinnvolle Postings einfach verschieben.

Außerdem brauche man dies alles nicht mehr, erklärt er sichtlich zufrieden, da die hinter Ubuntu stehende Firma Canonical mit ihrem snap-Format ein wahres Qualitätsprodukt geschaffen habe. Vorwürfe, daß sich Ubuntu damit immer weiter von Linux-Prinzipien entferne, weist er zurück, schließlich habe Canonical seit jeher die Nennung von Linux vermieden.

·

? Tags drauf. Merke: Auch in einem solchen Artikel steckt ein wahrer Kern.

Einen Kommentar möchte ich aufgreifen und hätte auch schon ein Logo:

Aber nur echt mit knuddels.de-Client auf Java-IcedTea-Basis.

GPG-Key fuer Repositories importieren

Wer unter Debian oder Ubuntu ein Repository, sprich eine Fremdquelle, manuell hinzufügt (deb-Zeile in sources.list(.d/) mit einem Editor oder über ein Frontend oder mit apt-add-repo), erhält nach “apt update” (in apt-add-repo enthalten) einen gpg-Error. In folgenden Beispielen ziehe ich TeamViewer heran.

$ sudo apt update
Hit:1 http://linux.teamviewer.com/deb stable InRelease
(...)                               
Err:1 http://linux.teamviewer.com/deb stable InRelease                                               
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
(...)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://linux.teamviewer.com/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
W: Failed to fetch http://linux.teamviewer.com/deb/dists/stable/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
W: Some index files failed to download. They have been ignored, or old ones used instead.
$

Das an sich ist wahrlich nichts neues, auch nicht, was zu tun ist, wird trotzdem immer wieder in Foren gefragt.

Im Fall TeamViewer kann man bislang ausführen:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | sudo apt-key add -

Man zieht also den Key im ASCII-Format vom teamviewer.com-Server (selbstverständlich über https) und importiert ihn mit apt-key. Das Paket add-apt-key ist auch für das kommende Ubuntu 22.04 Version 1.0-0.5, sage und schreibe 15 (!) Jahre alt. Entsprechend kann eine Message kommen:

$ sudo apt-key add TeamViewer2017.asc
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
$

Das bedeutet, noch funktioniert es, ist aber abzulehnen, da die Methode über kurz oder lang entfernt wird. Entsprechend sollte man sich beizeiten informieren und am besten generell die ersetzende Methode verwenden.

GPG-Keys verwaltet man mit dem Kommando gpg und entsprechenden Optionen. Durch die obige Ausgabe wissen wir, es handelt sich um den Pubkey C5E224500C1289C0. Dies ist lediglich der rechte 16stellige Teil des 40stelligen rsa4096-Pubkeys 8CAE012EBFAC38B17A937CD8C5E224500C1289C0, genügt jedoch.

Wir könnten den Pubkey also mit “gpg –receive-keys” direkt von einem entsprechenden Keyserver ziehen und importieren. Das funktioniert, nur weiß apt davon nichts, die Fehlerausgabe besteht fort.

Es ist also so aufzubereiten, daß apt damit umgehen kann. Dabei kann mit wget das .asc-File gezogen, der relevante Teil über “gpg –dearmor” umgewandelt und über install oder gpg importiert werden.

Beispiel als Zweizeiler mit wget und install nach “/etc/apt/trusted.gpg.d/”:

1
2
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor > teamviewer2017.gpg
sudo install -o root -g root -m 644 teamviewer2017.gpg /etc/apt/trusted.gpg.d/

Beispiel als Einzeiler mit wget und tee nach “/etc/apt/trusted.gpg.d/”:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/teamviewer2017.gpg >/dev/null

Beispiel als Einzeiler mit wget und tee nach “/usr/share/keyrings/”:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor | sudo tee /usr/share/keyrings/teamviewer2017.gpg >/dev/null

Beide Pfade sind möglich. Bei “/usr/share/keyrings/” erscheint der Key dann auch in software-properties* → Authentication, kann also auch dort wieder entfernt werden, so man möchte.

Hat man mit gpg bereits importiert oder möchte es so, kann man auch dies als Ausgangslage nutzen.

Beispiel als Dreizeiler mit gpg und tee nach “/usr/share/keyrings/”:

1
2
3
sudo gpg --receive-keys --keyserver hkps://keyserver.ubuntu.com --recv-keys C5E224500C1289C0
sudo gpg -a --output TeamViewer2017.asc --export C5E224500C1289C0
cat TeamViewer2017.asc | gpg --dearmor | sudo tee /usr/share/keyrings/teamviewer2017.gpg >/dev/null

Im Beispielfall TeamViewer kann man den mit gpg importierten Pubkey danach auch wieder entfernen:

1
sudo gpg --delete-keys C5E224500C1289C0

Der für apt relevante “/usr/share/keyrings/teamviewer2017.gpg” bleibt dabei erhalten.

Hinweis noch zum Copypasten: Das WP-Plugin für Code ist zwar optisch OK, aber etwas tricky. Also aufpassen, daß man Befehlszeilen vollständig in ein Terminal kopiert!

Firefox 98: Profile nicht abwaertskompatibel

Warnung: Firefox ändert mal wieder etwas an den Profilen, sprich mit Fx 98.0 candidate build 2 (die Final ist für 2022-03-08 avisiert) einmal gestartet, kann das Profil nicht wieder mit der derzeitigen Final 97.0.1 geladen werden.

Ein realistisches Szenario, da Fx 98.0cb2 Sites reproduzierbar crashen läßt, die aus einem Link in Thunderbird geladen werden.

Wer also diese Dev-Version testen will, vorher “~/.mozilla/” sichern!

enlightenment: suid setzen

Nachdem in einem Forum-Thread bezeichnenderweise auch nach anderthalb Tagen statt einer Lösung für

“Enlightenment cannot successfully start the enlightenment_system service since it can’t become group root. Missing setuid bit?”

nur ein Link zu einem Bugreport (den ich auch längst gefunden gehabt habe) gepostet worden ist, habe ich mich unter dem Bugreport erbarmt. Das Problem an sich ist nicht neu (ist bei mir damals mit e17, e18, e19 auf Lubuntu oder siduction allerdings nicht aufgetreten), Lösungen in anderen Foren sind jedoch auch nicht wirklich existent. Eine vielleicht, freilich noch vor dem usrmerge, damit mit anderen Pfaden.

1
2
# chmod 4755 /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys
# chmod 4755 /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_system

Der launchpad.net-Editor ist im übrigen ein Grauen. Weder gibt es ersichtlich Codeblocks noch Link-Syntax (vielleicht wenigstens BBCode, habe ich aber nicht auch noch ausprobieren wollen, denn Vorschau und Editieren sind ebenfalls nicht möglich, dafür aber sinnfreie nicht verhinderbare harte Zeilenumbrüche trotz wesentlich breiterem Editor-Fenster). Paßt damit bestens zu Canonical/Ubuntu.

Paketquelle partner nicht in Jammy

Kurzinfo für Ubuntu 22.04: Es gibt einen Vorschlag Steve Langaseks, die ohnehin seit Groovy leere Paketquelle partner (in Focal ist AFlash zu dessen mehr oder eher weniger Lebzeiten als letztes noch enthalten gewesen) zu schließen. Gegenmeinungen scheint es bislang keine zu geben…oder mit anderen Worten, interessiert keinen mehr. Im Einzelnen oder überhaupt.

Die Begründung ist allerdings schräg. Der Snap Store sei mittlerweile so ausgereift, daß dieser partner ersetzen könne. Was nichts über das aufblasende bis hin das Prinzip Linux-Paketverwaltung zerstörerische snap selbst aussagt…

Streams in vlc abspielen

Streams einer bekannten Videoplattform sind dafür vorgesehen, im Browser zu laufen. Um darüber hinausgehendes zu verhindern, werden ständig neue technische Rafinessen ersonnen (man denke nur an Fragmentierung des Videos, separate Audiospuren etc.).

vlc hat man bis vor geraumer Zeit durch Aufruf des Stream-URLs noch nutzen können. Derzeit stockt die Wiedergabe jedoch aller paar Sekunden – unbrauchbar. In Foren wird nach Lösungen gefragt. Tips, man solle doch smplayer nehmen (ohnehin nur ein Frontend für mplayer oder mpv), verkennen, daß dieser selbst derartige Streams gar nicht abrufen kann, sondern sich eines bekannten Zusatz-Tools bedient.

Ich betone, es soll ausschließlich um die Wiedergabe des temporär nur dafür im Cache gehaltenen Streams gehen. Also das, was ein Browser auch nur macht, aber ein Player technisch besser könnte, wenn ihm kein Bein gestellt wird (die Systembelastung ist merklich geringer, insbesondere unter Linux, dort haben Browser i.d.R. keine wirkliche Hardware-Beschleunigung).

vlc nutzt für Quellen entsprechende Playlists, eine Art Profile. Arch-based sind sie unter “/lib64/vlc/lua/playlist/” abgelegt, in debian-basierten Systemen unter “/usr/lib/x86_64-linux-gnu/vlc/lua/playlist/”. Default sind es .luac-Files. Es werden jedoch nicht nur Kompilate, also Binaries, erkannt, sondern auch .lua-Files.

Man benötigt keine neue vlc-Version (auch ein 4.0er nightly-snap soll nicht helfen), man kann das entsprechende .luac-File durch ein .lua-File (logscherweise raw) ersetzen.

In einer Arch-basierten Distribution ist das Problem damit behoben, ebenso in einer LFocal-VM (dort hat es bisher gar nicht abgespielt werden können), in einer Debian-testing-VM stockt es noch. Es sind unterschiedliche vlc-Versionen. Generell funktioniert es also – derzeit – wer es wirklich braucht (für mich ist es lediglich eine interessante technische Problemstellung gewesen), müßte in letzterem weitersuchen, bspw. Konfigurationen (VM, vlc,…) vergleichen.

Blaulichtfilter, Software-Loesung mit redshift

Blau macht glücklich, Blau bedeutet Hoffnung. Aber wo viel Licht, da viel Schatten. ;-) Man soll nachts nach stundenlanger Arbeit am Rechner weniger gut einschlafen können, man sei noch auf Tagmodus, und das, obwohl die Augen schneller ermüden. Wobei das natürlich auch eine Frage des sehr viel höheren Kontrasts gegenüber meist abgedunkeltem Raum ist.

Sei’s drum, jedenfalls gibt es neuere Monitore mit Blaulichtfilter (manchmal als smartLight vermarktet), auch manche Smartphone-Displays besitzen derartiges, mehr oder eher weniger brauchbar (dort, wo ich es ausprobiert habe, würde ich es ausschalten). Das bedeutet nicht, es kommt kein Blau mehr durch, man sieht nur noch Rot. =:-)

Wer keinen solchen Monitor besitzt, wird nicht über OSD ständig die Farbtemperatur (wer vor heutiger Allerweltsknipserei mit Grundlagenwissen fotografiert hat, kennt das mit Tageslichtfilm und Kunstlichtfilm, aber selbst bei s/w mit Vorsatzfiltern) ändern wollen, es gibt Software-Lösungen wie redshift (das ist kein neues Programm, aber manche scheinen Schwierigkeiten mit der Einrichtung zu haben). In Abhängigkeit des Standorts und der Uhrzeit wird eben jene Farbtemperatur über den XServer mit xrandr angepaßt.

Die Installation ist simpel:
arch-basiert:

1
# pacman -S redshift redshift-gtk

debian-basiert:

1
# apt install redshift redshift-gtk

Es ist auch ohne das grafische Frontend möglich. Zur Bestimmung des Standorts kann man geoclue installieren, nur dafür ist es aber keineswegs nötig. Sinnvollerweise erstellt man einfach eine Konfigurationsdatei ” ~/.config/redshift.conf” mit entsprechendem Inhalt. Auf der Site des Projekts kann man ein Muster ziehen und an die eigenen Verhältnisse anpassen. Das Ganze ist wirklich sehr einfach, gut dokumentiert (ich entferne im folgenden File diese Zeilen auch nicht, füge im Gegenteil hilfreich sein könnende Sites ein).

Die eigenen Koordinaten, also den Breiten- und Längengrad, kann man bspw. über dateandtime.info erfahren. Für Leipzig sind dies Breitengrad 51°20.3772′ N, Längengrad 12°22.2774′ O. Einzutragen sind

lat=51.20
lon=12.22

Die zu wechselnde Farbtemperatur in Kelvin kann man sacht wählen

temp-day=6500
temp-night=6200

oder stärker, so man dies will.

Sinnvoll ist der Eintrag

transition=1

für einen fließenden Übergang.

Soll nur ein bestimmter Screen betroffen sein, ist dieser anzugeben, anderenfalls kann man die Zeile auch mit einem Semikolon auskommentieren.

Speichern, redshift-gtk starten! Das ist über Icon im Startmenu möglich, aber natürlich auch in einem Terminal, z.B. zum Testen. Über das Glühlampen-Icon kann man redshift auch schnell zu oder abschalten und auch in den Autostart eintragen.

Kleiner Hinweis noch, in einer VM funktioniert das nicht (das Programm als solches schon), das müßte man im Host durchführen.

Nachfolgend eine “~/.config/redshift.conf”:

Read more “Blaulichtfilter, Software-Loesung mit redshift”

doas, das kleine sudo

sudo (Akronym für “substitute user do” und nicht falsch “superuser do”) sollte jeder Linux-User kennen, auch wenn der eine oder andere administrative Tätigkeiten vielleicht doch mit root-Account durchführt.

devil geht in seinem Blogpost auf doas (“do as”), adaptiert von OpenBSD, ein.

In den Debian-, Ubuntu-, Fedora-Repositories liegt es nicht, auch nicht in Ubuntu-PPAs, wohl aber als opendoas in den Arch-Repositories. Upstream-URL linkt auf einen Fork eines anderen seit Jahren nicht mehr angefaßten github-Repos. Beim Fork passiert seit 9 Monaten aber auch nichts mehr. Das muß die eine sagenumwobene Software sein, die absolut fehlerlos und nicht verbesserbar ist.

Wie auch immer, ich hab’s eben mal spaßeshalber (verwenden werde ich’s nicht) aus https://github.com/Duncaen/OpenDoas in einer noch herumliegenden LBionic-VM kompiliert, aber im letzten Schritt des bekannten “Dreisatzes” Ubuntu-typisch mit checkinstall statt “make install” (ist auch unter Debian möglich). So erhält man ein .deb-File.

Wer’s unter Ubuntu(-Derivaten)/Debian selbst ausprobieren möchte:

  1. Installation zum Kompilieren nötiger Pakete:
    1
    
    sudo apt install build-essential checkinstall git byacc

    Es ist darauf zu achten, tatsächlich byacc zu installieren, mit btyacc bricht make mit errors ab.

  2. Clonen des Source Codes aus dem git-Repository mit der Tiefe 1:
    1
    
    git clone git://github.com/Duncaen/OpenDoas --depth 1
  3. Ins Verzeichnis wechseln:
    1
    
    cd OpenDoas/
  4. Der “Dreisatz”:
    1
    2
    3
    
    ./configure
    make -j2
    sudo checkinstall -D --install=no --backup=no --maintainer=user --pkgname=opendoas

    “-j 2” steht für 2 dafür zu verwendende Kerne, man könnte stattdessen bspw. auch “-j $(nproc)” für saemtliche setzen oder die Option auch weglassen. Das Ganze hier ist aber dermaßen klein, da genügt auch ein “halber”. ;)

    Gäbe es bereits ein Paket namens opendoas in der Distribution, sollte man das eigene anders benennen (z.B. mit einem kurzen Zusatz) oder eine höhere Version setzen. Das nur als generellen Nebenhinweis, falls man auch andere Pakete kompilieren will.

  5. Installation:
    1
    
    sudo dpkg -i opendoas*.deb
  6. Sich selbst bzw. den gerade eingeloggten User der Konfigurationsdatei hinzufügen:

    1
    
    echo "permit :$USER" | sudo tee /etc/doas.conf

    Statt der Variable $USER kann man natürlich den Usernamen direkt einsetzen, auch einen anderen, der fürderhin doas-berechtigt sein soll.

    Ein testweises “doas nano” funktioniert, manpage, sofern während der Kompilierung nicht abgewählt, auch:

    1
    
    man doas

snap oder richtig

Wie gesagt, als Stichwortgeber taugt jenes Forum noch…

Wer Ubuntu fährt, sollte aufpassen, welche Pakete bzw. woher er diese installiert. Bemängelt wird vom Hilfesuchenden, er fände keinen Download für das PlugIn, um aus gimp heraus xsane zu starten.

Nebenbei, unter arch ist es ein separates Paket namens xsane-gimp. Etwas in der Art gibt es in den Ubuntu-Repositories nicht (mehr), das Plugin jedoch noch sehr wohl. In Sekunden findet man heraus, es ist Bestandteil des Pakets xsane.

Nun behauptet er, sowohl gimp als auch xsane installiert zu haben. Das glaube ich ihm sogar, nur hat er sehr wahrscheinlich nicht die .deb-Pakete aus den Ubuntu-Repositories installiert. Ich meine dabei nicht vordergründig .deb aus Fremdquellen wie PPAs, sondern das unsägliche Canonical-Eigengewächs snap. Dieses Zeug integriert sich eben nicht ordentlich ins System, es ist nicht “nur” Gift für das Paketsystem, die Interaktion ist nicht wirklich gegeben. snap-Pakete sind Fremdkörper.

Also sprach Zarathustra:

sudo apt purge snapd

snap-Pakete fliegen damit ebenfalls ‘raus (sie würden ohne den Daemon ja auch nicht mehr laufen), entsprechende .deb-Pakete müssen bei Bedarf installiert werden.

Hier kommt der Ubuntu-User freilich an den Punkt, daß manche/immer mehr in Ubuntu gar nicht mehr angeboten werden (sollen), prominentes Beispiel seit 18.10 ist chromium, ausgerechnet. Canonical will das immer mehr umbauen. Ubuntu? Auch andere Mütter haben schöne Linux-Töchter. Oder sagen wir besser schönere, keine absichtlich mißgestalteten. Und auch nicht solche alten (gimp in Ubuntu 20.04 “LTS” und dem gerade erst erschienenen 20.10 → 2.10.18, aktuell ist seit 3 Wochen 2.10.22, das wird in releaseten Ubuntu-Versionen auch nicht hochgehievt).

Btw., es gibt auch kein Paket “xsane-doc”, die doc-Files liegen als .html im Paket xsane-common (unter arch im Paket xsane), das bei der Installation von xsane automatisch als Abhängigkeit mitinstalliert wird. Einfach mal selbst suchen, statt vorsetzen lassen wollen. Unter Linux setze ich das voraus.

Nachtrag 2020-10-29: Eben noch mal obig verlinkten Forum-Thread gecheckt, was da so den Tag nach meinem Blogpost geschrieben worden ist. Tja, sag ich doch. ]:-)