Any good video tutorials on making a OS with a GUI?

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/osdev

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • SaaSHub - Software Alternatives and Reviews
  • nuklear

    In fact, if using a modern graphics pipeline with shaders, you will actually have to learn how to draw a single rectangle to your screen, and then use that knowledge to draw (anti-aliased) lines, rectangles, arcs, circles, ellipses, etc. too. For instance, have a look at https://www.cairographics.org/ https://github.com/vurtun/nuklear https://github.com/memononen/nanovg and https://github.com/nical/lyon. There are probably also tutorials on how to draw vectorized graphics using OpenGL, Vulkan, etc.

  • nanovg

    Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.

    In fact, if using a modern graphics pipeline with shaders, you will actually have to learn how to draw a single rectangle to your screen, and then use that knowledge to draw (anti-aliased) lines, rectangles, arcs, circles, ellipses, etc. too. For instance, have a look at https://www.cairographics.org/ https://github.com/vurtun/nuklear https://github.com/memononen/nanovg and https://github.com/nical/lyon. There are probably also tutorials on how to draw vectorized graphics using OpenGL, Vulkan, etc.

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • lyon

    2D graphics rendering on the GPU in rust using path tessellation.

    In fact, if using a modern graphics pipeline with shaders, you will actually have to learn how to draw a single rectangle to your screen, and then use that knowledge to draw (anti-aliased) lines, rectangles, arcs, circles, ellipses, etc. too. For instance, have a look at https://www.cairographics.org/ https://github.com/vurtun/nuklear https://github.com/memononen/nanovg and https://github.com/nical/lyon. There are probably also tutorials on how to draw vectorized graphics using OpenGL, Vulkan, etc.

  • harfbuzz

    HarfBuzz text shaping engine

    Then there is the entire internationalization problem for which you have to implement most of the Unicode standard, the reports can be found here: http://unicode.org/reports/ and in general you will need the bidirectional algorithm for Hewbrew/Arabic texts, normalization, the line breaking algorithm, the script property and probably text segmentation. On top, you will also need to deal with text shaping (e.g. https://github.com/harfbuzz/harfbuzz). For instance é should be rendered as é and not as e' (even though the grapheme may consist of two code points, there is also a version that is a single code point).

  • cassowary-rs

    A Rust implementation of the Cassowary constraint solving algorithm

    Once you have all this, you have the graphics tools to start implementing widgets like buttons, text boxes, etc. but on top of all this, you suddenly have to figure out how to support displays with different DPIs, as your GUI will otherwise be too small/too big. So you generally want to get rid of expressing values in pixels and instead move to percentages. You will also want to describe things in terms of horizontal/vertical layouts and grids. For instance, take a look at: https://github.com/dylanede/cassowary-rs

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts