Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Graphics and Windowing

Drivers

VESA (vesad)

vesad is not really a driver, it writes to a framebuffer given by firmware (via UEFI or BIOS software interrupts).

Because we don't have GPU drivers yet, we rely on what firmware gives to us.

GPUs

On Linux/BSDs, the GPU communication with the kernel is done by the DRM system (Direct Rendering Manager, libdrm library), that Mesa3D drivers use to work (Mesa3D implements OpenGL/Vulkan drivers, DRM exposes the hardware interfaces).

That said, in Redox a "DRM driver" needs to be a user-space driver daemon which uses the system calls/schemes to communicate with the hardware.

The last step is to implement the Redox backend in our Mesa3D fork/recipe to use these user-space drivers.

軟體算繪

We don't have GPU drivers yet but LLVMpipe (OpenGL CPU emulation) is working.

Orbital

The Orbital desktop environment provides a display server, window manager and compositor.

與 X11/Wayland 的比較

This display server is more simple than X11 and Wayland making the porting task more quick and easy, it's not advanced like X11 and Wayland yet but enough to port most Linux/BSD programs.

Compared to Wayland, Orbital has one protocol server implementation (like X11 for a long time), while Wayland provides protocols for compositors (servers and window managers) and clients (applications if the compositor is not bundled).

Features

  • Custom Resolutions
  • App Launcher (bottom bar)
  • 檔案總管
  • 文字編輯器
  • Calculator
  • Terminal Emulator

If you hold the Super key (generally the key with a Windows logo) it will show all keyboard shortcuts in a pop-up.

程式庫

Programs using the following libraries can work on Orbital.

  • winit
  • softbuffer
  • Slint(透過 winit 與 softbuffer)
  • Iced(透過 winit 與 softbuffer)
  • egui (winit or SDL2 can be used)
  • SDL1.2
  • SDL2
  • Mesa3D's OSMesa

Security

In Orbital a GUI program cannot read input events or the content (framebuffer) from windows of other GUI programs, like Wayland.

Clients

Apps (or 'clients') create a window and draw to it by using the orbclient client.

Client Examples

If you wish to see examples of client apps that use orbclient to "talk" to Orbital and create windows and draw to them, then you can find some in orbclient/examples folder.

Porting

If you want to port a program to Orbital, see below:

  • If the program is written in Rust it probably works on Orbital because the winit crate is used in most places, but there are programs that access X11 or Wayland directly. You need to port these programs to winit and merge to upstream.

  • If the program is written in C or C++ and accesses X11 or Wayland directly, it must be ported to the Orbital library.