Write Cross-platform application with React-like decralative UI framework and scalable ECS architecture all in Rust.

Overview

bevy_dioxus

Dioxus Plugin for Bevy

Write Cross-platform application with React-like decralative UI framework
and scalable ECS architecture all in Rust.


WARNING: bevy_dioxus is still in the very early stages of development.

fn main() {
    App::new()
        .insert_resource(WindowDescriptor {
            title: "Bevy Dioxus Plugin Example".to_string(),
            ..Default::default()
        })
        .add_plugin(DioxusPlugin::<(), ()>::new(Root))
        .run();
}

fn Root(cx: Scope) -> Element {
    cx.render(rsx! {
        h1 { "Hello, World !" }
    })
}

Try examples

gh repo clone JunichiSugiura/bevy_dioxus
cd bevy_dioxus

cargo run --example counter

More examples can be found in examples/ directory.

Comments
  • Only depend on core_foundation for macos

    Only depend on core_foundation for macos

    Fixes issue #19

    Problem

    bevy_dioxus_desktop would not build on Windows because core_foundation was not limited to the macos target.

    Solution

    Updated bevy_dioxus_desktop to only use core_foundation as a dependency on macos.

    Further Work Needed

    Ensure bevy_dioxus_desktop still builds on macos.

    opened by ImDanTheDev 2
  • PoC: Version Manager Plugin

    PoC: Version Manager Plugin

    Close #130

    • [x] Bootstrap Plugin
    • [x] Setup BundleConfigPlugin
      • [x] Replace ConfigPlugin macro with struct with type parameter
    • [x] Where to place bundle repository in local file system?
      • specify in bundle config
      • $HOME/Library/Application\ Support/dip/bundle.toml
    • [x] Merge config file value with cli arguments
    • [x] PoC of apply system with common tools just to see how it ends up
      • [x] Tailwind CSS
      • [x] Node.js
    • [x] trait Bundler and trait VersionManager
    • [x] Shim ($PATH)
    • [x] Cleanup
      • [x] resource.rs: may not be possible without putting build handler back
      • [x] tool.rs
      • [x] bundle config.rs
    opened by JunichiSugiura 1
  • Docs: Add Obsidian handbook

    Docs: Add Obsidian handbook

    User story

    As a developer, I want a handbook that describes everything about dip organization. Everyone related to this project even not an engineer should be able to read or edit easily.

    • Single source of truth
      • Inspired by Gitlab Handbook
      • Docs, wikis, meeting minutes, everything should be documented here
      • If you happened to explain the same thing again and again to different people, it means you are missing handbook page
    • Markdown + git
      • No vendor lock-in
      • Flexible technical stack
    • Obsidian compatibility
      • Easy reading/editing experience for both dev and non-dev people
    opened by JunichiSugiura 1
  • Expose config builder as resource

    Expose config builder as resource

    • #115

    requires: https://github.com/mehcode/config-rs/pull/379

    To allow developers to configure custom config sources from systems.

    This PR also replaces config_plugin attribute macro with ConfigPlugin derive macro. All attribute options are still available via ConfigPlugin's builder methods.

    App::new()
        .add_plugin(
            ConfigPlugin::new()
                .default_paths(false) // default: true
                .env_prefix("APP")  // default: ""
                .env_separator("___") // default: "__"
                .default_from_str(include_str!("config/default.yaml")) // default: include_str!("config/default.toml")
                .default_file_format(config::FileFormat::Yaml) // default: Toml
        )
        .add_startup_system(add_config_source.before(build_config))
        .add_system(log_config.after(build_config))
        .run();
    
    #[derive(ConfigPlugin, Debug, Deserialize)]
    struct Config {
        // ...
    }
    
    // add custom source to builder
    fn add_config_source(mut builder: ResMut<ConfigBuilder<DefaultState>>) {
        *builder = builder
            .clone()
            .add_source(File::with_name("examples/cli/config/config/development"));
    }
    
    fn log_config(config: Res<Config>) {
        println!("{:#?}", *config);
    }
    
    
    opened by JunichiSugiura 1
  • Config support

    Config support

    #115

    • [x] config_plugin macro
    • [x] default file source included in binary
      • [x] default path: config/default.toml
      • [x] override default config file path and file type by macro attributes
    • [x] override config file with ENV
    • [x] look for user config file and override default config
      • [x] default
        • ./{CARGO_PKG_NAME}
        • $HOME/.{CARGO_PKG_NAME}
        • $HOME/.config/{CARGO_PKG_NAME}/{CARGO_PKG_NAME}
        • $HOME/.config/{CARGO_PKG_NAME}
      • [x] override user config file path
    • [x] override by environmental variable
      • [x] prefix
      • [x] separator
    opened by JunichiSugiura 1
  • The configuration file is $HOME/bundle or ~/Library/Application Support/dip/bundle ?

    The configuration file is $HOME/bundle or ~/Library/Application Support/dip/bundle ?

    os: macOS Big Sur 11.7.2 & Intel core

    cargo install dip (version 0.2.1) It was '~/Library/Application Support/dip/bundle' that worked.

    setting files = 'https://github.com/nuovotaka/TakahiroNatsume/tree/main/bundle' I don't think they installed Homebrew and nodejs. They did post a link.

    スクリーンショット 2022-12-20 10 25 18 スクリーンショット 2022-12-20 10 25 37 スクリーンショット 2022-12-20 10 26 15
    opened by nuovotaka 3
Releases(v0.2.1)
  • v0.2.1(Dec 19, 2022)

  • v0.2.0(Dec 17, 2022)

    v0.2 is a big update. Many things changed including package name itself. This is the first somewhat usable version but many things are still missing for practical usage. I will continue incrementing v0.2.x including breaking changes until we cover enough use cases.

    Features

    • UiAction Plugin (rebrand from CoreCommand) #40
    • Introduce CLI Plugin #76
    • Rename packages to dip #94
      • ~v0.1: bevy_dioxus
      • v0.2~: dip
    • async/await support #114
    • Configuration support #115
    • CLI: Bundle subcommand #129
    • Version Manager Plugin #130

    Bug Fixes

    • Infinite render cycle on application mode #33
    • app.update() gets called too often in Application mode #39
    • 1 frame delay on ui #46
    • Remove unnecessary redraw request #59

    Improvements

    • Upgrade dependencies #30
    • Refine global state API #31
    • Export dioxus and bevy as sub module #37
    • Change file names from kebab-case to snake_case #49
    • Separate Virtual DOM logic from DioxusPlugin #50
    • Use trace instead of debug for even loop related logs #56
    • UiStage should be exported from core instead of desktop #57
    • Add CI action to check Rust format #63
    • Revise channel library (switch to mpsc) #70
    • Insert ui state as resource and system to react to changes #71

    Examples

    • Add TodoMVC example to showcase practical usage #38

    Docs

    • Add sequence diagram about rendering cycle in docs #52
    • Change domain to dip.tools #77
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jul 16, 2022)

    Features

    • Set global state from core via fermi #8

    Bug Fixes

    • Release build issue #15
    • Windows build issue #19

    Improvements

    • Provide keyboard_event option via DioxusSettings and get rid of JS file #9

    Examples

    • Provide example for window management #10

    Docs

    • Write docs with examples at least for exposed modules #2
    Source code(tar.gz)
    Source code(zip)
Owner
Junichi Sugiura
Working on a full-Rust client framework.
Junichi Sugiura
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
🐎 Just a simple cross-platform neofetch for all the bronies out there.

⚠️ (WIP) This project is not ready for any serious use right now. A cross-platform command-line interface (CLI) tool written in Rust to display system

Jakub 4 Dec 15, 2022
Cross-platform file sharig application for desktop and mobile devices

Skylite Description Getting Started Dependencies Installing Executing program License Acknowledgments Description Cross platform file sharing applicat

Adeoye Adefemi 5 Nov 16, 2023
Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API

Safe Unix shell-like parameter expansion/variable substitution for those who need a more powerful alternative to envsubst but don't want to resort to

Isak Wertwein 4 Oct 4, 2022
The first web framework in Rust to adopt the Model-View-Controller (MVC) architecture

Integra Web Framework Integra is a sleek, performant web framework for Rust, harnessing the power of the hyper library. Will become the first highly p

null 3 Sep 11, 2023
An experimental cross-platform UI framework in rust.

Cross-platform UI framework in Rust with Easy functional composasbles Flexible state management Desktop and mobile support Accessibility Native skia r

null 76 Feb 6, 2023
That program use on platform windows. And if you write any text on uncorrect keyboard layout, that program for that.

?? This program is designed to translate text into the correct layout when typing is incorrect. ?? Example ghbdtn -> привет Just (by default) pressing

Gest Se 5 Jan 26, 2023
ddi is a wrapper for dd. It takes all the same arguments, and all it really does is call dd in the background

ddi A safer dd Introduction If you ever used dd, the GNU coreutil that lets you copy data from one file to another, then you may have encountered a ty

Tomás Ralph 80 Sep 8, 2022
Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size

Scan the symbols of all ELF binaries in all Arch Linux packages for usage of malloc_usable_size (-D_FORTIFY_SOURCE=3 compatibility)

null 3 Sep 9, 2023
A Cli to generate React Component and Hooks.

React Cli A cli to create React Components and Hooks. Instructions: Download the binary. To Create A React Component ./react -n <Component Name> T

Gurpal Singh 3 Jun 24, 2022
Infino - Fast and scalable service to store time series and logs - written in Rust

Infino 〽️ ?? — ?? ?? — ⚖️ ?? Ingest Metrics and Logs — Query and Insights — Scale and Save $$ Infino is an observability platform for storing metrics

null 6 Apr 23, 2023
🕺 Run React code snippets/components from your command-line without config

Run React code snippets/components from your command-line without config.

Eliaz Bobadilla 11 Dec 30, 2022
CLI tool to quickly create React + Typescript + Tailwind projects

QUICK INIT CLI Tool to quickly create React projects with Tailwind automatically configured for use. Typescript is selected as default. If JS is to be

Oscar 5 Nov 3, 2022
An easy-to-use TUI crate for Rust, based off of the Elm architecture.

Rustea An easy-to-use TUI crate for Rust, based off of the Elm architecture. This is a re-implementation of Go's Tea, created by TJ Holowaychuk. Featu

Laz 82 Dec 21, 2022
A truly zero-dependency crate providing quick, easy, reliable, and scalable access to the name "jordin"

jordin Finally! A truly zero-dependency crate providing quick, easy, reliable, and scalable access to the name "jordin". Additionally, this one-of-a-k

jordin 2 Aug 4, 2022
Spoon Radio Echo Project, Lightweight and scalable broadcasting server.

Echo Project https://medium.com/p/3bd1434a163a Echo was initiated by a social network platform, Spoon Radio(https://www.spooncast.net). The main goal

Spoon Radio Inc. 23 Jan 3, 2023
Multi-Architecture Code Emission Library

macel Multi-Architecture Code Emission Library (macel) is a library which implements a low-level intermediate representation meant to expose on machin

merry 10 Dec 5, 2022
Determine which CPU architecture is used in a binary file.

cpu_rec_rs Determine which CPU architecture is used in a binary file. Example: $ cpu_rec_rs /bin/bash /usr/lib/firmware/rtlwifi/rtl8821aefw* Loading c

Raphaël Rigo 61 Jun 27, 2023
Cross-platform Rust library for coloring and formatting terminal output

Coloring terminal output Documentation term-painter is a cross-platform (i.e. also non-ANSI terminals) Rust library for coloring and formatting termin

Lukas Kalbertodt 75 Jul 28, 2022