{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreicr2y6zz7cd567guuru5rer575cjdoqzookr6ytbhunolg3zhgsr4",
    "uri": "at://did:plc:nag2oldw2cdjruz3dtaxj52d/app.bsky.feed.post/3mhr3ed25v3b2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreie7tnopkvw74omxawxcdakchf6egqqcwk6tgowdbpvach3eh3yopy"
    },
    "mimeType": "image/png",
    "size": 68380
  },
  "path": "/en/blog/2025/ecosistema-rust-para-la-terminal-linux/",
  "publishedAt": "2026-03-23T05:00:00.000Z",
  "site": "https://www.cosmoscalibur.com",
  "tags": [
    "Alacritty",
    "Zellij",
    "Zoxide",
    "zsh",
    "Oh my zsh",
    "Helix",
    "Dust",
    "Eza",
    "procs",
    "Bat",
    "Bottom",
    "here"
  ],
  "textContent": "Besides my personal interest in this language, I am also interested in the ecosystem of tools that have been developed in Rust for the Linux terminal and for supporting other programming languages (like its impact on Python, which is my main development language).\n\nI previously told you about Starship, and next we are going to expand this universe of Rust possibilities for the Linux terminal.\n\n## Accelerate your work in the terminal\n\nWhile _Zsh_ is not implemented in Rust, this terminal language (_shell_) is very powerful and flexible, with a large number of plugins available to customize and improve its experience. So I take advantage as part of my newly reloaded Linux terminal to include it and tell you about how to switch to using it by default. Additionally, this is necessary to mention since, the configuration will require knowing our _shell_ , and this defines why the instructions we are going to learn. I still use it like a general _bash_ , but I have already seen very interesting things that I will soon share.\n\nJust as we saw the extra information experience that Starship offers us, we are going to explore utilities that help us improve our fast experience in the terminal with greater agility in our workflows.\n\nWe will start with _zoxide_ , a replacement for `cd` that allows us to navigate through our directory history faster and more efficiently. It has autocomplete and priority assignment for directory shortcuts. We can use it by indicating a short form of the directory or similar, and through fuzzy search in the directories we have already navigated (using _zoxide_ as a usual `cd`) it can guess the directory we are looking for, or if we know that there can be several directories with the same name, it can show a list of options to choose from when typing space and tab.\n\nWe can also speed up our experience with a terminal emulator in Rust like _Alacritty_ , which offers a faster and more efficient interface than the default Linux terminal, and its rendering is with OpenGL. This emulator is also available on MacOS and Windows, and has a _Vi_ mode for navigation, as well as extended selection options and opening links with the _mouse_.\n\n_Alacritty_ does not have a multiplexer, but we can give it this capability through _Zellij_ , a terminal multiplexer (this allows us to have multiple windows and panes within a single terminal). We can have floating panes, custom layers and a series of shortcuts to do proper navigation. A lock mode is available to avoid confusion with system shortcuts, and this is used with `Ctrl`+`g`, and there the shortcuts `p` for pane management or `t` for tab management, and with options to create (`n`), close (`x`), navigate (arrows), among others. We can generate floating panes with `Alt`+`f` (which can then be moved with the _mouse_) or normal panes with `Alt`+`n`. To navigate in this mode, we can use `Alt` with arrows.\n\nAnd finally, a terminal editor with _Vi_ mode support, quite comfortable to use and with native _tree sitter_ and _LSP_ support. This editor is _Helix_. And it has become my favorite terminal editor and I have linked it as the editor for git editing.\n\nNow, let’s get down to business to install and configure.\n\nManjaro\n\nIn Manjaro (and Arch derivatives) we have the necessary packages in the official repository.\n\n\n    pamac install zsh alacritty zellij zoxide helix --no-confirm pamac install --as-deps fzf --no-confirm # Interactive search for zoxide\n\nUbuntu\n\nIn the case of Ubuntu, we will need to use not only packages from the official repository, but also packages installed with **cargo** or **flatpak**.\n\n\n    sudo apt install -y zsh alacritty zoxide fzf cargo install --locked zellij flatpak install flathub com.helix_editor.Helix\n\nTo configure **zsh** as your default _shell_ we proceed as follows:\n\n\n    chsh -s /bin/zsh # Configure default shell: enter password\n\nYou may need to restart your session for the change to take effect. Then, we can configure the other utilities that depend on the _shell_ to know the configuration options.\n\n_Zoxide_ requires executing its initialization _script_ indicating the _shell_ that is being used. Depending on the installation method, you might need to check the associated executable, in my case it stays as `z` and I feel comfortable with it.\n\n\n    echo 'eval \"$(zoxide init zsh)\"' >> ~/.zshrc source ~/.zshrc\n\nIn the case of _Alacritty_ , we must indicate the _shell_ that is being used in the configuration file (TOML format) and incidentally we will link the use of _Zellij_ at its startup.\n\n\n    mkdir -p $HOME/.config/alacritty cat << 'EOF' > $HOME/.config/alacritty.toml [terminal.shell] args = [\"-l\", \"-c\", \"zellij attach --index 0 || zellij\"] program = \"/bin/zsh\" EOF\n\nRegarding the use of _Zellij_ , I recommend the _unlock first_ mode to avoid collision of shortcuts that we have in the system (it is a bad experience). To configure it, inside a Zellij session, press `Ctrl`+`o` followed by `C` to open the configuration, then use `Tab`, down arrow to option 2 (“Unlock First”), and finally `Alt`+`a` to save the changes.\n\nRemember also to configure starship so you have the complete combo.\n\nFinally, for _Helix_ to be your default editor in the console, you must configure the `EDITOR` environment variable. You can append it to your _shell_ configuration:\n\n\n    echo 'export EDITOR=helix' >> ~/.zshrc source ~/.zshrc\n\n### Associate Alacritty as default terminal in KDE.\n\nAt this point we have the basics ready, and if you launch directly **alacritty** nothing else is needed. However, if you use terminal shortcuts or there are applications that launch the terminal that is associated by default, they will continue to launch the terminal (emulator) that you had before. So that this does not happen, you will have to do some additional steps that depend on your desktop environment. In my case, since I use KDE, the steps are the following.\n\nTo link _alacritty_ as the default terminal emulator: Default Applications ‣ Terminal emulator ‣ Alacritty\n\nTo configure the keyboard shortcut: Custom Shortcuts ‣ Add new ‣ Application ‣ Alacritty We configure the “Launch” shortcut by clicking Add, and after that the desired shortcut. In my case I prefer the usual terminal one `Control`-`Alt`-`T`. We apply the change (Apply).\n\n## New ecosystem of utilities\n\nWe have here a replacement for our favorite console commands, which we take advantage to modernize with Rust and in some cases to have an important performance improvement (in their reimplementation) or of agility with the new options they offer us.\n\n  * `bat`: Replacement for `cat`. I highlight its syntax coloring, git change marks and the option to show invisible characters.\n\n  * `bottom` (`btm`): Replacement for `top`. It has cross-platform support and process management allows you to kill them there (you select the process and then `d` `d`)\n\n  * `eza`: Replacement for `ls`. I haven’t explored much of its potential yet, but its default coloring is much more useful to me than the original one. It allows knowing additional information of the files and directories during the query, such as their git status or mount point information.\n\n  * `procs`: Replacement for `ps`. Cross-platform, and with better readability than the original.\n\n  * `du-dust` (`dust`): Replacement for `du`. Its default visualization seems much more informative than the original command.\n\n\n\n\nNow, let’s proceed to install.\n\nManjaro\n\nIn Manjaro (and Arch derivatives), we again have everything available in the official repository.\n\n\n    pamac install bat bottom dust eza procs --no-confirm\n\nUbuntu\n\nIn Ubuntu, we will need to mix the official repository with the Rust repository.\n\n\n    sudo apt install -y bat du-dust eza cargo install --locked bottom procs\n\n## References\n\nNow that we have _rusted_ our Linux terminal, I invite you to visit the official information of these projects.\n\n  * Alacritty\n\n  * Zellij\n\n  * Zoxide\n\n  * zsh\n\n  * Oh my zsh\n\n  * Helix\n\n  * Dust\n\n  * Eza\n\n  * procs\n\n  * Bat\n\n  * Bottom\n\n\n\n\nYou can learn more Rust utilities for your console here.",
  "title": "Rust Ecosystem for the Linux terminal",
  "updatedAt": "2026-03-23T05:00:00.000Z"
}