{"id":137,"date":"2026-10-05T17:02:01","date_gmt":"2026-10-05T15:02:01","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?page_id=137"},"modified":"2026-11-14T10:42:24","modified_gmt":"2026-11-14T09:42:24","slug":"projects","status":"publish","type":"page","link":"https:\/\/linuxundich.de\/en\/projects\/","title":{"rendered":"Projects"},"content":{"rendered":"\n<style>\n\/* Projektseiten (linuxundich.de\/projekte\/) \u2013 Entwurfsstil.\n   Liegt als synchronisiertes Muster \u201eProjektseiten: Stil\u201c in WordPress und\n   wird von jeder Projektseite eingebunden. Wandert vor der Ver\u00f6ffentlichung\n   ins lui-theme. Farben nur \u00fcber die Theme-Variablen, damit der Dunkelmodus\n   mitzieht. *\/\n\n\/* Seitenleiste und Vorlagen-Titel ausblenden, die Seite bringt eigene mit *\/\n.lui-two-col:has(.lui-pj) > .lui-sidebar-col { display: none; }\n.lui-two-col:has(.lui-pj) > .lui-article-col { flex-basis: 100%; }\n.lui-article-col:has(.lui-pj) .lui-article-header { display: none; }\n\n.lui-pj {\n\t--pj-accent: var(--wp--preset--color--accent, #ff6600);\n\t--pj-accent-dark: var(--wp--preset--color--accent-dark, #cc5200);\n\t--pj-ink: var(--wp--preset--color--contrast, #1a1a1a);\n\t--pj-muted: var(--wp--preset--color--muted, #63625f);\n\t--pj-line: var(--wp--preset--color--line, #e3e1dd);\n\t--pj-bg: var(--wp--preset--color--base, #fff);\n\t--pj-bg2: var(--wp--preset--color--base-2, #f5f4f2);\n\t--pj-mono: \"JetBrains Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;\n\t--pj-display: \"Space Grotesk\", \"Inter\", system-ui, sans-serif;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2.75rem;\n}\n.lui-pj > * { margin-block: 0 !important; }\n.lui-pj h1, .lui-pj h2, .lui-pj h3 { text-wrap: balance; }\n.lui-pj section, .lui-pj .lui-pj-sec { display: flex; flex-direction: column; gap: .9rem; }\n.lui-pj .lui-pj-sec > * { margin-block: 0; }\n.lui-pj .lui-pj-sec > h2 { font-size: 1.5rem; }\n\n\/* Kleine Zeilen *\/\n.lui-pj .lui-pj-path { font: 500 .8rem var(--pj-mono); color: var(--pj-muted); }\n.lui-pj .lui-pj-meta { font: 500 .8rem var(--pj-mono); color: var(--pj-muted); margin-top: .35rem; }\n.lui-pj .lui-pj-flag { font: 600 .74rem var(--pj-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--pj-accent-dark); }\n.lui-pj .lui-pj-lead { font-size: 1.1rem; }\n\/* Eine Textbreite f\u00fcr allen Flie\u00dftext, damit Abs\u00e4tze nicht mal schmal, mal seitenbreit laufen *\/\n.lui-pj > p, .lui-pj .lui-pj-sec > p, .lui-pj .wp-block-column > p, .lui-pj .lui-pj-box > p { max-width: 44rem; }\n.lui-pj .lui-pj-note { font-size: .85rem; color: var(--pj-muted); border-left: 3px solid var(--pj-line); padding-left: .8rem; }\n.lui-pj .lui-pj-chips { font: 500 .78rem var(--pj-mono); color: var(--pj-muted); }\n.lui-pj .lui-pj-chips mark, .lui-pj .lui-pj-chip {\n\tdisplay: inline-block; max-width: 100%; margin: 0 .25rem .3rem 0; line-height: 1.5;\n\tbackground: var(--pj-bg2); color: var(--pj-ink); padding: .1em .55em; border-radius: 4px;\n}\n\n\/* Kopf: Icon + Name *\/\n.lui-pj .lui-pj-head { display: flex; gap: 1.4rem; align-items: center; }\n.lui-pj .lui-pj-head > .wp-block-group { margin: 0; min-width: 0; }\n.lui-pj .lui-pj-head h1 { font-size: clamp(2rem, 4.5vw, 2.8rem); margin: 0; letter-spacing: -.02em; }\n.lui-pj .lui-pj-head p { margin: .3rem 0 0; }\n.lui-pj .lui-pj-icon { flex: none; margin: 0; width: 96px; }\n.lui-pj .lui-pj-icon img { width: 96px; height: 96px; object-fit: contain; }\n@media (max-width: 560px) {\n\t.lui-pj .lui-pj-head { flex-direction: column; align-items: flex-start; gap: .8rem; }\n\t.lui-pj .lui-pj-icon, .lui-pj .lui-pj-icon img { width: 64px; height: 64px; }\n}\n\n\/* \u00dcbersicht: Kopf *\/\n.lui-pj .lui-pj-title { font-size: clamp(2.2rem, 5vw, 3.3rem); letter-spacing: -.025em; margin: 0; }\n.lui-pj .lui-pj-title span { color: var(--pj-accent); }\n\n\/* Bezugsquellen *\/\n.lui-pj .lui-get { gap: .55rem; }\n.lui-pj .lui-get .wp-block-button__link {\n\tdisplay: inline-flex; align-items: center; gap: .55rem;\n\tbackground: var(--pj-bg); color: var(--pj-ink); border: 1px solid var(--pj-line);\n\tborder-radius: 8px; padding: .55rem .9rem .55rem .7rem;\n\tfont: 600 .9rem\/1.1 var(--pj-display); text-decoration: none;\n}\n.lui-pj .lui-get .wp-block-button__link::before {\n\tcontent: \"\"; width: 20px; height: 20px; flex: none; background: currentColor;\n\t-webkit-mask: var(--pj-glyph) center \/ contain no-repeat; mask: var(--pj-glyph) center \/ contain no-repeat;\n}\n.lui-pj .lui-get .wp-block-button__link:hover { border-color: var(--pj-accent); }\n.lui-pj .lui-get .is-primary .wp-block-button__link { background: var(--pj-ink); color: var(--pj-bg); border-color: var(--pj-ink); }\n.lui-pj .lui-get .is-planned .wp-block-button__link { border-style: dashed; color: var(--pj-muted); font-weight: 500; pointer-events: none; }\n.lui-pj .lui-get .is-planned .wp-block-button__link::after {\n\tcontent: \"geplant\"; font: 500 .66rem var(--pj-mono); text-transform: uppercase; letter-spacing: .05em;\n\tborder: 1px solid var(--pj-line); border-radius: 3px; padding: .1em .35em; margin-left: .2rem;\n}\nhtml[lang^=\"en\"] .lui-pj .lui-get .wp-block-button.is-planned .wp-block-button__link::after { content: \"planned\"; }\n.lui-get--github  { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7 3 12l5 5M16 7l5 5-5 5M14 4l-4 16'\/%3E%3C\/svg%3E\"); }\n.lui-get--release { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12m-5-5 5 5 5-5M4 20h16'\/%3E%3C\/svg%3E\"); }\n.lui-get--ego     { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 3h4v3a2 2 0 1 0 4 0V3h3v7h-3a2 2 0 1 0 0 4h3v7h-7v-3a2 2 0 1 0-4 0v3H3v-7h3a2 2 0 1 0 0-4H3V3h7z'\/%3E%3C\/svg%3E\"); }\n.lui-get--flathub { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M12 3 4 7.5v9L12 21l8-4.5v-9L12 3zM4 7.5 12 12l8-4.5M12 12v9'\/%3E%3C\/svg%3E\"); }\n.lui-get--fdroid  { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Crect x='4' y='9' width='16' height='11' rx='2.5'\/%3E%3Cpath d='M7 5l2 3M17 5l-2 3'\/%3E%3Ccircle cx='12' cy='14.5' r='2.6'\/%3E%3C\/svg%3E\"); }\n.lui-get--play    { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 3.5v17a1 1 0 0 0 1.5.86l14-8.5a1 1 0 0 0 0-1.72l-14-8.5A1 1 0 0 0 6 3.5z'\/%3E%3C\/svg%3E\"); }\n.lui-get--wp      { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'\/%3E%3Cpath d='M6.5 8.5h3M14.5 8.5h3M8 8.5l3 9 1.5-4.5M13 8.5l3 9 1.5-5'\/%3E%3C\/svg%3E\"); }\n.lui-get--web     { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'\/%3E%3Cpath d='M3 12h18M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3z'\/%3E%3C\/svg%3E\"); }\n.lui-get--docs    { --pj-glyph: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 16h6'\/%3E%3C\/svg%3E\"); }\n\n\/* Querformat-B\u00fchne 3:2 *\/\n.lui-pj .lui-shots { gap: .75rem !important; margin: 0; }\n.lui-pj .lui-shots .wp-block-image img,\n.lui-pj .lui-pj-shot img {\n\taspect-ratio: 3 \/ 2 !important; width: 100%; height: auto !important; object-fit: cover; object-position: center top;\n\tborder-radius: 8px; box-shadow: 0 10px 28px -14px rgba(0,0,0,.45);\n}\n.lui-pj .lui-shots.is-anchor-right img, .lui-pj .lui-pj-shot.is-anchor-right img { object-position: right top; }\n.lui-pj .lui-shots.is-portrait .wp-block-image img { aspect-ratio: 9 \/ 16 !important; }\n.lui-pj figcaption { font-style: normal !important; }\n\/* WordPress gibt Galerie-Bildunterschriften einen schwarzen Schatten f\u00fcr\n   wei\u00dfe Schrift auf dem Bild. Hier stehen sie grau unter dem Bild \u2013 mit\n   Schatten wirkten sie verwaschen (17.10.2026). *\/\n.lui-pj :is(.lui-shots, .lui-phones, .lui-pj-mini) figcaption { text-shadow: none !important; }\n\/* Abschnitts-Link \u201e#\u201c (interactions.js) s\u00e4\u00dfe im Kartenkopf auf dem App-Symbol;\n   die \u00dcberschrift verlinkt dort ohnehin schon auf die Projektseite. *\/\n.lui-pj .lui-pj-head .lui-heading-anchor { display: none; }\n.lui-pj .lui-shots figcaption { position: static !important; background: none !important; color: var(--pj-muted) !important; font-size: .8rem; text-align: center; padding: .4rem 0 0 !important; }\n.lui-pj .lui-pj-shot { margin: 0; }\n.lui-pj .lui-pj-video video { aspect-ratio: 3 \/ 2; width: 100%; object-fit: cover; border-radius: 8px; background: #111; }\n\n\/* Hochkant: Handyrahmen, seitlich wischbar *\/\n.lui-pj .lui-phones {\n\tdisplay: flex !important; flex-wrap: nowrap !important; gap: 1.1rem !important; overflow-x: auto;\n\tscroll-snap-type: x mandatory; padding: 1.2rem 1.2rem 1rem; border-radius: 12px; background: var(--pj-bg2); margin: 0;\n}\n.lui-pj .lui-phones > .wp-block-image { flex: 0 0 190px !important; width: 190px !important; scroll-snap-align: start; margin: 0 !important; display: flex; flex-direction: column; }\n.lui-pj .lui-phones img, .lui-pj .lui-pj-phone video, .lui-pj .lui-pj-phone img {\n\taspect-ratio: 9 \/ 20 !important; height: auto !important; width: 100%; object-fit: cover; object-position: top;\n\tborder: 6px solid #111; border-radius: 24px; background: #111; box-shadow: 0 14px 28px -16px rgba(0,0,0,.6);\n}\n.lui-pj .lui-phones figcaption { position: static !important; background: none !important; color: var(--pj-muted) !important; font-size: .8rem; text-align: center; padding: .5rem 0 0 !important; }\n.lui-pj .lui-pj-phone { margin: 0 auto; max-width: 230px; }\n\n\/* Raster f\u00fcr Funktionen, Schritte, Grunds\u00e4tze *\/\n.lui-pj .lui-pj-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem 2rem; }\n.lui-pj .lui-pj-grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n.lui-pj .lui-pj-grid.is-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n.lui-pj .lui-pj-grid > * { margin: 0 !important; min-width: 0; }\n.lui-pj .lui-pj-grid h3 { font-size: 1.05rem; margin: 0 0 .3rem; }\n.lui-pj .lui-pj-grid p { margin: 0; font-size: .95rem; }\n.lui-pj .lui-pj-grid.is-4 > * { border-top: 1px solid var(--pj-line); padding-top: .8rem; }\n@media (max-width: 900px) { .lui-pj .lui-pj-grid.is-3, .lui-pj .lui-pj-grid.is-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@media (max-width: 600px) { .lui-pj .lui-pj-grid, .lui-pj .lui-pj-grid.is-3, .lui-pj .lui-pj-grid.is-4 { grid-template-columns: 1fr; } }\n\n.lui-pj .lui-pj-steps { counter-reset: pjstep; }\n.lui-pj .lui-pj-steps > * { counter-increment: pjstep; border-top: 2px solid var(--pj-ink); padding-top: .8rem; }\n.lui-pj .lui-pj-steps > *::before { content: counter(pjstep); display: block; font: 700 1.7rem\/1 var(--pj-display); color: var(--pj-accent); margin-bottom: .4rem; }\n.lui-pj .lui-pj-steps pre { font-size: .78rem; margin: .6rem 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }\n\n\/* Zwei Spalten *\/\n.lui-pj .lui-pj-split { gap: 2rem; align-items: center !important; margin: 0; }\n.lui-pj .lui-pj-split > .wp-block-column > * { margin-block: 0 0 .8rem; }\n\n\/* Fragen und Antworten: K\u00e4sten gestaltet das lui-theme (Details-Block), hier nur der Abstand *\/\n.lui-pj .lui-pj-faq { display: flex; flex-direction: column; gap: .75rem; }\n.lui-pj .lui-pj-faq > .wp-block-details { margin: 0 !important; }\n\n\/* Versionen *\/\n.lui-pj .lui-pj-versions { margin: 0; }\n.lui-pj .lui-pj-versions table { border: 0; font-size: .92rem; }\n.lui-pj .lui-pj-versions td { border: 0; border-bottom: 1px solid var(--pj-line); padding: .55rem .9rem .55rem 0; vertical-align: top; }\n.lui-pj .lui-pj-versions td:first-child { font: 600 .85rem var(--pj-mono); color: var(--pj-accent-dark); white-space: nowrap; }\n.lui-pj .lui-pj-versions td:nth-child(2) { font: .8rem var(--pj-mono); color: var(--pj-muted); white-space: nowrap; }\n\n\/* Dunkler Kasten (wie Footer: immer dunkel) *\/\n.lui-pj .lui-pj-band { align-items: center !important; } \/* WordPress: align-items normal !important *\/\n.lui-pj .lui-pj-band { background: #1a1a1a; color: #e9e7e3; border-radius: 12px; padding: 1.5rem 1.6rem; gap: 1.5rem; }\n.lui-pj .lui-pj-band h2 { color: #fff; font-size: 1.3rem; margin: 0 0 .4rem; }\n.lui-pj .lui-pj-band p { color: #bdbbb6; margin: 0; font-size: .95rem; }\n.lui-pj .lui-pj-band a { color: #ff8a3d; }\n.lui-pj .lui-pj-band .lui-get .wp-block-button__link { background: #262625; color: #fff; border-color: #3a3938; }\n\n\/* Kasten Datenschutz *\/\n.lui-pj .lui-pj-box { border: 1px solid var(--pj-line); border-radius: 12px; padding: 1.1rem 1.3rem; background: var(--pj-bg2); }\n.lui-pj .lui-pj-box > * { margin: 0; }\n.lui-pj .lui-pj-box h3 { font-size: 1.05rem; margin-bottom: .3rem; }\n\n\/* \u00dcbersicht: hervorgehobenes Projekt *\/\n.lui-pj .lui-pj-feature { background: var(--pj-bg2); border-radius: 12px; padding: 1.4rem; gap: 1.8rem; margin: 0; align-items: center !important; }\n.lui-pj .lui-pj-feature .lui-pj-head { gap: .9rem; }\n.lui-pj .lui-pj-feature .lui-pj-icon, .lui-pj .lui-pj-feature .lui-pj-icon img { width: 56px; height: 56px; }\n.lui-pj .lui-pj-feature h2 { margin: 0; font-size: 1.6rem; }\n.lui-pj .lui-pj-feature .wp-block-column > * { margin-block: 0 .8rem; }\n\n\/* Weitere Projekte *\/\n.lui-pj .lui-pj-more { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: .8rem; }\n.lui-pj .lui-pj-more li { border: 1px solid var(--pj-line); border-radius: 10px; padding: .8rem 1rem; font-size: .9rem; color: var(--pj-muted); }\n.lui-pj .lui-pj-more li a { display: block; font: 600 1.05rem var(--pj-display); color: var(--pj-ink); text-decoration: none; }\n.lui-pj .lui-pj-more li a:hover { color: var(--pj-accent-dark); }\n\n\/* Einzelbild ohne festes Format (z. B. Mini-Player) *\/\n.lui-pj .lui-pj-mini { margin: 0 auto; max-width: 260px; }\n.lui-pj .lui-pj-mini img { border-radius: 10px; box-shadow: 0 10px 28px -14px rgba(0,0,0,.45); }\n.lui-pj .lui-pj-mini figcaption { color: var(--pj-muted); font-size: .8rem; text-align: center; }\n\n\/* Vollbild: Format- und Rahmenregeln aufheben, Video ganz zeigen (Hochkant auf volle H\u00f6he) *\/\n.lui-pj video:fullscreen {\n\taspect-ratio: auto !important; width: 100% !important; height: 100% !important; max-width: none;\n\tobject-fit: contain !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: #000;\n}\n.lui-pj video:-webkit-full-screen {\n\taspect-ratio: auto !important; width: 100% !important; height: 100% !important; max-width: none;\n\tobject-fit: contain !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: #000;\n}\n\n\/* Tabelle Voraussetzungen: wie Versionen, aber zweite Spalte darf umbrechen *\/\n.lui-pj .lui-pj-req { margin: 0; }\n.lui-pj .lui-pj-req table { border: 0; font-size: .92rem; }\n.lui-pj .lui-pj-req td { border: 0; border-bottom: 1px solid var(--pj-line); padding: .55rem .9rem .55rem 0; vertical-align: top; }\n.lui-pj .lui-pj-req td:first-child { color: var(--pj-muted); white-space: nowrap; }\n\n\/* Video im Bildschirmformat 16:9 (z. B. Desktop-Aufnahme mit Schnelleinstellungen am Rand) *\/\n.lui-pj .lui-pj-video.is-wide video { aspect-ratio: 16 \/ 9; object-fit: contain; }\n\/* Galerie: Lazy-Bilder (sizes=\"auto\") bekamen in der Flex-Spalte der Abbildung die H\u00f6he 0 *\/\n.lui-pj .lui-shots img { flex: none !important; }\n<\/style>\n\n\n\n<div class=\"wp-block-group alignwide lui-pj is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"lui-pj-path wp-block-paragraph\">~\/projects<\/p>\n\n\n<div class=\"wp-block-group lui-pj-sec is-layout-flow wp-block-group-is-layout-flow\">\n<h1 class=\"wp-block-heading lui-pj-title\">Linux und Ich <span>\u00b7<\/span> Projects<\/h1>\n\n\n<p class=\"lui-pj-lead wp-block-paragraph\">Software I write for my own everyday life with Linux and Android. All of it open source, free of charge and on GitHub. Bug reports, ideas and translations are welcome.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-columns lui-pj-feature lui-proj-tretlager is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"lui-pj-flag wp-block-paragraph\">Latest release \u00b7 November 13, 2026<\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-083dbefd wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6af8fd9ea25a4&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6af8fd9ea25a4\" class=\"wp-block-image size-full lui-pj-icon wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-icon.png\" alt=\"Tretlager icon\" class=\"wp-image-317\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-icon.png 256w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-icon-150x150.png 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-icon-240x240.png 240w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><a href=\"\/en\/projects\/tretlager\/\">Tretlager<\/a><\/h2>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">v0.11.6 \u00b7 GPL-3.0-or-later<\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Zwift on Linux, set up in five steps: an assistant for Wine and sign-in, plus a Bluetooth bridge for smart trainers and heart rate straps. No Companion app on your phone.<\/p>\n\n\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>KDE and GNOME<\/mark> <mark>Flatpak<\/mark><\/p>\n\n\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--docs is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/en\/projects\/tretlager\/\">Learn more<\/a><\/div>\n\n\n<div class=\"wp-block-button lui-get--github\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\/tretlager\">GitHub<\/a><\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:58%\">\n<figure class=\"wp-block-image size-full lui-pj-shot\"><a href=\"\/en\/projects\/tretlager\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1545\" height=\"1030\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride.webp\" alt=\"Tretlager shows power, cadence and heart rate while Zwift runs in the background\" class=\"wp-image-319\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride.webp 1545w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride-768x512.webp 768w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride-1536x1024.webp 1536w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/tretlager-ride-480x320.webp 480w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns lui-pj-feature lui-proj-pulsgeber is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"lui-pj-flag wp-block-paragraph\">Latest release \u00b7 November 8, 2026<\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-083dbefd wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6af8fd9ea3810&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6af8fd9ea3810\" class=\"wp-block-image size-full lui-pj-icon wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-icon.png\" alt=\"Pulsgeber icon\" class=\"wp-image-131\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-icon.png 256w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-icon-150x150.png 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-icon-240x240.png 240w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><a href=\"\/en\/projects\/pulsgeber\/\">Pulsgeber<\/a><\/h2>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">v0.6.0 \u00b7 GPL-3.0-or-later<\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Switch TUXEDO power profiles right from the GNOME Quick Settings, without opening the Control Center.<\/p>\n\n\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>GNOME Shell 50\u201351<\/mark> <mark>Extension<\/mark><\/p>\n\n\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--docs is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/en\/projects\/pulsgeber\/\">Learn more<\/a><\/div>\n\n\n<div class=\"wp-block-button lui-get--github\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\/pulsgeber\">GitHub<\/a><\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:58%\">\n<figure class=\"wp-block-image size-full lui-pj-shot is-anchor-right\"><a href=\"\/en\/projects\/pulsgeber\/\"><img loading=\"lazy\" decoding=\"async\" width=\"990\" height=\"660\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-quick-settings.webp\" alt=\"Pulsgeber in the GNOME Quick Settings\" class=\"wp-image-135\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-quick-settings.webp 990w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-quick-settings-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/pulsgeber-quick-settings-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns lui-pj-feature lui-proj-gnomos is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"lui-pj-flag wp-block-paragraph\">Latest release \u00b7 October 5, 2026<\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-083dbefd wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6af8fd9ea45b2&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6af8fd9ea45b2\" class=\"wp-block-image size-full lui-pj-icon wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-icon.png\" alt=\"Gnomos icon\" class=\"wp-image-209\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-icon.png 256w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-icon-150x150.png 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-icon-240x240.png 240w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><a href=\"\/en\/projects\/gnomos\/\">Gnomos<\/a><\/h2>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">v0.28.5 \u00b7 GPL-3.0-or-later<\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Your Sonos speakers, at home on the GNOME desktop: play music, group rooms and set the volume of every room. First-generation speakers stay usable, too.<\/p>\n\n\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>GTK 4 and libadwaita<\/mark> <mark>Flatpak<\/mark><\/p>\n\n\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--docs is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/en\/projects\/gnomos\/\">Learn more<\/a><\/div>\n\n\n<div class=\"wp-block-button lui-get--github\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\/gnomos\">GitHub<\/a><\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:58%\">\n<figure class=\"wp-block-image size-full lui-pj-shot\"><a href=\"\/en\/projects\/gnomos\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing.webp\" alt=\"Gnomos with a large cover and synced lyrics\" class=\"wp-image-211\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n<style>.lui-pj-wip{margin:3rem 0 2rem;padding:1.25rem 1.5rem;border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:12px;background:color-mix(in srgb,currentColor 4%,transparent)}.lui-pj-wip>*{margin-block:0}.lui-pj-wip-label{font-family:ui-monospace,monospace;font-size:.85rem;opacity:.7;margin-bottom:.75rem!important}.lui-pj-wip-item+.lui-pj-wip-item{margin-top:1rem;padding-top:1rem;border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}.lui-pj-wip-item>*{margin-block:0}.lui-pj-wip-item .lui-pj-chips{font-weight:600}.lui-pj-wip-item .lui-pj-teaser{margin-top:.35rem;font-size:.95rem;opacity:.85}<\/style>\n<div class=\"wp-block-group lui-pj-wip is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"lui-pj-wip-label wp-block-paragraph\">\/\/ In the works<\/p>\n\n\n\n<div class=\"wp-block-group lui-pj-wip-item lui-proj-commentator is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>Commentator<\/mark><\/p>\n\n\n\n<p class=\"lui-pj-teaser wp-block-paragraph\">Moderate your WordPress comments from your phone: approve, reply and get notified instantly, without Google and without a cloud service.<\/p>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-group lui-pj-sec is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Web projects<\/h2>\n\n\n<div class=\"wp-block-columns lui-pj-feature lui-proj-planetfoss is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"lui-pj-flag wp-block-paragraph\">Online \u00b7 planetfoss.net<\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-083dbefd wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6af8fd9ea85da&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6af8fd9ea85da\" class=\"wp-block-image size-full lui-pj-icon wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-icon.png\" alt=\"PlanetFOSS logo\" class=\"wp-image-272\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-icon.png 256w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-icon-150x150.png 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-icon-240x240.png 240w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/planetfoss.net\/en\/\">PlanetFOSS<\/a><\/h2>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">Website \u00b7 English and German<\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Linux and open source news from more than 170 English and German sources. PlanetFOSS groups reports on the same story, shows what is hot right now and always links to the original article.<\/p>\n\n\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>News aggregator<\/mark> <mark>PHP and MariaDB<\/mark> <mark>No cookies<\/mark><\/p>\n\n\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--web is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/planetfoss.net\/en\/\">Visit planetfoss.net<\/a><\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:58%\">\n<figure class=\"wp-block-image size-full lui-pj-shot\"><a href=\"https:\/\/planetfoss.net\/en\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1800\" height=\"1200\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page.webp\" alt=\"PlanetFOSS front page with bundled reports on the Linux kernel\" class=\"wp-image-271\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page.webp 1800w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page-768x512.webp 768w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page-1536x1024.webp 1536w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/planetfoss-front-page-480x320.webp 480w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns lui-pj-feature lui-proj-linuxpulse is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"lui-pj-flag wp-block-paragraph\">Online \u00b7 linuxpulse.net<\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-083dbefd wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6af8fd9ea93d0&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6af8fd9ea93d0\" class=\"wp-block-image size-full lui-pj-icon wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-icon.png\" alt=\"LinuxPULSE logo\" class=\"wp-image-338\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-icon.png 256w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-icon-150x150.png 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-icon-240x240.png 240w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/linuxpulse.net\/\">LinuxPULSE<\/a><\/h2>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">Website \u00b7 English<\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">How many people run Linux on the desktop? LinuxPULSE collects the public figures from StatCounter, Steam, Firefox and other sources, breaks them down by continent and explains what each source measures. From all figures, LinuxPULSE calculates a single value: the pulse of Linux growth.<\/p>\n\n\n<p class=\"lui-pj-chips wp-block-paragraph\"><mark>Linux statistics<\/mark> <mark>Python and SQLite<\/mark> <mark>Free to reuse (CC BY 4.0)<\/mark><\/p>\n\n\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--web is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/linuxpulse.net\/\">Visit linuxpulse.net<\/a><\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:58%\">\n<figure class=\"wp-block-image size-full lui-pj-shot\"><a href=\"https:\/\/linuxpulse.net\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1800\" height=\"1200\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page.webp\" alt=\"LinuxPULSE front page with the Linux share on the desktop according to StatCounter, Steam and Firefox\" class=\"wp-image-337\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page.webp 1800w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page-768x512.webp 768w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page-1536x1024.webp 1536w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/11\/linuxpulse-front-page-480x320.webp 480w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-group lui-pj-sec is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">How the projects come about<\/h2>\n\n\n<div class=\"wp-block-group lui-pj-grid is-4 is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">Born from my own needs<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Every program solves a problem I had myself, and I use it every day.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">Open source<\/h3>\n\n\n<p class=\"wp-block-paragraph\">GPL or MIT, source code and issue tracker on GitHub. Forks are welcome.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">No account, no cloud<\/h3>\n\n\n<p class=\"wp-block-paragraph\">The programs only talk to your own devices. No tracking, no ads.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">AI-assisted<\/h3>\n\n\n<p class=\"wp-block-paragraph\">I develop with AI assistance. Decisions, reviews and testing stay with me, on my own devices.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-columns lui-pj-band is-layout-flex wp-container-core-columns-is-layout-083dbefd wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Get involved<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Found a bug, have an idea for a feature or want to translate? All projects accept issues and pull requests on GitHub. Feedback in the comments below the blog posts works too.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-buttons lui-get is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button lui-get--github\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\">github.com\/linuxundich<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Open source software from Linux und Ich: extensions and apps for GNOME, Android and WordPress.<\/p>\n","protected":false},"author":2,"featured_media":135,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"lui_source_id":47867,"lui_source_hash":"","lui_source_translated":"2026-11-14","lui_source_reviewed":true,"footnotes":""},"class_list":["post-137","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":17,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/137\/revisions"}],"predecessor-version":[{"id":381,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/137\/revisions\/381"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/135"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}