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 Fluttter 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

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 real-time global illumination renderer 🦀

?? kajiya Experimental real-time global illumination renderer made with Rust and Vulkan Its general goal is to get as close as possible to path-traced

Embark 3.8k Jan 3, 2023
Experimental package manager/system configurator for system hoppers

mascara An experimental package manager/config initializer tool for system hoppers. mascara.toml [mascara] feature = "Debian" logs = { stdout = "blue"

Ethan Gallucci 1 Apr 15, 2022
This is a demo Library of fltk-rs, which is used to learn various new gadgets of experimental fltk-rs.

fltk-rs Demo This is a demo Library of fltk-rs, which is used to learn various new gadgets of experimental fltk-rs. Demos demo9 Demo9 is an applicatio

WumaCoder 6 Dec 28, 2022
Rust + Flutter Embedder

rustyflutter About: A Rust + Flutter Embedder Fast ?? Easy to use ?? Installation: soon Contributions: rustyflutter is an open-source project and in

Krisna Pranav 3 Apr 19, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Build beautiful desktop apps with flutter and rust. 🌠 (wip)

flutter-rs Build flutter desktop app in dart & rust. Get Started Install requirements Rust flutter sdk Develop install the cargo flutter command cargo

null 2k Dec 26, 2022
High-level memory-safe binding generator for Flutter/Dart <-> Rust

flutter_rust_bridge: High-level memory-safe binding generator for Flutter/Dart <-> Rust Want to combine the best between Flutter, a cross-platform hot

fzyzcjy 2.1k Dec 31, 2022
An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client.

Four in a Row - Server An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client. Downl

Filippo Orrù 8 Sep 16, 2022
Flutter crossplatform audio playback library powered by golang beep & oto

Rowdy Pure Rust based Dart/Flutter audio playback library Installation $ flutter pub add rowdy Configuration You'll need the Rust toolchain installed

Kingkor Roy Tirtho 3 Aug 31, 2022
An experimental HTTP load testing application written in Rust.

Herd Herd was a small side project in building a HTTP load testing application in Rust with a main focus on being easy to use and low on OS level depe

Jacob Clark 100 Dec 27, 2022
Experimental blockchain database

A database for the blockchain. Design considerations API The database is a universal key-value storage that supports transactions. It does not support

Parity Technologies 172 Dec 26, 2022
Experimental kernel for embedded devices written in Rust

bkernel is an experimental kernel for embedded devices written in Rust. I'm mostly trying out Rust now to see how it applies to kernel development. Pr

Alexey Shmalko 84 Dec 13, 2022
An experimental next-generation Electron-based text editor

Attention: GitHub has decided not to move forward with any aspect of this project. We'll archive the repository in case anybody finds value here, but

Atom Archive 8.5k Dec 26, 2022
Experimental Quantum Computer Simulator + Quantum Chess Implementation

Quantum Chess A somewhat hacky implementation of this paper (made in a week over a holiday). It's not heavily tested and probably has some bugs still

null 19 Jan 21, 2022
Experimental one-shot benchmarking/profiling harness for Rust

Iai Experimental One-shot Benchmark Framework in Rust Getting Started | User Guide | Released API Docs | Changelog Iai is an experimental benchmarking

Brook Heisler 409 Dec 25, 2022
Experimental type-safe geometric algebra for Rust

Projective Geometric Algebra This library is a Rust code generator, generating the mathematics you need for a geometric algebra library. I made it mos

Emil Ernerfeldt 33 Dec 4, 2022
An experimental proofreading and linting language server for markdown files ✍️

prosemd is an experimental proofreading and linting language server for markdown files. It aims to provide helpful and smart diagnostics when writing

Phil Pluckthun 132 Dec 14, 2022
Experimental implementation of the oci-runtime in Rust

youki Experimental implementation of the oci-runtime in Rust Overview youki is an implementation of runtime-spec in Rust, referring to runc. This proj

utam0k 12 Sep 23, 2022
kubesql, Experimental tool to query K8s API using plain SQL

kubesql, an experimental tool for querying your Kubernetes API Server using simple and smallest SQL syntax.

Furkan Türkal 168 Dec 19, 2022
:construction: EXPERIMENTAL :construction: Secure hidden service webserver

narnia narnia is a fast static webserver specifically designed for Tor hidden services. It's also able to spawn a Tor thread and expose itself as a hi

null 41 Dec 30, 2022