Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

Linux Mint 20 – Praxiswissen für Ein- und Umsteiger

12. April 2022 um 04:00

Das Buch „Linux Mint 20 – Praxiswissen für Ein- und Umsteiger von Christoph Troche ist in der 1. Auflage 2020 im mitp-Verlag erschienen. Es umfasst 160 Seiten und ist genau das Nachschlagewerk auf das Ein- und Umsteiger gewartet haben, die sich für Linux Mint entschieden haben bzw. entscheiden werden. Diesem Buch liegt eine DVD-ROM mit dem besprochenen Betriebssystem bei.

Es handelt sich mittlerweile um das dritte Buch von Christoph Troche, welches ich bislang gelesen habe. Auch dieses Mal bin ich vom Inhalt begeistert. Es wird i.d.R. kurz und knapp alles Wichtige erklärt und zum Teil an Beispielen beschrieben; ein Praxisbuch, wie es der Autor selbst bezeichnet.

Einleitend werden Begrifflichkeiten und Unterschiede zu den diversen Mint-Versionen erläutert. Es werden Tipps gegeben, welche Version für welches System die geeignetere Variante bietet.

Wer keine Möglichkeit hat, die beigelegte DVD zu nutzen, aber gleich die derzeit aktuelle Version 20.3 installieren möchte, dem wird gezeigt, wo sich diese frei beziehen bzw. downloaden lässt. Ist dies geschehen erstellt man sich hier einen Live-Stick mit dem aktuellen Linux Mint. So hat man nun die Möglichkeit diese erst einmal ausgiebig (ohne Installation) zu testen. Natürlich kann diese auch gleich auf dem PC oder Notebook installiert werden.

Das Buch beantwortet u.a. wichtige Fragen, wie man sinnvoll die HDD oder SSD partitioniert, welches Dateisystem einzusetzen ist oder welche Größe der SWAP-Partition gewählt werden sollte.

Nach der Einrichtung des Systems geht der Autor dann auf die Bedürfnisse des Anwenders ein und zeigt bildhaft, wie der Desktop mit seinen vielen Einstellmöglichkeiten angepasst werden kann.

Ein tolles Kapitel ist: „Linux-Alternativen bekannter Windows-Programme“. Hier bekommt der Mint-Neuling genau die Fragen beantwortet, die ihn ganz am Anfang beschäftigen. Und zwar, wenn dieser bisher ein spezielles Windows-Programm nutzt, welche Alternativen es hierfür für Linux gibt. Es werden entsprechende Programme vorgestellt. Weiterhin werden Möglichkeiten aufgezeigt, wie man die eine oder andere Windows-Anwendung mit einem Emulator auf dem Linux-System installieren kann. Wer jedoch nicht ganz auf das Betriebssystem aus Redmond verzichten mag, dem werden hier Lösungen angeboten, z.B. ein Dualboot einzurichten oder die Verwendung des bisherigen Betriebssystems in einer virtuellen Maschine.

Das letzte Kapitel geht dann auf eines der wichtigsten Themen ein, die Sicherheit. Es wird erläutert, was Linux anders macht bzw. von bekannten Betriebssystemen abhebt. Linux ist aufgrund seines Aufbaus weniger angreifbar. Auch das Thema Datensicherung und Datenwiederherstellung wird anhand der bordeigenen Mittel ausreichend im Buch besprochen.

Das Buch gliedert sich in folgende Kapitel:

  • Linux Mint herunterladen und ein Startmedium erstellen
  • Die Installation
  • Linux Mint einrichten
  • Was finde ich wo? Der Desktop
  • Windows-Programme mit Linux nutzen
  • Linux-Alternativen bekannter Windows-Programme
  • Linux Mint in der Gruppe
  • Safety first – Sicherheit im System
  • Der Linux-Verzeichnisbaum – Eine etwas andere Logik

Besonderheiten

  • CD – Linux Mint 20 + eBook

Leseproben und Downloads

Fazit

„Linux Mint 20 – Praxiswissen für Ein- und Umsteiger“ ist ein empfehlenswertes Buch für Ein- und Umsteiger, welche sich auf das Abenteuer Linux Mint einlassen. Der Leser merkt sofort, dass Christoph Troche nicht nur über Linux Mint schreibt, sondern dieses OS tatsächlich einsetzt.

Besonders hervorzuheben sind die dargestellten Alternativen zu bekannten Windows-Anwendungen. Dies wird dem interessierten Nutzer den finalen Umstieg erleichtern.

Ganz zum Schluss kommt bekanntlich das Beste! In diesem Fall erhält der Leser ein Geschenk des Verlags, das Exemplar „Linux Mint 20 – Praxiswissen für Ein- und Umsteiger“ als eBook.

VirtualBox auf Ubuntu 20.04

12. März 2022 um 15:38

Im folgenden Artikel möchte ich zeigen, wie man VirtualBox 6.1 von Oracle auf einem Ubuntu 20.04 LTS installiert.

VirtualBox ist eine leistungsstarke Virtualisierungssoftware, welche es erlaubt, Betriebssysteme wie BSD, MacOS, Linux und Windows zu installieren. So kann man z.B. auf einem Linux-System ein Windows nach erfolgreicher Installation in der VirtualBox wie ein separates Programm ausführen.

VirtualBox 6.1

Paketquelle hinzufügen

Zuerst wird der Signatur-Schlüssel herunter geladen.

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Danach fügt man die Paketquelle hinzu.

echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian focal contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

Installation

Jetzt werden die Paketquellen aktualisiert und das System auf den aktuellen Stand gebracht.

sudo apt update && sudo apt upgrade -y

Ist dies erledigt, wird die VirtualBox in Version 6.1 installiert.

sudo apt install virtualbox-6.1

Falls SecureBoot aktiviert ist, muss ein Passwort mit 8-16 Zeichen vergeben werden. Nach dem Neustart des Systems kann über die Abfrage des Module Service Status der VirtualBox geprüft werden, ob das System korrekt arbeitet.

sudo systemctl status vboxdrv

Hier sollten keine Fehlermeldungen zu lesen sein. Falls es nicht wie im angehängten Screenshot aussieht, sollte man sich näher mit dem UEFI des PCs oder Notebooks auseinandersetzen. Führt das zu keiner Lösung, kann ein störungsfreier Betrieb i.d.R. durch die Deaktivierung des SecureBoot herbeigeführt werden. Das geschieht natürlich auf eigene Gefahr!

Virtual Linux kernel module

Viel Spaß!

Standort in Flightradar festlegen

28. Januar 2022 um 16:58

Vor einiger Zeit hatte ich schon einmal einen Artikel zum Thema Luftraumüberwachung mit Flightradar24  geschrieben. An der eigentlichen Vorgehensweise der Installation und der einzusetzenden Hardware hat sich nichts gravierend geändert.

Der Befehl zur Installation des entsprechenden Pakets setzt jetzt allerdings SSL voraus.

sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

Ich habe mich allerdings inzwischen für einen stärkeren Empfänger der Firma Nooelec mit RTL2832U/R820T2-Chip entschieden, was ein wenig mehr Reichweite bringt.

Standort sichtbar machen

Heute möchte ich zeigen, wie man auf der lokalen Karte den Standort der Station als Punkt markiert und Radien im Abstand von 50 NM um die Station einzeichnet (siehe Screenshot).

lokale Darstellung der empfangenen Flugzeuge

Hierfür ist es nötig die Konfigurationsdatei /etc/dump1090-mutability/config.js entsprechend anzupassen. Dazu werden die Einträge wie folgt geändert:

alte Konfiguration

// -- Map settings ----------------------------------------
...
// Default center of the map.
DefaultCenterLat = 45.0;
DefaultCenterLon = 9.0;
...
SiteShow = false; // true to show a center marker
SiteLat = 45.0; // position of the marker
SiteLon = 9.0;
SiteName = "My Radar Site"; // tooltip of the marker
...
// -- Marker settings -------------------------------------
...
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
// In nautical miles or km (depending settings value 'Metric')
SiteCirclesDistances = new Array(100,150,200);
...

Unter DefaultCenterLat und DefaultCenterLon trägt man nun die Koordinaten der Empfangsstation ein, um die Karte bei Aufruf auf den entsprechenden Standort zu zentrieren. Die gleiche Vorgehensweise erfolgt unter SiteShow. Hierbei muss die Vorgabe jedoch noch von false auf true geändert werden. Die Radien legt man unter SiteCircles fest. In meinem Fall 50, 100 und 150 NM.

neue Konfiguration

// -- Map settings ----------------------------------------
...
// Default center of the map.
DefaultCenterLat = 51.44871;
DefaultCenterLon = 11.98762;
...
SiteShow = true; // true to show a center marker
SiteLat = 51.44871; // position of the marker
SiteLon = 11.98762;
SiteName = "My Radar Site"; // tooltip of the marker
...
// -- Marker settings -------------------------------------
...
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
// In nautical miles or km (depending settings value 'Metric')
SiteCirclesDistances = new Array(50,100,150);
...

Viel Spaß!

XEP-0156 reparieren

06. Januar 2022 um 10:44

Mein XMPP-Server ist vor einiger Zeit mal wieder durch den Complience-Test gefallen, da das Modul XEP-0156 schlapp gemacht hatte. Nun konnte ich die freien Tage über den Jahreswechsel nutzen und den Fehler fixen. Damit die Konfiguration nicht verloren geht, möchte ich diese hier kurz festhalten.

Zur Ausstattung

Mein XMPP-Server läuft unter Prosody 0.11.10 auf Debian 11 Bullseye. Als Webserver wird Apache2 eingesetzt.

Konfiguration

So sieht der VirtualHost aus:

<VirtualHost *:80>

        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

        ServerAdmin info@intux.de
        DocumentRoot /var/www/html/intux

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
	CustomLog /var/log/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	ServerName intux.de
	ServerAlias www.intux.de
	RewriteCond %{SERVER_NAME} =intux.de [OR]
	RewriteCond %{SERVER_NAME} =www.intux.de
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>

	Protocols h2 h2c http/1.1

<Location /http-bind>
        Order allow,deny
        Allow from all
</Location>

<Location ~ "/\.well-known/host-meta(\.json)?">
    Header set Access-Control-Allow-Origin "*"
</Location>

        RewriteEngine On
	RewriteRule ^/http-bind$ http://intux.de:5280/http-bind [P,L]

	ServerAdmin info@intux.de
        DocumentRoot /var/www/html/intux
        Header always set Strict-Transport-Security "max-age=31536000"
        Header set Access-Control-Allow-Origin "*"
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        CustomLog /var/log/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	Include /etc/letsencrypt/options-ssl-apache.conf
	ServerName intux.de
	ServerAlias www.intux.de

	SSLCertificateFile /etc/letsencrypt/live/intux.de-0003/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/intux.de-0003/privkey.pem
</VirtualHost>
</IfModule>

<IfModule mod_proxy.c>
    <IfModule mod_proxy_wstunnel.c>
    ProxyTimeout 900
    <Location "/xmpp-websocket">
        ProxyPreserveHost On
        ProxyPass "ws://localhost:5280/xmpp-websocket"
    </Location>
    </IfModule>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Hier die host-meta:

<?xml version='1.0' encoding='utf-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
  <Link rel="urn:xmpp:alt-connections:xbosh"
        href="https://intux.de/http-bind" />
  <Link rel="urn:xmpp:alt-connections:websocket"
        href="wss://intux.de:443/xmpp-websocket" />
</XRD>

Die Konfiguration der prosody.cfg.lua:

pidfile = "/var/run/prosody/prosody.pid"

storage = "sql"

sql = {
    driver = "MySQL";
    database = "prosody";
    host = "localhost";
    username = "bn";
    password = "pw";
}

plugin_paths = { "/usr/lib/prosody/prosody-modules" }

admins = {"intux@intux.de" }
modules_enabled = {
	"roster";
	"saslauth";
 	"tls";
	"dialback";
	"disco";
	"private";
	"blocklist";
	"version";
	"uptime";
	"time";
	"ping";
	"posix";
	"pep";
	"register";
	"admin_adhoc";
	"motd";
	"welcome";
	"proxy65";
	"watchregistrations";
	"register_web";
	"admin_web";
	"http_upload_external";
	"mam";
	"csi";
	"carbons";
	"smacks";
	"lastlog";
	"cloud_notify";
	"omemo_all_access";
	"server_contact_info";
	"profile";
	"vcard_legacy";
	"pep_vcard_avatar";
	"websocket";
	"bookmarks";
	"bosh";
	"http_altconnect";
	"turncredentials";
}

log = {
 debug = "/var/log/prosody/prosody.log";
 error = "/var/log/prosody/prosody.err";
}

legacy_ssl_ports = { 5223 }

default_archive_policy = false;
archive_expires_after = "1m";

c2s_require_encryption = true
s2s_require_encryption = true
s2s_secure_auth = true
s2s_secure_domains = { "trashserver.net", "jabber.de", "jabber.org", "xmpp.org" }
s2s_insecure_domains = {}

http_upload_external_base_url = "https://upload.intux.de/upload/"
http_upload_external_secret = "prosody2016."
http_upload_external_file_size_limit = 10000000

proxy65_ports = { 5212 }

authentication = "internal_hashed"

turncredentials_host = "cloud.intux.de"
turncredentials_secret = "18c5a842b57336a16c97255c4fc1aeb5336e3b6a9254b6bd148d789d8a740779"
turncredentials_port = 5349

consider_websocket_secure = true;
cross_domain_websocket = true;
consider_bosh_secure = true;
cross_domain_bosh = true;

allow_registration = true
min_seconds_between_registrations = 300
registration_blacklist = { "83.218.198.86", "109.185.243.100", "93.114.0.93", "93.114.11.136", "92.114.216.80" }

ssl = {
	protocol = "tlsv1_2";
        key = "/etc/prosody/certs/privkey.pem";
        certificate = "/etc/prosody/certs/fullchain.pem";

        dhparam = "/etc/prosody/certs/dh-4096.pem";

        ciphers = "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128";

        options = { "no_sslv2", "no_sslv3", "no_ticket", "no_compression", "cipher_server_preference", "single_dh_use", "single_ecdh_use" }

}

contact_info = {
  abuse = { "mailto:abuse@intux.de", "xmpp:intux@intux.de" };
  admin = { "mailto:admin@intux.de", "xmpp:intux@intux.de" };
  feedback = { "mailto:admin@intux.de", "xmpp:intux@intux.de" };
  sales = { "mailto:admin@intux.de", "xmpp:intux@intux.de" };
  security = { "mailto:admin@intux.de", "xmpp:intux@intux.de" };
  support = { "xmpp:admin@intux.de", "xmpp:intux@intux.de" };
}

VirtualHost "intux.de"

Component "proxy.intux.de" "proxy65"

	proxy65_acl = { "intux.de" }

Component "conference.intux.de" "muc"
        name = "intux.de Chatrooms"
        restrict_room_creation = false
        max_history_messages = 500
        modules_enabled = {
                "mam_muc",
		"vcard_muc",
        }
        muc_log_by_default = false

Compliance status for intux.de 100%. 😀

NextcloudPi angesehen

04. Januar 2022 um 17:18

Wie schön wäre es doch, seine Daten sicher zu Hause aufzubewahren, sie immer und überall verfügbar zu haben und diese nicht an zweifelhafte Cloud-Dienstleister auszulagern. Geht das? Na klar, mit der Nextcloud!

Hierzu benötigt man nicht viel. Ein Raspberry Pi mit Internetanschluss und etwas Interesse sich mit dieser interessanten Materie zu beschäftigen reicht völlig aus. Ich bevorzuge generell die klassische Installation der Cloud-Software auf einem LAMP-Server.

Einen etwas einfacheren Weg zur eigenen Cloud geht OWN YOUR BITS. Die Entwickler stellen komplette Images zur Verfügung, um die Cloud ohne Linux-Erfahrung in den eigenen vier Wänden zu realisieren.

Installation

Ich habe mir nun einmal NextcloudPi für den Raspberry Pi etwas genauer angesehen. Das Image hierzu ist 4,3GB groß und kann direkt von der Webseite kostenlos heruntergeladen und eingesetzt werden. Dabei muss man natürlich aufpassen, dass das richtige Download-Paket ausgewählt wird. Ist dies geschehen, wird das Image entpackt und z.B. mit dem Raspberry Pi Imager auf eine mindestens 16GB-große MicroSD geschrieben.

Der erste Kontakt

Nachdem die MicroSD in den Raspberry Pi eingelegt und dieser gestartet wurde (ohne Bildschirm, Tastatur und Maus), erreicht man NextcloudPi über die lokale Adresse https://nextcloudpi.local im heimischen Netzwerk. Voraussetzung ist jedoch der vorherige Anschluss des Einplatinencomputers über LAN-Kabel an den Router.

Wenn alles funktioniert, wird man nach dem Booten von folgendem Bildschirm begrüßt. 

NextcloudPi – Erstkontakt

Hier bekommt man Benutzernamen und Passwörter für das NextcloudPi Webinterface sowie die Nextcloud. Nach der Aktivierung gelangt man nun in den NextcloudPi-Maschinenraum. Dazu wird das erste Passwort benötigt, welches später auch geändert werden kann. Weiter geht es mit einem Installations-Wizard, welcher dabei hilft die Cloud mit einer Festplatte oder SSD über USB zu erweitern. Außerdem hat man nun die Möglichkeit das System über einen DynDNS-Anbieter von außen über das Internet erreichbar zu machen.

NextcloudPi – Installations-Wizard

Im Webinterface lassen sich serverseitig einige Einstellungen erledigen, ohne jedoch wirklich selbst Serverkenntnisse besitzen zu müssen. Das birgt allerdings die Gefahr, dass das System ungewollt beschädigt werden kann, was mir tatsächlich einige Male gelungen ist. Um nun in solch einer Situation zur Reparatur selbst Hand anzulegen, muss an den Raspberry Pi ein Monitor und eine Tastatur angeschlossen werden, damit auf den eigentlichen Server zugegriffen werden kann. Dies geht nun direkt auf dem Raspberry Pi oder nach SSH-Aktivierung von einem anderen Computer. Im letzteren Fall kann der RasPi wieder von den zuvor angeschlossenen Peripheriegeräten getrennt werden. Ohne ein wenig Linux-Erfahrung ist man aber hier aufgeschmissen.

Die Nextcloud

Die Nextcloud erreicht man nach erfolgreicher Beendung der Installationsroutine über https://nextcloudpi oder die vom Router für den Raspberry Pi vergebene IP-Adresse. In meinem Fall: https://192.168.178.32. Falls die DynDNS-Adresse zu diesem Zeitpunk schon eingerichtet und in die config.php über das Webinterface aufgenommen wurde, wäre die Nextcloud-Instanz auch über die vergebene Web-Adresse erreichbar, vorausgesetzt die Ports 80 und 443 sind am Router auf Port Forwarding gesetzt.  Das Login erfolgt nun über das am Anfang vergebene zweite Passwort. Begrüßt wird der neue Nutzer nun erstmalig von der eigenen Cloud-Instanz. Ratsam wäre es hier, einen neuen Benutzer als Administrator anzulegen und den User ncp später zu löschen.

Nextcloud - Login

Auch in der Nextcloud sind Änderungen am System mit äußerster Vorsicht vorzunehmen! Die Erstellung eines Backups ist aus meiner Sicht vorher ebenfalls unverzichtbar. So wurde ich z.B. nach einem App-Upgrade komplett ausgesperrt, da die Cloud dauerhaft im Wartungsmodus verharrte.

Auch anzumerken ist, dass die verwendete Nextcloud-Version nicht up to date ist, wie auch das auf Debian basierende Raspberry Pi OS. Das ist aber nicht weiter schlimm, da diese Versionen eine Langzeitunterstützung seitens der Entwickler erfahren. Die aktuelle Nextcloud-Version ist die 23. Auf NextcloudPi läuft Version 21 und Raspberry Pi OS 10, aktuell v11.

Nextcloud – Fehlermeldungen

Wie man oben im Bild sehen kann, kommt es noch zu diversen Fehlermeldungen, die ebenfalls ohne Serverkenntnisse nicht beseitigt werden können. Es müssen Pakete nachinstalliert werden, bzw. sind Eingriffe in die Konfigurationsdatei der Nextcloud-Instanz notwendig.

Fazit

NextcloudPi ist mit Sicherheit ein interessantes Projekt, welches es dem User erlaubt, schnell eine eigene Nextcloud-Instanz auf dem Einplatinencomputer Raspberry Pi einzurichten und in Betrieb zu nehmen. Die Erreichbarkeit aus dem Internet wird bei Bedarf über eine DynDNS-Adresse realisiert. Wer nicht die neueste Version der Nextcloud einsetzen muss und bereit zu Abstrichen ist, für den ist das System durchaus empfehlenswert.

Meinen Zugang zur Cloud konnte ich problemlos via 2FA mit einem YubiKey absichern.

Leider fehlt ein Turn-Server im System, welcher es quasi unmöglich macht Videokonferenzen via nachinstallierter App Talk zu führen. Ein Turn-Server kann aber im Nachhinein auf dem Raspberry Pi noch nachinstalliert werden. Auch hierzu sind Linux-Kenntnisse von Vorteil.

Ein guter Pomodoro Timer

28. Dezember 2021 um 18:30

Seit Längerem suche ich nach einem guten Pomodoro Timer für Debian/Ubuntu. Die Auswahl hierfür ist nicht gerade groß. Außerdem bin ich vielleicht in diesem Punkt auch etwas zu anspruchsvoll, was die Suche deutlich erschwert hat.

Der perfekte Timer sollte in meiner GNOME-Shell oben im Tray übersichtlich Platz finden und auch eine Stoppuhr-Funktion beinhalten. So bin ich unter Debian 10 auf die GNOME-Extension Time ++ gestoßen, die bis zum Wechsel auf Debian 11 Bullseye auch sehr gut ihren Dienst verrichtete.

Mit der vermehrten Verwendung von Ubuntu auf neueren Rechnern fiel mir jedoch auf, dass sich die Erweiterung zwar installieren ließ, jedoch die App die Einstellungen blockierte und somit für mich quasi unbrauchbar war. Den Text blendete ich bis dahin gern aus, was nun nicht mehr funktionierte.

Time ++ Symbol und Text
Einstellungen nicht verfügbar

Bei der Suche nach einer Lösung und dem damit verbundenen Experimentieren, habe ich nun einen Weg gefunden, der für mich auf Debian 11 und Ubuntu 20.04 LTS funktionierten sollte.

Hierbei lädt man einfach die letzte Version des Entwicklers herunter, entpackt die Zip-Datei und legt das Verzeichnis „timepp-master“ zusätzlich in /home/BENUTZERNAME/.local/share/gnome-shell/extensions/ ab. Dann wird die Extension noch einmal kurz aus und wieder an geschaltet.

Timer ++ Symbol
Time ++ Einstellungen

Nun steht dem konzentrierten Arbeiten nichts mehr im Weg.

❌
❌