Skip to content

Desktop Client Side Decoration support #31373

Open
@refi64

Description

@refi64

(accidentally filed at and since moved from google/flutter-desktop-embedding#340)

It would be great if desktop embedding supported CSDs. Something to the effect of:

import 'package:csd/csd.dart';

//... 
Csd.enableIfPossible(); // inside main()
// inside a build function
AppBar(
  actions: [
    if (Csd.enabled)
      MyCloseButton(),
  ]
)

I'd be happy to contribute to this, but it seems to be pending some upstream GLFW stuff, unless Flutter does the window drag / resize callbacks manually...

Activity

stuartmorgan-g

stuartmorgan-g commented on Apr 21, 2019

@stuartmorgan-g
Contributor

Context: https://en.wikipedia.org/wiki/Client-Side_Decoration

I'd be happy to contribute to this, but it seems to be pending some upstream GLFW stuff

I'm not sure supporting this in the GLFW shell is useful since that won't be the primary supported shell on any platform. It's something to consider for the real Windows (likely UWP) and Linux (likely GTK) shells, however.

refi64

refi64 commented on Apr 21, 2019

@refi64
Author

At least for GTK that would actually be far easier, since GDK already has functions for this that also take care of the X11 / Wayland differences.

Thinking about this a bit more, there would likely be some widget CsdBar or similar that would wrap a child and automatically call the platform-specific drag functions.

added
engineflutter/engine repository. See also e: labels.
and removed on Jul 26, 2019
added this to the Goals milestone on Aug 13, 2019
handicraftsman

handicraftsman commented on Oct 11, 2019

@handicraftsman

I believe SDL shell would be pretty nice for this - it abstracts most platform specific features like this.

stuartmorgan-g

stuartmorgan-g commented on Oct 11, 2019

@stuartmorgan-g
Contributor

Abstracting the platform at the level of implementing the embedding isn't a goal. Embeddings are platform-specific implementations of our own abstraction. Additional layers of abstractions make it harder to implement platform-specific features, or to support uses like add-to-app.

changed the title [-]Desktop CSD support[/-] [+]Desktop Client Side Decoration support on Windows[/+] on Jan 9, 2020
added
P2Important issues not at the top of the work list
on May 29, 2020

55 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Issues that are less important to the Flutter projecta: desktopRunning on desktopc: new featureNothing broken; request for a new capabilitycustomer: crowdAffects or could affect many people, though not necessarily a specific customer.engineflutter/engine repository. See also e: labels.frameworkflutter/packages/flutter repository. See also f: labels.platform-linuxBuilding on or for Linux specificallyplatform-windowsBuilding on or for Windows specificallyteam-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @stuartmorgan-g@cbracken@Hixie@jmagman@kf6gpe

        Issue actions

          Desktop Client Side Decoration support · Issue #31373 · flutter/flutter