Code Monkey home page Code Monkey logo

rio's Introduction

Rio terminal

๐Ÿšง โš ๏ธ Currently, Rio is in the process of a major rewrite to 0.1.0 to bring more features and fix known issues of 0.0.x versions.

tl;dr: Rio is a terminal built to run everywhere, as a native desktop applications by Rust or even in the browser powered by WebAssembly.

Rio terminal logo

Packaging status

Platforms

Name Details
MacOs as desktop application Installation guide
Linux as desktop application Installation guide
Windows as desktop application Installation guide
Web Browser (WebAssembly) (Sugarloaf is ready but Rio still need to be ported)

Demo Gallery

Demo rio Demo tmux
Demo linux x11 Demo linux wayland
Demo Windows 10 Demo emacs
Demo native tabs macos Demo error handling

Note: Emojis are rendered with Noto Emoji.

About

Documentation: https://raphamorim.io/rio

If you are using or want to help in any way please consider to donate via Github Sponsors.

Rio would not be possible without few acknowledgements and specially Alacritty, since a lot of Rio functionalities (e.g: ANSI parser, events, grid system) was originally written (and still uses a good amount) of Alacritty code.

Supporting the Project

If you use and like Rio, please consider sponsoring it: your support helps to cover the fees required to maintain the project and to validate the time spent working on it!

Acknowledgments

rio's People

Contributors

1garo avatar androw avatar avelino avatar bbx0 avatar bruisedsamurai avatar bushuai avatar danieltolentino avatar dvtkrlbs avatar falzm avatar github-actions[bot] avatar hardbsdk avatar hougesen avatar jeremiah avatar kemitix avatar lovesegfault avatar marrcelo avatar niuez avatar nix6839 avatar olshamb avatar orhun avatar pbrinkmeier avatar ralgozino avatar raphamorim avatar rayslash avatar rodrigoborgesdeoliveira avatar romulomourao avatar scorphus avatar sonbui00 avatar tornaxo7 avatar tranzystorekk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rio's Issues

[docs] Twitter custom UI components

Would be nice to overwrite twitter default colors for embedded tweets (not sure if there's a nice way to do with iframe). Maybe we can have our own twitter component (without include stars or replies features).

Screenshot 2023-04-12 at 11 43 21

This also would mean get rid of async twitter script on index.html

Ref #26

Sugarloaf examples do not render correctly on Linux

I am using the latest Pop_OS! distribution and tried to run the sugarloaf example "text.rs". I hit 2 issues:

  • It render incorrectly:
    image

  • Maximising or resizing the window did not cause a redraw so the extra space was not rendered to. This means on a tiling window manager, nothing was rendered at all (perhaps off window?).

Support alternative config file locations

Having a new application wanting to place it's configuration data in the users home directory is rather unfortunate, and alternative locations would be appreciated. It would be preferable if the default suggested location were to change as well, but that's not strictly necessary.

For Linux, the relevant directory for the config would be $XDG_CONFIG_HOME/rio/config.toml if XDG_CONFIG_HOME set, otherwise it's conventionally ~/.config/rio/config.toml [1]
For Windows, the directory would likely be {Home folder}/AppData/Roaming/rio/config.toml, though, I believe there may also be special ways you're suppose to access directories like that?
For Mac, it seems as though the suggested location would be ~/Library/Application Support/rio/rio.toml. I don't use a Mac, however, and found this through skimming documentation.

If backwards compatibility is a priority here, then what's typically done is that an application would first check the legacy path and load a config file there if present, and only look in subsequent paths if it isn't. This can create a bit of confusion about which is the proper one, but having multiple paths like this isn't especially unusual either, as long as the order in which paths are checked is documented.

[1] Also consider looking at the XDG Base Directory spec, which contains the proper locations of other types of data on Linux.

Thank you for your work on rio. I'm looking forward to its progress!

Edit: I just noticed themes are also loaded from that directory. I believe the locations outlined for the config file would also be correct for these theme files as well.

Edit: Actually, it seems as though this was implemented, but just reverted in commit 2044c3a? Is it intended to be kept that way?

Fix bounds for glyph, emojis, unicodes fonts

Changes introduced from dd6dd28 to 68377b9 add a stabilization for the monospaced in FontId(0) although the other fonts (glyph, emojis, unicodes) use wrong bounds calculation so it can consume more space than the bound calculated for monospaced font in the init function.

Example:
Screenshot 2023-05-13 at 14 12 42

make emoji representation configurable

currently, the emojis are being represented as outlined only. perhaps a configuration option would be a nice to have so that users can choose between having the emojis as outlined or as "filled in"/original look.

specification to Rio themes (folder pattern)

We need to support external themes (users get to develop a known theme, this accelerates adoption of Rio).

Today we have to put the theme configuration in ~/.rio/config.toml making it impossible to create and distribute known themes.

solution

When setting the theme name in Rio config:

[style]
theme = "Basic"

We can see if the file ~/.rio/themes/basic.toml exists, if so, load the theme file and merge it with the config file ~/.rio/config.toml.

Example: ~/.rio/themes/monotropic-coffee.toml

# monotropic coffee
[colors]
background = "#fffffa"
foreground = "#593e2c"
cyan = "#593e2c"
green = "#745b4b"
red = "#593e2c"
magenta = "#593e2c"
yellow = "#c6bab3"

Specification to Rio themes (folder pattern)

We need to support external themes (users get to develop a known theme, this will speed up the adoption of Rio).

Today we have to put the theme configuration in ~/.rio/config.toml making it impossible to create and distribute known themes.

solution

When setting the theme name in Rio config:

[style]
theme = "Basic"

If the ~/.rio/themes/basic.toml file exists, if so, load the theme file and merge it with the ~/.rio/config.toml configuration file

example: ~/.rio/themes/monotropic-coffee.toml

# monotropic coffee
[colors]
background = "#fffffa"
foreground = "#593e2c"
cyan = "#593e2c"
green = "#745b4b"
red = "#593e2c"
magenta = "#593e2c"
yellow = "#c6bab3"

Requesting a matrix Group

A matrix would be good for communication and people who don't use github can also contribute and that would also be good for support. I didn't request a Discord Server because it is not secure and why not take advantages of matrix if we are just starting out.

vim background color is not correct

Not sure exactly what the culprit is, but the colorscheme in vim is not rendered correctly if you are not using the default colorscheme, see screenshot for example

Screenshot 2023-05-25 at 15 27 52

Render images directly from the terminal

Back in time, terminals were always text-based.

Currently, almost everyone uses a terminal on a GUI environment. It amazes me to not having a terminal that doesn't render a image if I do a "cat sunset.jpg".

It would be nice if Rio could detect such output and renders it. Or maybe offering a built-in command to display them, maybe "draw image.jpg".

thema with problem in version 0.0.5

in version 0.0.5 the theme support stopped working, here is the screenshot

Screenshot 2023-06-01 at 10 31 12

file ~/.rio/themes/dracula.toml exists, the theme was declared in ~/.rio/config.toml, but it is not loading

Bold and italic text style

Nowadays, Sugarloaf completely ignore if font is bold but the square has the information if the is bold and we can also load the bold font in sugarloaf/font mod.

How does `rio` compare to other rust-based terminals?

Not trying to discourage you nor anyone else trying to commit to this project. By all means, this project is wonderful and keep up the great work! ๐Ÿ˜Š

A curious thought, how does rio compare to alacritty and wezterm?

The character on cursor is hidden by it.

Hi, I want to use rio with beam cursor, but the cursor hide the character. Other kind cursors also do.
Because the cursor is rendered to replace the character to cursor character.
It should be like this.

image
my opinion I think rendering the cursor by Sugarloaf's Rect is one of the solutions. The image above was created by this code. Cursors are considered to be associated with characters, so I defined new SugarStyle `on_cursor`.

https://github.com/niuez/rio/blob/0ea71b80d30af2038fa0a361b4d73b4d92be6b24/sugarloaf/src/sugarloaf.rs#L299-L307

But there are some problems.

  • Sugarloaf is rendering engine. It should not be contain cursor shape information. The cursor shapes should be defined in rio.
  • The color of cursor should be able to change by rio.
  • How to render more complex cursors. For example, unfilled rectangle.

Cursor being rendered in the wrong position

it only happens when using a custom font

When the prompt starts getting longer, the cursor will start being rendered some characters before when it should be at the end

2023-06-03-080557_344x116_scrot
in this image the cursor was supposed to be at the end of the prompt

system information:
OS: Artix
backend/protocol: X11
WM: dwm
font: JetBrainsMono Nerd Font

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.