• Frame – en helt ny X11-server skriven i assembler

    Samtidigt som stora delar av Linuxvärlden lämnar det gamla grafiksystemet X11 till förmån för Wayland väljer den norske utvecklaren Geir Isene att gå åt motsatt håll. Han har byggt en helt ny X11-server från grunden – skriven nästan uteslutande i assembler för x86-64-processorer.

    Projektet heter Frame och är ett tekniskt experiment som försöker besvara en ovanlig fråga: Hur liten och enkel kan en fungerande grafisk Linuxmiljö egentligen bli?

    Programmet som placerar bilden på skärmen

    För att förstå vad Frame gör behöver man först känna till vad en grafikserver är.

    När ett program som Firefox eller GIMP vill visa ett fönster på skärmen ritar programmet normalt inte direkt mot bildskärmen. I stället skickar det instruktioner till ett underliggande system som hanterar fönster, tangentbord, muspekare och bildskärmar.

    På traditionella Linuxdatorer har denna uppgift länge skötts av X.Org Server, den vanligaste implementationen av X11-systemet. X11 har sina rötter i 1980-talet och har under årtionden byggts ut för att fungera med många olika datorer, grafikkort och användningsområden.

    Resultatet är ett stort och komplicerat system med många historiska lager.

    Frame försöker i stället börja om från början.

    Byggd direkt ovanpå Linuxkärnan

    Frame bygger inte vidare på X.Org och använder inte heller vanliga programbibliotek som libc, Mesa, Xlib eller FreeType. I stället kommunicerar servern direkt med Linuxkärnan genom systemanrop.

    För att visa grafik använder Frame Linux gränssnitt DRM och KMS, vilka hanterar grafikkort och bildskärmslägen. Tangentbord och mus läses genom evdev, det normala gränssnittet för inmatningsenheter i Linux.

    Program som Firefox kommunicerar med Frame genom själva X11-protokollet.

    Man kan likna det vid att bygga en bil utan att köpa färdiga delar från en underleverantör. I stället tillverkar utvecklaren stora delar av motorn, elsystemet och instrumentpanelen själv och kopplar dem direkt till chassit.

    Resultatet är en statiskt länkad programfil utan vanliga beroenden till installerade bibliotek.

    Skriven i assembler

    De flesta moderna program skrivs i språk som C, C++, Rust eller Python. Frame är i stället skriven i assembler.

    Assembler ligger mycket nära processorns egna maskininstruktioner. Utvecklaren arbetar därför direkt med register, minnesadresser, instruktioner och systemanrop.

    Det ger stor kontroll över exakt vad datorn gör, men gör samtidigt utvecklingen betydligt mer komplicerad. Funktioner som vanliga programmeringsspråk och bibliotek erbjuder automatiskt måste ofta byggas manuellt.

    Frame består enligt utvecklaren av omkring 20 000 rader assemblerkod. Vid en senare genomgång låg källkoden närmare 25 000 rader. Det är fortfarande litet jämfört med etablerade grafiksystem, men antalet kodrader säger inte automatiskt något om stabilitet, säkerhet eller hur komplett programmet är.

    Kan redan köra Firefox och GIMP

    Frame är långt ifrån en fullständig implementation av X11, men servern stöder redan tillräckligt många delar av protokollet för att kunna köra riktiga skrivbordsprogram.

    Bland funktionerna finns stöd för att skapa och hantera fönster, läsa tangentbord och mus, hantera urklipp, bilder och egenskaper samt kommunicera med program genom X11-protokollet.

    Servern innehåller även stöd för flera vanliga X11-utökningar, exempelvis RANDR för bildskärmshantering, SHAPE för fönster med särskilda former och MIT-SHM för snabbare överföring av bilddata mellan program.

    Isene uppger att han använder Frame som sin dagliga grafikserver och att både Firefox och bildredigeringsprogrammet GIMP fungerar på systemet.

    Det betyder dock inte att alla X11-program fungerar. X11 är ett omfattande protokoll med många funktioner och tillägg som utvecklats under flera årtionden. Program kan därför använda funktioner som Frame ännu inte känner till.

    En hel skrivbordsmiljö i assembler

    Frame är nära kopplad till ett större projekt som heter CHasm, en förkortning av ”CHange to ASM”.

    CHasm består av flera små Linuxprogram som också är skrivna i x86-64-assembler. Där ingår bland annat:

    • Tile, en fönsterhanterare som placerar fönster sida vid sida.
    • Glass, en terminalemulator.
    • Bare, ett kommandoskal.
    • Strip, en statusrad.
    • Bolt, ett skärmlås och inloggningsverktyg.

    Tillsammans kan dessa program skapa en komplett, men mycket minimalistisk, grafisk Linuxsession. Projekten är fristående och utgör inte en traditionell skrivbordsmiljö som KDE Plasma eller GNOME.

    CHasm-verktygen kommunicerar direkt med Linuxkärnan eller med X11-protokollet och saknar dynamiska programberoenden. Enligt projektets dokumentation omfattar den körbara delen av hela sessionen mindre än 500 kilobyte, även om detta inte inkluderar Linuxkärnan, drivrutinerna eller de vanliga program som användaren startar.

    Ett skrivbord som försöker göra ingenting

    Ett av projektets viktigaste mål är att datorn ska vara helt stilla när användaren inte arbetar.

    Moderna skrivbordsmiljöer kan ha många processer som regelbundet vaknar för att kontrollera tiden, uppdatera animationer, läsa systeminformation eller kontrollera om något har förändrats. Varje sådan aktivitet använder lite processortid och kan i teorin påverka batteritiden.

    Frame och CHasm är i stället konstruerade för att vänta tills det faktiskt händer något, exempelvis att användaren rör musen eller att ett program skickar nya bilddata.

    Isene genomförde ett informellt test där Frame och X.Org hade ungefär samma totala strömförbrukning när datorn stod oanvänd. X.Org använde däremot enligt hans mätning nästan tre gånger så mycket processortid.

    Skillnaden i total strömförbrukning var liten eftersom bildskärmen, nätverket och andra delar av datorn använder betydligt mer energi än en vilande grafikserver. Mätningen är dessutom utförd av utvecklaren själv på en enda dator och ska därför inte betraktas som ett oberoende prestandatest.

    Artificiell intelligens har hjälpt till

    Projektet har utvecklats med omfattande hjälp av AI-verktyget Claude Code. Isene beskriver hur han förklarar problem och önskade funktioner för AI-systemet, som sedan hjälper till att skapa och ändra assemblerkoden.

    Det gör Frame intressant även ur ett annat perspektiv. Att skriva en X11-server i assembler är normalt ett mycket tidskrävande specialprojekt. Moderna AI-verktyg kan göra det möjligt för en ensam utvecklare att experimentera med systemprogrammering på en nivå som tidigare ofta krävde större grupper.

    Samtidigt innebär AI-genererad kod inte att programmet automatiskt är korrekt. En grafikserver hanterar minne, inmatning, andra program och hårdvara. Fel kan orsaka allt från grafikproblem och krascher till säkerhetsbrister.

    Frame behöver därför granskas, testas och underhållas på samma sätt som all annan systemnära programvara – kanske ännu mer noggrant eftersom assembler saknar många av de säkerhetsfunktioner som finns i modernare språk.

    Ingen ersättare för X.Org ännu

    Frame är för närvarande ett experimentellt projekt och inte ett praktiskt alternativ för vanliga Linuxanvändare.

    Servern fungerar endast på Linuxdatorer med x86-64-processor. Den saknar delar av X11-protokollet, har begränsat hårdvarustöd och använder huvudsakligen mjukvarurendering i stället för fullständig grafikacceleration.

    Det finns inte heller några etablerade installationspaket eller färdiga inloggningssessioner för stora Linuxdistributioner. Projektet är främst byggt för utvecklarens egen dator och hans eget arbetssätt.

    CHasm-dokumentationen säger uttryckligen att verktygen främst publiceras som inspiration. Tanken är inte nödvändigtvis att användare ska installera dem som de är, utan att intresserade utvecklare ska studera, ändra och anpassa koden efter sina egna behov.

    Ett experiment om kontroll och enkelhet

    Frame kommer sannolikt inte att ersätta X.Org eller konkurrera med Wayland inom den närmaste framtiden. Projektets verkliga betydelse ligger i stället i vad det demonstrerar.

    Det visar att det fortfarande är möjligt för en enskild utvecklare att bygga en fungerande grafikserver direkt ovanpå Linuxkärnan. Det visar också hur mycket av ett modernt datorsystem som egentligen består av valbara lager – bibliotek, ramverk och verktyg som är praktiska, men inte alltid absolut nödvändiga.

    Frame är därför mindre en färdig produkt och mer ett tekniskt laboratorium.

    Projektet ställer en fråga som ofta försvinner när programvaran växer: Hur mycket kod behöver vi egentligen för att öppna ett fönster, ta emot ett tangenttryck och placera några bildpunkter på skärmen?

    Geir Isenes svar är att det går att göra med betydligt mindre än vad dagens vanliga Linuxskrivbord använder – men också att enkelhet på ytan kan kräva mycket avancerat arbete under huven.

    https://github.com/isene/chasm

    $ teknisk_faktaruta –frame
    Projekt: Frame
    Typ: Experimentell X11-server
    Utvecklare: Geir Isene
    Plattform: Linux på x86-64
    Programmeringsspråk: x86-64-assembler
    Kodmängd: Cirka 20 000 rader assemblerkod
    Grafik: DRM/KMS och mjukvarurendering
    Inmatning: evdev för tangentbord och mus
    Kommunikation: X11:s trådprotokoll
    X11-utökningar: Bland annat RANDR, SHAPE, XInput2 och MIT-SHM
    Externa beroenden: Inga vanliga körberoenden som libc, Mesa, Xlib eller FreeType
    Testade program: Bland annat Firefox och GIMP
    Status: Experimentellt och ännu inte en fullständig ersättare för X.Org
    root@linux:~# Frame är användbart på utvecklarens dator, men saknar fortfarande fullständigt protokoll- och hårdvarustöd.
  • Yserver: en ny X11-server i Rust visar att X11 inte är dött än

    När Wayland allt oftare pekas ut som framtiden för Linux-skrivbordet dyker det ändå upp nya projekt som visar att X11 långt ifrån är färdigt. Yserver är en ny X11-server skriven i Rust, byggd för moderna Linux-system och redan kapabel att köra skrivbordsmiljöer som MATE, Xfce och Cinnamon. Det gör projektets första stabila version till en intressant milstolpe för alla som följer utvecklingen av Linux grafikstack.

    I en tid när allt fler Linux-skrivbord går över till Wayland kan det låta märkligt att någon fortfarande utvecklar nya X11-servrar. Men det är precis vad som händer. Projektet Yserver har nu nått version 1.0 och visar att X11 fortfarande har ett tekniskt liv vid sidan av Wayland.

    Yserver är en helt ny X11-server, skriven från grunden i programmeringsspråket Rust. Målet är inte att kopiera X.Org Server in i minsta detalj, utan att bygga en modernare variant som klarar dagens skrivbordsmiljöer, fönsterhanterare och program – utan att bära med sig all historisk ballast från äldre X11-system.

    X11 har funnits i årtionden och har länge varit grunden för grafiska Linux-skrivbord. Det är den teknik som gör att fönster, muspekare, tangentbord, grafik och program kan samverka på skärmen. Men med tiden har X11 blivit både komplext och svårt att modernisera. Därför har Wayland vuxit fram som ett modernare alternativ.

    Trots detta används X11 fortfarande av många. En del föredrar klassiska fönsterhanterare, andra har program eller arbetsflöden som fungerar bättre under X11. Vissa uppskattar helt enkelt stabiliteten och flexibiliteten i det gamla systemet. Därför finns det fortfarande ett behov av X11-teknik, även om framtiden på Linux-skrivbordet i allt högre grad pekar mot Wayland.

    Det som gör Yserver intressant är att projektet försöker rensa bort sådant som i dag anses föråldrat. Bland det som inte prioriteras finns till exempel stöd för flera gamla skärmkoncept, äldre grafikformat, indirekt GLX, gamla drivrutinsgränssnitt och klienter med annan byte-ordning. Resultatet är tänkt att bli en smalare och mer modern X11-server.

    Samtidigt är Yserver inte bara ett experiment på papperet. Den kan redan köra kompletta skrivbordsmiljöer som MATE, Xfce och Cinnamon. Det är viktigt, eftersom dessa miljöer fortfarande används av många som vill ha ett traditionellt skrivbord med paneler, menyer och klassisk fönsterhantering.

    Projektet har även testats med klassiska fönsterhanterare som FVWM3, e16 och Window Maker. Det gör Yserver särskilt intressant för användare som gillar lätta, snabba och traditionella skrivbordsmiljöer – sådana som ofta fortfarande är starkt knutna till X11.

    Yserver innehåller dessutom stöd för många viktiga X11-tillägg. Bland dessa finns Composite, DAMAGE, DRI3, GLX, RANDR, RENDER, SHAPE, XInput, XKEYBOARD och flera andra. Dessa tillägg behövs för att moderna program, grafikfunktioner, inmatningsenheter och skrivbordseffekter ska fungera på ett rimligt sätt.

    På hårdvarusidan har projektet testats på flera olika plattformar. Det omfattar bland annat AMD- och Intel-grafik, NVIDIA med proprietär drivrutin, Snapdragon X1 med Adreno-grafik, Apple M1 och M2 via Asahi Linux samt virtio-gpu i virtuella miljöer. Det visar att utvecklarna inte bara fokuserar på en smal testmiljö, utan försöker få servern att fungera på flera typer av modern hårdvara.

    Men Yserver är inte färdig som ersättare för X.Org Server. Det finns fortfarande begränsningar. Ett exempel är att funktionen GLX_EXT_texture_from_pixmap fungerar på AMD, Intel, Asahi och Qualcomm, men inte med NVIDIAs proprietära drivrutin. Även byte mellan virtuella terminaler kan vara begränsat beroende på hur servern startas, särskilt när den används tillsammans med LightDM.

    Yserver kan startas direkt från en TTY eller användas med LightDM för grafisk inloggning. För att bygga och köra den krävs en modern Rust-miljö samt flera systembibliotek, bland annat libseat, libxkbcommon, libinput, fontconfig och grafikorienterade beroenden.

    Det är därför viktigt att se Yserver för vad det är: ett experimentellt men tekniskt betydelsefullt projekt. Det är inte en färdig drop-in-ersättare för X.Org Server, och vanliga användare bör inte förvänta sig att kunna byta rakt av utan problem. Men att projektet redan kan köra hela skrivbordsmiljöer som MATE, Xfce och Cinnamon gör version 1.0 till en intressant milstolpe.

    Yserver visar också något större: X11 är inte riktigt redo att försvinna i tysthet. Även om Wayland är framtiden för många Linux-skrivbord finns det fortfarande utvecklare och användare som ser värde i X11-modellen. Med projekt som XLibre och nu Yserver får X11 nytt tekniskt liv – inte nödvändigtvis som framtidens standard, men som ett fortsatt viktigt alternativ för dem som behöver eller föredrar det.

    I praktiken kan Yserver bli mest intressant för entusiaster, utvecklare, retroinriktade Linux-användare och dem som vill fortsätta använda klassiska skrivbordsmiljöer utan att vara helt beroende av X.Org Server. Det är kanske inte början på en stor X11-renässans, men det är ett tydligt tecken på att historien om X11 ännu inte är färdigskriven.

    https://github.com/joske/yserver

    Teknisk faktaruta: Yserver

    Vad är Yserver?
    Yserver är en ny X11-server skriven från grunden i programmeringsspråket Rust.

    Syfte:
    Projektet vill erbjuda en modernare X11-server för dagens Linux-system, utan att försöka kopiera hela X.Org Server och dess äldre funktioner.

    Stöd för skrivbordsmiljöer:
    Yserver kan köra kompletta sessioner med MATE, Xfce och Cinnamon.

    Testade fönsterhanterare:
    FVWM3, e16 och Window Maker har testats med projektet.

    Viktiga X11-tillägg:
    Bland annat Composite, DAMAGE, DRI3, GLX, RANDR, RENDER, SHAPE, SYNC, XFIXES, XInput, XKEYBOARD och XTEST.

    Testad hårdvara:
    AMD, Intel, NVIDIA med proprietär drivrutin, Snapdragon X1 med Adreno-grafik, Apple M1/M2 via Asahi Linux samt virtio-gpu i virtuella miljöer.

    Begränsningar:
    Yserver är fortfarande experimentell och är inte en direkt ersättare för X.Org Server. Vissa funktioner, till exempel GLX_EXT_texture_from_pixmap, fungerar inte fullt ut med NVIDIAs proprietära drivrutin.

    Krav:
    En modern Rust-miljö samt bibliotek som libseat, libxkbcommon, libinput, fontconfig och grafiska systemkomponenter.

    Sammanfattning:
    Yserver visar att X11 fortfarande utvecklas, även i en tid där Wayland blir allt vanligare på Linux-skrivbordet.

Etikett: KMS

  • Frame – en helt ny X11-server skriven i assembler

    Samtidigt som stora delar av Linuxvärlden lämnar det gamla grafiksystemet X11 till förmån för Wayland väljer den norske utvecklaren Geir Isene att gå åt motsatt håll. Han har byggt en helt ny X11-server från grunden – skriven nästan uteslutande i assembler för x86-64-processorer. Projektet heter Frame och är ett tekniskt experiment som försöker besvara en…

  • Yserver: en ny X11-server i Rust visar att X11 inte är dött än

    När Wayland allt oftare pekas ut som framtiden för Linux-skrivbordet dyker det ändå upp nya projekt som visar att X11 långt ifrån är färdigt. Yserver är en ny X11-server skriven i Rust, byggd för moderna Linux-system och redan kapabel att köra skrivbordsmiljöer som MATE, Xfce och Cinnamon. Det gör projektets första stabila version till en…