userbinator 5 hours ago

This is more like "by communicating with the X server", which is not exactly the level of "from scratch" I was expecting, but then again, it's more involved than the equivalent in Win32 that's not much more than filling in some structures and invoking a few functions.

  • vidarh an hour ago

    It's not even that much more involved, just tedious. The serialization/deserialization of X requests and responses is fairly straight-forward (it could be more straightforward - it's not a very nice protocol, but it's also not difficult), as the article also shows, and it can be made more compact than that with a couple of helpers.

    The biggest pain in doing "raw" X is the async nature of the protocol - to write a robust X client you really want an event-loop driven approach that embraces that like XCB does, instead of trying to paper over it (like Xlib did).

  • signa11 5 hours ago

    seesh ! what would `from scratch` mean for you ? invent the whole universe ?

    • userbinator 5 hours ago

      I was expecting something closer to direct framebuffer writes, as is often done in the various write-an-OS articles that get posted here semi-regularly.

      • signa11 5 hours ago

        i on the other hand, just loved the article.

        was a bit confused about the segfault stuff mentioned towards the beginning of the article. but got quite quickly disabused of that notion with gdb etc.

      • chickenzzzzu an hour ago

        KMSDRM is soooo much more fun than X. Truly the way programs were meant to be.

jcranmer 5 hours ago

This reminds me of the time I was a young, naïve idiot, and decided I would learn GTK by writing some basic app in GTK. In x86 (not x86-64) assembly. Like all of my other project ideas from that era, never went anywhere, and I horribly underappreciated just how complicated things were.

Kudos for actually getting somewhere in their attempt to do this, a further state than I ever managed.

  • iberator 2 hours ago

    I currently re-learn ASM by writing my own virtual machine with my own cpu architecture and instruction set. Its FUN :)

    I never expected to write programs in pure machine code before, but here I am. Writing my own assembler now :)

    Way easier than C++ LOL

    I highly recommend it.

    • mettamage an hour ago

      How so? I know some of both but not enough to know why C++ is that much more complex.

farhanhubble 5 hours ago

I learned X86 ASM by sinking my teeth into the Intel 8085 manual, then lighting up LEDs on a hardware emulator and later on a 8085 simulator that me and my brother built.

What certainly helped was that I had did some digital design and instruction set architecture, etc.

Later on, I did some real-world assembly programming for the PIC microcontrollers and some inlined assembly in C, which I did not find daunting at all because of my previous experience.

I guess the best prerequisite for this material is having done some low-level C, the kind where you know about text/data sections and being comfortable with calling conventions, the run time and the linking process.

DeathArrow 3 hours ago

Using X11 isn't exactly from scratch.

  • actionfromafar an hour ago

    Perhaps unintuitively, the recipe for writing a GUI from scratch is almost exactly the same as making an apple pie from scratch, save some minor details at the very end.

thedumbname an hour ago

XQuartz does not support high resolution displays, that is not what macOS users looking for.