A terminal workspace with batteries included
Go to file
har7an 75801bdb0e
plugins: Improve error handling on plugin version mismatch (#1838)
* server/tab: Don't panic in `Pane::render`

and do not crash the application on failure to receive a render update
from plugins any longer. Instead, will print a simple string with a hint
to check the application logs, where a more thorough error indication
can be found.

* utils/errors: re-export `anyhow::Error`

to create ad-hoc errors with custom error types, without having to wrap
them into a `context()` before to turn the into anyhow errors.

* plugins: Check plugin version on startup

and terminate execution with a descriptive error message in case the
plugin version is incompatible with the version of zellij being run.

* server/wasm_vm: Add plugin path in version error

so the user knows which plugin to look at in case they're using custom
plugins.

* server/wasm_vm: Check plugin version for equality

Previously we would accept cases where the plugin version was newer than
the zellij version, which doesn't make a lot of sense.

* server/wasm_vm: Prettier error handling

in call to `wasmer::Function::call` in case a plugin version mismatch
can occur.

* tile: Install custom panic handler

that will print the panic message to a plugins stdout and then call a
panic handler on the host that turns it into a real application-level
panic.

* tile: Catch errors in event deserialization

and turn them into proper panics. These errors are symptomatic of an
uncaught plugin version mismatch, for example when developing from main
and compiling zellij/the plugins from source. Normal users should never
get to see this error.

* utils/errors: Improve output in `to_stdout`

for anyhow errors. The default anyhow error formatting of `{:?}` is
already very good, and we just made it worse by trying to invent our own
formatting.

* tile: Reword plugin mismatch error message

* zellij: Apply rustfmt

* changelog: Add PR #1838

Improve error handling on plugin version mismatch.

* server/wasm_vm: Rephrase error in passive voice
2022-10-23 13:14:24 +00:00
.cargo feat: add capability to dispatch actions from cli (#1265) 2022-06-15 11:20:06 +02:00
.github update: update-rust-toolchain v1 -> v1.1 2022-10-01 13:50:35 +02:00
.nix fix(nix) missing frameworks on darwin (#1724) 2022-10-04 12:23:04 +02:00
assets chore(release): v0.31.4 2022-09-09 13:00:24 +02:00
default-plugins feat(cli): zellij run improvements (#1804) 2022-10-17 19:39:37 +02:00
docs docs: Describe how to handle Options as errors (#1805) 2022-10-18 14:14:38 +00:00
example feat(config): switch to kdl (#1759) 2022-10-05 07:44:00 +02:00
src feat(cli): zellij run improvements (#1804) 2022-10-17 19:39:37 +02:00
zellij-client fix(layouts): do not override explicitly set layout if it exists (#1830) 2022-10-20 18:09:23 +02:00
zellij-server plugins: Improve error handling on plugin version mismatch (#1838) 2022-10-23 13:14:24 +00:00
zellij-tile plugins: Improve error handling on plugin version mismatch (#1838) 2022-10-23 13:14:24 +00:00
zellij-tile-utils chore(version): bump development version 2022-09-09 13:38:22 +02:00
zellij-utils plugins: Improve error handling on plugin version mismatch (#1838) 2022-10-23 13:14:24 +00:00
.editorconfig add: editorconfig (#1156) 2022-03-02 12:12:26 +01:00
.envrc fix: .envrc 2022-03-11 18:37:43 +01:00
.git-blame-ignore-revs chore(gblame): add move to git-blame-ignore-revs 2022-07-10 15:33:19 +02:00
.gitignore add: result-* to gitignore (#1144) 2022-02-28 08:17:54 +01:00
.rustfmt.toml add(style): add trailing comma in match blocks (#1483) 2022-06-10 20:03:13 +02:00
Cargo.lock plugins: Improve error handling on plugin version mismatch (#1838) 2022-10-23 13:14:24 +00:00
Cargo.toml feat(config): switch to kdl (#1759) 2022-10-05 07:44:00 +02:00
CHANGELOG.md plugins: Improve error handling on plugin version mismatch (#1838) 2022-10-23 13:14:24 +00:00
CODE_OF_CONDUCT.md docs(coc): initial 2020-10-27 11:11:10 +01:00
CONTRIBUTING.md docs: Describe how to handle Options as errors (#1805) 2022-10-18 14:14:38 +00:00
docker-compose.yml fix(docker-compose): Use the key-value style for environments to prevent human errors (#840) 2021-11-09 20:29:22 +01:00
flake.lock flake.lock: Update (#1761) 2022-10-01 11:15:50 +02:00
flake.nix move: default.nix and shell.nix files from root (#1618) 2022-07-29 22:31:29 +02:00
GOVERNANCE.md Add har7an to governance.md 2022-07-29 08:44:19 +00:00
LICENSE.md Update references of mosaic to Zellij in md files 2021-02-10 12:12:19 +05:30
Makefile.toml feat(config): switch to kdl (#1759) 2022-10-05 07:44:00 +02:00
README.md Readme: link to documentation pages in-text (#1621) 2022-07-30 22:15:39 +02:00
rust-toolchain.toml rust-toolchain: Update (#1834) 2022-10-22 12:12:42 +02:00
treefmt.toml add(nix): treefmt / alejandra (#1201) 2022-03-10 16:27:39 +01:00


logo
Zellij

Discord Chat Matrix Chat Zellij documentation Built with nix

demo

[Installation] [Overview] [Configuration] [Templates] [FAQ]

What is this?

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal. At its core, it is a terminal multiplexer (similar to tmux and screen), but this is merely its infrastructure layer.

Zellij includes a layout system, and a plugin system allowing one to create plugins in any language that compiles to WebAssembly.

You can get started by installing Zellij and reading the overview.

For more details about our future plans, read about upcoming features in our roadmap.

Zellij was initially called "Mosaic".

How do I install it?

You can install with cargo:

cargo install --locked zellij

Or if want to a prebuilt binary, you can download it from our Releases, or use cargo-binstall.

cargo-binstall zellij

Or you can also use Third Party Repositories.

Try Zellij without installing

bash/zsh:

bash <(curl -L zellij.dev/launch)

fish:

bash (curl -L zellij.dev/launch | psub)

How do I get involved?

Zellij is a labour of love built by an enthusiastic team of volunteers. We eagerly welcome anyone who would like to join us, regardless of experience level, so long as they adhere to our code of conduct.

Please report any code of conduct violations to aram@poor.dev

To get started, you can:

  1. Take a look at the "Issues" in this repository - especially those marked "Good first issue". Those with the "Help Wanted" tag probably don't have anyone else working on them.
  2. Drop by our discord, or matrix chat and ask what you can work on, or how to get started.
  3. Open an issue with your idea(s) for the project or tell us about them in our chat.

How do I start a development environment?

  • Clone the project
  • Install cargo-make with cargo install --locked --force cargo-make
  • In the project folder, for debug builds run: cargo make run
  • To run all tests: cargo make test

For more build commands, see Contributing.md.

Configuration

For configuring Zellij, please see the Configuration documentation.

What is the current status of the project?

Zellij should be ready for everyday use, but it's still classified as a beta. This means that there might be a rare crash or wrong behaviour here and there, but that once found it should be fixed rather quickly. If this happens to you, we would be very happy if you could open an issue and tell us how to reproduce it as best you can.

Roadmap

Presented here is the project roadmap, divided into three main sections.

These are issues that are either being actively worked on or are planned for the near future.

If you'll click on the image, you'll be led to an SVG version of it on the website where you can directly click on every issue

roadmap

License

MIT