Kazo.Os.Windowing.Blazor
3.0.0
dotnet add package Kazo.Os.Windowing.Blazor --version 3.0.0
NuGet\Install-Package Kazo.Os.Windowing.Blazor -Version 3.0.0
<PackageReference Include="Kazo.Os.Windowing.Blazor" Version="3.0.0" />
<PackageVersion Include="Kazo.Os.Windowing.Blazor" Version="3.0.0" />
<PackageReference Include="Kazo.Os.Windowing.Blazor" />
paket add Kazo.Os.Windowing.Blazor --version 3.0.0
#r "nuget: Kazo.Os.Windowing.Blazor, 3.0.0"
#:package Kazo.Os.Windowing.Blazor@3.0.0
#addin nuget:?package=Kazo.Os.Windowing.Blazor&version=3.0.0
#tool nuget:?package=Kazo.Os.Windowing.Blazor&version=3.0.0
Kazo.Os.Windowing.Blazor
Razor components that render a Kazo.Os.Windowing.Core WindowRuntime:
DesktopArea (the workspace surface), WindowHost (one window's chrome
frame), and WindowChrome (title bar, minimize/maximize/close, and the
pointer-driven move/resize gesture). No MudBlazor dependency.
Usage
<DesktopArea Windows="Runtime.Windows"
OnFocus="HandleFocus"
OnMinimize="HandleMinimize"
OnToggleMaximize="HandleToggleMaximize"
OnClose="HandleClose"
OnGesture="HandleGesture">
<WindowContent Context="window">
@window.Content
</WindowContent>
</DesktopArea>
window.Content is the RenderFragment the host supplied when it created
that window's WindowRuntimeState — this package never needs to know what
a window's content actually is.
Pair this package with Kazo.Os.Taskbar.Blazor for a taskbar over the same
runtime. See Kazo.Os.Windowing.SampleHost in the source repository for a
complete, minimal host that uses only these packages.
Several screens
Give every DesktopArea the same WindowLayers and its own DisplayId. The area of
screen 1 renders each window once; a window on another screen has its element moved into
that screen's window layer (WindowPortal), so changing screen never recreates it. Add the
screen to the runtime (AddDisplayCommand) before rendering its area.
<DesktopArea Windows="Runtime.Windows" Layers="Layers" ... />
<DesktopArea Windows="Runtime.Windows" Layers="Layers" DisplayId="DisplayId.FromNumber(2)" ... />
See doc/en/wasm/dev/window-portal.md in the source repository (ADR 0178 §3).
With shared layers, a window dragged by its title bar and released over another screen's layer
(in the same page or in another browser window) moves to that screen, where it was dropped
(WindowChrome.ReportScreenDropAsync, ADR 0183, doc/en/wasm/dev/drag-between-screens.md).
Localization
The package's texts (accessible labels, window buttons such as Minimize, Maximize, Restore, Close, Back) live in Resources/Strings.resx
(English) and Resources/Strings.fr.resx (French), read through
Kazo.Os.Theming.Blazor.Localization.PackageStringLocalizer (ADR 0104): a host that
registers an IStringLocalizer<T> (Kazo OS registers its session-language
SessionStringLocalizer<T>) gets its language; a host without localization gets English.
Single surface (phones)
SingleSurfaceArea shows one window at a time, full screen and without chrome,
as MobileShell does. It renders the stack given by
SingleSurfacePresentationPolicy.SelectSurfaceStack: the app's window, then
its owner-modal dialogs. Every window of the stack is maximized; only the top
one takes input, the windows under it stay mounted and inert. Each window host
is its own stacking context, so nothing in an app draws over its dialog
(ADR 0171).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Kazo.Os.Theming.Blazor (>= 3.0.0)
- Kazo.Os.Windowing.Abstractions (>= 3.0.0)
- Kazo.Os.Windowing.Core (>= 3.0.0)
- Microsoft.AspNetCore.Components.Web (>= 10.0.14)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Kazo.Os.Windowing.Blazor:
| Package | Downloads |
|---|---|
|
Kazo.Os.Platform.Blazor
Kazo OS Blazor shell: desktop, launcher, window launching, dialogs and lazy app loading. For composing an OS host. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 49 | 11/5/2026 |
Kazo OS 3.0.0, changes for app developers:
- Backups end in .kosbak, design tokens are --kos-*, diagnostics are KOS*. The last short HOS names become KOS. New backups are .kosbak files; an older .hosbak backup can still be restored. The CSS variables of the design system are now --kos-* (with data-kos-* attributes and kos-* classes): a theme file or theme pack written with --hos-* is still read, and saved themes and settings are updated at the first start. Build diagnostics are now KOSAPP, KOSSDK, KOSWEB, KOSBG and KOSCHG, with the same numbers: update NoWarn and pragma lists.
- Commands, files, app ids and settings take the Kazo OS names. hackpkg becomes kazopkg and hackbackup becomes kazobackup (the old names still work and print a warning), app packages and theme packs use .kazoapp and .kazotheme (the old .hackapp and .hacktheme are still read), the OS files move to /etc/kazoos, ~/.config/kazoos and /etc/kazoweb, the store is called Kazo OS Store, ASP.Hack becomes ASP.Kazo and Hack Paint becomes Kazo Paint. The server and the PWA read the KazoOs configuration section and KAZOOS_ variables, and still read HackerOs and HACKEROS_. The dotnet new templates are now kazoos-window, kazoos-solution... App ids become org.kazoos.*, capabilities kazoos.*, and the browser databases, theme ids and caches take the kazoos and kazoweb names.
- HackerOS is now called Kazo OS. The name HackerOS was already used by a Linux distribution. The OS now shows the name Kazo OS everywhere: window title, installed app, sign-in screen, notifications and documentation.
- SDK 3.0: the Kazo.Os.* packages and the Kazo* types. Every package moves from HackerOs.* to Kazo.Os.* (Kazo.Os.AppSdk, Kazo.Os.Templates...) and every SDK type from Hack* to Kazo* (HackFile becomes KazoFile, HackerIcon becomes KazoIcon, and the HackIcon record becomes KazoSurfaceIcon). The version is 3.0.0: an app built on SDK 2.x is refused and must be rebuilt against the new packages.
- The Kazo OS Store workflow of the kazoos-solution template opens its pull request again. The workflow no longer passes --remote to gh repo fork, which current gh versions refuse, and retries the clone of the fork while GitHub creates it.
- The kazoos-solution template names its app project for the Kazo OS Store. store/store.json of a new app repository has a project field, so the catalog builds the app's project instead of the whole solution, whose tests project has no KazoOsPack target.
Release notes: https://github.com/Kazo-ca/Os/releases/tag/v3.0.0