Use C++ libraries from Rust

Overview

ritual

Build Status

ritual allows to use C++ libraries from Rust. It analyzes the C++ API of a library and generates a fully-featured crate that provides convenient (but still unsafe) access to this API.

The main motivation for this project is to provide access to Qt from Rust. Ritual provides large amount of automation, supports incremental runs, and implements compatible API evolution. This is mostly dictated by the huge size of API provided by Qt and significant API differences between Qt versions. However, ritual is designed to be universal and can also be used to easily create bindings for other C++ libraries.

More information is available on rust-qt.github.io:

License

This project is licensed under either of

at your option.

If you use Qt, you should also take into account Qt licensing.

Contributing

Contributions are always welcome! You can contribute in different ways:

  • Submit a bug report, a feature request, or an improvement suggestion at the issue tracker;
  • Write a test or an example for a Qt crate (porting examples from the official Qt documentation is a good option);
  • Pick up an issue with help wanted tag.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Comments
  • Some class miss its constructor, Qt5.9.1

    Some class miss its constructor, Qt5.9.1

    I use this wonderful tool to generate rust bindings of Qt5.9.1. The Qt sdk is installed by brew. First I fixed a link err, which is caused by the incorrect is_framework determination. It's works. Then I find some class miss its new() method. One of the class is Widget, link to my output source.

    opened by aristotle9 16
  • Problems generating code with pure virtual methods

    Problems generating code with pure virtual methods

    When generating code for qt_gui

    qt/cpp_to_rust/gui/c_lib/source/src/qt_gui_c_QSyntaxHighlighter.cpp:4:15: error: allocating an object of abstract class type 'QSyntaxHighlighter'
      new(output) QSyntaxHighlighter(parent);
    

    This is when generating code for Qt 5.7 on Mac (using the travis branch)

    opened by emoon 15
  • Singals and Slots

    Singals and Slots

    I wonder if you have thought about how this would work? I was pointed to this on the users forum

    https://github.com/White-Oak/qml-rust/blob/master/examples/qobjects.rs#L16

    https://github.com/White-Oak/qml-rust/blob/master/src/macros.rs#L90

    It seems fairly complex but I'm not sure how QObject works in details. Regardless slots & signals are a pretty big part of working with Qt so I wonder if you have any ideas of how this could be implemented?

    type: feature 
    opened by emoon 14
  • Error when compiling on Windows

    Error when compiling on Windows

    Hello guys,

    I'm trying to use rust-qt on Windows. I'm using only qt_widgets dependency and "cargo build" for the build. Qt5.8.0 is installed. I have an error when cmake is called for qt_core, qt_gui and qt_widgets.

    DC2R_INCLUDE_PATHS variable seems to be bad : "-DC2R_INCLUDE_PATHS= C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include; C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtWidgets; C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include; C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore; C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include; C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtGui"

    Is it the problem ?

    Here the error message :

    error: failed to run custom build command for `qt_core v0.2.3`
    process didn't exit successfully: `d:\DEV\RustProjects\qt_test\target\release\build\qt_core-1774efd2dc7f4c7f\build-script-build` (exit code: 101)
    --- stderr
    Executing command: "qmake" "-query" "QT_VERSION"
    QT_VERSION = "5.8.0"
    Detecting Qt directories
    Executing command: "qmake" "-query" "QT_INSTALL_HEADERS"
    QT_INSTALL_HEADERS = "C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include"
    Executing command: "qmake" "-query" "QT_INSTALL_LIBS"
    QT_INSTALL_LIBS = "C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/lib"
    Executing command: "qmake" "-query" "QT_INSTALL_DOCS"
    QT_INSTALL_DOCS = "C:/dev/Qt/Qt5.8.0/Docs/Qt-5.8"
    Building C++ wrapper library
    Executing command: "cmake" "C:\\Users\\QuanticBoss\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\qt_core-0.2.3\\c_lib" "-G" "NMake Makefiles" "-DC2R_LIBRARY_TYPE=SHARED" "-DC2R_INCLUDE_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include;C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\\QtCore" "-DC2R_LIB_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/lib" "-DC2R_FRAMEWORK_PATHS=" "-DC2R_LINKED_LIBS=Qt5Core" "-DC2R_LINKED_FRAMEWORKS=" "-DC2R_COMPILER_FLAGS=" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=d:\\DEV\\RustProjects\\qt_test\\target\\release\\build\\qt_core-bc5039f4e0227f37\\out\\c_lib_install"
    Error:
       0: Le fichier spécifié est introuvable. (os error 2)
       1: failed to run command: "cmake" "C:\\Users\\QuanticBoss\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\qt_core-0.2.3\\c_lib" "-G" "NMake Makefiles" "-DC2R_LIBRARY_TYPE=SHARED" "-DC2R_INCLUDE_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include;C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\\QtCore" "-DC2R_LIB_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/lib" "-DC2R_FRAMEWORK_PATHS=" "-DC2R_LINKED_LIBS=Qt5Core" "-DC2R_LINKED_FRAMEWORKS=" "-DC2R_COMPILER_FLAGS=" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=d:\\DEV\\RustProjects\\qt_test\\target\\release\\build\\qt_core-bc5039f4e0227f37\\out\\c_lib_install"
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error(Msg("failed to run command: \"cmake\" \"C:\\\\Users\\\\QuanticBoss\\\\.cargo\\\\registry\\\\src\\\\github.com-1ecc6299db9ec823\\\\qt_core-0.2.3\\\\c_lib\" \"-G\" \"NMake Makefiles\" \"-DC2R_LIBRARY_TYPE=SHARED\" \"-DC2R_INCLUDE_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include;C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/include\\\\QtCore\" \"-DC2R_LIB_PATHS=C:/dev/Qt/Qt5.8.0/5.8/msvc2015_64/lib\" \"-DC2R_FRAMEWORK_PATHS=\" \"-DC2R_LINKED_LIBS=Qt5Core\" \"-DC2R_LINKED_FRAMEWORKS=\" \"-DC2R_COMPILER_FLAGS=\" \"-DCMAKE_BUILD_TYPE=Release\" \"-DCMAKE_INSTALL_PREFIX=d:\\\\DEV\\\\RustProjects\\\\qt_test\\\\target\\\\release\\\\build\\\\qt_core-bc5039f4e0227f37\\\\out\\\\c_lib_install\""), (Some(Os { code: 2, kind: NotFound, message: "Le fichier spécifié est introuvable." }), None))', src\libcore\result.rs:997:5
    note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
    

    Thanks

    opened by QuanticBoss 11
  • Add an example for Qt 3D use from Rust

    Add an example for Qt 3D use from Rust

    It's not really pleasant to use yet due to the amount of unsafe methods and the into_raw calls which are needed to leave the life time management to QObject's parent/child tree.

    Clearly comes from QObject's parent/child tree fighting with Rust own memory management and Qt 3D using heavily composition and not inheritance. My goal is now to change the generator to simplify this code.

    opened by er-vin 8
  • qt_generator generates uncompilable code with clang >= 3.9

    qt_generator generates uncompilable code with clang >= 3.9

    I built qt-generator binary (I have to remove -fPIC flag and add -fms-compatibility-version=19 to fix issue https://bugreports.qt.io/browse/QTCREATORBUG-15940 in executor.rs) Then I generated core, gui, widgets and ui_tools libraries into project root and add them into Cargo.toml as:

    [dependencies]
    qt_core = { path = "qt_core"}
    qt_gui = { path = "qt_gui"}
    qt_widgets = { path = "qt_widgets"}
    qt_ui_tools = { path = "qt_ui_tools"}
    

    When I start to build project I get next error:

    _build_tools)
       Compiling qt_ui_tools v0.1.5 (file:///D:/devel/qt-rust-test01/qt_ui_tools)
         Running `D:\devel\qt-rust-test01\target\debug\build\qt_ui_tools-76c560e3a1c
    9030c\build-script-build`
       Compiling qt_gui v0.1.5 (file:///D:/devel/qt-rust-test01/qt_gui)
         Running `D:\devel\qt-rust-test01\target\debug\build\qt_gui-4cb0bd8ab8a54939
    \build-script-build`
       Compiling qt_core v0.1.5 (file:///D:/devel/qt-rust-test01/qt_core)
         Running `rustc --crate-name qt_core qt_core\src\lib.rs --crate-type lib --e
    mit=dep-info,link -C debuginfo=2 -C metadata=c487475031745cd9 -C extra-filename=
    -c487475031745cd9 --out-dir D:\devel\qt-rust-test01\target\debug\deps -L depende
    ncy=D:\devel\qt-rust-test01\target\debug\deps --extern cpp_utils=D:\devel\qt-rus
    t-test01\target\debug\deps\libcpp_utils-b667ad60ea3500de.rlib --extern libc=D:\d
    evel\qt-rust-test01\target\debug\deps\liblibc-026076ef8cc90032.rlib -L native=C:
    /Qt/Qt5.6.2/5.6/msvc2015_64/lib -L native=D:\devel\qt-rust-test01\target\debug\b
    uild\qt_core-ec07a1a733c9474e\out\c_lib_install\lib -l Qt5Core`
    error: no associated item named `connect_static` found for type `object::Object`
     in the current scope
      --> qt_core\src\connections.rs:47:7
       |
    47 |       ::object::Object::connect_static((self.object() as *const ::object::O
    bject,
       |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    error: aborting due to previous error
    
    error: Could not compile `qt_core`.
    
    Caused by:
      process didn't exit successfully: `rustc --crate-name qt_core qt_core\src\lib.
    rs --crate-type lib --emit=dep-info,link -C debuginfo=2 -C metadata=c48747503174
    5cd9 -C extra-filename=-c487475031745cd9 --out-dir D:\devel\qt-rust-test01\targe
    t\debug\deps -L dependency=D:\devel\qt-rust-test01\target\debug\deps --extern cp
    p_utils=D:\devel\qt-rust-test01\target\debug\deps\libcpp_utils-b667ad60ea3500de.
    rlib --extern libc=D:\devel\qt-rust-test01\target\debug\deps\liblibc-026076ef8cc
    90032.rlib -L native=C:/Qt/Qt5.6.2/5.6/msvc2015_64/lib -L native=D:\devel\qt-rus
    t-test01\target\debug\build\qt_core-ec07a1a733c9474e\out\c_lib_install\lib -l Qt
    5Core` (exit code: 101)
    Build failed, waiting for other jobs to finish...
    

    Rust: rustc 1.17.0 (56124baa9 2017-04-24) (MSVC) Cargo: cargo 0.18.0 (fe7b0cdcf 2017-04-24) Clang: 4.0.0 Target: x86_64-pc-windows-msvc Qt: 5.6.2 MSVC: 2017

    Generated files: https://gist.github.com/o01eg/f09189548669594c263ed1ee5b823d47

    cpp_to_rust revision: 0d4cd5323156

    opened by o01eg 8
  • -fPIC unsupported by libclang on x86_64-pc-windows-msvc

    -fPIC unsupported by libclang on x86_64-pc-windows-msvc

    From @o01eg on April 25, 2017 12:47

    When I try to build Qt application on windows I get error:

       Compiling qt_core v0.1.3
         Running `rustc --crate-name build_script_build C:\Users\oleg_schelicalnov\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.1.3\build.rs --crate-ty
    pe bin --emit=dep-info,link -C debuginfo=2 -C metadata=923e9cfe594fc924 -C extra-filename=-923e9cfe594fc924 --out-dir D:\devel\qt002\target\debug\build\qt_core-
    923e9cfe594fc924 -L dependency=D:\devel\qt002\target\debug\deps --extern qt_build_tools=D:\devel\qt002\target\debug\deps\libqt_build_tools-f3c031262549d90b.rlib
     --extern cpp_to_rust=D:\devel\qt002\target\debug\deps\libcpp_to_rust-6620496cc6f44dbc.rlib --cap-lints allow -L D:\devel\sqlite -L "C:\Program Files\LLVM\bin"
    -L "C:\Program Files\LLVM\lib"`
         Running `D:\devel\qt002\target\debug\build\qt_core-923e9cfe594fc924\build-script-build`
    error: failed to run custom build command for `qt_core v0.1.3`
    process didn't exit successfully: `D:\devel\qt002\target\debug\build\qt_core-923e9cfe594fc924\build-script-build` (exit code: 1)
    --- stdout
    ←[32mDetecting Qt directories...←[0m
    ←[32mExecuting command: "qmake" "-query" "QT_INSTALL_HEADERS"←[0m
    ←[32mQT_INSTALL_HEADERS = "D:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include"←[0m
    ←[32mExecuting command: "qmake" "-query" "QT_INSTALL_LIBS"←[0m
    ←[32mQT_INSTALL_LIBS = "D:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/lib"←[0m
    ←[32mReading input Cargo.toml←[0m
    ←[32mParsing C++ headers.←[0m
    ←[32mclang version 4.0.0 (tags/RELEASE_400/final)←[0m
    ←[32mInitializing clang...←[0m
    ←[32mclang arguments: ["-Xclang", "-detailed-preprocessing-record", "-fPIC", "-fcxx-exceptions", "-std=c++14", "-I", "D:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/includ
    e", "-I", "D:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\\QtCore"]←[0m
    ←[35mDiagnostics:←[0m
    ←[35merror: unsupported option '-fPIC' for target 'x86_64-pc-windows-msvc'←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:107:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicro
    soft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:163:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicro
    soft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:304:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicro
    soft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:1343:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicr
    osoft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:1346:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicr
    osoft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:1377:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicr
    osoft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qnamespace.h:1594:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicr
    osoft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qvariant.h:196:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicroso
    ft-enum-value]←[0m
    ←[35mD:/devel/Qt/Qt5.8.0/5.8/msvc2015_64/include\QtCore/qtextcodec.h:89:9: warning: enumerator value is not representable in the underlying type 'int' [-Wmicros
    oft-enum-value]←[0m
    ←[31mError:←[0m
    ←[31m   0: fatal clang error←[0m
    ←[31m   1: C++ parser failed←[0m
    

    rust version:

    rustc 1.16.0 (30cf806ef 2017-03-10)
    binary: rustc
    commit-hash: 30cf806ef8881c41821fbd43e5cf3699c5290c16
    commit-date: 2017-03-10
    host: x86_64-pc-windows-msvc
    release: 1.16.0
    LLVM version: 3.9
    

    clang version:

    clang version 4.0.0 (tags/RELEASE_400/final)
    Target: x86_64-pc-windows-msvc
    Thread model: posix
    InstalledDir: C:\Program Files\LLVM\bin
    

    Copied from original issue: rust-qt/qt_core#2

    opened by Riateche 7
  • panic

    panic "Parsing methods": 'called `Result::unwrap()` on an `Err` value: "Anonymous type"'

    cpp_to_rust panics and dies right after printing "Parsing methods...". The stack trace begins in cpp_to_rust::cpp_parser::CppParser::parse_canonical_type, but I'm not sure where. Unfortunately unwrap() is called several times within that function.

    opened by alexchandel 7
  • panic after printing

    panic after printing "Reading lib spec", "No such file or directory"

    Running with cargo run, I get this panic message, even in release profile. Mysteriously unhelpful panics in release builds are one of the reasons I avoid panic! and unwrap at all costs. What file or directory is it looking for?

    type: enhancement 
    opened by alexchandel 7
  • Platform independence

    Platform independence

    Right now the Qt libs becomes platform dependent depending on where it was compiled.

    qt.rs over here https://github.com/kitech/qt.rs/blob/master/src/gui/qcolor.rs#L570 solves it this way

      // proto:  void QColor::QColor(const char * name);
    impl<'a> /*trait*/ QColor_new for (&'a  String) {
      fn new(self) -> QColor {
        // let qthis: *mut c_void = unsafe{calloc(1, 32)};
        // unsafe{_ZN6QColorC2EPKc()};
        let ctysz: c_int = unsafe{QColor_Class_Size()};
        let qthis_ph: u64 = unsafe{calloc(1, ctysz as usize)} as u64;
        let arg0 = self.as_ptr()  as *mut c_char;
        let qthis: u64 = unsafe {C_ZN6QColorC2EPKc(arg0)};
        let rsthis = QColor{qclsinst: qthis, ..Default::default()};
        return rsthis;
        // return 1;
      }
    }
    

    By having generated a function that returns a size of the object (which is in the FFI code including the C++ headers) and here doing a calloca here to allocate zeroed memory.

    Of course the backside of this approach is that when using objects like this they now need to be allocated on the heap which adds run-time overhead.

    Not sure if this is something worth investigating or not.

    type: bug 
    opened by emoon 7
  • Failure in all type caption strategies for methods with multiple return values

    Failure in all type caption strategies for methods with multiple return values

    The panic message is:

    values dump: [CppMethodWithFfiSignature { cpp_method: CppMethod { name: "_nil", class_membership: Some(CppMethodClassMembership { class_type: CppTypeClassBase { name: "CORBA::_omni_AbstractBaseObjref", template_arguments: None }, kind: Regular, is_virtual: false, is_pure_virtual: false, is_const: false, is_static: true, visibility: Public, is_signal: false }), operator: None, return_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::Object", template_arguments: None }), indirection: Ptr, is_const: false }, arguments: [], arguments_before_omitting: None, allows_variadic_arguments: false, include_file: "CORBA_AbstractBase.h", origin_location: None, template_arguments: None, declaration_code: None, inherited_from: Some(CppMethodInheritedFrom { doc_id: "CORBA::Object::_nil", declaration_code: Some("static _ptr_type _nil ( )"), short_text: "static CORBA::Object* CORBA::Object::_nil()", class_type: CppTypeClassBase { name: "CORBA::Object", template_arguments: None } }) }, allocation_place: NotApplicable, c_signature: CppFfiFunctionSignature { arguments: [], return_type: CppFfiType { original_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::Object", template_arguments: None }), indirection: Ptr, is_const: false }, ffi_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::Object", template_arguments: None }), indirection: Ptr, is_const: false }, conversion: NoChange } } }, CppMethodWithFfiSignature { cpp_method: CppMethod { name: "_nil", class_membership: Some(CppMethodClassMembership { class_type: CppTypeClassBase { name: "CORBA::_omni_AbstractBaseObjref", template_arguments: None }, kind: Regular, is_virtual: false, is_pure_virtual: false, is_const: false, is_static: true, visibility: Public, is_signal: false }), operator: None, return_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::AbstractBase", template_arguments: None }), indirection: Ptr, is_const: false }, arguments: [], arguments_before_omitting: None, allows_variadic_arguments: false, include_file: "CORBA_AbstractBase.h", origin_location: None, template_arguments: None, declaration_code: None, inherited_from: Some(CppMethodInheritedFrom { doc_id: "CORBA::AbstractBase::_nil", declaration_code: Some("static _ptr_type _nil ( )"), short_text: "static CORBA::AbstractBase* CORBA::AbstractBase::_nil()", class_type: CppTypeClassBase { name: "CORBA::AbstractBase", template_arguments: None } }) }, allocation_place: NotApplicable, c_signature: CppFfiFunctionSignature { arguments: [], return_type: CppFfiType { original_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::AbstractBase", template_arguments: None }), indirection: Ptr, is_const: false }, ffi_type: CppType { base: Class(CppTypeClassBase { name: "CORBA::AbstractBase", template_arguments: None }), indirection: Ptr, is_const: false }, conversion: NoChange } } }]
    
    All type caption strategies have failed! Involved functions:
      static CORBA::Object* CORBA::_omni_AbstractBaseObjref::_nil()
      static CORBA::AbstractBase* CORBA::_omni_AbstractBaseObjref::_nil()
    thread 'main' panicked at 'all type caption strategies have failed', src/cpp_ffi_generator.rs:212
    

    I'm guessing the failure is due to the overloaded return type. This should be captionable if the argument types are.

    type: bug 
    opened by alexchandel 6
  • Exit code 2 from CMake

    Exit code 2 from CMake

    Hello, when trying to make a simple hello world application, this error appears. I have cmake available and on PATH and it seems to work on ritual too. Thanks.

       Compiling qt_core v0.5.0
       Compiling qt_gui v0.5.0
    error: failed to run custom build command for `qt_core v0.5.0`
    
    Caused by:
      process didn't exit successfully: `D:\Nadie\target\debug\build\qt_core-cbb2b238c66ca704\build-script-build` (exit code: 1)
      --- stdout
      Current Qt version (5.15.2) is unknown to qt_core crate. Using closest known version (5.14.0)
      Current target is unknown: v5.14.0 on x86_64-windows-windows-msvc
      Known targets:
      * v5.9.7 on x86_64-linux-unix-gnu
      * v5.11.3 on x86_64-linux-unix-gnu
      * v5.12.2 on x86_64-linux-unix-gnu
      * v5.13.0 on x86_64-linux-unix-gnu
      * v5.14.0 on x86_64-linux-unix-gnu
      -- RITUAL_INCLUDE_PATH=D:/Qt5/5.15.2/mingw81_64/include;D:/Qt5/5.15.2/mingw81_64/include\QtCore
      -- RITUAL_LIBRARY_PATH=D:/Qt5/5.15.2/mingw81_64/lib
      -- RITUAL_LIBRARY_TYPE=STATIC
      -- RITUAL_LINKED_LIBS=Qt5Core
      -- RITUAL_CPP_LIB_VERSION=51400
      -- Configuring done
      -- Generating done
      -- Build files have been written to: D:/Nadie/target/debug/build/qt_core-6dbeedd93e7b65b2/out/c_lib_build
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\Makefile2 /nologo -L                  clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c.dir\build.make /nologo -L                  CMakeFiles\qt_core_c.dir\clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -P CMakeFiles\qt_core_c.dir\cmake_clean.cmake
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_core_c_autogen.dir\clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -P CMakeFiles\qt_core_c_autogen.dir\cmake_clean.cmake
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -SC:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib -BD:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build --check-build-system CMakeFiles\Makefile.cmake 0
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_progress_start D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build\CMakeFiles D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build\\CMakeFiles\progress.marks
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\Makefile2 /nologo -L                  all
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_core_c_autogen.dir\depend
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_depends "NMake Makefiles" C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build\CMakeFiles\qt_core_c_autogen.dir\DependInfo.cmake --color=
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_core_c_autogen.dir\build
      [ 25%] Automatic MOC for target qt_core_c
            echo >nul && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_autogen D:/Nadie/target/debug/build/qt_core-6dbeedd93e7b65b2/out/c_lib_build/CMakeFiles/qt_core_c_autogen.dir/AutogenInfo.json Release
      [ 25%] Built target qt_core_c_autogen
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c.dir\build.make /nologo -L                  CMakeFiles\qt_core_c.dir\depend
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_depends "NMake Makefiles" C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build\CMakeFiles\qt_core_c.dir\DependInfo.cmake --color=
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_core_c.dir\build.make /nologo -L                  CMakeFiles\qt_core_c.dir\build
      [ 50%] Building CXX object CMakeFiles/qt_core_c.dir/qt_core_c_autogen/mocs_compilation.cpp.obj
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_cl_compile_depends --dep-file=CMakeFiles\qt_core_c.dir\qt_core_c_autogen\mocs_compilation.cpp.obj.d --working-dir=D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build --filter-prefix="Note: including file: " -- C:\PROGRA~1\MICROS~2\2022\COMMUN~1\VC\Tools\MSVC\1432~1.313\bin\Hostx86\x86\cl.exe @C:\Users\agomi\AppData\Local\Temp\nmBE43.tmp
      mocs_compilation.cpp
      [ 75%] Building CXX object CMakeFiles/qt_core_c.dir/file1.cpp.obj
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_cl_compile_depends --dep-file=CMakeFiles\qt_core_c.dir\file1.cpp.obj.d --working-dir=D:\Nadie\target\debug\build\qt_core-6dbeedd93e7b65b2\out\c_lib_build --filter-prefix="Note: including file: " -- C:\PROGRA~1\MICROS~2\2022\COMMUN~1\VC\Tools\MSVC\1432~1.313\bin\Hostx86\x86\cl.exe @C:\Users\agomi\AppData\Local\Temp\nmBF5D.tmp
      file1.cpp
      C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib\file1.cpp(26166): warning C4316: 'QStaticByteArrayMatcherBase': object allocated on the heap may not be aligned 16       
      C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib\file1.cpp(60440): error C2664: 'QCborStreamReader::StringResult<__int64>::StringResult(const QCborStreamReader::StringResult<__int64> &)': cannot convert argument 1 from 'QCborStreamReader::StringResult<qsizetype>' to 'const QCborStreamReader::StringResult<__int64> &'
      C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib\file1.cpp(60440): note: Reason: cannot convert from 'QCborStreamReader::StringResult<qsizetype>' to 'const QCborStreamReader::StringResult<__int64>'
      C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_core-0.5.0\c_lib\file1.cpp(60440): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
      D:\Qt5\5.15.2\mingw81_64\include\QtCore/qcborstreamreader.h(95): note: see declaration of 'QCborStreamReader::StringResult<__int64>::StringResult'
    
      --- stderr
      NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"' : return code '0x2'
      Stop.
      [2022-07-28T12:25:55Z ERROR ritual_common::errors] Error:
      [2022-07-28T12:25:55Z ERROR ritual_common::errors]    command failed with exit code: 2: "cmake" "--build" "." "--" "install"
    warning: build failed, waiting for other jobs to finish...
    error: failed to run custom build command for `qt_gui v0.5.0`
    
    Caused by:
      process didn't exit successfully: `D:\Nadie\target\debug\build\qt_gui-0807f13cb20b12e8\build-script-build` (exit code: 1)
      --- stdout
      Current Qt version (5.15.2) is unknown to qt_gui crate. Using closest known version (5.14.0)
      Current target is unknown: v5.14.0 on x86_64-windows-windows-msvc
      Known targets:
      * v5.9.7 on x86_64-linux-unix-gnu
      * v5.11.3 on x86_64-linux-unix-gnu
      * v5.12.2 on x86_64-linux-unix-gnu
      * v5.13.0 on x86_64-linux-unix-gnu
      * v5.14.0 on x86_64-linux-unix-gnu
      -- RITUAL_INCLUDE_PATH=D:/Qt5/5.15.2/mingw81_64/include;D:/Qt5/5.15.2/mingw81_64/include\QtGui;D:/Qt5/5.15.2/mingw81_64/include\QtCore
      -- RITUAL_LIBRARY_PATH=D:/Qt5/5.15.2/mingw81_64/lib
      -- RITUAL_LIBRARY_TYPE=STATIC
      -- RITUAL_LINKED_LIBS=Qt5Gui;Qt5Core
      -- RITUAL_CPP_LIB_VERSION=51400
      -- Configuring done
      -- Generating done
      -- Build files have been written to: D:/Nadie/target/debug/build/qt_gui-827a6824cc83f8ba/out/c_lib_build
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\Makefile2 /nologo -L                  clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_gui_c.dir\build.make /nologo -L                  CMakeFiles\qt_gui_c.dir\clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -P CMakeFiles\qt_gui_c.dir\cmake_clean.cmake
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_gui_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_gui_c_autogen.dir\clean
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -P CMakeFiles\qt_gui_c_autogen.dir\cmake_clean.cmake
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -SC:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_gui-0.5.0\c_lib -BD:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build --check-build-system CMakeFiles\Makefile.cmake 0
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_progress_start D:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build\CMakeFiles D:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build\\CMakeFiles\progress.marks
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\Makefile2 /nologo -L                  all
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_gui_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_gui_c_autogen.dir\depend
            "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_depends "NMake Makefiles" C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_gui-0.5.0\c_lib C:\Users\agomi\.cargo\registry\src\github.com-1ecc6299db9ec823\qt_gui-0.5.0\c_lib D:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build D:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build D:\Nadie\target\debug\build\qt_gui-827a6824cc83f8ba\out\c_lib_build\CMakeFiles\qt_gui_c_autogen.dir\DependInfo.cmake --color=
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_gui_c_autogen.dir\build.make /nologo -L                  CMakeFiles\qt_gui_c_autogen.dir\build
      [ 25%] Automatic MOC for target qt_gui_c
            echo >nul && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E cmake_autogen D:/Nadie/target/debug/build/qt_gui-827a6824cc83f8ba/out/c_lib_build/CMakeFiles/qt_gui_c_autogen.dir/AutogenInfo.json Release
      [ 25%] Built target qt_gui_c_autogen
            "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"  -f CMakeFiles\qt_gui_c.dir\build.make /nologo -L                  CMakeFiles\qt_gui_c.dir\depend
      --- stderr  NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"' : return code '0x2'
      Stop.  NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\nmake.exe"' : return code '0x2'  Stop.  [2022-07-28T12:25:56Z ERROR ritual_common::errors] Error:
      [2022-07-28T12:25:56Z ERROR ritual_common::errors]    command failed with exit code: 2: "cmake" "--build" "." "--" "install"
    

    I also have Qt 5.15.2 on D:\Qt5\

    opened by dragonDScript 1
  • How to build qt shared library ?

    How to build qt shared library ?

    How to build qt shared library ?

    My project

    the app works perfectly if I build it as an app.

    TEMPLATE = app

    If I create a shared lib with same code the code not gives result.

    I changed TEMPLATE = app to TEMPLATE = lib and I compile the same code. But , the result comes an error.

    code not give result as a qt shared lib

    wifimouse app fully build with qt.

    Source code of wifimouse server application

    I install and run wifimouse app in my computer it works perfectly and all the options are works smoothly.

    But, If I compile the same code as a shared lib in my computer it not works properly.

    For example ; In wifimouse application there is an option for brightness controling

    Brightness code

    [enter image description here]14

    error comes like this. But , it works smoothly as a TEMPLATE = app.

    Problem with qt in getting outputs.

    My project

    I want to get the cpu usage , ram usage ,process list and app list with qt.

    In Windows

    [windows os]2

    I am getting ram usage from this code.

    But app list , cpu usage and process outputs are not showed.

    In linux

    [enter image description here]7

    In linux the cpu usage output not showed.

    In Mac

    [enter image description here]9

    In mac the app list output not showed.

    All the code works perfectly if I build it as an app.

    Why this problem occured ?

    opened by Jeevasimba 0
  • [Question] how to make it safe?

    [Question] how to make it safe?

    i ask this here, because github discussions seem to not be enabled for this project


    i am still quite new to rust and have no experience in c/c++ (or other low-level / systems languages), and with this project i have to use a lot of unsafe and i also read Unsafety, but i could not understand how i could make it (more) safe, especially the following part got me thinking on how to do it properly:

    Rust documentation for Qptr:

    It's still possible to cause use-after-free by calling a method through QPtr. Even in a single threaded program, the accessed object can be deleted by a nested call while one of its methods is still running. In multithreaded context, the object can be deleted in another thread between the null check and the method call, also resulting in undefined behavior.

    so my question is: how can i make it safe if it may not be safe after having already checked (like with is_null)? or how can i at least detect that it is wrong / malfunctioned and catch it to recover from it (like a Result in rust)?

    opened by hasezoey 0
  • Request for better errors when command is not available (cmake)

    Request for better errors when command is not available (cmake)

    I tried to run the examples, and it failed with the message:

    [2021-12-24T21:04:44Z ERROR ritual_common::errors] Error:
    [2021-12-24T21:04:44Z ERROR ritual_common::errors]    failed to run command: "cmake" "-Wno-dev" "/home/hasezoey/.local/cargo/registry/src/github.com-1ecc6299db9ec823/qt_ui_tools-0.5.0/c_lib" "-DRITUAL_LIBRARY_TYPE=STATIC" "-DRITUAL_CPP_LIB_VERSION=51400" "-DRITUAL_INCLUDE_PATH=/usr/include/qt;/usr/include/qt/QtUiTools;/usr/include/qt/QtCore;/usr/include/qt/QtGui;/usr/include/qt/QtWidgets" "-DRITUAL_LIBRARY_PATH=/usr/lib" "-DRITUAL_FRAMEWORK_PATH=" "-DRITUAL_LINKED_LIBS=Qt5UiTools;Qt5Core;Qt5Gui;Qt5Widgets" "-DRITUAL_LINKED_FRAMEWORKS=" "-DRITUAL_COMPILER_FLAGS=-std=gnu++11 -fPIC" "-DRITUAL_QT=1" "-DRITUAL_QT=1" "-DRITUAL_QT=1" "-DRITUAL_QT=1" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=/home/hasezoey/Downloads/examples/target/release/build/qt_ui_tools-91426dae0c77750f/out/c_lib_install"
    [2021-12-24T21:04:44Z ERROR ritual_common::errors]    No such file or directory (os error 2)
    

    Which is not great, after some time trying to read through the whole command and checking the directories that are mentioned, i finally noticed that i didnt have cmake installed on my system.
    So i would request to add a error saying something like Command "cmake" is not installed on your system.

    environment:

    • qt_core (example crate for this error) at 0.5.0
    • rust (stable) at 1.41.0 (from https://github.com/rust-qt/examples/)
    • linux (manjaro 21.2)

    Related

    • #104
    opened by hasezoey 0
  • Unknown Qt Version 5.15.x

    Unknown Qt Version 5.15.x

    Triggered by all qt_* crates i tried (including qt_core, qt_gui)

    Output:

    Current Qt version (5.15.2) is unknown to qt_ui_tools crate. Using closest known version (5.14.0)
    

    I dont know if this is the correct place to report this error, but the crates (like qt_core) link to this as the repository

    environment:

    • qt_core (example crate for this warning) at 0.5.0
    • rust (stable) at 1.41.0 (from https://github.com/rust-qt/examples/)
    • linux (manjaro 21.2)
    opened by hasezoey 0
Owner
Rust-Qt
Qt bindings for Rust language
Rust-Qt
Provides Rust bindings for GTK libraries

The gtk-rs organization aims to provide safe Rust binding over GObject-based libraries

null 408 Sep 30, 2022
Provides Rust bindings for Gnome libraries

gtk-rs-core The gtk-rs organization aims to provide safe Rust binding over GObject-based libraries. You can find more about it on https://gtk-rs.org.

null 143 Sep 25, 2022
Provides Rust bindings for GTK libraries

gtk3-rs The gtk-rs organization aims to provide safe Rust binding over GObject-based libraries. You can find more about it on https://gtk-rs.org. This

null 401 Sep 22, 2022
An easy-to-use, 2D GUI library written entirely in Rust.

Conrod An easy-to-use, 2D GUI library written entirely in Rust. Guide What is Conrod? A Brief Summary Screenshots and Videos Feature Overview Availabl

PistonDevelopers 3.3k Sep 26, 2022
egui: an easy-to-use immediate mode GUI in pure Rust

?? egui: an easy-to-use GUI in pure Rust egui is a simple, fast, and highly portable immediate mode GUI library for Rust. egui runs on the web, native

Emil Ernerfeldt 10.7k Sep 22, 2022
A small tool to use along with i3/Sway to add CSS-powered decorations to your focused windows, for better usability.

glimmer What A tool for decorating i3 windows when they get focused, written in Rust. classic.mp4 Why When using i3-gaps I ran into the following prob

Daniel Acuña 21 Jul 5, 2022
Hooks for Yew, inspired by streamich/react-use and alibaba/hooks.

Yew Hooks Hooks for Yew, inspired by streamich/react-use and alibaba/hooks. Hooks State use_toggle - tracks state of counterparts. use_bool_toggle - t

Jet Li 84 Sep 26, 2022
A UI-framework, built for speed and ease-of-use

A UI-framework, built for speed and ease-of-use. Focused on one thing, the best user-experience for the client and developer.

Vacaro 44 Aug 28, 2022
Example showing how to use tokio and egui together.

Example using tokio with egui This example uses reqwest to send an HTTP request to httpbin. The parsed response contains an increment value (as provid

Jay Oster 4 Sep 14, 2022
A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

null 257 Sep 25, 2022
A data-first Rust-native UI design toolkit.

Druid A data-first Rust-native UI toolkit. Druid is an experimental Rust-native UI toolkit. Its main goal is to offer a polished user experience. Ther

null 7.6k Sep 28, 2022
The Rust UI-Toolkit.

The Orbital Widget Toolkit is a cross-platform (G)UI toolkit for building scalable user interfaces with the programming language Rust. It's based on t

Redox OS 3.7k Sep 23, 2022
Rust bindings for the FLTK GUI library.

fltk-rs Rust bindings for the FLTK Graphical User Interface library. The FLTK crate is a crossplatform lightweight gui library which can be statically

Mohammed Alyousef 918 Sep 27, 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 Sep 26, 2022
Idiomatic, GTK+-based, GUI library, inspired by Elm, written in Rust

Relm Asynchronous, GTK+-based, GUI library, inspired by Elm, written in Rust. This library is in beta stage: it has not been thoroughly tested and its

null 2.2k Sep 22, 2022
Rust bindings for Dear ImGui

imgui-rs: Rust bindings for Dear ImGui (Recently under new maintenance, things subject to change) Window::new(im_str!("Hello world")) .size([300.0

null 1.9k Sep 20, 2022
Clear Coat is a Rust wrapper for the IUP GUI library.

Clear Coat Clear Coat is a Rust wrapper for the IUP GUI library. IUP uses native controls and has Windows and GTK backends. A macOS backend has been o

Jordan Miner 18 Feb 13, 2021
Rust binding for IUP

IUP Rust This library provides a high level wrapper around IUP, a multi-platform toolkit for building graphical user interfaces. See rust-iup-sys for

David Campbell 41 May 28, 2022
A simple UI framework for Rust built on top of IUP (http://webserver2.tecgraf.puc-rio.br/iup/)

KISS-UI A UI framework for Rust based on the KISS (Keep It Simple, Stupid!) philosophy. Powered by the IUP GUI library for C by Tecgraf, via the bindi

null 342 Jul 11, 2022