2021-02-10 01:19:34 +03:00
|
|
|
[package]
|
|
|
|
name = "zellij"
|
2022-12-13 16:59:49 +03:00
|
|
|
version = "0.34.4"
|
2021-02-10 01:19:34 +03:00
|
|
|
authors = ["Aram Drevekenin <aram@poor.dev>"]
|
2021-10-22 04:21:16 +03:00
|
|
|
edition = "2021"
|
2021-04-20 02:23:01 +03:00
|
|
|
description = "A terminal workspace with batteries included"
|
2021-02-16 21:50:22 +03:00
|
|
|
license = "MIT"
|
2021-02-26 01:42:52 +03:00
|
|
|
repository = "https://github.com/zellij-org/zellij"
|
2021-04-20 02:23:01 +03:00
|
|
|
homepage = "https://zellij.dev"
|
2022-12-09 13:49:32 +03:00
|
|
|
include = ["src/**/*", "assets/layouts/*", "assets/config/*", "LICENSE.md", "README.md", "!**/*_test.*", "!**/tests/**/*"]
|
2022-11-09 19:24:41 +03:00
|
|
|
rust-version = "1.60"
|
2021-02-26 02:05:04 +03:00
|
|
|
|
2021-02-10 01:19:34 +03:00
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
|
|
|
|
[dependencies]
|
2021-10-31 21:14:12 +03:00
|
|
|
anyhow = "1.0"
|
2022-10-05 08:44:00 +03:00
|
|
|
thiserror = "1.0.30"
|
2022-05-23 22:42:30 +03:00
|
|
|
names = { version = "0.13.0", default-features = false }
|
feat: add capability to dispatch actions from cli (#1265)
* feat: add capability to dispatch actions from cli
Add capability to dispatch actions from the cli.
Can be invoked through `zellij action [actions]`
Automatically sends the action either to the current session,
or if there is only one session to the single session.
If there are multiple sessions, and no session is specified it will
error out.
Example:
1.
```
zellij action "[NewTab: , NewTab: ]"
```
2.
```
zellij -s fluffy-cat action '[NewPane: , WriteChars: "echo Purrr\n" ]'
```
3.
```
zellij -s fluffy-cat action '[ CloseTab, ]
```
* add: error message on malformed input
Add an error message on malformed input, for the `action`'s dispatch.
Rather than resulting in a panic.
* add: function to query the client id
* add: send specific actions to certain clients
Adds ability to send actions, that don't impact the server state
to all connected clients. For example `MoveFocus`
* add: client_id to non blocking actions
* chore(fmt): `cargo fmt`
* add: pick correct session, if there is exactly one
* add: use correct `client_id` for detach action
* add: make `[ ]` opaque to the user
* add: miette to toplevel to improve error message
* add: fake client reading configuration
Add the fake client reading configuration files,
this allows actions, that rely on configuration work
correctly. This is an intermediate solution, and should ideally not
be needed. It would be better if most of this state would be handled
by the server itself.
* chore(fmt): rustmt
* add: ability to detach multiple clients
Add ability to detach multiple clients at the same time.
* remove: obsolete functionality
* remove: unused functionality
* add: send correct action upon exiting
* chore(update): cargo update
2022-06-15 12:20:06 +03:00
|
|
|
miette = { version = "3.3.0", features = ["fancy"] }
|
2022-12-13 16:59:49 +03:00
|
|
|
zellij-client = { path = "zellij-client/", version = "0.34.4" }
|
|
|
|
zellij-server = { path = "zellij-server/", version = "0.34.4" }
|
|
|
|
zellij-utils = { path = "zellij-utils/", version = "0.34.4" }
|
2022-05-09 19:32:36 +03:00
|
|
|
log = "0.4.17"
|
2022-05-23 22:42:30 +03:00
|
|
|
dialoguer = "0.10.1"
|
2022-05-10 17:39:28 +03:00
|
|
|
suggest = "0.4"
|
2021-02-10 01:19:34 +03:00
|
|
|
|
|
|
|
[dev-dependencies]
|
2021-06-21 11:45:18 +03:00
|
|
|
insta = { version = "1.6.0", features = ["backtrace"] }
|
|
|
|
ssh2 = "0.9.1"
|
|
|
|
rand = "0.8.0"
|
2021-02-10 01:19:34 +03:00
|
|
|
|
2021-02-09 22:06:47 +03:00
|
|
|
[workspace]
|
|
|
|
members = [
|
plugins: rework plugin loading (#1924)
* zellij: Move "populate_data_dir" to utils
and rewrite it to take a second, optional parameter. This allows
controlling whether only a specific asset should be installed. We do
this as preparation for being able to recover from a plugin version
mismatch error, where we will need to repopulate the data dir for
offending plugins.
* server/wasm_vm: Recover from PluginVersionMismatch
Adds a global plugin cache that stores, per plugin config, the wasmer
module associated with it. Make `start_plugin` take the pre-populated
module and create only the necessary modifications to the wasm env etc.
* utils: Fix formatting
* zellij: Delete non-existent module
* utils/shared: fix missing "set_permissions"
function when not on unix systems.
* server/wasm_vm: Don't populate cachedir
with serialized versions of the WASM plugins.
* utils/input/plugins: load wasm bytes from assets
for builtin plugin specifications. This foregoes any need to:
- Dump the plugin bytes to disk at all and
- subsequently read the plugin bytes from disk
* zellij: Disable default asset installation
which previously installed only the builtin plugins to disk. This is no
longer necessary because now we can load the builtin plugins directly
from the application binary.
* utils/input/plugins: Update docs
* utils/input/plugins: Add 'is_builtin' method
to `PluginConfig` that returns true if the plugin configuration refers
to a builtin plugin.
* wasm_vm: Remove plugin version mismatch handling
because a version mismatch in an internal plugin is now unfixable, with
the plugins being loaded from the running binary, and we have no control
over external plugins in the first place.
* cargo: Reintroduce feature flag
for `disable_automatic_asset_installation`
* utils/consts: Add `ASSET_MAP`
which currently contains the compiled WASM plugins.
* utils/shared: Fix clippy lint
* utils/errors: Add more `ZellijError` variants
* zellij: Make loading internal plugins optional
by reenabling the `disable_automatic_asset_installation` flag and
utilizing it for this purpose. Changes plugin search behavior to throw
better errors in case the builtin plugins cannot be found, depending on
the state of this feature.
* utils/errors: Apply rustfmt
* utils/setup: Allow dumping builtin plugins
to a specified folder on disk. This is meant to be an "escape hatch" for
users that have accidentally deleted the builtin plugins from disk (in
cases where the plugins aren't loaded from inside the zellij binary).
* utils/input/plugins: Update docs
* utils/setup: Add hint to `setup --check` output
when zellij was built without the `disable_automatic_asset_installation`
flag and will thus not read builtin plugins from the "PLUGIN DIR".
* utils/setup: Refine `setup --dump-plugins`
to dump to:
- The default "DATA DIR" when no option is provided with the argument,
or
- The provided option, if existent
Also print a message to stdout with the destination folder that the
plugins are dumped to.
* server/wasm_vm: Ignore "NotFound" errors
when attempting to delete the non-existent plugin data directories. This
silences an error message that otherwise ends up in the logs when
quitting zellij.
* utils/errors: Extend "BuiltinPluginMissing" msg
to hint the user to the `zellij setup --dump-plugins` command to fix
their issues for them!
* utils/errors: Track caller in calls to `non_fatal`
which will hopefully, once closures can be annotated, allow us to
display the location of the call to `non_fatal` in log messages.
* utils/input/plugins: Fix plugin lookup
to prefer internal assets if available. It was previously broken because
sorting the paths vector before deduping it would bring the paths into a
wrong order, looking up in the plugin folder first.
Also print a log message when a plugin is being loaded from the internal
assets but exists on disk, too.
* Apply rustfmt
* make: build-e2e depends on wasm-opt-plugins
so it updates the assets when building the binary
* server/qwasm_vm: Remove var
* utils/consts: Add plugins from target folder
and include them in the asset map from there, too. Include plugins from
debug or release builds, depending on the build type.
* utils/consts: Take release plugins from assets
instead of the target/release folder. The latter will break
installations from crates.io, because we currently rely on including the
plugins we pre-compiled and distribute along with the binary.
* server/wasm_vm: Reintroduce .cache folder
to speedup subsequent application launches.
* cargo: Reorder workspace members
to improve behavior with `cargo make` with respect to compilation order.
* Makefile: restructure plugin tasks
* Makefile: Fix CI errors
* Makefile: More CI diagnosis
* github: Install wasm-opt in e2e test workflow
* Makefile: Build plugins for e2e-test target
* server/Wasm_vm: Reorder plugin folder creation
so no folders are created in the plugin cache when loading a plugin
fails due to not being present or similar.
* update plugins testcommit
* makefile: Change job order
* changelog: Add PR #1924
2022-11-22 23:06:02 +03:00
|
|
|
"default-plugins/compact-bar",
|
|
|
|
"default-plugins/status-bar",
|
|
|
|
"default-plugins/strider",
|
|
|
|
"default-plugins/tab-bar",
|
2021-05-16 14:12:50 +03:00
|
|
|
"zellij-client",
|
|
|
|
"zellij-server",
|
|
|
|
"zellij-utils",
|
2021-02-09 22:06:47 +03:00
|
|
|
"zellij-tile",
|
2021-05-05 01:31:30 +03:00
|
|
|
"zellij-tile-utils",
|
2021-03-26 19:01:22 +03:00
|
|
|
".",
|
2021-02-09 22:06:47 +03:00
|
|
|
]
|
|
|
|
|
|
|
|
[profile.release]
|
|
|
|
lto = true
|
2022-11-10 12:47:00 +03:00
|
|
|
strip = true
|
2021-02-10 01:19:34 +03:00
|
|
|
|
|
|
|
[package.metadata.deb]
|
|
|
|
depends = "$auto"
|
|
|
|
license-file = ["LICENSE.md", "4"]
|
|
|
|
assets = [
|
2021-05-04 21:50:27 +03:00
|
|
|
["assets/man/zellij.1", "usr/share/man/man1/zellij.1", "644"],
|
2021-02-10 09:53:40 +03:00
|
|
|
["target/release/zellij", "usr/bin/zellij", "755"],
|
|
|
|
["GOVERNANCE.md", "usr/share/doc/zellij/GOVERNANCE.md", "644"],
|
|
|
|
["README.md", "usr/share/doc/zellij/README.md", "644"],
|
|
|
|
["assets/layouts/*", "usr/share/zellij/layouts/", "644"],
|
|
|
|
["assets/plugins/*", "usr/share/zellij/plugins/", "644"],
|
|
|
|
["assets/completions/zellij.bash", "usr/share/bash-completion/completions/zellij.bash", "644"],
|
|
|
|
["assets/completions/zellij.fish", "usr/share/fish/vendor_completions.d/zellij.fish", "644"],
|
|
|
|
["assets/completions/_zellij", "usr/share/zsh/vendor-completions/_zellij", "644"],
|
2021-02-10 01:19:34 +03:00
|
|
|
]
|
2021-05-06 22:38:10 +03:00
|
|
|
|
2022-02-27 17:06:43 +03:00
|
|
|
[package.metadata.binstall]
|
|
|
|
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }.tar.gz"
|
|
|
|
bin-dir = "{ bin }{ binary-ext }"
|
|
|
|
pkg-fmt = "tgz"
|
|
|
|
|
2021-05-06 22:38:10 +03:00
|
|
|
[features]
|
plugins: rework plugin loading (#1924)
* zellij: Move "populate_data_dir" to utils
and rewrite it to take a second, optional parameter. This allows
controlling whether only a specific asset should be installed. We do
this as preparation for being able to recover from a plugin version
mismatch error, where we will need to repopulate the data dir for
offending plugins.
* server/wasm_vm: Recover from PluginVersionMismatch
Adds a global plugin cache that stores, per plugin config, the wasmer
module associated with it. Make `start_plugin` take the pre-populated
module and create only the necessary modifications to the wasm env etc.
* utils: Fix formatting
* zellij: Delete non-existent module
* utils/shared: fix missing "set_permissions"
function when not on unix systems.
* server/wasm_vm: Don't populate cachedir
with serialized versions of the WASM plugins.
* utils/input/plugins: load wasm bytes from assets
for builtin plugin specifications. This foregoes any need to:
- Dump the plugin bytes to disk at all and
- subsequently read the plugin bytes from disk
* zellij: Disable default asset installation
which previously installed only the builtin plugins to disk. This is no
longer necessary because now we can load the builtin plugins directly
from the application binary.
* utils/input/plugins: Update docs
* utils/input/plugins: Add 'is_builtin' method
to `PluginConfig` that returns true if the plugin configuration refers
to a builtin plugin.
* wasm_vm: Remove plugin version mismatch handling
because a version mismatch in an internal plugin is now unfixable, with
the plugins being loaded from the running binary, and we have no control
over external plugins in the first place.
* cargo: Reintroduce feature flag
for `disable_automatic_asset_installation`
* utils/consts: Add `ASSET_MAP`
which currently contains the compiled WASM plugins.
* utils/shared: Fix clippy lint
* utils/errors: Add more `ZellijError` variants
* zellij: Make loading internal plugins optional
by reenabling the `disable_automatic_asset_installation` flag and
utilizing it for this purpose. Changes plugin search behavior to throw
better errors in case the builtin plugins cannot be found, depending on
the state of this feature.
* utils/errors: Apply rustfmt
* utils/setup: Allow dumping builtin plugins
to a specified folder on disk. This is meant to be an "escape hatch" for
users that have accidentally deleted the builtin plugins from disk (in
cases where the plugins aren't loaded from inside the zellij binary).
* utils/input/plugins: Update docs
* utils/setup: Add hint to `setup --check` output
when zellij was built without the `disable_automatic_asset_installation`
flag and will thus not read builtin plugins from the "PLUGIN DIR".
* utils/setup: Refine `setup --dump-plugins`
to dump to:
- The default "DATA DIR" when no option is provided with the argument,
or
- The provided option, if existent
Also print a message to stdout with the destination folder that the
plugins are dumped to.
* server/wasm_vm: Ignore "NotFound" errors
when attempting to delete the non-existent plugin data directories. This
silences an error message that otherwise ends up in the logs when
quitting zellij.
* utils/errors: Extend "BuiltinPluginMissing" msg
to hint the user to the `zellij setup --dump-plugins` command to fix
their issues for them!
* utils/errors: Track caller in calls to `non_fatal`
which will hopefully, once closures can be annotated, allow us to
display the location of the call to `non_fatal` in log messages.
* utils/input/plugins: Fix plugin lookup
to prefer internal assets if available. It was previously broken because
sorting the paths vector before deduping it would bring the paths into a
wrong order, looking up in the plugin folder first.
Also print a log message when a plugin is being loaded from the internal
assets but exists on disk, too.
* Apply rustfmt
* make: build-e2e depends on wasm-opt-plugins
so it updates the assets when building the binary
* server/qwasm_vm: Remove var
* utils/consts: Add plugins from target folder
and include them in the asset map from there, too. Include plugins from
debug or release builds, depending on the build type.
* utils/consts: Take release plugins from assets
instead of the target/release folder. The latter will break
installations from crates.io, because we currently rely on including the
plugins we pre-compiled and distribute along with the binary.
* server/wasm_vm: Reintroduce .cache folder
to speedup subsequent application launches.
* cargo: Reorder workspace members
to improve behavior with `cargo make` with respect to compilation order.
* Makefile: restructure plugin tasks
* Makefile: Fix CI errors
* Makefile: More CI diagnosis
* github: Install wasm-opt in e2e test workflow
* Makefile: Build plugins for e2e-test target
* server/Wasm_vm: Reorder plugin folder creation
so no folders are created in the plugin cache when loading a plugin
fails due to not being present or similar.
* update plugins testcommit
* makefile: Change job order
* changelog: Add PR #1924
2022-11-22 23:06:02 +03:00
|
|
|
# See remarks in zellij_utils/Cargo.toml
|
2022-12-09 12:17:28 +03:00
|
|
|
default = [ "zellij-utils/asset_map" ]
|
2022-03-17 13:40:09 +03:00
|
|
|
disable_automatic_asset_installation = [ "zellij-utils/disable_automatic_asset_installation" ]
|
2022-06-25 22:48:00 +03:00
|
|
|
unstable = [ "zellij-client/unstable", "zellij-utils/unstable" ]
|