A terminal workspace with batteries included
Go to file
har7an d1f50150f6
WIP: Use xtask as build system (#2012)
* xtask: Implement a new build system

xtask is a cargo alias that is used to extend the cargo build system
with custom commands. For an introduction to xtask, see here:
https://github.com/matklad/cargo-xtask/

The idea is that instead of writing makefiles, xtask requires no
additional dependencies except `cargo` and `rustc`, which must be
available to build the project anyway.

This commit provides a basic implementation of the `build` and `test`
subcommands.

* xtask/deps: Add 'which'

* xtask/test: Handle error when cargo not found

* xtask/flags: Add more commands

to perform different useful tasks. Includes:

- clippy
- format
- "make" (composite)
- "install" (composite)

Also add more options to `build` to selectively compile plugins or leave
them out entirely.

* xtask/main: Return error when cargo not found

* xtask/build: Add more subtasks

- `wasm_opt_plugins` and
- `manpage`

that perform other build commands. Add thorough documentation on what
each of these does and also handle the new `build` cli flags
appropriately.

* xtask/clippy: Add job to run clippy

* xtask/format: Add job to run rustfmt

* xtask/pipeline: Add composite commands

that perform multiple atomic xtask commands sequentially in a pipeline
sort of fashion.

* xtask/deps: Pin dependencies

* xtask/main: Integrate new jobs

and add documentation.

* xtask: Implement 'dist'

which performs an 'install' and copies the resulting zellij binary along
with some other assets to a `target/dist` folder.

* cargo: Update xflags version

* xtask: Measure task time, update tty title

* xtask: Update various tasks

* xtask: wasm-opt plugins in release builds

automatically.

* xtask/build: Copy debug plugins to assets folder

* xtask: Add 'run' subcommand

* xtask: Add arbitrary args to test and run

* xtask: Rearrange CLI commands in help

* xtask: Add deprecation notice

* docs: Replace `cargo make` with `xtask`

* github: Use `xtask` in workflows.

* xtask: Add support for CI commands

* xtask: Streamline error handling

* github: Use new xtask commands in CI

* xtask: Add 'publish' job

* xtask/publish: Add retry when publish fails

* xtask: Apply rustfmt

* xtask: Refine 'make' deprecation warning

* xtask: add task to build manpage

* contributing: Fix e2e commands

* xtask/run: Add missing `--`

to pass all arguments following `xtask run` directly to the zellij
binary being run.

* xtask: Stay in invocation dir

and make all tasks that need it change to the project root dir
themselves.

* xtask/run: Add `--data-dir` flag

which will allow very quick iterations when not changing the plugins
between builds.

* xtask/ci: Install dependencies without asking

* utils: Allow including plugins from target folder

* utils/assets: Reduce asset map complexity

* utils/consts: Update asset map docs

* xtask: Fix plugin includes

* xtask/test: Build plugins first

because the zellij binary needs to include the plugins.

* xtask/test: Fix formatting

* xtask: Add notice on how to disable it
2022-12-17 13:27:18 +00:00
.cargo WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
.github WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
.nix fix(nix) missing frameworks on darwin (#1724) 2022-10-04 12:23:04 +02:00
assets HOTFIX: utils: Move plugins into new assets folder (#2003) 2022-12-09 10:49:32 +00:00
default-plugins Reimplement resize code (#1990) 2022-12-08 12:50:28 +00:00
docs docs: Improve error handling docs (#1919) 2022-11-09 18:01:36 +00:00
example chore(release): v0.34.0 2022-12-09 09:14:03 +01:00
src fix(panes): focus change when closing and between tabs (#1966) 2022-11-23 18:14:24 +01:00
xtask WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
zellij-client chore: Bump development version 2022-12-13 17:24:19 +01:00
zellij-server WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
zellij-tile chore: Bump development version 2022-12-13 17:24:19 +01:00
zellij-tile-utils chore: Bump development version 2022-12-13 17:24:19 +01:00
zellij-utils WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +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 WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
Cargo.toml WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
CHANGELOG.md WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
CODE_OF_CONDUCT.md docs(coc): initial 2020-10-27 11:11:10 +01:00
CONTRIBUTING.md WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +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 (#1981) 2022-12-01 09:03:19 +01: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 Makefile: Fix CI ordering/dependencies (#2004) 2022-12-09 11:06:11 +00:00
README.md WIP: Use xtask as build system (#2012) 2022-12-17 13:27:18 +00:00
rust-toolchain.toml [create-pull-request] automated change (#1980) 2022-12-01 09:40:36 +01: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 GNU 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
  • In the project folder, for debug builds run: cargo xtask run
  • To run all tests: cargo xtask 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