Close

Implementing GUI

A project log for MooseOS

x86 Operating System that runs on QEMU, Bochs and physical PCs.

ethan-zhangEthan Zhang 10/11/2025 at 01:350 Comments

Retroactive Log – June 23rd (Reconstructed from memory and commit logs)

I added a GUI! I was initialising going to opt for 640x480 VGA Mode 13h graphics mode, but it turned out unnecessary. Since 320x200 was much easier to set up, and, in my opinion, much more reliable, I instead opted for 320x200 256-colour mode. My first test with the GUI looked like this:

Caption: My first GUI output, showing a hollowed box, a filled box, a 3D-like box and a box with a bar at the top. These formed the basis of my entire OS GUI.

Now that I have added a GUI, it's time to get creative. I made a cool dock user interface, which had a simple file explorer for my 'filesystem'. It wasn't really a filesystem, but an in-memory way of storing files into a tree-like structure, which disappeared every time I quit QEMU. However, it was a good mock-up, and it allowed me to begin making the file explorer for MooseOS.

One quirky bit about VGA mode is that the colours look really off. I used the colours defined by the OSDev wiki; however, apart from black and white, all the other colours were wildly different to their definitions. While I was aiming for a hot-dog stand look, I ended up with a beige-blue colour scheme that, while it didn't look bad, looked a bit.. off. However, since my main focus was to add more features, that was the least of my concern. 

Note that later, I added a DAC, which allowed me to change my OS theme to monochrome. I initially wanted to add a purely black-and-white theme like the one in Macintosh System 1, but I decided to be a bit unique here and add varying shades of grey, which made my OS seem a bit more 'colourful.'

Caption: MooseOS with its new colour scheme. Note that this hadn't been implemented yet when I first added the GUI. You can see the cursor, the other applications and the clock down at the bottom, which will all be mentioned in future devlogs.

Discussions