Experimental embedder for Flutter

Overview

NativeShell (Experimental embedder for Flutter)

Features

  • Leverages existing Flutter desktop embedder on each platform
  • Unlike Flutter desktop embedders, NativeShell provides consistent platform agnostic API
  • Multi-window support
  • Window management
    • Adjusting window styles and geometry
    • Modal dialogs
    • Windows can be set to track content size and resize automatically when content changes
  • Platform menus (popup menu, menu bar)
  • Drag and Drop
  • Written in Rust, Flutter build transparently integrated with cargo

Status

  • This is project in a very experimental stage

Getting started

Prerequisites:

  1. Install Rust
  2. Install Flutter
  3. Enable Flutter desktop support
  4. Switch to Flutter Master (flutter channel master; flutter upgrade)

Clone and run examples:

git clone https://github.com/nativeshell/examples.git
cd examples
cargo run

For Apple Silicon Macs, you might need to run the example using the flag to force x86_64 architecture:

rustup target add x86_64-apple-darwin
cargo run --target=x86_64-apple-darwin

Alternatively you can use environment variables:

# Recommended if using rust-analyzer to minimize redundant rebuilds
export CARGO_TARGET_DIR=target/x86_64
export CARGO_BUILD_TARGET=x86_64-apple-darwin
cargo run

For more information read the introductory post or go to nativeshell.dev.

Comments
  • Can't use fonts

    Can't use fonts

    I can't seem to add a custom font to my project built with nativeshell. Trying to add a font to the pubspec.yaml causes the build to fail with this error:

    Stderr:
      [  +67 ms] Error: unable to locate asset entry in pubspec.yaml: "fonts/Inter/Inter-Regular.ttf".
      [  +11 ms] Target debug_macos_bundle_flutter_assets failed: Exception: Failed to bundle asset files.
                 #0      copyAssets (package:flutter_tools/src/build_system/targets/assets.dart:61:5)
    

    I have confirmed the path to the asset is correct, and I have used the exact same configuration on another project to be sure.

    opened by wilsonowilson 20
  • Error connecting to the service protocol: failed to connect.

    Error connecting to the service protocol: failed to connect.

    I've seen this error a lot lately. Whenever I try to attach Vscode to my Nativeshell app, this error is returned:

    Error connecting to the service protocol: failed to connect to http://127.0.0.1:49925/wGGO2vRhFfw=/.
    

    Running a normal Flutter app works fine. Cleaning flutter and restarting my computer has no effect. It seems to randomly start and stop working.

    opened by wilsonowilson 17
  • Error running template on Mac with Apple Silicon

    Error running template on Mac with Apple Silicon

    I just tried to run the example project on an apple silicon mac, but cargo run produces this error:

    Target debug_unpack_macos failed: Exception: Binary /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS does not contain arm64.
    

    All logs:

    failed to run custom build command for `nativeshell_examples v0.1.0 (/Users/wilson/Developer/Play/examples)`
    
    Caused by:
      process didn't exit successfully: `/Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-0c7a4a584dad4c99/build-script-build` (exit code: 101)
      --- stdout
      Build failed with error:
      Flutter Tool Failed!
      Status: ExitStatus(ExitStatus(256))
      Command: "\"flutter\" \"assemble\" \"--output=.\" \"--define=BuildMode=debug\" \"--define=TargetPlatform=darwin\" \"--define=DarwinArchs=arm64\" \"--define=TargetFile=../../../../../../lib/main.dart\" \"-v\" \"--suppress-analytics\" \"debug_macos_bundle_flutter_assets\""
      Stderr:
      [   +5 ms] Target debug_unpack_macos failed: Exception: Binary /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS does not contain arm64. Running lipo -info:
                 Non-fat file: /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS is architecture: x86_64
    
                 #0      UnpackMacOS._thinFramework (package:flutter_tools/src/build_system/targets/macos.dart:97:7)
                 #1      UnpackMacOS.build (package:flutter_tools/src/build_system/targets/macos.dart:76:5)
                 #2      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:836:27)
                 <asynchronous suspension>
                 #3      Future.wait.<anonymous closure> (dart:async/future.dart)
                 <asynchronous suspension>
                 #4      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:774:32)
                 <asynchronous suspension>
                 #5      FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:603:16)
                 <asynchronous suspension>
                 #6      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:314:32)
                 <asynchronous suspension>
                 #7      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1126:27)
                 <asynchronous suspension>
                 #8      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #9      CommandRunner.runCommand (package:args/command_runner.dart:196:13)
                 <asynchronous suspension>
                 #10     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:284:9)
                 <asynchronous suspension>
                 #11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #12     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:232:5)
                 <asynchronous suspension>
                 #13     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
                 <asynchronous suspension>
                 #14     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #15     main (package:flutter_tools/executable.dart:91:3)
                 <asynchronous suspension>
    
      [   +4 ms] 
                 #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
                 #1      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:331:7)
                 <asynchronous suspension>
                 #2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1126:27)
                 <asynchronous suspension>
                 #3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #4      CommandRunner.runCommand (package:args/command_runner.dart:196:13)
                 <asynchronous suspension>
                 #5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:284:9)
                 <asynchronous suspension>
                 #6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:232:5)
                 <asynchronous suspension>
                 #8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
                 <asynchronous suspension>
                 #9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #10     main (package:flutter_tools/executable.dart:91:3)
                 <asynchronous suspension>
    
    
    
      Stdout:
      [ +150 ms] executing: sysctl hw.optional.arm64
      [  +38 ms] Exit code 0 from: sysctl hw.optional.arm64
      [   +3 ms] hw.optional.arm64: 1
      [   +7 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
      [  +26 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
      [        ] 320f27713bc843be7024b8e4216ab31a67e352ad
      [   +1 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git tag --points-at 320f27713bc843be7024b8e4216ab31a67e352ad
      [  +59 ms] Exit code 0 from: git tag --points-at 320f27713bc843be7024b8e4216ab31a67e352ad
      [   +2 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git describe --match *.*.* --long --tags 320f27713bc843be7024b8e4216ab31a67e352ad
      [  +57 ms] Exit code 0 from: git describe --match *.*.* --long --tags 320f27713bc843be7024b8e4216ab31a67e352ad
      [        ] 2.3.0-16.0.pre-180-g320f27713b
      [  +10 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
      [  +17 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
      [        ] origin/master
      [        ] executing: [/Users/wilson/Developer/SDK/flutter/] git ls-remote --get-url origin
      [  +16 ms] Exit code 0 from: git ls-remote --get-url origin
      [        ] https://github.com/flutter/flutter.git
      [  +81 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git rev-parse --abbrev-ref HEAD
      [  +30 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
      [        ] master
      [   +7 ms] executing: sw_vers -productName
      [  +17 ms] Exit code 0 from: sw_vers -productName
      [        ] macOS
      [        ] executing: sw_vers -productVersion
      [  +16 ms] Exit code 0 from: sw_vers -productVersion
      [        ] 11.3
      [        ] executing: sw_vers -buildVersion
      [  +16 ms] Exit code 0 from: sw_vers -buildVersion
      [        ] 20E232
      [ +183 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
      [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
      [ +127 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
      [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
      [   +1 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
      [  +38 ms] Initializing file store
      [   +8 ms] Done initializing file store
      [  +47 ms] Skipping target: gen_localizations
      [  +16 ms] Skipping target: gen_dart_plugin_registrant
      [   +6 ms] Skipping target: debug_macos_framework
      [   +1 ms] debug_unpack_macos: Starting due to {}
      [ +441 ms] Skipping target: kernel_snapshot
      [   +6 ms] Persisting file store
      [   +9 ms] Done persisting file store
      [  +17 ms] "flutter assemble" took 772ms.
      [  +10 ms] ensureAnalyticsSent: 6ms
      [   +1 ms] Running shutdown hooks
      [        ] Shutdown hooks complete
      [   +2 ms] exiting with code 1
    
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:26:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by wilsonowilson 11
  • Build error under Linux

    Build error under Linux

    Hello!

    Thanks for making nativeshell! It had me very curious, so following the README I cloned the example repository and tried to run it, only to find the following output:

    examples on ξ‚  main [?] is πŸ“¦ v0.1.0 via 🎯 v2.14.0-188.0.dev via πŸ¦€ v1.50.0
    πŸ”‹πŸ”½32% ❯ cargo run                                                                                                                     [22:22:53]
       Compiling nativeshell_examples v0.1.0 (/home/dureuill/flutter/examples)
       Compiling gtk v0.9.2
    error: failed to run custom build command for `nativeshell_examples v0.1.0 (/home/dureuill/flutter/examples)`
    
    Caused by:
      process didn't exit successfully: `/home/dureuill/flutter/examples/target/debug/build/nativeshell_examples-2bba2697ebaef4c9/build-script-build` (exit code: 101)
      --- stdout
    
      ** Build failed with error **
    
      Flutter artifact location path at "/bin/cache/artifacts/engine/linux-x64" does not exist! Try running 'flutter precache'
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:26:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    

    I installed flutter, enabled desktop support and switched to the master channel following the readme, here is the output of flutter doctor:

    examples on ξ‚  main [?] is πŸ“¦ v0.1.0 via 🎯 v2.14.0-188.0.dev via πŸ¦€ v1.50.0 took 6s
    πŸ”‹πŸ”½32% ❯ flutter doctor                                                                                                                [22:23:01]
    Doctor summary (to see all details, run flutter doctor -v):
    [βœ“] Flutter (Channel master, 2.3.0-17.0.pre.265, on Manjaro Linux 5.10.36-2-MANJARO, locale fr_FR.UTF-8)
    [βœ—] Android toolchain - develop for Android devices
        βœ— Unable to locate Android SDK.
          Install Android Studio from: https://developer.android.com/studio/index.html
          On first launch it will assist you in installing the Android SDK components.
          (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
          If the Android SDK has been installed to a custom location, please use
          `flutter config --android-sdk` to update to that location.
    
    [βœ—] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
        ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
    [βœ“] Linux toolchain - develop for Linux desktop
    [!] Android Studio (not installed)
    [βœ“] Connected device (1 available)
    
    ! Doctor found issues in 3 categories.
    

    Running flutter -v create hello_world followed by a flutter run -d linux does result in me seeing the flutter hello world in my linux.

    I also tried flutter precache like recommended, and it did something the first time around (not on subsequent runs), but this doesn't appear to solve the problem.

    Anything I can do to fix the build?

    I'm running manjaro with kernel 5.10.36-2.

    I'm new to flutter, so apologies if I misstepped!

    opened by dureuill 8
  • [MacOS] Pod install error saying a package requires higher minimum deployment target (but the app is already set)

    [MacOS] Pod install error saying a package requires higher minimum deployment target (but the app is already set)

    Hi @knopp!

    First of all, I want to thank you for developing all of this. This is a huge achievement to be honest.

    Problem

    I am getting an error after cargo run command. It complains that I have to use an higher minimum deployment target bu I already set that.

    What Have I Done?:

    • I am using a MacBook Pro (intel cpu), and the current MacOS version is: 10.15.5
    • I have successfully installed Rust, and run NativeShell Example from the repo. I tried every feature and it worked flawlessly.
    • I have copied .cargo, resources, src, build.rs, Cargo.toml, from App Template repo to my existing Flutter project folder.
    • The project is set to 10.15 on XCode application.
    • Also I make sure that it is MACOSX_DEPLOYMENT_TARGET = 10.15 by manually checking this file at: macos/Flutter/ephemeral/.symlinks/plugins/flutter_web_auth/example/macos/Runner.xcodeproj/project.pbxproj
    • I added the package nativeshell: ^0.1.10 into pubspec.yaml
    • By the way, I should say that I am using FVM (Flutter Version Manager). So I also refreshed the packages by fvm flutter pub get
    • I installed the pods by doing cd macos --> pod install
    • I have added a launch.json file in .vscode folder in order to use that Flutter: Attach to Process process.
    • Finally I ran cargo run and it generated lots of files into ./target folder. Then it gave this error below.

    One of the packages I use depends on this package flutter_web_auth: ^0.3.1. Without using NativeShell, I can normally debug and release this app, like half an hour ago.

    Error Log:

    ** Build failed with error **
    
      External Tool Failed!
      Status: ExitStatus(ExitStatus(256))
      Command: "pod" "install"
      Stderr:
    
      Stdout:
      Analyzing dependencies
      [!] CocoaPods could not find compatible versions for pod "flutter_web_auth":
        In Podfile:
          flutter_web_auth (from `/PATH_TO_APP/target/debug/build/app_template-c9e9887c415ba219/out/xcode/symlinks/flutter_web_auth/macos`)
    
      Specs satisfying the `flutter_web_auth (from `/PATH_TO_APP/target/debug/build/app_template-c9e9887c415ba219/out/xcode/symlinks/flutter_web_auth/macos`)` dependency were found, but they required a higher minimum deployment target.
    
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:29:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by yasinarik 7
  • Unable to integrate into workspace

    Unable to integrate into workspace

    I doubt this is a NativeShell issue specifically; but I'm struggling to understand the problem and hope you might have some insight. As an aside - have you considered setting up a Discord (or similar) server for project discussion?

    I cloned the app_template and added it to my cargo workspace, so it's built alongside our main project crate. However - it no longer compiles:

    [workspace]
    members = [
        "frontend", # NativeShell app_template
        "libcompany/rust", # Existing business logic
    ]
    default-members = [
        "frontend",
        "libcompany/rust",
    ]
    

    cargo build

    error[E0277]: *const Class cannot be sent between threads safely --> /Users/me/.cargo/registry/src/github.com-1ecc6299db9ec823/nativeshell-0.1.9/src/shell/platform/macos/app_delegate.rs:156:1 | 156 | / lazy_static! { 157 | | static ref APPLICATION_DELEGATE_CLASS: ApplicationDelegateClass = unsafe { 158 | | let superclass = class!(NSObject); 159 | | let mut decl = ClassDecl::new("IMApplicationDeleagte", superclass).unwrap(); ... | 247 | | }; 248 | | } | |_^ *const Class cannot be sent between threads safely | = help: within ApplicationDelegateClass, the trait Send is not implemented for *const Class note: required because it appears within the type ApplicationDelegateClass --> /Users/me/.cargo/registry/src/github.com-1ecc6299db9ec823/nativeshell-0.1.9/src/shell/platform/macos/app_delegate.rs:153:8 | 153 | struct ApplicationDelegateClass(*const Class); | ^^^^^^^^^^^^^^^^^^^^^^^^ = note: required because of the requirements on the impl of Sync for spin::once::Once<ApplicationDelegateClass> = note: required because it appears within the type lazy_static::lazy::Lazy<ApplicationDelegateClass> = note: shared static variables must have a type that implements Sync = note: this error originates in the macro __lazy_static_create (in Nightly builds, run with -Z macro-backtrace for more info)

    And the same for MenuItemTargetClass, WindowClass and WindowDelegateClass

    What I've tried:

    • Deleting the workspace level Cargo.lock
    • Checking that the versions of lazy_static is consistent between nativeshell and my project crate (it is - 1.4.0)

    I wondered if that might be an issue with the objc crate; but I see something similar on Windows:

    error[E0277]: std::rc::Weak<WindowClass> cannot be sent between threads safely --> C:\Users\Administrator.cargo\registry\src\github.com-1ecc6299db9ec823\nativeshell-0.1.9\src\shell\platform\win32\window_adapter.rs:14:1 | 14 | / lazy_static! { 15 | | static ref GLOBAL: Global = Global { 16 | | window_class: RefCell::new(Weak::new()), 17 | | }; 18 | | } | |_^ std::rc::Weak<WindowClass> cannot be sent between threads safely | = help: the trait Send is not implemented for std::rc::Weak<WindowClass> = note: required because of the requirements on the impl of Send for RefCell<std::rc::Weak<WindowClass>> note: required because it appears within the type window_adapter::Global --> C:\Users\Administrator.cargo\registry\src\github.com-1ecc6299db9ec823\nativeshell-0.1.9\src\shell\platform\win32\window_adapter.rs:8:8 | 8 | struct Global { | ^^^^^^ = note: required because of the requirements on the impl of Sync for spin::once::Once<window_adapter::Global> = note: required because it appears within the type lazy_static::lazy::Lazy<window_adapter::Global> = note: shared static variables must have a type that implements Sync = note: this error originates in the macro __lazy_static_create (in Nightly builds, run with -Z macro-backtrace for more info)

    I do understand what the error is telling me, but struggling to see how I end up in this position.

    opened by thenextman 7
  • Hot Reload

    Hot Reload

    Have you thought about adding hot reload capabilities? This would probably require moving parts of the build process into the runtime but would align the developer experience with the standard flutter process. Obviously this would only work for the dart code and not the rust parts.

    opened by maxjoehnk 5
  • Crashes on multiple monitors in Windows

    Crashes on multiple monitors in Windows

    I tested with one monitor and worked.

    stack backtrace:
       0: std::panicking::begin_panic_handler
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\std\src\panicking.rs:517
       1: core::panicking::panic_fmt
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\core\src\panicking.rs:100
       2: core::panicking::panic
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\core\src\panicking.rs:50
       3: core::ops::arith::impl$9::add
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\arith.rs:100
       4: nativeshell::shell::geometry::_Point<i32>::distance<i32>
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\geometry.rs:144
       5: nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:98
       6: core::ops::function::impls::impl$4::call_once<tuple$<ref$<ref$<nativeshell::shell::platform::platform_impl::display::Display> >,ref$<ref$<nativeshell::shell::platform::platform_impl::display::Display> > >,nativeshell::shell::platform::platform_impl::displ
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:280
       7: core::cmp::min_by<ref$<nativeshell::shell::platform::platform_impl::display::Display>,ref_mut$<nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0> >
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\cmp.rs:1145
       8: core::iter::traits::iterator::Iterator::min_by::fold::closure$0<ref$<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2788
       9: core::iter::traits::iterator::Iterator::fold<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,ref$<nativeshell::shell::platform::platform_impl::display::Display>,core::iter::traits::iterator::Iterator::min_by::fold::c
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2171
      10: core::iter::traits::iterator::Iterator::reduce<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,core::iter::traits::iterator::Iterator::min_by::fold::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2216
      11: core::iter::traits::iterator::Iterator::min_by<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2791
      12: nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:94
      13: enum$<core::option::Option<ref$<nativeshell::shell::platform::platform_impl::display::Display> >, 1, 18446744073709551615, Some>::or_else<ref$<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::disp
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\option.rs:1149
      14: nativeshell::shell::platform::platform_impl::display::Displays::display_for_physical_point
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:90
      15: nativeshell::shell::platform::platform_impl::display::Displays::convert_physical_to_logical
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:120
      16: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::to_logical
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:400
      17: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::get_frame_rect
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:291
      18: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::adjust_window_position
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:324
      19: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::handle_message
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:664
      20: nativeshell::shell::platform::platform_impl::window::PlatformWindow::handle_message
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window.rs:640
      21: nativeshell::shell::platform::platform_impl::window::impl$1::wnd_proc
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window.rs:176
      22: nativeshell::shell::platform::platform_impl::window_adapter::wnd_proc
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_adapter.rs:179
      23: CallWindowProcW
      24: EnumChildWindows
      25: SetTimer
      26: KiUserCallbackDispatcher
      27: NtUserGetMessage
      28: GetMessageW
      29: windows::Windows::Win32::UI::WindowsAndMessaging::GetMessageW<windows::Windows::Win32::Foundation::HWND>
                 at C:\Users\SkyGh\.cargo\registry\src\github.com-1ecc6299db9ec823\windows-0.28.0\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:4228
      30: nativeshell::shell::platform::platform_impl::run_loop::State::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\run_loop.rs:164
      31: nativeshell::shell::platform::platform_impl::run_loop::PlatformRunLoop::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\run_loop.rs:240
      32: nativeshell::shell::run_loop::RunLoop::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\run_loop.rs:59
      33: build_test1::main
                 at .\src\main.rs:28
      34: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:227
    
    opened by Czappi 4
  • [Linux] failed building the example

    [Linux] failed building the example

    Hi,

    This is not an error or anything, but I want to share the hiccup I had because otherwise some people might give up early.

    Quick solution for busy people - need to run "flutter run" first for the example.

    ... and the background is following.

    When I followed the steps in the introduction, I got an error like below:

    First cargo run - error: build failed cargo run Compiling nativeshell_examples v0.1.0 (/home/bus710/repo/examples) Compiling glib v0.14.8 Compiling gio-sys v0.14.0 Compiling pango-sys v0.14.0 Compiling atk-sys v0.14.0 Compiling nativeshell v0.1.11 error: failed to run custom build command for `nativeshell_examples v0.1.0 (/home/bus710/repo/examples)`

    Caused by: process didn't exit successfully: /home/bus710/repo/examples/target/debug/build/nativeshell_examples-d760aadebf0231c2/build-script-build (exit status: 101) --- stdout

    ** Build failed with error **

    JSON operation failed: $missing field packageUri at line 1 column 9839Text: {"configVersion":2,"packages":[{"name":"async","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.8.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"boolean_selector","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"characters","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"charcode","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.3.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"clock","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"collection","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"cupertino_icons","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"fake_async","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"ffi","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-1.1.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"file","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter","rootUri":"file:///home/bus710/flutter/packages/flutter","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_test","rootUri":"file:///home/bus710/flutter/packages/flutter_test","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_web_plugins","rootUri":"file:///home/bus710/flutter/packages/flutter_web_plugins","packageUri":"lib/","languageVersion":"2.12"},{"name":"http","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"http_parser","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"js","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"matcher","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.11","packageUri":"lib/","languageVersion":"2.12"},{"name":"meta","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.7.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"nativeshell","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/nativeshell-0.1.10","packageUri":"lib/","languageVersion":"2.13"},{"name":"package_info_plus","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_linux-1.0.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_macos-1.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_platform_interface-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_web-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_windows-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"path","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"pedantic","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"platform","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"plugin_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"process","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.6","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"sky_engine","rootUri":"file:///home/bus710/flutter/bin/cache/pkg/sky_engine","packageUri":"lib/","languageVersion":"2.12"},{"name":"source_span","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"stack_trace","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"stream_channel","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"string_scanner","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"term_glyph","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"test_api","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"typed_data","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.6","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_platform_interface-2.0.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"vector_math","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"win32","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.1.3","packageUri":"lib/","languageVersion":"2.13"},{"name":"xdg_directories","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"nativeshell_examples","rootUri":"../","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_gen","rootUri":"flutter_gen","languageVersion":"2.12"}],"generated":"2021-10-15T16:29:46.750823Z","generator":"pub","generatorVersion":"2.15.0-82.2.beta"}

    --- stderr thread 'main' panicked at 'explicit panic', build.rs:26:9 stack backtrace: 0: std::panicking::begin_panic at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/panicking.rs:541:12 1: build_script_build::main at ./build.rs:26:9 2: core::ops::function::FnOnce::call_once at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/core/src/ops/function.rs:227:5 note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace. warning: build failed, waiting for other jobs to finish... error: build failed

    The error just says "build.rs" panicked. I had no clue because my setup seems fine to me.

    My setup

    $ flutter --version Flutter 2.6.0-12.0.pre.366 β€’ channel master β€’ https://github.com/flutter/flutter.git Framework β€’ revision a82c50f1f6 (47 minutes ago) β€’ 2021-10-15 09:48:08 -0700 Engine β€’ revision 8034050e78 Tools β€’ Dart 2.15.0 (build 2.15.0-217.0.dev)

    $ cargo version cargo 1.55.0 (32da73ab1 2021-08-23)

    $ rustc --version rustc 1.55.0 (c8dfcfe04 2021-09-06)

    Then I wanted to check if the example would be built without NativeShell. So I tried "flutter run" to build desktop/web app. For some reason, I couldn't see anything on the screen. At that moment I thought the flutter example might have some issue in the first place, but there is no issue in the issues. Then I just tried "cargo run" again.....

    Second cargo run - example got built normally $ cargo run 1m 9s Compiling nativeshell_examples v0.1.0 (/home/bus710/repo/examples) Compiling gdk-sys v0.14.0 Compiling gdk-pixbuf v0.14.0 Compiling gtk-sys v0.14.0 Compiling gdk v0.14.3 Compiling gtk v0.14.3 Compiling nativeshell v0.1.11 Finished dev [unoptimized + debuginfo] target(s) in 48.40s Running `target/debug/nativeshell_examples`

    ** Help me make NativeShell and Flutter on desktop better! ** We have a long way to go: https://nativeshell.dev/roadmap

    flutter: Observatory listening on http://127.0.0.1:40607/Y2oAKn1Y0iI=/ nativeshell: Writing VM Service info file into ${XDG_RUNTIME_DIR}/vmservice.nativeshell_examples

    So my shallow conclusion is that, there were not sufficient flutter packages downloaded/installed when I ran "cargo run" earlier, but the "flutter run" did it for me. Then the second trial was successful.

    ... I know this is a silly story, but I just hope people don't give up because of this.

    opened by bus710 4
  • Native shell debugger just like flutter for Vscode / android studio

    Native shell debugger just like flutter for Vscode / android studio

    Currently we have to run the app manually using cargo run, It would be interesting to see if there will be a debugger for this.

    This will make this package developer friendly and also in future when you add hot restart or reload, then we don't have to use the terminal instead use the debugger in our IDE(vscode is more general then android-studio for desktop).

    opened by prateekmedia 4
  • Create a community space

    Create a community space

    NOTE: This is a meta issue, and not related to technical functionality.

    It would be nice to have a community space for chatting and resolving issues. I'm quite interested in the project, but at the moment its hard to reach out in an interactive chat. Questions in general often don't belong into github issues and are better answered in an interactive conversation.

    My suggestion would be to use the issue tracker on Github as a bug tracker and have a separate chat instance (possibly a discord) as a community space for showcasing and discussion. If the project gains more attention, this would become a huge benefit opposed to just having issues.

    Thanks for the project, lets give it a proper community space!

    opened by Janrupf 4
  • std::rc::Weak<ContextImpl>` cannot be sent between threads safely

    std::rc::Weak` cannot be sent between threads safely

    How to solve this question ? I want to use context in 'thread::spawn' block ! The error message is blow :

    error[E0277]: std::rc::Weak<ContextImpl> cannot be sent between threads safely --> src/event_channels.rs:154:32 | 154 | sender.send(move || { | ^^^^ std::rc::Weak<ContextImpl> cannot be sent between threads safely | = help: within event_channels::EventChannels, the trait std::marker::Send is not implemented for std::rc::Weak<ContextImpl> = note: required because it appears within the type nativeshell::Context

    opened by zhukui 1
  • The Flutter Attach to Process gets stuck on Waiting...

    The Flutter Attach to Process gets stuck on Waiting...

    I'm trying to run the Flutter Attach to Process as said to support hot reload and hot restart. I've the examples app running but the this process is getting stuck while launching.

    My launch.json file

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Flutter: Attach to Process",
                "type": "dart",
                "request": "attach",
                "osx": {
                    "serviceInfoFile": "${env:TMPDIR}vmservice.nativeshell_examples",
                },
                "windows": {
                    "serviceInfoFile": "${env:TEMP}/vmservice.nativeshell_examples"
                },
                "linux": {
                    "serviceInfoFile": "${env:XDG_RUNTIME_DIR}/vmservice.nativeshell_examples"
                }
            },
        ]
    }
    
    

    You can see in the screenshot below it's waiting for connection from the application I guess Screenshot 2022-06-13 at 7 10 28 PM

    I'm not sure what's happening here as I've very little knowledge about running such kind of processes but I guess it's not able to find the running application. I'm on M1 mac and running the project on Flutter 3.0.1 stable and dart 2.17.1

    To reproduce the issue you can use this project I'm currently running https://github.com/rutvik110/examples

    opened by rutvik110 3
  • Frameless windows are not resizable on macOS

    Frameless windows are not resizable on macOS

    I noticed that the WindowStyle#canResize option has no effect when the frame option is WindowFrame.noFrame on macOS. Digging a little deeper I discovered these lines which skip applying the resizeable mask to frameless windows.

    Is there a reason why this is the case? In my experience with macOS dev, there is nothing that stops a borderless window from being resizeable. Besides, I think it's a fairly reasonable developer expectation that if a window is styled as resizeable then it should actually be resizeable.

    opened by filleduchaos 0
  • How to specify libflutter location

    How to specify libflutter location

    Hello, I'm attempting to package my nativeshell application into a self-contained bundle, but I'm having trouble getting it to search the local directory for libflutter_linux_gtk.so. With the library and executable in the same directory, I get the following error.

    DlOpen { desc: "libflutter_linux_gtk.so: cannot open shared object file: No such file or directory" }
    

    Is there a way to specify an absolute or relative directory to search for the library?

    Thank you for any assistance.

    opened by 0xchase 0
  • way to run existing flutter code

    way to run existing flutter code

    nativeshell supports creating desktop applications using the WindowWidget and WindowLayoutProbe. is there a way to get the regular Scaffold based apps to work with nativeshell?

    opened by dvc94ch 4
  • Is there any way to lower the minimum supported version of macOS

    Is there any way to lower the minimum supported version of macOS

    Hi, there. It seems the package made by NativeShell only supports the version of macOS 11.0 above. Is there any way to support the version of macOS 10.15? Thanks in advance.

    opened by ihenk 1
Experimental plugins for Flutter for Desktop

Desktop Embedding for Flutter This project was originally created to develop Windows, macOS, and Linux embeddings of Flutter. That work has since beco

Google 7.1k Jan 7, 2023
Dart web - Experimental web framework for Dart. Supports SPA and SSR

dart_web Experimental web framework for Dart. Supports SPA and SSR. Relies on pa

Kilian Schulte 307 Dec 23, 2022
Experimental web framework for Dart. Supports SPAs and SSR.

jaspr Experimental web framework for Dart. Supports SPAs and SSR. Main Features: Familiar component model similar to Flutter widgets Easy Server Side

Kilian Schulte 310 Jan 4, 2023
Flutter Installer is an installer for Flutter built with Flutter πŸ’™πŸ˜ŽβœŒ

Flutter Installer Flutter Installer is an installer for Flutter built with Flutter ?? ?? ✌ Flutter and the related logo are trademarks of Google LLC.

Yazeed AlKhalaf 406 Dec 27, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Bits Dojo 607 Jan 4, 2023
Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size.

desktop_window Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size. Usage import 'package:desktop_window/desktop_window.dart

ChunKoo Park 72 Dec 2, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

AnTler 140 Dec 30, 2022
Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community.

Fluttern Fluttern is a web app made with Flutter to list Flutter internships/jobs for the community. It uses Google Sheet as a backend, simplifying th

Aditya Thakur 3 Jan 5, 2022
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

go-flutter - A package that brings Flutter to the desktop Purpose Flutter allows you to build beautiful native apps on iOS and Android from a single c

null 5.5k Jan 6, 2023
A clean front-end plugin to Volumio, the Linux distribution for music playback. Volumio Touch Display Lite is written in Flutter and runs on flutter-pi.

EN | δΈ­ζ–‡ Touch Display Lite plugin for Volumio 3 Feng Zhou, 2021-12 Touch Display Lite is a clean and fast user interface for Volumio 3, the Linux dist

Feng Zhou 5 Jul 26, 2022
Ubuntu-flutter-plugins - A collection of Flutter plugins and packages for Ubuntu applications.

Flutter plugins for Ubuntu A collection of Flutter plugins and packages for Ubuntu applications. ubuntu_localizations - provides localizations for Flu

Canonical 25 Oct 12, 2022
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.

A package that allows you to use the native file explorer to pick single or multiple files, with extensions filtering support.

Miguel Ruivo 987 Jan 6, 2023
Flutter Community Plus Plugins

Flutter Community Plus Plugins Plus plugins PlusPlugins is a set of Flutter plugins that is developed based on existing Flutter plugins with extra fun

Flutter Community 1.1k Jan 5, 2023
Flutter plugin to store data behind biometric authentication (ie. fingerprint)

biometric_storage Encrypted file store, optionally secured by biometric lock for Android, iOS, MacOS and partial support for Linux, Windows and Web. M

AuthPass 125 Dec 28, 2022
The Chicago widget set for Flutter

Chicago widget library The Chicago widget set is a retro 32-bit desktop design language for Flutter. It was discussed in the Building a desktop design

Todd Volkert 405 Dec 30, 2022
🎞 Flutter media playback, broadcast & recording library for Windows, Linux & macOS. Written in C++ using libVLC & libVLC++. (Both audio & video)

dart_vlc Flutter media playback, broadcast, recording & chromecast library for Windows, Linux & macOS. Written in C++ using libVLC & libVLC++. Install

Hitesh Kumar Saini 417 Dec 29, 2022
Flutter plugins used in Mixin

flutter-plugins This repo contains the source code for Flutter plugins which used in Mixin. Check the packages directory for all plugins. Plugins Plug

Mixin Network 246 Jan 3, 2023
Implements Microsoft's Fluent Design System in Flutter.

fluent_ui Design beautiful native windows apps using Flutter Unofficial implementation of Fluent UI for Flutter. It's written based on the official do

Bruno D'Luka 1.8k Dec 30, 2022
Windows95 UI components for Flutter apps. Bring back the nostalgic look and feel of old operating systems with this set of UI components ready to use.

Flutter95 Windows95 UI components for Flutter apps. UNDER CONSTRUCTION Screenshots Components Scaffold95 Scaffold as a Windows95 styled window. Provid

Miguel Beltran 141 Dec 26, 2022