Impossible OS Docs

Desktop Shell Features

What is it?

This roadmap plans the desktop-level shell features that sit between the wallpaper and the windows: a shared context menu engine, the desktop right-click menu, a wallpaper engine that reacts to settings changes, DPI scaling, PrintScreen capture, a night light colour filter, Focus (do not disturb), the Quick Settings flyout and up to eight virtual desktops with Task View. It takes over the context menu and desktop menu work that the older desktop shell roadmap listed. None of its nine sections has shipped; only the wallpaper has groundwork in the code.

How does it work?

Today. All shell code lives in desktop.c, described in Desktop Shell Today. What already exists toward this roadmap:

  • Wallpaper (partial, section 3). load_wallpaper() reads Wallpaper and WallpaperMode from HKLM\SYSTEM\Theme once at startup, falling back to C:\Impossible\Web\Wallpaper\default.jpg, then decodes and scales the image with one of the five fit modes in image.h. There is no reload, no Registry watch and no API to change it while running, and the Registry values are re-seeded every boot. The roadmap plans the Windows location (HKCU\Control Panel\Desktop), so the move from the shipped key is part of section 3.
  • Right-click (section 2). None. desktop_handle_click() ignores every button except the left one, and the three desktop icons have no actions.
  • DPI, screenshots, night light, Focus, Quick Settings, virtual desktops. No code. The generated theme tokens already carry the spec sizes these sections will use (a 256 pixel menu, a 360 pixel flyout, the desktop icon grid), but no C file includes them yet.

Planned design. The Implementation Order builds DPI first because every later surface scales through it:

  1. Context menu engine: an acrylic popup with icons, shortcut text, separators, checkmarks and one level of cascading submenus, reused by the taskbar and Start menu.
  2. Desktop right-click menu: View, Sort by, Refresh, New, Display settings and Personalize.
  3. Wallpaper engine: fill, fit, stretch, tile, center and span, with a Registry watch and a solid-colour fallback.
  4. DPI scaling: 100 to 200 percent, a DPI_SCALE() helper and a broadcast when the scale changes.
  5. Screenshot: PrintScreen, Alt+PrintScreen and Win+PrintScreen, saving PNG files and copying to the clipboard.
  6. Night light: a warm colour pass in the compositor on a schedule.
  7. Focus: suppresses toasts and sends them to the notification centre.
  8. Quick Settings: the 360 pixel flyout of toggle tiles and sliders.
  9. Virtual desktops: up to eight desktops, Win+Ctrl+arrow switching and a Task View overview.
flowchart LR
    DPI[DPI scaling] --> CM[context menu engine]
    CM --> DM[desktop right-click menu]
    DPI --> WP[wallpaper engine]
    QS[Quick Settings] --> NL[night light]
    QS --> FO[Focus]
    WM[window manager] --> VD[virtual desktops]

What are its interfaces?

Interface Status
desktop_draw_wallpaper(), desktop_get_wallpaper_surface(), desktop_copy_wallpaper_rect() Shipped (desktop.h)
image_load(), image_scale(), image_save_png(), image_fit_t Shipped (image.h)
desktop_handle_click() (left button only) Shipped
context_menu_show(), context_menu_hide(), struct menu_item Planned, section 1
wallpaper_set(), DPI_SCALE(), WM_DPI_CHANGED, screenshot_capture_full() Planned, sections 3 to 5
night_light_*(), focus_mode_*(), quick_settings_*(), vdesk_*() Planned, sections 6 to 9

How do I use it?

The wallpaper and its fit mode cannot be changed persistently yet: every boot re-seeds the Registry defaults (stretch) and saved hives are never loaded, which Registry Tree SMP Synchronization and Hive Durability owns. Boot the desktop with bash scripts/build.sh run to see the default. No test reaches the shell code yet; the desktop suite (bash scripts/test.sh SUITE=desktop) covers the window manager and input around it.

What is not implemented yet?

How does it compare with Windows 11 and Linux?

Windows 11 draws context menus with CreatePopupMenu or a WinUI 3 MenuFlyout on Acrylic, scales through per-monitor DPI awareness and WM_DPICHANGED, and keeps the wallpaper under HKCU\Control Panel\Desktop. GNOME stores the wallpaper in org.gnome.desktop.background and has had a Quick Settings menu since GNOME 43. The plan follows Windows 11, and draws the virtual desktop fade as one alpha pass in the software renderer rather than on a GPU.

See also

Impossible OS is free software under the GPL-3.0-only license. Last updated Edit this page on GitHub