Make HTTP requests and test APIs. Work in progress.

Overview

Cartero

Make HTTP requests and test APIs.

Screenshot of Cartero

Motivation

This project exists because there aren't many native graphical HTTP testing applications / graphical alternatives to cURL that are fully free software, and I think the world has had enough of Electron / non-native applications that are anonymously accesible until one day you are forced to create an account and log in to use just to make some investor happy with their numbers or to chug some unwanted artificial intelligence at users.

Download

Coming soon to Flathub. I cannot submit the app until there is a first version. And I won't release a version until every task on its milestone is cleared. Also check out my kanban. Once the first iteration is reached, more features from the cool idea, saved for later list will be implemented.

You can also download a development version.

Platform Nightly
Flatpak Flatpak GNU/Linux, x86_64 Nightly
Flatpak Flatpak GNU/Linux, aarch64 Nightly
Windows Windows, x86_64 Nightly
macOS macOS, Apple Sillicon Nightly
macOS macOS, Intel Nightly

Building

Flatpak

Install the runtime:

flatpak install --user org.gnome.Sdk//46 org.freedesktop.Sdk.Extension.rust-stable//23.08

Install the Flatpak, possibly passing the --user parameter.

flatpak-builder --user --install flatpak_app build-aux/es.danirod.Cartero.json

You will find Cartero in your application launcher, or you can launch it with flatpak run es.danirod.Cartero.

Meson

Use this to build the application outside of a Flatpak image. Note that this method should only be used by power users, to package the application on build scripts for rolling-release distributions, or for development purposes.

Currently, to build the application you'll have to make sure that the required libraries are installed on your system.

  • glib >= 2.72
  • gtk >= 4.14
  • gtksourceview >= 5.4
  • libadwaita >= 1.5

Make sure that you have Meson in your system. For instance,

sudo apt install meson
sudo dnf install meson
sudo pacman -S meson

Then use the following commands to build and install the application

meson setup build
ninja -C build
ninja -C build install

To avoid installing system-wide the application, you can use a prefix:

meson setup build --prefix=/usr
ninja -C build
ninja -C build install

If you plan on contributing to the project, use the development profile.

meson setup build -Dprofile=development

It will also configure a Git hook so that the source code is checked prior to authoring a Git commit. The hook runs cargo fmt to assert that the code is formatted. Read hooks/pre-commit.hook to inspect what the script does.

Cargo (Rust)

This may be the preferred approach if you use rust-analyzer and tools like that, because Meson uses a separate target directory, and you might prefer to use the standard target/ directory.

You can use cargo build and cargo run to build and run the project executable, but you will still need to use Meson to build the data files (GSettings schema files, Gio resource files, gettext translations...).

You should use build-aux/cargo-build.sh. It wraps cargo build, but also compiles the data files and copies them in target/share, so that during application startup those files can be picked.

Nix/NixOS

Use this approach to install, build or try cartero on a nixos system. Instructions assume you're using a flakes nixos system, but you could install it in a regular nixos system aswell by importing the derivation and adding the appropiate src attribute on it, note that this may require some manual intervation though.

First of all, add cartero to your flake inputs so you can import the package.

{
  inputs = {
    cartero.url = "github:danirod/cartero";
  };
}

Warning

This examples assume you're passing inputs in the specialArgs so you can utilize it in others modules if you're splitting your config in multiple files.

Then in your home.packages (when using home manager) or environment.systemPackages (global nix packages), add the derivation.

environment.systemPackages = [
  inputs.cartero.packages.x86_64-linux.default
];

Tip

You can try changing the architecture, not tested in every arch atm though.

Another way is by making a nixpkgs overlay to add cartero and then install it easily.

nixpkgs.overlays = [
  (_: final: let
    inherit (inputs) cartero;
    inherit (final) system;
  in {
    cartero = cartero.packages.${system}.default
  })
];

And then in the packages list of your choice.

home.packages = with pkgs; [
  cartero
];

Note

You may need to reboot the system or relogin to be able to see cartero on your launcher

Contributing

🐛 This project is currently a larva trying to grow. Do you want to get in? Take a seat!

This project is highly appreciative of contributions. If you know about Rust, GTK or the GNOME technologies and want to help during the development, you can contribute if you wish. Fork the project and commit your code.

Some checklist rules before submitting a pull request:

  • Use a feature branch, do not make your changes in the trunk branch directly.

  • Rebase your code and make sure that you are working on top of the most recent version of the trunk branch, in case something has changed while you were working on your code.

  • Update the locales if you changed strings. The ninja target that you are looking for is called cartero-update-po (such as ninja -C build cartero-update-po). Don't worry, you don't have to translate the strings by yourself, but make sure that the new templates are added to the .po and .pot files.

  • Use the pre-commit hook. The pre-commit hook will validate that your code is formatted. It should be automatically configured if you run Meson in development mode (-Dprofile=development), but you can install it on your own or run hooks/pre-commit.hook.

The project is starting small, so if you want to do something big, it is best to first start a discussion thread with your proposal in order to see how to make it fit inside the application.

While this application is not official and at the moment is not affiliated with GNOME, you are expected to follow the GNOME Code of Conduct when interacting with this repository.

Licenses

Cartero is published under the terms of the GNU General Public License v3.0 or later.

Copyright 2024 the Cartero authors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

The Cartero icon is published under the a Creative Commons Attribution-ShareAlike 4.0 International license.

Credits and acknowledgments

Cartero is maintained by Dani Rodríguez.

Big shoutout to the contributors who have sent patches or translations!

Also, Christian suggested Cartero as the name for the application and I liked it enough to call it like so, therefore shoutout to Christian as well!

Finally, shoutout to many of the GTK and GNOME Circle applications out there whose source code I've read in order to know how to use some of the GTK features that you cannot learn just by reading the official docs.

Blog

Dani's dev blog (in Spanish) of Cartero.

Comments
  • Approach Dependencias no Embebidas

    Approach Dependencias no Embebidas

    Lo cerraste al rato de abrirlo, con razón no lo veía.

    He copiado y pegado el código del repositorio a un repo aparte y le he aplicado por encima el main.yml (para no ensuciar mucho el historial, que las actions de por sí son un poco sucias), y tengo algunos problemas con algunos steps.

    Por ejemplo, por el momento no voy a usar un semantic versioning muy estricto porque aunque estoy muy a tope con usarlo para bibliotecas, últimamente me he encontrado que en aplicaciones finales no es muy útil y no transmite mucho, y prefiero un enfoque donde incluso aunque haga algo que parezca breaking change (como cambiar una función de código), no incremente la mayor si el usuario no percibe cambios visuales evidentes.

    Pero bueno, la base de la instalación de Rust y la compilación se podría aprovechar para compilar automáticamente más adelante y complementar al git-hook. Hasta que no arregle lo de los gresources para que pueda moverse la aplicación una vez compilada sin fallar al abrirse, no puedo ofrecer una descarga binaria porque ahora mismo por como se compila, te obligaría a poner el ejecutable en una carpeta concreta del ordenador.

    Hola de nuevo Dani. La otra la cerré tal y como mencionas porque me di cuenta de que el binario tenía dependencias no embebidas y al compilarlo en el worker con un prefix personalizado, pedía paths del worker p.e su $HOME, etc.

    En esta nueva PR el release asset contiene un tarball con un install.sh que sirve a su vez para purgar el binario/gresource/desktop_icons cuando no se quiera más el programa (en el runner se ha compilado sin prefixes para que esté enlazado con un well known path o como se diga jajaja). Si alguien quiere probarlo puede hacerlo de esta forma, estoy contigo aún así en que correr cualquier cosa con sudo echa bastante para atrás jejeje.

    El tema de semver... Estuve mirando algunas actions y no me convencio ninguna, el step que pongo en la feature deja en manos del contributor bumpear la version, lo único que he hecho ha sido pillar el tag y sacar el changelog a la hora de hacer la release.

    Eso es todo a grandes rasgos. La verdad es que me gustaría contribuir. De todas formas entiendo el punto de no poder distribuir aún el binario.

    Sin mayor problema cierra la PR si no te convence o lo dejamos para más adelante, o como mencionas incorpora código para lo que te parezca, cualquier cosa me parece bien 👍🏻

    Un saludo,

    Sergio

    Waiting for data 
    opened by ser356 10
  • Add missing packages for Windows compilation

    Add missing packages for Windows compilation

    Probé a compilar Cartero con una instalación limpia de MSYS2, y esto pasó...

    Procedí a instalar todos los paquetes necesarios indicados en el archivo de compilación para Windows, y al momento de hacer el setup con Meson me topé con el siguiente error:

    josal@DESKTOP-PUA53LS MINGW64 ~/cartero
    $ meson setup build --prefix=/usr
    The Meson build system
    Version: 1.4.1
    Source dir: C:/msys64/home/josal/cartero
    Build dir: C:/msys64/home/josal/cartero/build
    Build type: native build
    Project name: cartero
    Project version: 0.1
    Rust compiler for the host machine: rustc -C linker=cc (rustc 1.79.0)
    Rust linker for the host machine: rustc -C linker=cc ld.bfd 2.42
    Host machine cpu family: x86_64
    Host machine cpu: x86_64
    Found pkg-config: YES (C:\msys64\mingw64\bin/pkg-config.EXE) 2.2.0
    Run-time dependency glib-2.0 found: YES 2.80.3
    Run-time dependency gtk4 found: YES 4.14.4
    Run-time dependency gtksourceview-5 found: YES 5.12.1
    Did not find CMake 'cmake'
    Found CMake: NO
    Run-time dependency libadwaita-1 found: NO (tried pkgconfig)
    
    meson.build:34:0: ERROR: Dependency "libadwaita-1" not found, tried pkgconfig
    
    A full log can be found at C:/msys64/home/josal/cartero/build/meson-logs/meson-log.txt
    

    Ante este error, procedí a instalar adwaita con el siguiente comando:

    $ pacman -S mingw-w64-x86_64-libadwaita
    

    Volví a ejecutar el comando meson setup build, esta vez reconociendo la existencia de adwaita en mi MSYS2 y dejándome seguir con la compilación. Por esta razón entra el primer paquete que propongo añadir a la lista de paquetes necesarios para compilar Cartero.

    Luego de ello, ejecuté el comando ninja -C build y me topé con el siguiente error:

    Nota: cabe decir que al no tener blueprint-compiler instalado, se me clonó el repo de dicho paquete en la carpeta subprojects de Cartero para usarse en la compilación.

    josal@DESKTOP-PUA53LS MINGW64 ~/cartero
    $ ninja -C build
    ninja: Entering directory `build'
    [1/7] Generating data/blueprints with a custom command
    FAILED: data/endpoint_pane.ui data/main_window.ui data/key_value_pane.ui data/key_value_row.ui data/response_panel.ui
    "C:/msys64/mingw64/bin/python.exe" "C:/msys64/home/josal/cartero/build/subprojects/blueprint-compiler/blueprint-compiler" "batch-compile" "data" "../data" "../data/ui/endpo
    int_pane.blp" "../data/ui/main_window.blp" "../data/ui/key_value_pane.blp" "../data/ui/key_value_row.blp" "../data/ui/response_panel.blp"
    Traceback (most recent call last):
      File "C:/msys64/home/josal/cartero/build/subprojects/blueprint-compiler/blueprint-compiler", line 38, in <module>
        from blueprintcompiler import main
      File "C:/msys64/home/josal/cartero/subprojects/blueprint-compiler/blueprintcompiler/main.py", line 27, in <module>
        from . import formatter, interactive_port, parser, tokenizer
      File "C:/msys64/home/josal/cartero/subprojects/blueprint-compiler/blueprintcompiler/interactive_port.py", line 25, in <module>
        from . import decompiler, parser, tokenizer
      File "C:/msys64/home/josal/cartero/subprojects/blueprint-compiler/blueprintcompiler/decompiler.py", line 26, in <module>
        from .gir import *
      File "C:/msys64/home/josal/cartero/subprojects/blueprint-compiler/blueprintcompiler/gir.py", line 25, in <module>
        import gi  # type: ignore
        ^^^^^^^^^
    ModuleNotFoundError: No module named 'gi'
    [4/7] Building translation po/eo/LC_MESSAGES/cartero-eo.mo
    ninja: build stopped: subcommand failed.
    

    Para solucionar este error, lo que hice fue instalar blueprint-compiler en mi MSYS2 directamente:

    $ pacman -S mingw-w64-x86_64-blueprint-compiler
    

    Una vez hecho esto, volví a ejecutar el comando y no me volvió a generar este error y me permitió seguir con la compilación. De aquí viene el segundo paquete que propongo añadir a la lista.

    Luego seguí con la ejecución de comandos normales para compilar Cartero y no me generó más problemas, hasta incluso fuí capaz de abrir Cartero correctamente.

    Estas son las razones por las que creería yo que sería importante añadir estos dos paquetes en la compilación de Windows. Podré estar equivocado, sin embargo aquí dejo mi pequeño granito de arena para querer aportar al proyecto.

    opened by barrientosvctor 5
  • Known issue: missing icons

    Known issue: missing icons

    It is known that currently some application icons may not present properly. This issue affects any version that is not packaged via Flatpak: Windows, macOS and non-sandbox GNU/Linux.

    I'm looking for workarounds and I'll probably just embed some icons into the application to make sure that they always work.

    Bug 
    opened by danirod 2
  • It doesn't recognize POST body object on Windows

    It doesn't recognize POST body object on Windows

    I just downloaded the windows and tried to execute a common POST request that I use but didnt work, I'm not sure maybe Im indenting wrong or something like that

    This is the request in postman image

    This is the request in Cartero: image

    Bug 
    opened by David-Pena 2
  • Packaging for nix and adding nixos installation

    Packaging for nix and adding nixos installation

    In this pr am including two main files which are being used by nix to be able to build and install cartero in a nixos (and non nixos systems that use the standalone nix package manager installation). A little bit resume of the changes is:

    • flake.nix: This file is the entry point for a nixos built system using the flakes way which is an experimental new way of using nix but being pretty much adopted nowadays in the nix ecosystem.
    • default.nix: The cartero nix derivation. You can think on a derivation as something like a recipe or a makefile which tells nix how to build the application, and also what files/services/configurations it should touch in the system, all of this happen by keeping every binary/library isolated from the real system.

    [!NOTE] Instructions to install and use were included in the README.md but feel to suggest changes if needed or edit if you want aswell 😁

    image

    Cartero running on nixos with plasma.

    opened by AlphaTechnolog 1
  • Create a Rust feature to disable client side decorations

    Create a Rust feature to disable client side decorations

    They currently cause issues on Windows and macOS.

    • On Windows, they cause weird shadows to appear, and the alternative to shadows is even worse (see #19).
    • Also on Windows, they are not fully compatible with features like window snapping
    • On macOS, window controls are not native and are in the opposite side of the Window

    A way to disable CSD during compile-time should be added to Cartero. I believe that it should be implemented as a feature, to make it easier to test it even on GNU/Linux, or even to facilitate the integration with desktop environments that do not follow the GNOME HIG, such as KDE.

    • If CSD is enabled, CarteroWindow will extend Adw.ApplicationWindow, and the Blueprint shall reflect it. This is the current behaviour.
    • If CSD is disabled, CarteroWindow will extend Gtk.ApplicationWindow instead, and should use a different Blueprint that adapts to the Gtk.ApplicationWindow limitations.

    Also, on Windows disabling the CSDs shall set the GTK_CSD env-var to "0", because it seems that on Windows, Gtk.ApplicationWindow will try to be non-native unless the environment variable is set.

    MS Windows macOS Kanban Task 
    opened by danirod 1
  • Secret variables and headers

    Secret variables and headers

    Allow to mask a value input so that the contents are not visible out of the box, which is good to encode API keys and other sensible data that you'd rather not show, for instance, if screensharing.

    This requires storing data in the KeyValue data structure, since the information is also required to avoid serializing the value into a file.

    Kanban Task 
    opened by danirod 1
  • Syntax highlighting

    Syntax highlighting

    Depending on the value of the content-type header for the response, I could load a specific syntax highlighter, such as JSON, TOML, YAML, HTML or XML.

    Kanban Task 
    opened by danirod 1
  • Create main.yml

    Create main.yml

    Ey, aquí dejo el CICD para crear la release de Cartero como te mencione ayer por YT 😄

    Tengo de TODO añadir semantic versioning a futuro pero tu mandas.

    Un abrazo,

    Sergio

    opened by ser356 1
  • More keyboard shortcuts

    More keyboard shortcuts

    List of shortcuts to add for 0.1:

    • [x] <Primary>-T: open a new tab.
    • [x] <Primary>-O: open an existing file.
    • [x] <Primary>-S: save or prompt to save new file.
    • [x] <Primary>-W: close tab.
    • [x] <Primary>-Q: exit Cartero.
    • [ ] <Primary>--S: save as new file.
    Kanban Task 
    opened by danirod 0
  • Known issue: application still quits if you cancel during save

    Known issue: application still quits if you cancel during save

    Say that you try to exit Cartero with a modified file. You press Save, but you cancel instead. Currently, Cartero will exit. The expected behaviour is that the close process is aborted and therefore you have to quit Cartero again.

    Bug 
    opened by danirod 0
  • feat. format json on response body tab

    feat. format json on response body tab

    First of all, i'm sorry

    I need to say that i am not a rust/gtk dev, maybe I shouldn't do this

    Sometimes responses json type dont format correctly on body panel Captura de pantalla 2024-07-26 a la(s) 12 17 02 a m

    for that i applied some lines for try render a bit better json values

    Captura de pantalla 2024-07-26 a la(s) 12 16 00 a m

    I'm not sure if this help or improve performance with long single line

    • [x] add serde_json dependency
    • [x] format response with to_string_pretty fn
    • [x] set the format to panel

    i really apreciate any type of feedback and tips, or if I can help you in other ways i'll do it with pleasure

    pd: i like yout content, you do a great job

    opened by devLuisDonaldo 1
  • Tab to explore and update query params

    Tab to explore and update query params

    Most programs like this have a tab for this, and when using Cartero I find that not having a feature like this makes my work more difficult.

    There should be an additional tab called Parameters, with a KeyValuePane inside.

    Modifying the URL in the request_url field should update the parameters presented in the field. Modifying the contents of the KeyValuePane for the parameters should cause the parameters to be grouped again into a querystring, and the request_url should have its current URL changed as well.

    Disabling a param from the pane should remove it from the URL as well.

    I believe this is going to be tricky because changing the contents of the request_url after touching the pane may cause a "request_url has changed" event to fire back, entering an infinite loop. I suspect I'm going to need to add a mutex that prevents both event listeners from trying to update one each other.

    Kanban Task 
    opened by danirod 0
  • Known issue: no support for streaming requests

    Known issue: no support for streaming requests

    It is known that currently some HTTP requests that use HTTP streaming may hang the user interface. An example request of this is https://httpbin.org/range/1500. Other requests may exist.

    In general, support for streaming requests and server side events is currently not well tested and this will probably not change until 0.1 gets released in order to focus my limited resources into finishing the first version of the app.

    Bug 
    opened by danirod 0
  • Known issue: wrong keyboard shortcuts on macOS

    Known issue: wrong keyboard shortcuts on macOS

    The macOS version doesn't use the proper keyboard shortcuts for some actions such as cut, copy, paste and select all.

    This is a known issue that affects upstream dependencies, and there is not much to fix here at the moment, so I'm marking this as a Known issue if someone ever reports this as a bug in Cartero.


    More context: currently, GTK 4 apps use <Ctrl> as the primary modifier for all keyboard shortcuts. On GNU/Linux and Windows this makes sense because the keyboard shortcuts are already Ctrl-X, Ctrl-C, Ctrl-V. However, on macOS most users will expect Cmd-X, Cmd-C and Cmd-V as the keyboard shortcuts to cut, copy and paste.

    Solution 1: upstream GTK. On GTK 4.16, they will change the primary modifier to <Meta> (the Cmd key) on macOS. The merge request has been already integrated. If we just wait until GTK 4.16 is stable, once it is possible to compile a macOS version with that version, the issue will probably be automatically fixed.

    Solution 2: language bindings. There is a workaround to change the keyboard shortcuts for cut, copy and paste. Many apps already use it to have better compatibility with macOS. Unfortunately, there seems to be some kind of issue at the moment with the language bindings for the UI toolkit that Cartero uses which currently prevents me from using the workaround in my application.

    Bug macOS 
    opened by danirod 0
  • Support for collections and requests

    Support for collections and requests

    This is my take on #11.

    The goal is to allow the user to create collections, which will have endpoints inside. It should be possible to create, open, save and close collections, and for each collection, the application shall let the user manage folders and requests.

    Tasks and subtasks:

    • [x] Create collections.
    • [x] Open existing collections by pointing at the metadata file.
    • [x] Close existing collections
    • [ ] Update information about collections.
    • [ ] Support for requests and folders (to-do...)

    Known issues:

    • [ ] Pressing Enter on the New Collection dialog should submit the form.

    Here is an updated screenshot with the state of this feature.

    Here we see the list of opened collections.

    image

    By pressing the [Add] button, you can create a new collection.

    image

    opened by danirod 0
Owner
Dani Rodríguez
Te cuento datos absurdos sobre x86 en la primera cita.
Dani Rodríguez
A cross-platform Mod Manager for RimWorld intended to work with macOS, linux and Windows

TODOs are available here. Discussions, PRs and Issues are open for anyone who is willing to contribute. rrm Inspired by Spoons rmm. This is a cross-pl

Alejandro Osornio 7 Sep 5, 2022
Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK.

Gtk Rust Fuzzer Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK. It finds bugs inside GTK functions, GTK exported

Rafał Mikrut 8 Nov 19, 2022
Reactive components in rust, designed to make GTK more manageable

gflux gflux is a tiny experimental reactive component system for rust, designed to make GTK more manageable. gflux: is about 300 lines of code contain

Brian Vincent 3 Aug 20, 2023
Test bed for gtk-rs-core experiments

Rust GObject Experiments class macro #[gobject::class(final)] mod obj { #[derive(Default)] pub struct MyObj { #[property(get, set)]

Jason Francis 2 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
Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Derek Jones 2 Aug 13, 2022
Rust bindings to Core Foundation and other low level libraries on Mac OS X and iOS

core-foundation-rs Compatibility Targets macOS 10.7 by default. To enable features added in macOS 10.8, set Cargo feature mac_os_10_8_features. To hav

Servo 685 Jan 2, 2023
Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo.

THIS REPOSITORY IS DEPRECATED SEE: https://github.com/rust-gnome rgtk Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo. Building rgtk expe

Jeremy Letang 124 Jul 10, 2022
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Alex Dumas 4 Dec 20, 2022
A collection of components and widgets that are built for bevy_ui and the ECS pattern

Widgets for Bevy UI A collection of components and widgets that are built for bevy_ui and the ECS pattern. Current State This was started recently and

Gabriel Bourgeois 3 Sep 2, 2022
Unofficial Linux QQ client, based on GTK4 and libadwaita, developed with Rust and Relm4.

GTK QQ (WIP) Unofficial Linux QQ client, based on GTK4 and libadwaita, developed with Rust and Relm4. Screenshots Light Dark Note The two screenshots

Lomírus 198 Dec 24, 2022
A powerful color picker and formatter, built with GTK and Rust

Eyedropper A powerful color picker and formatter. More screenshots Features Pick a Color Enter a color in Hex-Format Parse RGBA/ARGB Hex-Colors View c

Jonathan 108 Dec 24, 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
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 31, 2022
Integrate Qml and Rust by building the QMetaObject at compile time.

QMetaObject crate for Rust The qmetaobject crate is a crate which is used to expose rust object to Qt and QML. Objectives Rust procedural macro (custo

Woboq GmbH 495 Jan 3, 2023
OS-native file dialogs on Linux, OS X and Windows

nfd-rs nfd-rs is a Rust binding to the library nativefiledialog, that provides a convenient cross-platform interface to opening file dialogs on Linux,

Saurav Sachidanand 152 Nov 9, 2022
Build smaller, faster, and more secure desktop applications with a web frontend.

TAURI Tauri Apps footprint: minuscule performance: ludicrous flexibility: gymnastic security: hardened Current Releases Component Descrip

Tauri 56.3k Jan 3, 2023
File system enumerator and monitor for Android.

File system enumerator and file monitor for Android. Built to be compatible with other command line utilties! This tool was created to somewhat automa

Kyle Benac 15 Aug 23, 2022
A tiny, neat C library that portably invokes native file open and save dialogs.

Native File Dialog A tiny, neat C library that portably invokes native file open, folder select and save dialogs. Write dialog code once and have it p

Michael Labbe 1.5k Dec 28, 2022