This document provides a high-level introduction to ClassIsland, explaining its purpose, key features, system requirements, and architectural design. It serves as an entry point for understanding the codebase structure and how major subsystems interact.
For detailed information about specific subsystems, refer to the following pages:
Sources: README.md1-31
ClassIsland is a cross-platform desktop application designed to display class schedule information on classroom multimedia screens. The application shows the current class schedule, upcoming classes, time remaining, and various notifications to help manage classroom activities. README.md23-25
The name "ClassIsland" is inspired by iOS Dynamic Island, reflecting the application's goal of providing a dynamic, always-visible information overlay on the desktop. README.md25-26
Key Characteristics:
| Aspect | Description |
|---|---|
| Platform | Cross-platform: Windows, macOS, Linux (X11) README.md23-25 README.md127-129 |
| Technology | .NET 8.0 application README.md15 ClassIsland.Core/ClassIsland.Core.csproj3 |
| UI Framework | Avalonia UI with MVVM pattern ClassIsland.Core/ClassIsland.Core.csproj64 |
| Architecture | Modular service-based architecture with plugin support README.md59 ClassIsland.PluginSdk/ClassIsland.PluginSdk.csproj1-10 |
| Primary Use Case | Classroom multimedia screen schedule display README.md23-25 |
Sources: README.md15-59 ClassIsland.Core/ClassIsland.Core.csproj3-64 ClassIsland.PluginSdk/ClassIsland.PluginSdk.csproj1-10
ClassIsland supports the following operating systems: README.md127-129
| Platform | Minimum Version | Notes |
|---|---|---|
| Windows | Windows 10 or higher | Requires .NET 8.0 Desktop Runtime README.md133 |
| macOS | macOS Big Sur 11 or higher | Supported from version 1.7.105.1+ README.md128-131 |
| Linux | Debian 10 or higher | Requires X11 graphics environment; Wayland not supported README.md129-131 README.md142-143 |
Sources: README.md15-143 ClassIsland.Core/ClassIsland.Core.csproj3
ClassIsland provides comprehensive schedule display and editing capabilities:
Display Features:
Editing Features:
Sources: README.md40-57 ClassIsland/Assets/Documents/ChangeLog.md19-23 ClassIsland.Shared/ClassIsland.Shared.csproj21
The application provides a priority-based notification system for class transitions and events:
Sources: README.md43
ClassIsland supports extensive customization through:
Components:
Plugins:
Sources: README.md58-70 ClassIsland/Assets/Documents/ChangeLog.md25-142 ClassIsland.PluginSdk/ClassIsland.PluginSdk.csproj1-10
The application entry point initializes the environment, handles single-instance logic via a Mutex, and configures global services like Sentry for error tracking. ClassIsland.Desktop/Program.cs34-138
Title: Application Startup and Single Instance Logic
Key Entry Components:
| Component | Location | Purpose |
|---|---|---|
AppEntry | ClassIsland.Desktop/Program.cs34 | Main setup function preparing the App instance. |
Mutex | ClassIsland.Desktop/Program.cs87 | Enforces single instance via Global\ClassIsland.Lock. |
ActivatePackageType | ClassIsland.Desktop/App.axaml.cs163-204 | Determines installation type (MSIX, folder, installer). |
CommonDirectories | ClassIsland.Desktop/App.axaml.cs211-224 | Configures application data paths based on package type. |
Sources: ClassIsland.Desktop/Program.cs31-138 ClassIsland.Desktop/App.axaml.cs163-224
ClassIsland utilizes a service-oriented architecture with dependency injection. Logic is encapsulated in services registered within the App host.
Title: System Entity Mapping
Key Project Layers:
| Component | Purpose |
|---|---|
MainViewModel | Central state management for the main window, including notification content and edit mode state. |
Settings | Observable model containing all application configurations and notification provider states. |
MainWindow | The primary Avalonia Window implementing ITopmostEffectPlayer and managing component presentation. |
IAppHost | Interface providing global access to registered services via GetService<T>(). |
Sources: ClassIsland.Core/ClassIsland.Core.csproj1-110
ClassIsland uses a modern .NET build system with support for multiple packaging formats and platforms:
IsMsix property and conditional compilation ClassIsland.Core/ClassIsland.Core.csproj12ClassIsland.Launcher project is an AOT-compiled executable responsible for discovering and launching the correct ClassIsland.Desktop version, supporting side-by-side installations and rollbacks ClassIsland.Launcher/Program.cs14-57Sources: ClassIsland.Core/ClassIsland.Core.csproj3-12 ClassIsland.Desktop/Program.cs111-115 ClassIsland.Launcher/Program.cs14-57
To learn more about specific subsystems:
Sources: Wiki Table of Contents
Refresh this wiki