Skip to content

Linux support #3

@SergeevPavel

Description

@SergeevPavel
  • Requirements
    • Capable of running with both X11 and Wayland
      • We may implement both of them
      • Or investigate possibility of running in compatibility mode
    • Should be integrated with Skiko the same way as MacOS target does
    • Should support OpenGL backend, Vulkan is still too raw in Skia
    • At the beginning, should have a separate sample application. Later we will abstract some parts
    • Native part shouldn't depend on Skia, it should be pluggable from Kotlin
  • Design notes
    • Keep an API surface small, but enough to implement functionality of Fleet Window manager and Compose
      • e.g. window creation might require number of calls to platform methods, it's better to group them in one create_window function
    • Keep API close to platform APIs
      • e.g. it's fine to have different attributes in events of similar type in different platforms
    • Code reuse between platforms is non-goal
      • Toolkit API in Kotlin should expose close to platform API, on top of that we will build a layer to abstract platform differences when possible. For now it's not clear where this abstraction layer will leave. It might be Fleet/Dock Window Manager, it might be part of Compose For Desktop, or it might be a part of desktop-toolkit library.
  • Milestones [Kotlin APIs implemented]
      1. Setup infrastructure; Gradle tasks to build native, generate java boilerplate, setup demo app
      1. Application initialisation; Run event loop; Create a window
      1. Mouse events; OpenGL context, Skia integrated with Window context
      1. Basic keyboard
    • ...
  • Proposed workflow
    • Working with code review in branch
    • Daily meetings with fixed time span to discuss current progress

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions