76a5bc8a05
* refactor(panes): move to parametric pane sizes * Fixed the simpler errors by casting to usize * The least I can do is pass the formatting check... * Move to stable toolchain * Well, it compiles? * And now it doesn't! ;) * Baseline functionality with the new Dimension type * Working POC for percent-based resizing * REVERT THIS COMMIT – DELETES TESTS * Perfected the discrete resize algorithm * Fixed fixed-size panes * Basic bidirectional resize * feat(resize): finalised parametric resize algorithm * Reduce the logging level a bit * Fixed nested layouts using percents * Bug squishing for implicit sizing * Here is a funky (read: rubbish) rounding approach * And now it's gone again! * Improve discretisation algorithm to fix rounding errors * Fix the last layout bug (maybe?) * Mixed explicit and implied percents work now * Let's pretend that didn't happen... * Make things a bit less crashy * Crash slightly more for now (to find bugs) * Manaually splitting of panes works now * Start moving to percent-based resizes * Everything but fullscreen seems to be working * Fix compilatation errors * Culled a massive amount of border code * Why not pause to please rustfmt? * Turns out I was still missing a few tests... * Bringing back even more tests! * Fix tests and pane boarders * Fix the resize system without gaps * Fix content offset * Fixed a bug with pane closing * Add a hack to fix setting of the viewport * Fix toggling between shared borders and frames * fix(tests): make e2e properly use PaneGeom * style(fmt): make rustfmt happy * Revert unintentional rounding of borders * Purge some old borderless stuff * Fix busted tab-bar shrinking * Update E2E tests * Finish implementing fullscreen! * Don't crash anymore? * Fix (almost) all tests * Fix a lack of tab-stops * All tests passing * I really can't be bothered to debug a CI issue * Tie up loose ends * Knock out some lingering FIXMEs * Continue to clean things up * Change some naming and address FIXMEs * Cull more code + FIXMEs * Refactor of the resize system + polish * Only draw frames when absolutely necessary * Fix the tab-bar crash * Fix rendering of boarders on reattach * Fix resizing at small pane sizes * Deduplicate code in the layout system * Update tab-bar WASM * Fixed the pinching of panes during resize * Unexpose needlessly public type * Add back a lost test * Re-add tab tests and get them to compile * All tabs need layouts * Start fixing tests + bug in main * Stabilize the resize algorithm rounding * All tests from main are now passing * Cull more dead code |
||
---|---|---|
.github | ||
assets | ||
default-plugins | ||
docs | ||
example | ||
src | ||
zellij-client | ||
zellij-server | ||
zellij-tile | ||
zellij-tile-utils | ||
zellij-utils | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
GOVERNANCE.md | ||
LICENSE.md | ||
Makefile.toml | ||
README.md | ||
rust-toolchain |
Zellij
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.
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 it through cargo
:
cargo install zellij
Or you can download a prebuilt binary from our Releases.
The default plugins make use of characters that are mostly found in nerdfonts.
To get the best experience either install nerdfonts, or use the simplified ui by starting Zellij with zellij options --simplified-ui
, or putting simplified_ui: true
in the config file.
How do I hack on it? (Contributing)
- Clone the project
- Install cargo-make with
cargo install --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.
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.
To get started, you can:
- 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.
- Drop by our chat and ask what you can work on, or how to get started.
- Open an issue with your idea(s) for the project or tell us about them in our chat.
And most importantly, please read our code of conduct.
Roadmap
This section contains an ever-changing list of the major features that are either currently being worked on, or planned for the near future.
- A web client/server - Connect to Zellij through the browser instead of opening a terminal window. Either on a local or remote machine.
- Share sessions with others - See the focused window and cursor of other users, work on a problem or a code base together in real time.
- Support for multiple terminal windows across screens - Transfer panes across different windows and screens by having them all belong to the same session.
- Smart layouts - expand the current layout system so that it rearranges and hides panes intelligently when new ones are added or the window size is changed.
License
MIT