Normale Ansicht

Übergroßer Cursor in Kali Linux unter VMware Fusion 25H2

15. Februar 2026 um 14:31
Einstellung der virtuellen Maschine in VMware H252

Die Lösung ist die Eigenschaften der Virtuellen Maschine aufzurufen, hier die Volle Auflösung des Retina Display verwenden zu aktivieren und nach dem Anmelden im Kali Linux Desktop Kali HiDPI Mode zu wählen. Nach einem Restart sollte alles beim alten sein.

Nach dem aus sicherheitsupdategründen erzwungenen Upgrade auf macOS 26.3 mit einem anschließenden Update auf VMware 25H2 war dies einer der kleinen Schluckauf, welche ich zu bewerkstelligen hatte.

Tube Archivist HTTP Error 403: Forbidden

01. Februar 2026 um 19:28

Hier haben wir wieder ein „Henne und Ei“-Problem.
Zwar sind die Cookies richtig kopiert worden und auch die Dateien sind zugänglich, sie lassen sich ja via Browser aufrufen, aber leider ist ytdlp veraltet. Bis ein neues Image für Tube Archivist erscheint, muss man sich mit der Variable TA_AUTO_UPDATE_YTDLP helfen.

Mit dieser Variable in der Compose-Datei und dieser den Wert release mitgeben. Nach einem Neustart des Containers wird eine neue Version von ytdlp heruntergeladen und die Videos können wieder lokal gespiegelt werden.

TA_AUTO_UPDATE_YTDLP = release

Thinkpad T450s ACPI Error unter Debian GNU/Linux

10. Juli 2025 um 13:08

Was bei mir so vor der Eingabe des LUKs Passwortes und dem Starten von Debian vorbeihuschte, hatte mich dann doch einmal interessiert:

0.21027?] DMAR: [Firmware Bug: No firmware reserved region can cover this
MRR T®x00000000cd800000-0x00000000c/rFTfffl, contact BIOS vendor for Fixes
0.4880091 ACPT Error: Needed type tReferencel, found (Integerl ( ptrual_
→ (20220331050-665
0. 488035] ACPT Brror: AE AML OPERAND_TYPE, While resolving operands for tOp codeNane unavailable] (20220331/dswexec-431)
0. 488052] ACP Error: Aborting method PR.CPUO. PDC due to previous error (AE_AML, OPERAND TYPE) (20220331/psparse-529)
1.9383933 DMAR: DRHD: handling fault status reg 3
1.9384083 DMAR: EDMA Read NO_PASID] Request device [00:16.7] fault addr Oxc cdf1000 [fault reason Ox02] Present bit in context entry is clear
1.938649] DMAR: DRHD: handling fault status reg 2
1.9386563 DHAR: COMA Write NO_PASID] Request device [00:16.7] fault addr 0x ccdf/000 [fault reason 0x02] Present bit in context entry is clear
1.9386963 DMAR: DRHD: handling fault status reg 2
1.938702J DMAR: CDMA Write NO_PASID] Request device [00:16.7] fault addr 0x
ccd/P000 [fault reason 0x02] Present bit in context entry is clear

Kurz und knapp, es ist ein Fehler im BIOS, welcher schon seit 2013 besteht und vom T440 bis an den T460 weitergereicht wurde.
Lenovo behebt den Fehler, welcher bekannt ist nicht.
Jemand hat den zugehörigen Thread im Jahr 2018 erstellt, zwei Jahre nach dem Erscheinen des T460.

Lenovo kocht natürlich auch nur mit Wasser. Ich hätte mir jedoch mehr Support gewünscht, besonders wenn dies sogar unter Windows einen Bluescreen verursacht. Hier hätten doch einige Geschäftskunden unerfreut gewesen sein müssen. Schade, dass Firmen, welche ich als zuverlässig aufgrund Ihre Historie ansah, jenes nicht mehr sind. Gerade betreffend ThinkPads wäre es mir doch sehr wichtig.
Lenovo hatte mich schließlich mit einem Montagsthinkpad P53 enttäuscht, sodass ich mich zunächst für Apple Silicon entschied.
Aber wie man sieht, immer noch ThinkPads nutze 😉

Die Lösung wäre ein acpi=off , noacpi oder acpi=strict in der Konfiguration von grub zu setzen.
Weiterführende Informationen zu den Kernelparametern

Glow Markdown in der Shell rendern

07. Juli 2025 um 12:21

Markdown ist eine leicht verständliche Auszeichnungssprache für Texte. Einige von Euch kennen jene aus Readme-Dateien aus Git Repositories, Dokumentationen und von statischen Bloggeneratoren wie Hugo, oder Jekyll. Markdown bietet für mich entscheidende Vorteile.

Ein in Markdown formatierter und strukturierten Text ist für immer in der gewünschten Formatierung betrachtbar. Er ist nicht an ein bestimmtes Programm und seiner Syntax gebunden. Im Gegensatz dazu öffnen sich alte Dateien aus Officeanwendungen aus Redmond der 90er Jahre nur mit Verlusten in neueren Programmen, wobei bereits viel der Formatierung und dessen Struktur verloren geht. Besonders problematisch wird es, wenn Programme nicht mehr auf neuen Systemen laufen, oder wenn sie für eine Installation nicht mehr verfügbar sind. Hier drohen uns in Zukunft digitale Verluste.

Markdown überzeugt durch seine gute Lesbarkeit ohne Rendering, sowie durch die einfache Syntax bei der Erstellung von Texten, Tabellen und Listen. Markdown erlaubt es, Text mit einfachen Symbolen zu formatieren. So rahmen zwei ** einen fetten Text ein, während ein * kursiven Text markiert und eine H1-Überschrift ihre Formatierung durch eine Raute mit Leerzeichen vor dem Text erhält. Für Überschriften in unteren Ebenen verwendet man entsprechend zwei, drei oder vier Rauten. Weitere Informationen finden sich in dem Artikel auf Wikipedia. Ich selbst nutze für die einfach und schnelle Auszeichnung Typora unter Linux und macOS. Ich gebe auch zu, damit meine README.md gerne in Git zu gestalten. Typora erstellt mir auf Knopfdruck ein Inhaltsverzeichnis aus den Überschriften inklusive Anker 😉

Während Markdown-Dateien in dafür bestimmten Texteditoren, wie z.b. dem oben genannte Typora, gut formatiert lesbar sind, benötigen Markdown-Dateien zum Rendern in der Shell eine spezielle Software, um eine perfekte Darstellung zu bekommen. Hier kommt Glow ins Spiel.

Was ist Glow?

Kurz und knapp: Glow ist ein auf ein der Programmiersprache Go basierendes Shellprogramm, welches Markdown-Dateien direkt in der Shell rendert. Es stellt die Inhalte übersichtlich formatiert, inklusive Links, und farbig dar.

Je nach System wird Glow über die Paketmanager der Linuxdistribution installiert. Glow lässt unter Debian, macOS ( via brew), FreeBSD, Fedora und sogar Android installieren. Natürlich besteht auch die Möglichkeit, glow über die Sprache go selbst zu installieren.

Nutzung

Glow kann mit einer lokalen Markdown-Datei aufgerufen werden:

glow README.md

Auch eine Vorschau von Markdown-Dokumenten aus dem Internet wäre möglich:

glow https://raw.githubusercontent.com/charmbracelet/glow/refs/heads/master/README.md

Des Weiteren bietet glow noch einen Pager und die Möglichkeit eigene Styles zu definieren und herunterzuladen.

Glow ist Teil des Charmprojektes welches eine Sammlung von Open-Source-Tools/-Bibliotheken für die Entwicklung von terminalbasierten Anwendungen ist. Das Charmprojekt ist die Glamourecke der modernen und benutzerfreundliche CLI-Programme 😉

Readeck eine Read it later Alternative

28. Juni 2025 um 11:25

Ich habe im Jahr 2013 das erste Mal Wallabag geschrieben, zu diesem Zeitpunkt hieß es noch Poche. Für mich der Beginn einer sehr langen, bis heute noch andauernden, Freundschaft mit der Software. Es ist aber wichtig auch immer wieder einmal über den Zaun zu schauen, falls ich mit einer Software in Zukunft nicht mehr zufrieden sein könnte. Zu groß wird der Stress und die Enttäuschung, wenn ich den jahrelangen Workflow so schnell wie möglich ändern muss. Beziehungsweise einen Stichtag habe, an dem ich die Änderung herbeizuführen habe.

Ich habe mir als Player neben Wallabag einmal Readeck angeschaut und hier meine Wallabaglesezeichen importiert. Ich habe den Ablauf ohne Hindernisse ausgeführt, aber er hinterließ einige Leichen. Einige der mit Wallabag konservierten Webseiten sind nicht mehr Online, oder konnten nicht richtig von Readeck abgeholt werden. Ich bin zwar auf ein Script gestoßen, welches leider aber dann alle fehlerhaften Einträge löscht, wobei manche nur einmal angestoßen werden müssten.

Readeck unterscheidet sich nicht wirklich groß von Wallabag. Auch hier gibt es eine gute Browserintegration und die Oberfläche ist mehr als ein Quentchen besser als jene von Wallabag. Hierzu sei aber gesagt, dass Wallabag in sehr reger Entwicklung ist und mit dem nächsten Majorupdate, 3.0/4.0, auch hier nachzieht. Ich hatte hierzu mal eine Aussage im Fediverse gelesen, aber bedauerlicherweise findet sich in den alten News kein Hinweis. Readeck ist aber in der Tat momentan etwas „polierter“ und Anwenderfreundlicher. Im Gegensatz zu Wallabag bietet es ab Werk kein RSS-Feed an, dieser kann aber mit dem Projekt readeck-rss nachgerüstet werden. Ich selbst brauche diese Funktion aber nicht.

Ich selbst habe Readeck als Container bei mir installiert und den dort schon laufenden Apache als Proxy genutzt.

Apache Prox-Teil:

 RequestHeader set X-Forwarded-Proto https

 ProxyRequests off
 ProxyPass / http://127.0.0.1:8000/
 ProxyPassReverse / http://127.0.0.1:8000/
 ProxyPreserveHost On

docker-compose.yml:

services:
 readeck:
 container_name: Readeck
 image: codeberg.org/readeck/readeck:latest
 mem_limit: 8g
 cpu_shares: 1024
 security_opt:
 - no-new-privileges:true
 restart: unless-stopped
 ports:
 - 8000:8000
 volumes:
 - /volume1/docker/readeck/data:/readeck:rw
 environment:
 READECK_USE_X_FORWARDED: true
 READECK_DATABASE_SOURCE: postgres://readeck:readeckpass@readeck-db:5432/readeck

 readeck-db:
 image: postgres:16
 container_name: Readeck-DB
 hostname: readeck-db
 mem_limit: 1g
 cpu_shares: 768
 security_opt:
 - no-new-privileges:true
 healthcheck:
 test: ["CMD","pg_isready","-q","-d","readeck","-U","readeck"]
 timeout: 45s
 interval: 10s
 retries: 10
 volumes:
 - /volume1/docker/readeck/db:/var/lib/postgresql/data:rw
 environment:
 POSTGRES_DB: readeck
 POSTGRES_USER: readeck
 POSTGRES_PASSWORD: readeckpass
 restart: on-failure:5

Backup:

Das Backup landet dann inklusive des Datums in dem Volume von readeck ( /volume1/docker/readeck/data).

 docker exec Readeck readeck export -config /readeck/config.toml /readeck/export_$(date +"%Y_%m_%d").zip

iOS/ipadOS

Für das Share-Menü gibt es einen Shortcut“/Kurzbefehl unter send-page-to-readeck. Hier muss im Kurzbefehl, dann die Domain, sowie einen APi-Token, welcher unter Einstellungen > API-Token erstellt wird, eingegeben werden.
Damit der Befehl im Teilenmenü erscheint:

  • Langer Klick auf den Kurzbefehl bis zu dem Öffnen des Menüs
  • Details auswählen
  • Im Share-Sheet anzeigen aktivieren

Android

Für Android gibt es eine Readeck App, welche unter F-Droid zu finden ist. Ich selbst habe sie noch nicht installiert, da mein daily driver ein iPhone 16 Pro ist.

Fazit

Readeck hat mich mit seiner sehr eleganten Benutzeroberfläche und vor allem der unkomplizierten Installation überzeugt. Es fällt mir jedoch schwer, Wallabag nach über einem Jahrzehnt treuer Dienste den Rücken zu kehren. Da spielt sicherlich auch eine nicht kleine Portion Nostalgie mit 😉
Momentan teste ich beide Lösungen im Parallelbetrieb und werde in den nächsten Wochen entscheiden, welches Projekt das richtige für mich ist. Mir wäre es auf jeden Fall wichtig, auch wenn den Weg zu Wallabag zurückzugehen. Bis jetzt gestaltet dies sich wohl sehr schwierig. Seiten der Wallabag 2.x Dokumentation ist hier über den Import nichts zu finden. Hier bleibt wohl nur dann einer der Wege den Export von Readeck in das JSON-Format von Wallabag zu konvertieren, Datenbanklevel-Migration vorzunehmen, oder noch schlimmer, Zeit mit einer manuelle Rearchivierung zu verbrennen. Dies ist für mich ein großer Negativpunkt bezüglich Readeck. Keine Sackgassen.

Nextcloud Falsches Zeilenformat ROW_FORMAT=Dynamic

25. Februar 2025 um 14:20

Nach einem Update auf Nextcloud 31.0, Hub 10, hatte ich im Backend folgende Meldung die Meldung:

Falsches Zeilenformat in Ihrer Datenbank gefunden. ROW_FORMAT=Dynamic bietet die beste Datenbankleistung für Nextcloud. Bitte aktualisieren Sie das Zeilenformat in der folgenden Liste:

Folgender SQL-Befehl fixt die Datenbank

mysql -u root -p -D DATENBANKNAME -N -e"
SELECT CONCAT(
 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' ',
 'ROW_FORMAT=DYNAMIC;'
) 
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE='InnoDB' AND ROW_FORMAT <> 'DYNAMIC';" | mysql -u root -p DATENBANKNAME

Ich empfehle vorher ein Datenbankbackup mit z.B. mydumper vorzunehmen

Docker Verschieben von /var/lib/docker

15. Oktober 2024 um 09:37

Da auf meinem Server einige Container laufen, wurde durch mein Rollout des Containers Tubearchivist der Platz langsam eng.

Hier habe ich mich entschlossen, den Standardspeicherplatz von Docker auf eine der 6 TB Datenpools zu verschieben. Das Umschreiben des Servicekonfigurationsdatei innerhalb von SystemD wäre hier der falsche Weg. Der richtige Weg ist hier JSON-Konfigurationsdatei des Daemon von Docker umzuschreiben. Falls diese noch nicht angelegt ist, muss diese angelegt werden.

Erstellen des neuen Datenspeicherplatzes für Docker

mkdir /data/IronWolf1/DOCKER_DATA

Stoppen des Dockerdienstes

systemctl stop docker && systemctl status docker && docker ps

Kopieren der Daten in das neue Verzeichnis

rsync -avxP /var/lib/docker/ /data/IronWolf1/DOCKER_DATA

Erstellen der Datei /etc/docker/daemon.json

{<br />"data-root":"/data/IronWolf1/DOCKER_DATA"<br />}

Neustarten des Dienstes Docker

systemctl restart docker.service

Überprüfen, ob der Standardspeicherort übernommen wurde. Hierzu habe ich Vaultwarden als Beispiel genommen

docker inspect vaultwarden/server:latest |grep WorkDir<br />"WorkDir":"/data/IronWolf1/DOCKER_DATA/overlay2/b419d698e9ba693188a2f517f53891702a25ea20f974993aca879206818ab328/work"

Der Inhalt des alten Verzeichnisses /var/lib/docker kann nun gelöscht werden

Invidious: The media could not be loaded format not supported

06. Oktober 2024 um 11:36

Invidious ist eineSoftware, die es ermöglicht, Videos von YouTube anzusehen, ohne direkt die offizielle YouTube-Website, oder App zu verwenden. Die selbstgehostete Software ermöglicht eine werbefreie Nutzung von Youtube und schützt die Privatsphäre der Nutzer, indem es Tracking durch Google verhindert. Invidious bietet die weiteren Funktionen wie das Herunterladen von Videos, das Ansehen ohne Anmeldung und die Möglichkeit, nur den Audiostream abzuspielen.

Ich hatte nun etwas länger meine private Instanz auf dem Homeserver genutzt und stieß auf den Fehler
„The media could not be loaded, either because the server or network failed or because the format is not supported“.

Damit die Software wieder produktiv arbeitet, muss hier ein weiterer Container erstellt und die Datei docker-compose.yml für Euren Stack umgeschrieben werden.

Als Erstes wird ein einzelner Container via

 docker run quay.io/invidious/youtube-trusted-session-generator

gestartet und nach einem Start die Ausgabewerte des Containers für visitor_data und po_token kopiert.
Dieser Container beendet sich nach der Ausgabe von selbst und sollte nicht detached gestartet werden.

docker run quay.io/invidious/youtube-trusted-session-generator
&#91;INFO] internally launching GUI (X11 environment)
&#91;INFO] starting Xvfb
&#91;INFO] launching chromium instance
&#91;INFO] launching browser.
&#91;INFO] waiting 10 seconds for the page to fully load.
visitor_data: TOLLERHASHWERT1
po_token: TOLLERHASHWERT2
successfully removed temp profile /tmp/uc_3aimnef0

Jene Werte habe ich, inklusive des neuen Containers, in die Datei docker-compose.yml eingepflegt.

version:"3"
services:
 invidious:
 image: quay.io/invidious/invidious:latest
 container_name: invidious
 restart: unless-stopped
 ports:
 - "4000:3000"
 environment:
 INVIDIOUS_CONFIG: |
 db:
 dbname: invidious
 user: kemal
 password: kemal
 host: invidious-db
 port: 5432
 check_tables: true
 signature_server: inv_sig_helper:12999
 visitor_data: TOLLERHASHWERT1
 po_token: TOLLERHASHWERT2
 quality: dash

 registration_enabled: false
 top_enabled: false
 related_videos: false
 comments: &#91;"",""]
 login_enabled: false
 domain: TOLLERFQDN
 hmac_key:"BLABLABLABLABLA"

 depends_on:
 - invidious-db
 logging:
 options:
 max-size:"1G"
 max-file:"4"

 inv_sig_helper:
 image: quay.io/invidious/inv-sig-helper:latest
 init: true
 command: &#91;"--tcp","0.0.0.0:12999"]
 environment:
 - RUST_LOG=info
 restart: unless-stopped
 cap_drop:
 - ALL
 read_only: true
 security_opt:
 - no-new-privileges:true
 invidious-db:
 image: docker.io/library/postgres:14
 restart: unless-stopped
 container_name: invidious-db
 volumes:
 - ./postgresdata:/var/lib/postgresql/data
 - ./config/sql:/config/sql
 - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
 environment:
 POSTGRES_DB: invidious
 POSTGRES_USER: kemal
 POSTGRES_PASSWORD: kemal
 healthcheck:
 test: &#91;"CMD-SHELL","pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
 networks:
 - default

Weiterführende Informationen bezüglich einem Fehler mit sigv_helper und kontobasierter Authentifizierung finden sich in der Issue 4947 auf Github

Viel Spaß mit Invidious.

macOS: LibreOffice nicht aus Apples App Store installieren

18. Mai 2024 um 10:37

Einmal wollte ich faul sein und gleichzeitig einem FOSS-Projekt etwas Gutes tun. Anstelle mich immer selbst um ein Update von LibreOffice zu kümmern, wollte ich es aus dem Apple App Store installieren, via selbigen an das Projekt spenden und die Downloadzahlen im Store um eine Wertigkeit erhöhen. Automatische Updates im Hintergrund sollten hier die Wahl sein. Als gewissenhafter Verbraucher beobachte ich, die von mir installieren Pakete und deren Projekte auf Neuigkeiten und vor allem auf Sicherheitsmeldungen. Im Falle von LibreOffice gab es hier ein Sicherheitsproblem in der Version 7.6.6, welche mit der Version 7.6.7 relativ zügig behoben wurde.
Das Sicherheitsrelease ist bis heute nicht in Apples App Store angekommen.

LibreOffice-App-Seite auf einer Software-Vertriebsplattform mit einer 4.0-Sterne-Bewertung, über 4 Jahre alt, Platz 2 in den Produktivitäts-Charts, entwickelt von The Document Foundation, Größe 868,5 MB. Version 7.6.6 vom 18.5.2024

Ich habe ein Screenshot mit dem heutigen Datum, ersichtlich in der rechten oberen Ecke, erstellt. Im Screenshot kann man nachvollziehen, dass bis heute das Paket im Apple App Store nach dem Release vor 12 Tagen nicht auf den neuesten Stand gebracht wurde. Somit sind diese Sicherheitslücken immer noch vorhanden. Release Date war der 6.5.2024, heise.de berichtete nach einer Schonfrist für die Updates mit dem Artikel „LibreOffice: Verklickt – und Malware ausgeführt

Meinung

Ob hier die Herausforderung nun bei dem FOSS-Projekt selbst, oder auch bei Apple liegt, ist meiner Meinung nach mehr als vollkommen irrelevant. Im Allgemeinen verlässt sich Otto Normaluser:in darauf, dass die Pakete aus Apples App Store just in time gepflegt werden und auf dem neuesten Stand der Sicherheit bzw. der stabilen Entwicklung sind.

Es ist wie bei manchen Artikeln, welche ich lese. Solange ich in dem Thema nicht involviert bin, glaube ich den ausgiebigen Erklärungen des/der Autors:in und fühle mich informiert. Sobald ich tiefer in ein Thema eingebunden bin, stehe ich dem Artikel mehr als kritisch gegenüber, da ich die Aussagen aufgrund meines Fachwissens verifizieren kann. Hier haben schon einige Verlage mich als wohlwollenden Leser verloren, bzw. halte ich viele Autoren:innen dort für nicht mehr empfehlens- und lesenswert.

Inwieweit kann ich jetzt dem App Store trauen, bei den Projekten, welche ich nicht auf dem Radar habe?

Für mich bleibt hier FOSS weit vorne und GNU/Linux immer noch der von mir propagandierte Standard. Auch hier kommt es zu Sicherheitsvorkommnissen, aber diese wurden bis jetzt immer sehr öffentlich gehandhabt und hier gibt es bis auf die Distributionen selbst keinen Gatekeeper. Wobei sich jene offener in den Codeänderungen darstellen als z.B. ein Store eines Top500 Unternehmens. Hier kann ich die Schritte nachvollziehen.

LibreOffice und Sprachpaket unter macOS installieren

Ich kann empfehlen LibreOffice und das deutsche Sprachpaket via brew zu installieren und von nun an den Paketmanager die Updates vornehmen zu lassen. Wer dem Projekt LibreOffice etwas Gutes tun möchte, hat die Möglichkeit für das Projekt direkt auf deren Homepage zu spenden. Hier sind einmalige, monatlich, quartalsbasierte und jährliche Spenden in jeder Höhe möglich. Gezahlt kann entweder per Kreditkarte, Liberapay, Paypal, oder Banküberweisung. Das schöne ist, diese Spende lässt sich in Deutschland von der Steuer absetzen, siehe hierzu den Unterpunkt Steuerabzug.

Bei der Installation kann es dazu kommen, dass LibreOffice unter macOS nicht startet, sondern es zu einer Meldung kommt, in in welcher macOS vorschlägt LibreOffice in den Papierkorb zu verschieben. Dies ist ein bekanntes Problem und kann mit dem Zusatz –force –no-quarantine behoben werden.

brew install --cask --force --no-quarantine libreoffice libreoffice-language-pack --language=de
==> Downloading https://formulae.brew.sh/api/cask.jws.json
####################################################################################################################################################################################################################################### 100.0%
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/4769ab74236dc8d2616221590166c628c502ac50/Casks/l/libreoffice.rb
####################################################################################################################################################################################################################################### 100.0%
==> Downloading 
####################################################################################################################################################################################################################################### 100.0%####################################################################################################################################################################################################################################### 100.0%
==> Installing Cask libreoffice
Warning: macOS's Gatekeeper has been disabled for this Cask
==> Moving App 'LibreOffice.app' to '/Applications/LibreOffice.app'
==> Linking Binary 'regview' to '/opt/homebrew/bin/regview'
==> Linking Binary 'senddoc' to '/opt/homebrew/bin/senddoc'
==> Linking Binary 'uno' to '/opt/homebrew/bin/uno'
==> Linking Binary 'unoinfo' to '/opt/homebrew/bin/unoinfo'
==> Linking Binary 'uri-encode' to '/opt/homebrew/bin/uri-encode'
==> Linking Binary 'xpdfimport' to '/opt/homebrew/bin/xpdfimport'
==> Linking Binary 'soffice.wrapper.sh' to '/opt/homebrew/bin/soffice'
==> Linking Binary 'unopkg' to '/opt/homebrew/bin/unopkg'
==> Linking Binary 'gengal' to '/opt/homebrew/bin/gengal'
🍺 libreoffice was successfully installed!
==> Caveats
libreoffice-language-pack cannot be upgraded, use brew reinstall --cask libreoffice-language-pack instead
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/4769ab74236dc8d2616221590166c628c502ac50/Casks/l/libreoffice-language-pack.rb
####################################################################################################################################################################################################################################### 100.0%
==> Downloading 
####################################################################################################################################################################################################################################### 100.0%####################################################################################################################################################################################################################################### 100.0%
All dependencies satisfied.
==> Installing Cask libreoffice-language-pack
Warning: macOS's Gatekeeper has been disabled for this Cask
==> Running installer script '/opt/homebrew/Caskroom/libreoffice-language-pack/24.2.3/SilentInstall.sh'
Password:
Silent installation has started, you didn't need to use the .app
Add language pack support for /Applications/LibreOffice.app
🍺 libreoffice-language-pack was successfully installed!
==> Caveats
==> libreoffice-language-pack
libreoffice-language-pack cannot be upgraded, use brew reinstall --cask libreoffice-language-pack instead
➜ ~ 

Ab jetzt wird LibreOffice automatisch von brew auf den neusten Stand gehalten.
Homepage des Paketmanagers brew und eine kleine deutsche Einführung und Anleitung von Thomas Krampe

Neues Theme in WordPress neue Darkmode CSS

23. Februar 2024 um 11:09

Im Frontend ändert sich mein Blog nur noch marginal. Jedoch musste ich mich aufgrund von Änderungen im Sourcecode von WordPress für ein anderes Theme entscheiden. Zuvor hatte ich ein Theme von einem deutschen bekannten Entwicklerpaar gekauft, aber leider endet hier der Support doch recht schnell. Auch Bugfixes, welche ich einmal auf Github eingereicht hatte, wurden erst nach zwei Jahren (🦉really?!?!) eingepflegt. Es ist eher ein „Aus den Augen, aus dem Sinn“-Coding und ich würde hier kein Geld mehr investieren.

Jedoch habe ich mich nun für ein weit genutztes Projekt entschieden. Der Wechsel auf ein neues Theme bringt auch Änderungen in den Klassen mit sich. Dementsprechend musste ich jetzt auch den Code für den Darkmode anpassen. Eine einfache Funktion für die Anpassung der Farben im Darkmode fehlt ungünstigerweise in vielen Themes.

Neben den Klassen wurde noch die Helligkeit der Bilder angepasst. Eine Helligkeit von 70 % empfand ich als augenschonend
Mit der Farbe der Einbettung des Codes im Darkmode bin ich noch nicht so richtig zufrieden 🤷

/* Dark */
@media (prefers-color-scheme: dark) {
&nbsp; &nbsp;body {
&nbsp; &nbsp; &nbsp; &nbsp;background: #23282d;
&nbsp; &nbsp; &nbsp; &nbsp;color: #eee;
&nbsp; }
​
&nbsp; &nbsp;.inside-page-header,
&nbsp; &nbsp;.one-container .container,
&nbsp; &nbsp;.separate-containers .comments-area,
&nbsp; &nbsp;.separate-containers .inside-article,
&nbsp; &nbsp;.separate-containers .page-header,
&nbsp; &nbsp;.separate-containers .paging-navigation {
&nbsp; &nbsp; &nbsp; &nbsp;background-color: #23282d;
​
&nbsp; }
&nbsp; &nbsp;#page,
&nbsp; &nbsp;.footer-widgets,
&nbsp; &nbsp;.site-header,
&nbsp; &nbsp;content {
&nbsp; &nbsp; &nbsp; &nbsp;background: #23282d;
&nbsp; &nbsp; &nbsp; &nbsp;color: #eee;
&nbsp; }
&nbsp; &nbsp;.main-navigation,
&nbsp; &nbsp;.main-navigation .main-nav ul li a,
&nbsp; &nbsp;.main-navigation .menu-bar-items,
&nbsp; &nbsp;.main-navigation .menu-toggle,
&nbsp; &nbsp;.main-navigation ul ul {
&nbsp; &nbsp; &nbsp; &nbsp;background: #23282d;
&nbsp; &nbsp; &nbsp; &nbsp;color: #cca26a;
&nbsp; }
&nbsp; &nbsp;.main-navigation .main-nav ul li:not(&#91;class*="current-menu-"]):hover > a,
&nbsp; &nbsp;.main-navigation .main-nav ul li:not(&#91;class*="current-menu-"]):focus > a,
&nbsp; &nbsp;.main-navigation .main-nav ul li.sfHover:not(&#91;class*="current-menu-"]) > a,
&nbsp; &nbsp;.main-navigation .menu-bar-item:hover > a,
&nbsp; &nbsp;.main-navigation .menu-bar-item.sfHover > a {
&nbsp; &nbsp; &nbsp; &nbsp;color: white;
&nbsp; &nbsp; &nbsp; &nbsp;background-color: #23282d;
&nbsp; }
​
&nbsp; &nbsp;.main-navigation .main-nav ul ul li a {
&nbsp; &nbsp; &nbsp; &nbsp;color: grey;
&nbsp; }
&nbsp; &nbsp;.main-navigation .main-nav ul ul li&#91;class*="current-menu-"] > a {
&nbsp; &nbsp; &nbsp; &nbsp;color: #efefef;
&nbsp; &nbsp; &nbsp; &nbsp;background-color: grey;
​
&nbsp; }
&nbsp; &nbsp;.main-navigation .main-nav ul li&#91;class*="current-menu-"] > a {
&nbsp; &nbsp; &nbsp; &nbsp;color: #efefef;
&nbsp; &nbsp; &nbsp; &nbsp;background-color: #23282d;
&nbsp; }
&nbsp; &nbsp;.navigation-search input&#91;type="search"],
&nbsp; &nbsp;.navigation-search input&#91;type="search"]:active,
&nbsp; &nbsp;.navigation-search input&#91;type="search"]:focus,
&nbsp; &nbsp;.main-navigation .main-nav ul li.search-item.active > a,
&nbsp; &nbsp;.main-navigation .menu-bar-items .search-item.active > a {
&nbsp; &nbsp; &nbsp; &nbsp;color: black;
&nbsp; &nbsp; &nbsp; &nbsp;background-color: lightgrey;
&nbsp; }
&nbsp; &nbsp;#reply-title,
&nbsp; &nbsp;.comment-form-comment,
&nbsp; &nbsp;.comment-notes,
&nbsp; &nbsp;.entry-title,
&nbsp; &nbsp;.textwidget,
&nbsp; &nbsp;.widget-title,
&nbsp; &nbsp;h1,
&nbsp; &nbsp;h2,
&nbsp; &nbsp;h3,
&nbsp; &nbsp;h4,
&nbsp; &nbsp;h5,
&nbsp; &nbsp;h6 .entry-header a {
&nbsp; &nbsp; &nbsp; &nbsp;color: #cca26a !important;
&nbsp; }
&nbsp; &nbsp;.comment-author-link {
&nbsp; &nbsp; &nbsp; &nbsp;color: #a5862a;
&nbsp; }
&nbsp; &nbsp;pre.wp-block-code {
&nbsp; &nbsp; &nbsp; &nbsp;background-color: #c4c4ad;
&nbsp; }
&nbsp; &nbsp;#comments p {
&nbsp; &nbsp; &nbsp; &nbsp;color: #cca26a !important;
&nbsp; }
&nbsp; &nbsp;form#commentform textarea#comment {
&nbsp; &nbsp; &nbsp; &nbsp;background: #d0cfcf;
&nbsp; }
&nbsp; &nbsp;Element {}
&nbsp; &nbsp;form#commentform input#author,
&nbsp; &nbsp;form#commentform input#email,
&nbsp; &nbsp;form#commentform input#url {
&nbsp; &nbsp; &nbsp; &nbsp;background: #6c6c6c;
&nbsp; }
&nbsp; &nbsp;@media (prefers-color-scheme: dark) {
&nbsp; &nbsp; &nbsp; &nbsp;body {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: #23282d;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: #eee;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;#page,
&nbsp; &nbsp; &nbsp; &nbsp;content {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: #23282d;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: #eee;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;#reply-title,
&nbsp; &nbsp; &nbsp; &nbsp;.comment-form-comment,
&nbsp; &nbsp; &nbsp; &nbsp;.comment-notes,
&nbsp; &nbsp; &nbsp; &nbsp;.entry-header a,
&nbsp; &nbsp; &nbsp; &nbsp;.entry-title,
&nbsp; &nbsp; &nbsp; &nbsp;.textwidget,
&nbsp; &nbsp; &nbsp; &nbsp;.widget-title {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: #cca26a !important;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;.comment-author-link {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: #a5862a;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;pre.wp-block-code {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background-color: #a4a46e;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;#comments p {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;color: #cca26a !important;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;form#commentform textarea#comment {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: #d0cfcf;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;Element {}
&nbsp; &nbsp; &nbsp; &nbsp;form#commentform input#author,
&nbsp; &nbsp; &nbsp; &nbsp;form#commentform input#email,
&nbsp; &nbsp; &nbsp; &nbsp;form#commentform input#url {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background: #6c6c6c;
&nbsp; &nbsp; &nbsp; }
​
&nbsp; &nbsp; &nbsp; &nbsp;.scrim,
&nbsp; &nbsp; &nbsp; &nbsp;wp-lightbox-overlay {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;background-color: black !important;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp;.attachment-full.size-full.wp-post-image,
&nbsp; &nbsp; &nbsp; &nbsp;.wp-block-image img {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;filter: brightness(70%)
&nbsp; &nbsp; &nbsp; }
​
❌