A GUI for Cargo

Related tags

GUI cargo-ui
Overview

A GUI for Cargo

Build Status

This is a project to make a GUI for cargo, built using SixtyFPS:

Screenshot

The idea

cargo install cargo-ui
cargo ui

Prerequisites

In addition to a working cargo and Rust installation, a few other tools or libraries are needed:

Linux:

  • fontconfig library (libfontconfig-dev on debian based distributions)
  • xcb library (libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev on debian based distributions)

Windows:

  • A working C compiler (such as MSVC)
  • CMake installed in your PATH

macOS:

  • "Xcode Command Line Tools" need to be installed: xcode-select --install
  • CMake installed and in your PATH. In the CMake GUI application instructions can be found via Tools->How to Install For Command Line Use.

Style

The default style from SixtyFPS is the ugly style. But the interface looks much nicer using the native style as this has native controls and images.

To install using the native style, use

SIXTYFPS_STYLE=native cargo install cargo-ui

The use of the native style requires Qt 5.15, see https://github.com/sixtyfpsui/sixtyfps/blob/master/docs/install_qt.md

Vision

Some ideas for features:

  • Choose the binary to run or the lib to build or the test to run
  • Display the errors in a nice way
  • Select the debug or release mode
  • Select the toolchain (nightly, stable, ...)
  • Maybe integrate with rustup to update the toolchain or install new one
  • See the dependencies as an expendable tree
  • Show duplicated dependencies
  • Show outdated dependencies, with button to easily update
  • Ability to easily add dependency (by searching the crates.io index)
  • Edit features of dependencies from a list.
  • Show asm, llvm-ir, ...
  • Show build progress and be able to cancel the build
  • Edit other metadata of the the Cargo.toml (edition, author, ...)
  • Manage workspaces and do batch edit of the metadata on all members
  • Have a "playground" tab which allow to easily try rust code
  • A publish tab which publishes all the crates in the workspace in the right order
  • Double-click on a Cargo.toml file would also run cargo-ui.
  • ...

License

The source code of Cargo UI is available under the terms of both the MIT license and the Apache License (Version 2.0). (See LICENSE-APACHE and LICENSE-MIT for details.)

However, because of the use of GPL dependencies, cargo-ui, as a whole, is licensed under the terms of the GPLv3 (See LICENSE-GPL)

Comments
  • use rfd for every OS

    use rfd for every OS

    rfd 0.7 can now use the XDG Desktop Portal D-Bus API instead of depending on GTK. The D-Bus API is handled by ashpd which uses zbus, so this does not bring in any new C or C++ dependencies.

    opened by Be-ing 9
  • fontconfig dependency might need to be documented

    fontconfig dependency might need to be documented

    When I tried to run cargo install cargo-ui, it ran into the following error:

    error: failed to run custom build command for `servo-fontconfig-sys v5.1.0`
    
    Caused by:
      process didn't exit successfully: `/tmp/cargo-install2apvyR/release/build/servo-fontconfig-sys-4d1bd33c2712a26c/build-script-build` (exit status: 101)
      --- stdout
      cargo:rerun-if-env-changed=FONTCONFIG_NO_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG
      cargo:rerun-if-env-changed=FONTCONFIG_STATIC
      cargo:rerun-if-env-changed=FONTCONFIG_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
    
      --- stderr
      thread 'main' panicked at '`"pkg-config" "--libs" "--cflags" "fontconfig" "fontconfig >= 2.11.1"` did not exit successfully: exit status: 1
      --- stderr
      Package fontconfig was not found in the pkg-config search path.
      Perhaps you should add the directory containing `fontconfig.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'fontconfig' found
      Package fontconfig was not found in the pkg-config search path.
      Perhaps you should add the directory containing `fontconfig.pc'
      to the PKG_CONFIG_PATH environment variable
      No package 'fontconfig' found
      ', /home/bjorn/.cargo/registry/src/github.com-1ecc6299db9ec823/servo-fontconfig-sys-5.1.0/build.rs:34:17
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `cargo-ui v0.1.0`, intermediate artifacts can be found at `/tmp/cargo-install2apvyR`
    
    Caused by:
      build failed
    bjorn@magni:~$ "pkg-config" "--libs" "--cflags" "fontconfig" "fontconfig >= 2.11.1"
    Package fontconfig was not found in the pkg-config search path.
    Perhaps you should add the directory containing `fontconfig.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'fontconfig' found
    Package fontconfig was not found in the pkg-config search path.
    Perhaps you should add the directory containing `fontconfig.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'fontconfig' found
    
    bjorn@magni:~$ cargo version
    cargo 1.53.0 (4369396ce 2021-04-27)
    

    I'm on Ubuntu 21.04 and have fontconfig installed. Do I need libfontconfig-dev as well?

    documentation 
    opened by bjorn 9
  • Re-organize the actions and dependencies UI

    Re-organize the actions and dependencies UI

    Use a tab-widget to place the dependencies view and the cargo actions on the same "level". This is a slightly less custom look.

    Before:

    Screenshot 2021-09-15 at 13 38 10 Screenshot 2021-09-15 at 13 38 18

    After:

    Screenshot 2021-09-15 at 13 38 53 Screenshot 2021-09-15 at 13 38 59
    opened by tronical 3
  • Trim trailing whitespaces

    Trim trailing whitespaces

    Trimmed trailing whitepsaces from:

    https://github.com/sixtyfpsui/cargo-ui/blob/42eec1db861f223f2945068c624dfdf87c9ca3c1/ui/main.60#L196

    Screenshot1 https://github.com/sixtyfpsui/cargo-ui/blob/42eec1db861f223f2945068c624dfdf87c9ca3c1/.github/workflows/rust.yaml#L24 https://github.com/sixtyfpsui/cargo-ui/blob/42eec1db861f223f2945068c624dfdf87c9ca3c1/.github/workflows/rust.yaml#L36

    Screenshot2

    opened by ghost 0
  • Windows: every child cargo process show a black console window

    Windows: every child cargo process show a black console window

    On Windows, loading the metadata and other child cargo processes show a cmd window.

    Seems like we need to add some flags to every command so they don't show https://stackoverflow.com/questions/59692146/is-it-possible-to-use-the-standard-library-to-spawn-a-process-without-showing-th

    The problem is that some sub processes are started from 3rd party crates

    opened by ogoffart 0
  • UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float)

    UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float)

    Execute cargo ui on macbook m1(stable-aarch64-apple-darwin):

    
    UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable
    
    
    opened by ZhangHanDong 3
  • Tree view scrolling and scrollbars is buggy

    Tree view scrolling and scrollbars is buggy

    Setup: Install Cargo UI 0.2.0 using cargo install cargo-ui or checking out master (38ca410ca0d2f34f8d9f20b785c534bac5f0a6c9) and cargo run [--release]. Click "Show Dependencies".

    I'm on Linux using a clicky non-continuous wheel mouse.

    Stale scrollbar size

    If you scroll with the mouse wheel and change the width of the widest visible row, the width of the horizontal scrollbar doesn't update (remaining 1 scroll behind) until you drag the vertical scrollbar, or scroll again (which updates the scrollbar width to the previous widest visible element, again remaining 1 scroll behind).

    Similarly, if you expand or contract a tree element, the scrollbar size doesn't update until you scroll the wheel or drag a scrollbar.

    (On 0.2.0, the scrollbar size always corrects itself in half a second. On git master, the scrollbar doesn't correct itself until you explicitly scroll.)

    Scroll past end

    If you drag the scrollbar to the end of the list, then wheel up and down, you end up 16 pixels or so below the end of the list. Scrolling down again puts you below the end of the list. Dragging the scrollbar doesn't cause these issues. (This occurs on master, not 0.2.0.)

    Scroll position not clamped in-bounds on content changes

    Collapsing a tree view element can cause the scroll position to show white space. Dragging the scrollbar (even horizontal) causes the page to scroll up to hide the white space (as long as it doesn't expose white space above the first element).

    bug 
    opened by nyanpasu64 1
Releases(v0.3.2)
Owner
SixtyFPS
SixtyFPS
SixtyFPS
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 271 Dec 27, 2022
Desktop GUI Framework

Azul - Desktop GUI framework WARNING: The features advertised in this README may not work yet. Azul is a free, functional, immediate mode GUI framewor

Maps4Print 5.4k Jan 1, 2023
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 Jan 1, 2023
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 1.1k Jan 9, 2023
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 Dec 31, 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
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 6.9k Jan 8, 2023
The bindings to the Nuklear 2D immediate GUI library.

nuklear-rust The bindings to the Nuklear 2D immediate GUI library. Currently beta. Drawing backends: gfx-pre-ll for GFX 3D drawing engine (examples: O

Serhii Plyhun 332 Dec 27, 2022
A cross-platform GUI library for Rust, inspired by Elm

Iced A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm. Features Simple, easy-to-use, batteries-included AP

Héctor Ramón 17.5k Jan 2, 2023
Truly cross platform, truly native. multiple backend GUI for rust

WIP: Sauron-native a rust UI library that conquers all platforms ranging from desktop to mobile devices. An attempt to create a truly native, truly cr

Jovansonlee Cesar 627 Jan 5, 2023
A cross-platform GUI library for Rust focused on simplicity and type-safety

A cross-platform GUI library for Rust, inspired by Elm

Héctor Ramón 17.5k Jan 8, 2023
Automatically create GUI applications from clap3 apps

Automatically create GUI applications from clap3 apps

Michał Gniadek 340 Dec 20, 2022
A simple news reading GUI app built in Rust

Headlines [WIP] A native GUI app built with Rust using egui. Uses newsapi.org as the source to fetch news articles. This is a WIP and the current stat

creativcoder 89 Dec 29, 2022
Build GUI applications with minimal dependencies in Rust

winapi-app-windows A crate to build applications' windows in Windows using WinAPI. This would be less confusing if the operating system was called som

Lonami 5 Jul 26, 2022
A simple GUI version of the pH calibration tool written in egui, based on the eframe template.

caliphui A simple GUI version of the pH calibration tool written in egui, based on the eframe template. Usage Native binaries are provided under relea

Peter Dunne 0 Dec 29, 2021
GUI based tool to sort and categorize images written in Rust

ImageSieve GUI based tool to sort out images based on similarity, categorize them according to their creation date and archive them in a target folder

Florian Fetz 67 Dec 14, 2022
Simplify generating an fltk gui from a data structure

This crate aims to simplify generating gui from a data structure.

fltk-rs 3 Dec 19, 2021
An idiomatic GUI library inspired by Elm and based on gtk4-rs

An idiomatic GUI library inspired by Elm and based on gtk4-rs. Relm4 is a new version of relm that's built from scratch and is compatible with GTK4 an

Aaron Erhardt 722 Dec 31, 2022
GUI app for managing Docker

dockeye GUI app for managing Docker Installation Prebuilt packages Download one of the archives available on the releases page and extract it somewher

Wojciech Kępka 397 Jan 3, 2023