Skip to content
Avalloy.CoreAvalloy.Core

The app shell

Avalloy.Core is the layer an app sits on. Root namespace Avalloy. It has one dependency that matters, Avalonia, plus the Microsoft.Extensions family for DI, configuration and logging, CommunityToolkit.Mvvm, and Sentry's logging integration, which stays off until you turn it on.

sh
dotnet add package Avalloy.Core
AreaThe piecesPage
The appAvalloyApp, ShellAvalloyApp, the deferred launch and AlloySplashWindow, SingleInstanceGuard, AppRelaunch, LoginShellPathThe app
WindowsShellWindow, ShellDialog, AlloyTitleBar, TitleBarHeaderReserve, MacOSTitleBar, WindowGeometry, WindowPlacementWindows and the title bar
CommandsIAlloyCommand, [Command], CommandRegistry, KeyboardDispatcher, GestureParser, the palette, the shortcut editorCommands and keybindings
PreferencesPreferencesService<T>, PreferencesLocation, presets, ResourceCascade, TokenSchema, AppearancePrefsPreferences
ThemingIThemeController, ThemeService, IAccentPublisher, AvalloyTheme, ThemeVariantResolver, NeutralPaletteTheming seams
ControlsTabStrip, the sidebar framework, the field controls, OverlayCard, PreferencesOverlay, attached behavioursControls
ServicesDialogs, toasts, logging and the log viewer, the folder picker, the macOS helpersServices
ProcessesCliRunner and CliResultCliRunner

The shape of it

Three ideas run through the package.

Seams, not switches. Anything an app might do differently is an interface the app class answers: ResolveThemeController, ResolveAccentPublisher, IDialogService, IKeymapStore, IUpdateSource. The default implementations are real, but nothing is sealed in.

Tokens, not styles. Controls bind resource keys, Surface.Pane, Text.Secondary, Radius.Card, and never a literal. A theme is a dictionary of those keys; swapping it repaints the app live. The keys themselves are the contract.

Engine-agnostic controls. TabStrip, GlyphIcon and the rest read their tokens back through AvalloyTheme.Applied, so the same control works under the native engine, the preset cascade, or an engine you bring.

Namespaces

NamespaceHolds
AvalloyAvalloyApp, ShellWindow, ShellDialog, WindowGeometry
Avalloy.CommandsThe command stack
Avalloy.PreferencesPreferences, presets, the cascade
Avalloy.ServicesDialogs, toasts, logging, ThemeService, the platform helpers
Avalloy.ThemingThe theme seams and the palette arithmetic
Avalloy.Controls.*TabStrip, the sidebar, the title bar, the log viewer, the splash
Avalloy.Views.ControlsThe field controls, overlays, the palette view
Avalloy.IconsGlyphIcon, IconResolver, the picker
Avalloy.AttachedPropertiesHoverIntent, AutoScroll, InlineRename, MacOSTitleBar, ...
Avalloy.TypographyFontCatalog, FontFaceDef, FontFaceVerification, CapCentering
Avalloy.CliCliRunner, CliResult

Released under the MIT License.