{"id":14965082,"url":"https://github.com/wieslawsoltes/dock","last_synced_at":"2026-02-12T13:43:01.956Z","repository":{"id":41057272,"uuid":"134182879","full_name":"wieslawsoltes/Dock","owner":"wieslawsoltes","description":"A docking layout system.","archived":false,"fork":false,"pushed_at":"2025-05-07T17:00:34.000Z","size":317474,"stargazers_count":1108,"open_issues_count":22,"forks_count":112,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-05-07T18:19:44.879Z","etag":null,"topics":["avalonia","avaloniaui","control","dock","docking","docking-application","docking-framework","docking-layout","docking-library","gui","layout","multi-platform","reactiveui","system","xaml"],"latest_commit_sha":null,"homepage":"https://wieslawsoltes.github.io/Dock/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wieslawsoltes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["wieslawsoltes"]}},"created_at":"2018-05-20T20:08:39.000Z","updated_at":"2025-05-07T17:00:29.000Z","dependencies_parsed_at":"2023-02-02T08:46:40.463Z","dependency_job_id":"620528f4-0043-4f71-b24d-715c681e9376","html_url":"https://github.com/wieslawsoltes/Dock","commit_stats":{"total_commits":2361,"total_committers":13,"mean_commits":181.6153846153846,"dds":"0.24142312579415504","last_synced_commit":"5e08ea68d83771de9f92f68c02a7d6fba6827464"},"previous_names":[],"tags_count":103,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FDock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FDock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FDock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FDock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes","download_url":"https://codeload.github.com/wieslawsoltes/Dock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020624,"owners_count":22000755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","avaloniaui","control","dock","docking","docking-application","docking-framework","docking-layout","docking-library","gui","layout","multi-platform","reactiveui","system","xaml"],"created_at":"2024-09-24T13:34:11.560Z","updated_at":"2026-02-02T10:46:40.671Z","avatar_url":"https://github.com/wieslawsoltes.png","language":"C#","funding_links":["https://github.com/sponsors/wieslawsoltes"],"categories":[],"sub_categories":[],"readme":"# Dock\n\n[![Gitter](https://badges.gitter.im/wieslawsoltes/Dock.svg)](https://gitter.im/wieslawsoltes/Dock?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n[![Build Status](https://dev.azure.com/wieslawsoltes/GitHub/_apis/build/status/wieslawsoltes.Dock?branchName=master)](https://dev.azure.com/wieslawsoltes/GitHub/_build/latest?definitionId=89\u0026branchName=master)\n[![CI](https://github.com/wieslawsoltes/Dock/actions/workflows/build.yml/badge.svg)](https://github.com/wieslawsoltes/Dock/actions/workflows/build.yml)\n\n[![NuGet](https://img.shields.io/nuget/v/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Avalonia)\n[![NuGet](https://img.shields.io/nuget/dt/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Avalonia)\n[![MyGet](https://img.shields.io/myget/dock-nightly/vpre/Dock.Model.svg?label=myget)](https://www.myget.org/gallery/dock-nightly) \n\nA docking layout system.\n\n## About\n\n**Dock** is a docking layout system for [Avalonia](https://github.com/AvaloniaUI/Avalonia) applications. Use of Dock is governed by the MIT License.\n\n**Key Features:**\n- **ItemsSource Support**: Bind document collections directly to DocumentDock for automatic document management\n- **Flexible Content Templates**: Use DocumentTemplate for customizable document content rendering\n- **Multiple MVVM Frameworks**: Support for ReactiveUI, Prism, ReactiveProperty, and standard MVVM patterns\n- **Comprehensive Serialization**: Save and restore layouts with multiple format options (JSON, XML, YAML, Protobuf)\n- **Rich Theming**: Fluent and Simple themes with full customization support\n- **Floating Windows**: Detach documents and tools into separate windows\n- **Dependency Injection**: First-class support for .NET DI containers\n\n[![Dock](images/Dock.png)](images/Dock.png)\n\n## Building Dock\n\nFirst, clone the repository or download the latest zip.\n```\ngit clone https://github.com/wieslawsoltes/Dock.git\n```\n\n### Build using .NET Core\n\nOpen up a terminal prompt and execute the commands.\n\nTarget frameworks: `netstandard2.0`, `net6.0`, `net8.0`, `net10.0` for libraries and samples:\n```bash\ndotnet build src/Dock.Avalonia/Dock.Avalonia.csproj -c Release -f netstandard2.0\n```\n\nAlternatively execute the repository build script which restores,\nbuilds and tests all projects. The scripts work on Windows and Unix\nlike systems:\n\n```bash\n./build.sh       # or .\\build.cmd on Windows\n```\n\n## NuGet\n\nDock is delivered as a NuGet package.\n\nYou can find the packages here [NuGet](https://www.nuget.org/packages/Dock.Avalonia/) and install the package like this:\n\n```powershell\nInstall-Package Dock.Avalonia\nInstall-Package Dock.Model.Mvvm\nInstall-Package Dock.Serializer.Newtonsoft\nInstall-Package Dock.Avalonia.Themes.Fluent\n```\n\n**Available NuGet packages:**\n\n| NuGet | Package | Downloads |\n| --- | --- | --- |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Avalonia.svg)](https://www.nuget.org/packages/Dock.Avalonia) | [`Dock.Avalonia`](https://www.nuget.org/packages/Dock.Avalonia) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Avalonia.svg)](https://www.nuget.org/packages/Dock.Avalonia) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Avalonia.Diagnostics.svg)](https://www.nuget.org/packages/Dock.Avalonia.Diagnostics) | [`Dock.Avalonia.Diagnostics`](https://www.nuget.org/packages/Dock.Avalonia.Diagnostics) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Avalonia.Diagnostics.svg)](https://www.nuget.org/packages/Dock.Avalonia.Diagnostics) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Avalonia.Themes.Fluent.svg)](https://www.nuget.org/packages/Dock.Avalonia.Themes.Fluent) | [`Dock.Avalonia.Themes.Fluent`](https://www.nuget.org/packages/Dock.Avalonia.Themes.Fluent) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Avalonia.Themes.Fluent.svg)](https://www.nuget.org/packages/Dock.Avalonia.Themes.Fluent) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Avalonia.Themes.Simple.svg)](https://www.nuget.org/packages/Dock.Avalonia.Themes.Simple) | [`Dock.Avalonia.Themes.Simple`](https://www.nuget.org/packages/Dock.Avalonia.Themes.Simple) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Avalonia.Themes.Simple.svg)](https://www.nuget.org/packages/Dock.Avalonia.Themes.Simple) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Controls.ProportionalStackPanel.svg)](https://www.nuget.org/packages/Dock.Controls.ProportionalStackPanel) | [`Dock.Controls.ProportionalStackPanel`](https://www.nuget.org/packages/Dock.Controls.ProportionalStackPanel) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Controls.ProportionalStackPanel.svg)](https://www.nuget.org/packages/Dock.Controls.ProportionalStackPanel) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Controls.Recycling.svg)](https://www.nuget.org/packages/Dock.Controls.Recycling) | [`Dock.Controls.Recycling`](https://www.nuget.org/packages/Dock.Controls.Recycling) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Controls.Recycling.svg)](https://www.nuget.org/packages/Dock.Controls.Recycling) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Controls.Recycling.Model.svg)](https://www.nuget.org/packages/Dock.Controls.Recycling.Model) | [`Dock.Controls.Recycling.Model`](https://www.nuget.org/packages/Dock.Controls.Recycling.Model) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Controls.Recycling.Model.svg)](https://www.nuget.org/packages/Dock.Controls.Recycling.Model) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.MarkupExtension.svg)](https://www.nuget.org/packages/Dock.MarkupExtension) | [`Dock.MarkupExtension`](https://www.nuget.org/packages/Dock.MarkupExtension) | [![Downloads](https://img.shields.io/nuget/dt/Dock.MarkupExtension.svg)](https://www.nuget.org/packages/Dock.MarkupExtension) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Model) | [`Dock.Model`](https://www.nuget.org/packages/Dock.Model) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.svg)](https://www.nuget.org/packages/Dock.Model) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.Avalonia.svg)](https://www.nuget.org/packages/Dock.Model.Avalonia) | [`Dock.Model.Avalonia`](https://www.nuget.org/packages/Dock.Model.Avalonia) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.Avalonia.svg)](https://www.nuget.org/packages/Dock.Model.Avalonia) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.CaliburMicro.svg)](https://www.nuget.org/packages/Dock.Model.CaliburMicro) | [`Dock.Model.CaliburMicro`](https://www.nuget.org/packages/Dock.Model.CaliburMicro) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.CaliburMicro.svg)](https://www.nuget.org/packages/Dock.Model.CaliburMicro) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.Inpc.svg)](https://www.nuget.org/packages/Dock.Model.Inpc) | [`Dock.Model.Inpc`](https://www.nuget.org/packages/Dock.Model.Inpc) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.Inpc.svg)](https://www.nuget.org/packages/Dock.Model.Inpc) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.Mvvm.svg)](https://www.nuget.org/packages/Dock.Model.Mvvm) | [`Dock.Model.Mvvm`](https://www.nuget.org/packages/Dock.Model.Mvvm) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.Mvvm.svg)](https://www.nuget.org/packages/Dock.Model.Mvvm) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.Prism.svg)](https://www.nuget.org/packages/Dock.Model.Prism) | [`Dock.Model.Prism`](https://www.nuget.org/packages/Dock.Model.Prism) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.Prism.svg)](https://www.nuget.org/packages/Dock.Model.Prism) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.ReactiveProperty.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveProperty) | [`Dock.Model.ReactiveProperty`](https://www.nuget.org/packages/Dock.Model.ReactiveProperty) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.ReactiveProperty.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveProperty) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.ReactiveUI.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI) | [`Dock.Model.ReactiveUI`](https://www.nuget.org/packages/Dock.Model.ReactiveUI) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.ReactiveUI.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.ReactiveUI.Services.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services) | [`Dock.Model.ReactiveUI.Services`](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.ReactiveUI.Services.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Model.ReactiveUI.Services.Avalonia.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services.Avalonia) | [`Dock.Model.ReactiveUI.Services.Avalonia`](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services.Avalonia) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Model.ReactiveUI.Services.Avalonia.svg)](https://www.nuget.org/packages/Dock.Model.ReactiveUI.Services.Avalonia) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Serializer.Newtonsoft.svg)](https://www.nuget.org/packages/Dock.Serializer.Newtonsoft) | [`Dock.Serializer.Newtonsoft`](https://www.nuget.org/packages/Dock.Serializer.Newtonsoft) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Serializer.Newtonsoft.svg)](https://www.nuget.org/packages/Dock.Serializer.Newtonsoft) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Serializer.Protobuf.svg)](https://www.nuget.org/packages/Dock.Serializer.Protobuf) | [`Dock.Serializer.Protobuf`](https://www.nuget.org/packages/Dock.Serializer.Protobuf) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Serializer.Protobuf.svg)](https://www.nuget.org/packages/Dock.Serializer.Protobuf) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Serializer.SystemTextJson.svg)](https://www.nuget.org/packages/Dock.Serializer.SystemTextJson) | [`Dock.Serializer.SystemTextJson`](https://www.nuget.org/packages/Dock.Serializer.SystemTextJson) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Serializer.SystemTextJson.svg)](https://www.nuget.org/packages/Dock.Serializer.SystemTextJson) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Serializer.Xml.svg)](https://www.nuget.org/packages/Dock.Serializer.Xml) | [`Dock.Serializer.Xml`](https://www.nuget.org/packages/Dock.Serializer.Xml) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Serializer.Xml.svg)](https://www.nuget.org/packages/Dock.Serializer.Xml) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Serializer.Yaml.svg)](https://www.nuget.org/packages/Dock.Serializer.Yaml) | [`Dock.Serializer.Yaml`](https://www.nuget.org/packages/Dock.Serializer.Yaml) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Serializer.Yaml.svg)](https://www.nuget.org/packages/Dock.Serializer.Yaml) |\n| [![NuGet](https://img.shields.io/nuget/v/Dock.Settings.svg)](https://www.nuget.org/packages/Dock.Settings) | [`Dock.Settings`](https://www.nuget.org/packages/Dock.Settings) | [![Downloads](https://img.shields.io/nuget/dt/Dock.Settings.svg)](https://www.nuget.org/packages/Dock.Settings) |\n\n## Nightly Packages\n\nNightly builds are published to GitHub Packages on pushes to `master`. Versions use the `nightly.YYYYMMDD.RUN` suffix.\n\nAdd the GitHub Packages source (replace `OWNER` with the repository owner):\n* `https://nuget.pkg.github.com/OWNER/index.json`\n\nAuthenticate with a GitHub token that has `read:packages`:\n\n```powershell\ndotnet nuget add source https://nuget.pkg.github.com/wieslawsoltes/index.json -n github -u YOUR_GITHUB_USERNAME -p YOUR_GITHUB_TOKEN --store-password-in-clear-text\n```\n\nInstall pre-release packages:\n\n```powershell\nInstall-Package Dock.Avalonia -Pre\nInstall-Package Dock.Model.Mvvm -Pre\nInstall-Package Dock.Serializer.Newtonsoft -Pre\nInstall-Package Dock.Avalonia.Themes.Fluent -Pre\n```\n\n\n## Resources\n* [Documentation index](https://wieslawsoltes.github.io/Dock/)\n* Sample applications can be found under the [samples](samples/) directory\n  which illustrate each approach in a working project:\n  - **`DockXamlSample`** - XAML layouts with ItemsSource examples\n  - **`DockMvvmSample`** - Full MVVM implementation\n  - **`DockReactiveUISample`** - ReactiveUI patterns\n  - **`DockOfficeSample`** - Office-style workspaces with ReactiveUI navigation\n  - **`DockCodeOnlySample`** - Pure C# layouts\n  - **`Notepad`** - Real-world text editor example\n  - **`VisualStudioDemo`** - Visual Studio-like interface\n  - And many more specialized examples\n\n* [GitHub source code repository.](https://github.com/wieslawsoltes/Dock)\n\n## License\n\nDock is licensed under the [MIT license](LICENSE.TXT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fdock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwieslawsoltes%2Fdock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fdock/lists"}