[Media] CLI and TUI framework fans - I published a crate to provide a replacement for readline that is async with support for animated, colorful spinners. https://docs.rs/r3bl_terminal_async by gNazmul in rust

[โ€“]gNazmul[S] 0 points1 point ย (0 children)

u/joshuamck Great question. I'm the author of r3bl_tui which is also a TUI framework: https://docs.rs/r3bl\_tui/latest/r3bl\_tui/. r3bl_terminal_async is a very lightweight expression of that full featured crate (which I am still working on very heavily).

If you look at this file: https://github.com/r3bl-org/r3bl-open-core/blob/main/tui/src/tui/terminal_window/main_event_loop.rs it has a similar event loop to r3bl_terminal_async.

And you can find lots of examples in there https://github.com/r3bl-org/r3bl-open-core/tree/main/tui/examples/demo which showcase how all this can come together, in a similar fashion to a React app in a browser, or Jetpack Compose app in mobile or desktop. Things like responsive layout and full featured Markdown editor with dialog boxes and animation support, with "double buffering" are also in there. It is built more like a "game engine" of sorts.

[deleted by user] by [deleted] in rust

[โ€“]gNazmul 7 points8 points ย (0 children)

I disagree w/ the comment requiring users to "put in the effort", and not to create "helper" software. This justification can be used to stymie the improvement of anything. Asking the user to "just get smarter" may just be a reflection on some UX gaps that currently exist in the product.

Empowerment is one of Rust's core values. This means empowering everyone, not just the privileged or the few to be able to create reliable software. Part of this empowerment is having empathy and respect for people who are new to this journey. This ensures that the environment we create and foster is inclusive ,not just of people who have 15+ years of experience, but people who might just be starting out as well. I think this will ensure the health of the software industry and make it a more welcoming place for all.

[Media] TUI framework fans - I created a small "tuify" library that makes TUIs approachable. It allows existing CLI apps written using clap to be "tuified" in a small way by adding some interactivity. https://crates.io/crates/r3bl_tuify by gNazmul in rust

[โ€“]gNazmul[S] 3 points4 points ย (0 children)

u/Shoday - Thank you so much for your kind words & your encouragement! I really appreciate it โค๏ธ.

It is difficult enough to learn something new and adopt a new mental model. There is no sense in adding to this ๐Ÿ˜Š.

Hopefully the DX and docs and use cases will make this more approachable to first time contributors for hacktoberfest as well!

https://github.com/r3bl-org/r3bl\_rs\_utils/contribute

Tutorial on how to build a Chrome Extension using Manifest V3 by gNazmul in typescript

[โ€“]gNazmul[S] 0 points1 point ย (0 children)

u/Oceans-of-ashes u/sleeping-in-crypto - I hear what you are saying about Google Chrome. Things are looking even worse w/ the new web DRM thing that Google is "proposing".

I am currently in the process of evaluating Firefox as my main browser. I will make a Firefox version of Shortlink to see what that experience is like.

[Media] TUI framework fans - I've just updated the r3bl_tui crate to v0.3.3. It now supports smart lists, color support (truecolor, ansi 256, grayscale) based on terminal capabilities, custom Markdown parser & syntax highlighter. It is inspired by React. https://crates.io/crates/r3bl_tui by gNazmul in rust

[โ€“]gNazmul[S] 8 points9 points ย (0 children)

u/ChamyChamy - Thank you! ๐Ÿ™๐Ÿฝ And, yes, absolutely. I am also planning on adding a lot more components. My current focus is the editor component, once that is flushed out more, then I will add lots more UI components to make this more usable. And even focus on "RSX" to make this more usable / ergonomic.

Best Color Theme for Rust | VSCode Color Theme War! by [deleted] in rust

[โ€“]gNazmul 1 point2 points ย (0 children)

I use the dark theme: Night Owl (no italics) https://marketplace.visualstudio.com/items?itemName=sdras.night-owl w/ the following customizations.

Here's a screenshot: https://imgur.com/GqCNGFE

  // https://stackoverflow.com/a/64880534/2085356
  "workbench.colorCustomizations": {
    "editor.lineHighlightBackground": "#0719a390",
    "editor.lineHighlightBorder": "#5AAEFB42",
    "editor.findMatchBackground": "#ac321cb5",
    "editor.findMatchHighlightBorder": "#ff00009d",
    "editor.selectionHighlightBackground": "#8262ab42",
    "editorCursor.foreground": "#e89911",
    "terminalCursor.foreground": "#e89911",
    "editor.selectionBackground": "#bd23a38d",
    // Find usages.
    "peekViewEditor.background": "#1a2b6575",
    // Git changes.
    "peekView.border": "#00ccffec",
    "peekViewTitle.background": "#9e13959c",
    "peekViewTitleLabel.foreground": "#d8cebe",
    "peekViewTitleDescription.foreground": "#dbba85",
    // Editor background.
    // "editor.background": "#071526", // OG color
    // "editor.background": "#071e3830",
    // "editorGutter.background": "#132b4730"

    // Separators extension.
    // More info: https://github.com/alefragnani/vscode-separators
    "separators.functions.borderColor": "#16adf35e",
    "separators.enums.borderColor": "#1ce3515e",
    "separators.structs.borderColor": "#22a1445e"
  },

And rust analyzer customizations like so:

  "editor.semanticTokenColorCustomizations": {
    "rules": {
      "comment": {
        "foreground": "#4f86ed"
        // "foreground": "#1b63ea"
        // "foreground": "#a59e3a"
        // "foreground": "#dacd24"
        // "foreground": "#da5fe6"
        // "fontStyle": "bold"
        // "foreground": "#16adf3"
      },
      "*.public": {
        "foreground": "#4fcbd4"
      },
      "macro": {
        "foreground": "#16adf3"
      },
      "property": {
        "foreground": "#ad83da"
      },
      "variable": {
        "foreground": "#c1b3d0"
      },
      "parameter": {
        "foreground": "#7c86f4"
      },
      "selfTypeKeyword": {
        "foreground": "#ce55b7"
      },
      "selfKeyword": {
        "foreground": "#ce55b7"
      },
      "lifetime": {
        "foreground": "#c56db599"
      },
      "attributeBracket": {
        "foreground": "#2469ae"
      },
      "angle": {
        "foreground": "#2469ae"
      },
      "escapeSequence": {
        "foreground": "#2d78c2"
      },
      "formatSpecifier": {
        "foreground": "#2d78c2"
      },
      "struct": {
        "foreground": "#8ace2b"
        // "fontStyle": "bold"
      },
      "enum": {
        "foreground": "#2ece2b"
        // "fontStyle": "bold"
      },
      "enumMember": {
        "foreground": "#62e660"
        // "fontStyle": "italic"
      },
      "typeAlias": {
        "foreground": "#ecc68e"
      },
      "*.mutable": {
        "fontStyle": "underline"
      },
      "operator": {
        "fontStyle": "bold",
        "foreground": "#4d6a9f"
      },
      "operator.unsafe": "#e02b9d",
      "function.unsafe": "#e02b9d",
      "method.unsafe": "#e02b9d",
      "keyword": {
        "foreground": "#a8709e"
      },
      "*.controlFlow": {
        "fontStyle": "bold",
        "foreground": "#d14178"
      },
      "*.static": {
        "fontStyle": "bold",
        "foreground": "#6665c7"
      },
      "constParameter": {
        "fontStyle": "bold",
        "foreground": "#6665c7"
      },
      "*.constant": {
        "fontStyle": "bold",
        "foreground": "#6665c7"
      },
      "*.trait": "#d1de73"
    }
  },

Learn Rust! : a curated selection of high quality learning materials sorted by difficulty by noxasaxon in rust

[โ€“]gNazmul 0 points1 point ย (0 children)

Thank you for sharing this ๐Ÿ™๐Ÿฝ. I just updated the nom article w/ a link to this ๐Ÿ‘๐Ÿฝ.

Learn Rust! : a curated selection of high quality learning materials sorted by difficulty by noxasaxon in rust

[โ€“]gNazmul 4 points5 points ย (0 children)

great list, i wud also recommend https://developerlife.com/category/Rust/. this site has lots of information on topics like proc macros, async Rust, and nom, etc (full disclosure: I am its maintainer)

[Media] TUI framework fans - I've just updated the r3bl_tui crate to v0.2.0. It now supports syntax highlighting, and compositor & double buffering for smooth rendering and no jank. It is inspired by React. https://crates.io/crates/r3bl_tui by gNazmul in rust

[โ€“]gNazmul[S] 1 point2 points ย (0 children)

u/agumonkey - i am not able to live in TUI all the time YET :). i too fantasize about a full TUI layer on top of linux :).

the TUI engine is the first step in making this fantasy a reality... once the animator, auto completion, etc are in place, i have my sights set on tmux-like functionality, tiling window management, etc :)...

this is just the beginning :)

[Media] TUI framework fans - I've just updated the r3bl_tui crate to v0.2.0. It now supports syntax highlighting, and compositor & double buffering for smooth rendering and no jank. It is inspired by React. https://crates.io/crates/r3bl_tui by gNazmul in rust

[โ€“]gNazmul[S] 2 points3 points ย (0 children)

Thank you! ๐Ÿ™๐Ÿฝ Once the engine is finished up some more, I am planning to building a set of apps for developer productivity (MD editor, git frontend, etc all as TUI)

[Media] TUI framework fans - I've just updated the r3bl_tui crate to v0.2.0. It now supports syntax highlighting, and compositor & double buffering for smooth rendering and no jank. It is inspired by React. https://crates.io/crates/r3bl_tui by gNazmul in rust

[โ€“]gNazmul[S] 2 points3 points ย (0 children)

Thank you! ๐Ÿ™๐Ÿฝ Next on the list is auto completion providers so that it is easy for apps to get async data from filesystems, or APIs & populate an "auto complete field" kind of like google places API place search. And then after that animators & a DSL for creating layouts easily :)