The program compositor
The compositor (docs/ARCHITECTURE.md, U8): the service that owns the display. It combines the surfaces of programs into the framebuffer, and it sends input to the program that has focus. It is also the desktop shell of this first version: a bar with the menu of the programs and the menu of the windows, and windows that the person moves. It follows the design rules (docs/DESIGN.md): rectangles only, the grid of 8 pixels, the colors of support/graphics.
| Fact | Value |
|---|---|
| Source | programs/compositor |
| Boot image | in the boot image; the image is not built, so its size is not known |
| Imports | none |
| Imported by | none |
Exports
| Export | What it does |
|---|---|
| pointer() -> Table(Pointer) | gives the place of the pointer on the screen, its buttons, the menu of the bar that is open, whether the launcher is open, and the name of the pointer shape, as one row |
| windows() -> Table(Window) | gives one row for each window, the front one first: its title, its place and its size with the frame, its order from the front, whether it has the focus, and whether the keys go to it |
| entry() |
Read from the source of the module, as the build reads it to describe the exports (tools/kerneltool/describe.odin).
What the root service gives it
| What | Value | As the root service says |
|---|---|---|
| Grants | {} | Not named in grants_of: the grants of each other program. |
| Budget: pages, programs, threads | {pages = 4096, programs = 1, threads = 1} |
Read from grants_of and things_of in programs/root/main.odin; budget_of in the same file adds the limits of processor time and of log records.
