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()readsWallpaperandWallpaperModefromHKLM\SYSTEM\Themeonce at startup, falling back toC:\Impossible\Web\Wallpaper\default.jpg, then decodes and scales the image with one of the five fit modes inimage.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:
- 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.
- Desktop right-click menu: View, Sort by, Refresh, New, Display settings and Personalize.
- Wallpaper engine: fill, fit, stretch, tile, center and span, with a Registry watch and a solid-colour fallback.
- DPI scaling: 100 to 200 percent, a
DPI_SCALE()helper and a broadcast when the scale changes. - Screenshot: PrintScreen, Alt+PrintScreen and Win+PrintScreen, saving PNG files and copying to the clipboard.
- Night light: a warm colour pass in the compositor on a schedule.
- Focus: suppresses toasts and sends them to the notification centre.
- Quick Settings: the 360 pixel flyout of toggle tiles and sliders.
- 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?
- Context Menu Engine and Desktop Right-Click Menu.
- Wallpaper Engine and DPI Scaling.
- Screenshot, Night Light and Focus / Do Not Disturb.
- Quick Settings Panel and Virtual Desktops.
- Menu and flyout motion comes from the Animation Engine, colours from the Theme System, and the taskbar and Start menu that host these surfaces are the Taskbar and Start Menu, Tray and Notifications.
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.