{"id":215,"date":"2026-10-12T19:38:30","date_gmt":"2026-10-12T17:38:30","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?page_id=215"},"modified":"2026-10-12T20:12:02","modified_gmt":"2026-10-12T18:12:02","slug":"gnomos","status":"publish","type":"page","link":"https:\/\/linuxundich.de\/en\/projects\/gnomos\/","title":{"rendered":"Gnomos"},"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--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.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 { 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\/<strong>gnomos<\/strong><\/p>\n\n\n<div class=\"wp-block-group lui-pj-head is-nowrap is-layout-flex wp-container-core-group-is-layout-81260c56 wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ecb419d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ecb419d\" 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<h1 class=\"wp-block-heading\">Gnomos<\/h1>\n\n\n<p class=\"wp-block-paragraph\">Your Sonos speakers, at home on the GNOME desktop.<\/p>\n\n\n<p class=\"lui-pj-meta wp-block-paragraph\">v0.28.5 \u00b7 October 5, 2026 \u00b7 GPL-3.0 \u00b7 GTK 4 and libadwaita \u00b7 Flatpak<\/p>\n<\/div>\n<\/div>\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--release is-primary\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\/gnomos\/releases\/tag\/v0.28.5\">Flatpak bundle 0.28.5<\/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\n\n<div class=\"wp-block-button lui-get--flathub is-planned\"><a class=\"wp-block-button__link wp-element-button\">Flathub<\/a><\/div>\n<\/div>\n\n\n<figure class=\"wp-block-video lui-pj-video is-wide\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls poster=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-demo-poster.webp\" preload=\"none\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-demo-en-intro.mp4\"><\/video><\/figure>\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6acd88ecb5b1c&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-4 is-cropped lui-shots wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ecbae97&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ecbae97\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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\" data-id=\"211\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-now-playing.webp\" alt=\"Now Playing view with a large cover in its own colors 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\" \/><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><figcaption class=\"wp-element-caption\">Now Playing<\/figcaption><\/figure>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed1099b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed1099b\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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\" data-id=\"214\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms.webp\" alt=\"The room picker: Arbeitszimmer plays, Schlafzimmer is paused\" class=\"wp-image-214\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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><figcaption class=\"wp-element-caption\">Rooms<\/figcaption><\/figure>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed11d80&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed11d80\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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\" data-id=\"205\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-albums.webp\" alt=\"Albums of the music collection as a cover grid\" class=\"wp-image-205\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-albums.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-albums-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-albums-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-albums-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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><figcaption class=\"wp-element-caption\">Music collection<\/figcaption><\/figure>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed1346a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed1346a\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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\" data-id=\"212\" src=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-queue.webp\" alt=\"The queue with the current track marked\" class=\"wp-image-212\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-queue.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-queue-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-queue-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-queue-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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><figcaption class=\"wp-element-caption\">Queue<\/figcaption><\/figure>\n<\/figure>\n\n\n<p class=\"lui-pj-lead wp-block-paragraph\">Play music, group rooms and set the volume in every room, from a real GTK 4 app. Gnomos talks to your speakers directly over your home network. You don\u2019t need a Sonos account or a cloud service.<\/p>\n\n\n<div class=\"wp-block-columns lui-pj-split is-layout-flex wp-container-core-columns-is-layout-81260c56 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed14c98&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed14c98\" class=\"wp-block-image size-full lui-pj-shot wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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-dark-record-player.webp\" alt=\"Dark style with the record player view and lyrics\" class=\"wp-image-206\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-dark-record-player.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-dark-record-player-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-dark-record-player-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-dark-record-player-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Now Playing, with lyrics<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Click the player bar and the current track fills the window: a large cover on a background in its colors, the upcoming tracks and synced lyrics. Click a line to jump to that spot. If you like vinyl, let the cover spin as a record.<\/p>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-columns lui-pj-split is-layout-flex wp-container-core-columns-is-layout-81260c56 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\">All rooms in one place<\/h2>\n\n\n<p class=\"wp-block-paragraph\">The room picker shows what plays where. Drag one room onto another to group them. Volume, start and pause are one click away for every room.<\/p>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed15432&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed15432\" class=\"wp-block-image size-full lui-pj-shot wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"907\" 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-rooms.webp\" alt=\"Room picker with grouped rooms\" class=\"wp-image-214\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms.webp 1360w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-rooms-768x512.webp 768w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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<\/div>\n<\/div>\n\n\n<div class=\"wp-block-columns lui-pj-split is-layout-flex wp-container-core-columns-is-layout-81260c56 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed165df&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed165df\" class=\"wp-block-image size-full lui-pj-shot is-anchor-right wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1620\" height=\"1080\" 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-quick-settings.webp\" alt=\"Gnomos next to the GNOME Quick Settings with the Sonos slider and the sliders of all rooms\" class=\"wp-image-213\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-quick-settings.webp 1620w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-quick-settings-300x200.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-quick-settings-1024x683.webp 1024w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-quick-settings-768x512.webp 768w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-quick-settings-1536x1024.webp 1536w\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" \/><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<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h2 class=\"wp-block-heading\">In the Quick Settings<\/h2>\n\n\n<p class=\"wp-block-paragraph\">With the small Shell extension from the repository, the volume of the selected room sits right below the system slider. Expanded, \u201cOther Rooms\u201d shows a slider for every speaker in the house, including those that aren\u2019t playing right now. Gnomos handles media keys and GNOME\u2019s media player anyway.<\/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\">What else Gnomos can do<\/h2>\n\n\n<div class=\"wp-block-group lui-pj-grid is-3 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\">The whole music collection<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Music share on the network, Sonos favorites, playlists, internet radio and linked services like Spotify.<\/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\">Part of the desktop<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Media keys, lock screen and the media player in the Quick Settings work right away.<\/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\">Volume per room<\/h3>\n\n\n<p class=\"wp-block-paragraph\">The window has a slider for each room, the Quick Settings get it through the optional Shell extension.<\/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\">Mini player<\/h3>\n\n\n<p class=\"wp-block-paragraph\">A small poster-style window for the corner of your screen.<\/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\">Old speakers<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Also works with ZP80, ZP90, ZP100, ZP120 and CR100, which the current Sonos app no longer knows.<\/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\">Stays at home<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Lyrics from LRCLIB and artist photos from Deezer are the only lookups on the internet, and both are off at first.<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"wp-block-columns lui-pj-split is-layout-flex wp-container-core-columns-is-layout-81260c56 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\">Installation<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Until Gnomos is on Flathub, there is a Flatpak bundle on GitHub. If the GNOME 51 runtime is missing, Flatpak fetches it from Flathub. Bundles don\u2019t update themselves, you find new versions on the releases page.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>flatpak install --user gnomos-0.28.5-x86_64.flatpak<\/code><\/pre>\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:34%\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acd88ed187ab&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acd88ed187ab\" class=\"wp-block-image size-full lui-pj-mini wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"410\" height=\"410\" 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-mini-player.webp\" alt=\"The mini player in poster style\" class=\"wp-image-210\" srcset=\"https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-mini-player.webp 410w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-mini-player-300x300.webp 300w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-mini-player-150x150.webp 150w, https:\/\/linuxundich.de\/en\/wp-content\/uploads\/2026\/10\/gnomos-mini-player-240x240.webp 240w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><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><figcaption class=\"wp-element-caption\">Mini player<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n<section class=\"lui-facts wp-block-lui-app-facts\" aria-label=\"Fact sheet: Gnomos\" data-lui-facts>\n\t<div class=\"lui-facts-head\">\n\t\t<span class=\"lui-facts-icon\" aria-hidden=\"true\">G<\/span>\n\t\t<div>\n\t\t\t<p class=\"lui-facts-name\">Gnomos<\/p>\n\t\t\t\t\t\t\t<p class=\"lui-facts-tagline\">Your Sonos speakers, at home on the GNOME desktop.<\/p>\n\t\t\t\t\t<\/div>\n\t<\/div>\n\t\t\t<dl class=\"lui-facts-list\">\n\t\t\t\t\t\t\t<dt>Version<\/dt>\n\t\t\t\t<dd>0.28.5<\/dd>\n\t\t\t\t\t\t\t<dt>License<\/dt>\n\t\t\t\t<dd>GPL-3.0<\/dd>\n\t\t\t\t\t\t\t<dt>Tested with<\/dt>\n\t\t\t\t<dd>GNOME 51<\/dd>\n\t\t\t\t\t\t\t<dt>Project<\/dt>\n\t\t\t\t<dd><a href=\"https:\/\/linuxundich.de\/en\/projects\/gnomos\/\">linuxundich.de\/en\/projects\/gnomos<\/a> \u00b7 <a href=\"https:\/\/github.com\/linuxundich\/gnomos\">Source code<\/a><\/dd>\n\t\t\t\t\t<\/dl>\n\t\t\t\t<div class=\"lui-facts-install\">\n\t\t\t<p class=\"lui-facts-install-title\">Installation<\/p>\n\t\t\t\t\t\t\t<div class=\"lui-facts-cmd\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"lui-facts-cmd-label\">Flatpak bundle<\/span>\n\t\t\t\t\t\t\t\t\t\t<code>flatpak install --user gnomos-0.28.5-x86_64.flatpak<\/code>\n\t\t\t\t\t<button type=\"button\" class=\"lui-facts-copy\" data-lui-facts-copy hidden>Copy<\/button>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<script type=\"application\/ld+json\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"Gnomos\",\"description\":\"Your Sonos speakers, at home on the GNOME desktop.\",\"softwareVersion\":\"0.28.5\",\"license\":\"GPL-3.0\",\"url\":\"https:\\\/\\\/linuxundich.de\\\/en\\\/projects\\\/gnomos\\\/\",\"operatingSystem\":\"Linux\",\"applicationCategory\":\"UtilitiesApplication\"}<\/script>\n<\/section>\n\n\n<div class=\"wp-block-columns lui-pj-band is-layout-flex wp-container-core-columns-is-layout-81260c56 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\">Bugs and ideas are welcome as an issue on GitHub. How to translate Gnomos is described in the translation guide.<\/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\/gnomos\/issues\">Report an issue<\/a><\/div>\n\n\n<div class=\"wp-block-button lui-get--docs\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/linuxundich\/gnomos\/blob\/main\/docs\/TRANSLATING.md\">Translate<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<p class=\"lui-pj-note wp-block-paragraph\">Gnomos is AI-assisted. The code, icons and translations were written with AI assistance, following my directions. I made the decisions, reviewed the results and tested everything on my own devices. Under the hood, libnoson does the work, the library behind noson-app.<\/p>\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\">More projects<\/h2>\n\n\n<ul class=\"wp-block-list lui-pj-more\">\n<li><a href=\"\/en\/projects\/pulsgeber\/\">Pulsgeber<\/a>TUXEDO profiles in GNOME<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Control Sonos speakers from the GNOME desktop, with room groups, a music collection and synced lyrics.<\/p>\n","protected":false},"author":2,"featured_media":211,"parent":137,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"lui_source_id":47869,"lui_source_hash":"","lui_source_translated":"2026-10-12","lui_source_reviewed":true,"footnotes":""},"class_list":["post-215","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/215","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=215"}],"version-history":[{"count":3,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/215\/revisions"}],"predecessor-version":[{"id":227,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/215\/revisions\/227"}],"up":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/pages\/137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/211"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}