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
  • ONLYOFFICE ONLYOFFICE Docs — document collaboration in your environment
  • SonarQube - Static code analysis for 29 languages.
  • InfluxDB - Access the most powerful time series database as a service
  • CodiumAI - TestGPT | Generating meaningful tests for busy devs
  • 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.

  • ONLYOFFICE

    ONLYOFFICE Docs — document collaboration in your environment. Powerful document editing and collaboration in your app or environment. Ultimate security, API and 30+ ready connectors, SaaS or on-premises

  • 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

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

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