Introduction
Zellij, a new terminal multiplexer written in Rust.
So, In the next article we are going to take a look at Zellij. This is a workspace aimed at developers and any user who likes the terminal.In essence, this is un terminal multiplexer (similar to tmux) written in Rust.
If, due to the characteristics of the tasks you usually perform, the terminal emulator that you use every day falls short, try this multiplexer of terminal it may be interesting to you. Zellij includes a design system and a plugin system that allows you to create plugins in any language that compiles into WebAssembly.
General characteristics of Zellij
- Zellij, in addition to using Rust, also provides a large workspace from the terminal and multiplexer, as do tmux and the like.
- We will find it available for both Gnu / Linux and macOS operating systems.
- Like other multiplexers, Zellij allows users to divide the terminal into different panels and tabs.But it has tried to differentiate itself from other similar projects offering an interesting way to organize and resize panels.
- The application itself by default it will find the best vertical or horizontal split distribution.Zellij includes a layout engine that allows users to define a panel map in a yaml file and load it when they start the application. In this way, one can have the panels arranged as desired without having to do all the setup work.
Download Zellij on CentOS 8
To install the binary of this program in CentOS, we will simply need download the package for Gnu / Linux from the project website through this link below.
We can also use wget to download the package, this canbe done by typing in it the command:
# wget https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz
--2021-07-28 10:27:25-- https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github.com/zellij-org/zellij/releases/download/v0.15.0/zellij-x86_64-unknown-linux-musl.tar.gz [following]
--2021-07-28 10:27:27-- https://github.com/zellij-org/zellij/releases/download/v0.15.0/zellij-x86_64-unknown-linux-musl.tar.gz
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://github-releases.githubusercontent.com/292014229/88c23bac-57bb-4a4c-98ca-cb56ffc62791?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210728T142727Z&X-Amz-Expires=300&X-Amz-Signature=a8de85e5cbb9dcea9724212c7bced6c79bb212551230b6ec5b6d0f7e25390c6e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=292014229&response-content-disposition=attachment%3B%20filename%3Dzellij-x86_64-unknown-linux-musl.tar.gz&response-content-type=application%2Foctet-stream [following]
--2021-07-28 10:27:27-- https://github-releases.githubusercontent.com/292014229/88c23bac-57bb-4a4c-98ca-cb56ffc62791?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210728%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210728T142727Z&X-Amz-Expires=300&X-Amz-Signature=a8de85e5cbb9dcea9724212c7bced6c79bb212551230b6ec5b6d0f7e25390c6e&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=292014229&response-content-disposition=attachment%3B%20filename%3Dzellij-x86_64-unknown-linux-musl.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-releases.githubusercontent.com (github-releases.githubusercontent.com)... 185.199.110.154, 185.199.111.154, 185.199.108.154, ...
Connecting to github-releases.githubusercontent.com (github-releases.githubusercontent.com)|185.199.110.154|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3510111 (3.3M) [application/octet-stream]
Saving to: 'zellij-x86_64-unknown-linux-musl.tar.gz'
zellij-x86_64-unknown-linux-musl.tar. 100%[=======================================================================>] 3.35M 655KB/s in 5.4s
2021-07-28 10:27:34 (641 KB/s) - 'zellij-x86_64-unknown-linux-musl.tar.gz' saved [3510111/3510111]
Once the download is finished, we will have to extract the downloaded file:
# tar xzvf zellij-x86_64-unknown-linux-musl.tar.gz
zellij
Then we are going to go to the folder in which the package extracted.The next step will be install the binary in / usr / local / bin
# sudo install zellij /usr/local/bin
So After the installation is finished, we only need write zellij In the terminal:
# zellij
Note: Need to draw attention to something at the command line? Try cowsay, or one of these other terminal tools, to highlight what’s important in your scripts.
Used Commands:
[root@unixcop ~]# cowsay HI Unixcop
[root@unixcop ~]# cowsay -f dragon "Run for cover, I feel a sneeze coming on."
Configuration of Zellij
By default Zellij will look for config.yaml in the config directory.
The default config directory order is as follows:
- –config-dir flag
- ZELLIJ_CONFIG_DIR env variable
- $HOME/.config/zellij
- default location
- Linux: /home/unixcop/.config/zellij
- system location (/etc/zellij)
In order to pass a config file directly to zellij:
# zellij --config [FILE]
or use the ZELLIJ_CONFIG_FILE environment variable.
To start without loading configuration from default directories:
# zellij options --clean
To show the current default configuration:
# zellij setup --dump-config
Plugins
One feature that makes Zellij unique is its WebAssembly plugin system. This allows plugin developers to write their plugin in any language that can run on WASI! Rust offers first-class support for WASI, but other languages like C/C++, AssemblyScript, even Python should be supported.
Layouts
Layouts are yaml configuration files which Zellij can load on startup. These files can describe a layout of terminal panes and plugins that Zellij will create when it loads. To load a layout with Zellij:
# zellij --layout-path /path/to/your/layout_file.yaml
to configure Zellij layout example you can consult the Documentation of layout offered by the project site.