From d62e6fb57e7c35f3b2f165c5a63c809ba21e2c2e Mon Sep 17 00:00:00 2001 From: a-kenji Date: Fri, 3 Jun 2022 11:14:38 +0200 Subject: [PATCH] add(plugin): `compact-bar` & `compact` layout (#1450) * add(plugin): `compact-bar` & `compact` layout * add(nix): `compact-bar` plugin * add(config): `compact-bar` to the config * add(workspace): `compact-bar` to workspace members * add(assets): `compact-bar` * chore(fmt): rustfmt * add(nix): add `compact-bar` * add: compact layout to dump command * nix(build): fix destination of copy command * add(makefile): add `compact-bar` to `plugin-build` * add(layout): `compact-bar` to layout * add: install `compact-bar` plugin * fix(test): update input plugin test * fix(plugin): default colors for compact-bar --- Cargo.lock | 460 ++++++++++-------- Cargo.toml | 1 + Makefile.toml | 2 + assets/plugins/compact-bar.wasm | Bin 0 -> 258873 bytes .../compact-bar/.cargo/config.toml | 2 + default-plugins/compact-bar/Cargo.toml | 13 + default-plugins/compact-bar/LICENSE.md | 1 + default-plugins/compact-bar/src/line.rs | 243 +++++++++ default-plugins/compact-bar/src/main.rs | 137 ++++++ default-plugins/compact-bar/src/tab.rs | 84 ++++ nix/default.nix | 2 + nix/plugins.nix | 1 + src/install.rs | 1 + zellij-utils/assets/config/default.yaml | 2 + zellij-utils/assets/layouts/compact.yaml | 13 + zellij-utils/src/input/layout.rs | 7 + zellij-utils/src/input/plugins.rs | 2 +- zellij-utils/src/setup.rs | 7 + 18 files changed, 779 insertions(+), 199 deletions(-) create mode 100755 assets/plugins/compact-bar.wasm create mode 100644 default-plugins/compact-bar/.cargo/config.toml create mode 100644 default-plugins/compact-bar/Cargo.toml create mode 120000 default-plugins/compact-bar/LICENSE.md create mode 100644 default-plugins/compact-bar/src/line.rs create mode 100644 default-plugins/compact-bar/src/main.rs create mode 100644 default-plugins/compact-bar/src/tab.rs create mode 100644 zellij-utils/assets/layouts/compact.yaml diff --git a/Cargo.lock b/Cargo.lock index d93f68cc5..b7edee505 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,15 +37,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" [[package]] name = "arc-swap" -version = "0.4.8" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8" +checksum = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f" [[package]] name = "arrayvec" @@ -80,25 +80,24 @@ dependencies = [ [[package]] name = "async-global-executor" -version = "2.0.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c026b7e44f1316b567ee750fea85103f87fcb80792b860e979f221259796ca0a" +checksum = "fd8b508d585e01084059b60f06ade4cb7415cd2e4084b71dd1cb44e7d3fb9880" dependencies = [ "async-channel", "async-executor", "async-io", - "async-mutex", + "async-lock", "blocking", "futures-lite", - "num_cpus", "once_cell", ] [[package]] name = "async-io" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" +checksum = "e5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07" dependencies = [ "concurrent-queue", "futures-lite", @@ -123,19 +122,10 @@ dependencies = [ ] [[package]] -name = "async-mutex" +name = "async-process" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-process" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" +checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c" dependencies = [ "async-io", "blocking", @@ -144,15 +134,15 @@ dependencies = [ "futures-lite", "libc", "once_cell", - "signal-hook 0.3.13", + "signal-hook 0.3.14", "winapi", ] [[package]] name = "async-std" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" +checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c" dependencies = [ "async-channel", "async-global-executor", @@ -184,9 +174,9 @@ checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "159c7edec63db93c5eb1e5e6928f6dec9aea1174cf983a8e5fc4caa179792814" dependencies = [ "proc-macro2", "quote", @@ -218,16 +208,16 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" dependencies = [ "addr2line", "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.27.1", + "object 0.28.4", "rustc-demangle", ] @@ -304,9 +294,9 @@ checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "byte-tools" @@ -365,16 +355,16 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.6" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" +checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" dependencies = [ "atty", "bitflags", "clap_derive", + "clap_lex", "indexmap", "lazy_static", - "os_str_bytes", "strsim", "termcolor", "textwrap 0.15.0", @@ -382,18 +372,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "3.1.1" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df6f3613c0a3cddfd78b41b10203eb322cb29b600cbdf808a7d3db95691b8e25" +checksum = "da92e6facd8d73c22745a5d3cbb59bdf8e46e3235c923e516527d8e81eec14a4" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "3.1.4" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95d038ede1a964ce99f49cbe27a7fb538d1da595e4b4f70b8c8f338d17bf16" +checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -402,6 +392,15 @@ dependencies = [ "syn", ] +[[package]] +name = "clap_lex" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "close_fds" version = "0.3.2" @@ -429,6 +428,17 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dfdf9179d546b55ff3f88c9d93ecfaa3e9760163da5a1080af5243230dbbb70" +[[package]] +name = "compact-bar" +version = "0.1.0" +dependencies = [ + "ansi_term", + "colored", + "unicode-width", + "zellij-tile", + "zellij-tile-utils", +] + [[package]] name = "concurrent-queue" version = "1.2.2" @@ -461,9 +471,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] @@ -642,9 +652,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ "darling_core", "darling_macro", @@ -652,23 +662,22 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", "syn", ] [[package]] name = "darling_macro" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", "quote", @@ -771,18 +780,18 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "enumset" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6216d2c19a6fb5f29d1ada1dc7bc4367a8cbf0fa4af5cf12e07b5bbdde6b5b2c" +checksum = "4799cdb24d48f1f8a7a98d06b7fde65a85a2d1e42b25a889f5406aa1fbefe074" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6451128aa6655d880755345d085494cf7561a6bee7c8dc821e5d77e6d267ecd4" +checksum = "ea83a3fbdc1d999ccfbcbee717eab36f8edf2d71693a23ce0d7cca19e085304c" dependencies = [ "darling", "proc-macro2", @@ -1008,9 +1017,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1019,9 +1028,9 @@ dependencies = [ [[package]] name = "ghost" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5bcf1bbeab73aa4cf2fde60a846858dc036163c7c33bec309f8d17de785479" +checksum = "76c813ffb63e8fd3df6f1ac3cc1ea392c7612ac2de4d0b44dcbfe03e5c4bf94a" dependencies = [ "proc-macro2", "quote", @@ -1047,9 +1056,9 @@ checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "gloo-timers" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d12a7f4e95cfe710f1d624fb1210b7d961a5fb05c4fd942f4feab06e61f590e" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" dependencies = [ "futures-channel", "futures-core", @@ -1124,9 +1133,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" dependencies = [ "autocfg", "hashbrown", @@ -1135,9 +1144,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.13.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7e1911532a662f6b08b68f884080850f2fd9544963c3ab23a5af42bda1eac" +checksum = "bcc3e639bcba360d9237acabd22014c16f3df772db463b7446cd81b070714767" dependencies = [ "console", "once_cell", @@ -1181,9 +1190,9 @@ checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9" [[package]] name = "inventory" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6b5d8c669bfbad811d95ddd7a1c6cf9cfdbf2777e59928b6f3fa8ff54f72a0" +checksum = "84344c6e0b90a9e2b6f3f9abe5cc74402684e348df7b32adca28747e0cef091a" dependencies = [ "ctor", "ghost", @@ -1197,15 +1206,15 @@ checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] @@ -1239,9 +1248,9 @@ checksum = "72d9d1bd215936bc8647ad92986bb56f3f216550b53c44ab785e3217ae33625e" [[package]] name = "libc" -version = "0.2.121" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libloading" @@ -1269,9 +1278,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" dependencies = [ "cc", "libc", @@ -1287,10 +1296,11 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg", "scopeguard", ] @@ -1313,9 +1323,9 @@ checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" [[package]] name = "log4rs" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1572a880d1115ff867396eee7ae2bc924554225e67a0d3c85c745b3e60ca211" +checksum = "893eaf59f4bef8e2e94302adf56385db445a0306b9823582b0b8d5a06d8822f3" dependencies = [ "anyhow", "arc-swap", @@ -1326,8 +1336,7 @@ dependencies = [ "libc", "log", "log-mdc", - "parking_lot", - "regex", + "parking_lot 0.12.1", "serde", "serde-value", "serde_json", @@ -1361,9 +1370,9 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" @@ -1421,12 +1430,11 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ "adler", - "autocfg", ] [[package]] @@ -1511,9 +1519,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -1521,9 +1529,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] @@ -1550,18 +1558,18 @@ dependencies = [ [[package]] name = "object" -version = "0.27.1" +version = "0.28.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" [[package]] name = "opaque-debug" @@ -1577,9 +1585,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" dependencies = [ "autocfg", "cc", @@ -1599,18 +1607,15 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.0.0" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] +checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" [[package]] name = "owo-colors" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e72e30578e0d0993c8ae20823dd9cff2bc5517d2f586a8aef462a581e8a03eb" +checksum = "decf7381921fea4dcb2549c5667eda59b3ec297ab7e2b5fc33eac69d2e7da87b" [[package]] name = "parking" @@ -1626,7 +1631,17 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.3", ] [[package]] @@ -1638,11 +1653,24 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.11", + "redox_syscall", "smallvec", "winapi", ] +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + [[package]] name = "percent-encoding" version = "2.1.0" @@ -1748,9 +1776,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -1760,9 +1788,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "polling" @@ -1825,18 +1853,18 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ "proc-macro2", ] @@ -1901,7 +1929,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.5", + "getrandom 0.2.6", ] [[package]] @@ -1924,9 +1952,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -1936,40 +1964,33 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] [[package]] name = "redox_users" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.5", - "redox_syscall 0.2.11", + "getrandom 0.2.6", + "redox_syscall", "thiserror", ] @@ -1986,9 +2007,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" dependencies = [ "aho-corasick", "memchr", @@ -1997,9 +2018,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" [[package]] name = "region" @@ -2036,9 +2057,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" [[package]] name = "scopeguard" @@ -2066,9 +2087,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" dependencies = [ "serde_derive", ] @@ -2085,18 +2106,18 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" dependencies = [ "proc-macro2", "quote", @@ -2105,9 +2126,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" dependencies = [ "itoa", "ryu", @@ -2116,9 +2137,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" +checksum = "707d15895415db6628332b737c838b88c598522e4dc70647e59b72312924aebc" dependencies = [ "indexmap", "ryu", @@ -2163,9 +2184,9 @@ dependencies = [ [[package]] name = "signal-hook" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" dependencies = [ "libc", "signal-hook-registry", @@ -2194,9 +2215,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" @@ -2238,7 +2259,7 @@ dependencies = [ "bitflags", "libc", "libssh2-sys", - "parking_lot", + "parking_lot 0.11.2", ] [[package]] @@ -2344,13 +2365,13 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.89" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" +checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -2394,7 +2415,7 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall 0.2.11", + "redox_syscall", "remove_dir_all", "winapi", ] @@ -2496,18 +2517,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", @@ -2516,12 +2537,12 @@ dependencies = [ [[package]] name = "thread-id" -version = "3.3.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" +checksum = "5fdfe0627923f7411a43ec9ec9c39c3a9b4151be313e0922042581fb6c9b717f" dependencies = [ "libc", - "redox_syscall 0.1.57", + "redox_syscall", "winapi", ] @@ -2538,9 +2559,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -2553,9 +2574,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tracing" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if 1.0.0", "log", @@ -2566,9 +2587,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" dependencies = [ "proc-macro2", "quote", @@ -2577,9 +2598,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" +checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" dependencies = [ "lazy_static", ] @@ -2637,9 +2658,15 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" [[package]] name = "unicode-linebreak" @@ -2671,12 +2698,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - [[package]] name = "unsafe-any" version = "0.4.2" @@ -2777,9 +2798,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2787,9 +2808,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", "lazy_static", @@ -2802,9 +2823,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2814,9 +2835,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2824,9 +2845,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2", "quote", @@ -2837,9 +2858,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "wasmer" @@ -3024,7 +3045,7 @@ dependencies = [ "bincode", "byteorder", "generational-arena", - "getrandom 0.2.5", + "getrandom 0.2.6", "libc", "serde", "thiserror", @@ -3043,9 +3064,9 @@ checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf" [[package]] name = "wast" -version = "39.0.0" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9bbbd53432b267421186feee3e52436531fa69a7cfee9403f5204352df3dd05" +checksum = "f882898b8b817cc4edc16aa3692fdc087b356edc8cc0c2164f5b5181e31c3870" dependencies = [ "leb128", "memchr", @@ -3054,18 +3075,18 @@ dependencies = [ [[package]] name = "wat" -version = "1.0.41" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab98ed25494f97c69f28758617f27c3e92e5336040b5c3a14634f2dd3fe61830" +checksum = "48b3b9b3e39e66c7fd3f8be785e74444d216260f491e93369e317ed6482ff80f" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", @@ -3141,6 +3162,49 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "yaml-rust" version = "0.4.5" @@ -3248,7 +3312,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "signal-hook 0.3.13", + "signal-hook 0.3.14", "strip-ansi-escapes", "strum", "tempfile", @@ -3262,6 +3326,6 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb5728b8afd3f280a869ce1d4c554ffaed35f45c231fc41bfbd0381bef50317" +checksum = "94693807d016b2f2d2e14420eb3bfcca689311ff775dcf113d74ea624b7cdf07" diff --git a/Cargo.toml b/Cargo.toml index 4899c4df9..14b0a765c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,6 +34,7 @@ members = [ "zellij-utils", "zellij-tile", "zellij-tile-utils", + "default-plugins/compact-bar", "default-plugins/status-bar", "default-plugins/strider", "default-plugins/tab-bar", diff --git a/Makefile.toml b/Makefile.toml index 2d3e7ec82..edbc18280 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -109,6 +109,7 @@ end [tasks.build-plugins-release] env = { "CARGO_MAKE_WORKSPACE_INCLUDE_MEMBERS" = [ + "default-plugins/compact-bar", "default-plugins/status-bar", "default-plugins/strider", "default-plugins/tab-bar", @@ -117,6 +118,7 @@ run_task = { name = "build-release", fork = true } [tasks.build-plugins] env = { "CARGO_MAKE_WORKSPACE_INCLUDE_MEMBERS" = [ + "default-plugins/compact-bar", "default-plugins/status-bar", "default-plugins/strider", "default-plugins/tab-bar", diff --git a/assets/plugins/compact-bar.wasm b/assets/plugins/compact-bar.wasm new file mode 100755 index 0000000000000000000000000000000000000000..21374cb5ed7c2f7079e9f625b114a64ed26dd4a3 GIT binary patch literal 258873 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 z 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 ZEp$Ks_h*8ebi5FXD}q+xv`R94|37$0{v7}S literal 0 HcmV?d00001 diff --git a/default-plugins/compact-bar/.cargo/config.toml b/default-plugins/compact-bar/.cargo/config.toml new file mode 100644 index 000000000..6b77899cb --- /dev/null +++ b/default-plugins/compact-bar/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target = "wasm32-wasi" diff --git a/default-plugins/compact-bar/Cargo.toml b/default-plugins/compact-bar/Cargo.toml new file mode 100644 index 000000000..6f45e2c40 --- /dev/null +++ b/default-plugins/compact-bar/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "compact-bar" +version = "0.1.0" +authors = ["Alexander Kenji Berthold " ] +edition = "2021" +license = "MIT" + +[dependencies] +colored = "2" +ansi_term = "0.12" +unicode-width = "0.1.8" +zellij-tile = { path = "../../zellij-tile" } +zellij-tile-utils = { path = "../../zellij-tile-utils" } diff --git a/default-plugins/compact-bar/LICENSE.md b/default-plugins/compact-bar/LICENSE.md new file mode 120000 index 000000000..f0608a63a --- /dev/null +++ b/default-plugins/compact-bar/LICENSE.md @@ -0,0 +1 @@ +../../LICENSE.md \ No newline at end of file diff --git a/default-plugins/compact-bar/src/line.rs b/default-plugins/compact-bar/src/line.rs new file mode 100644 index 000000000..5cd9c6873 --- /dev/null +++ b/default-plugins/compact-bar/src/line.rs @@ -0,0 +1,243 @@ +use ansi_term::ANSIStrings; +use unicode_width::UnicodeWidthStr; + +use crate::{LinePart, ARROW_SEPARATOR}; +use zellij_tile::prelude::*; +use zellij_tile_utils::style; + +fn get_current_title_len(current_title: &[LinePart]) -> usize { + current_title.iter().map(|p| p.len).sum() +} + +// move elements from before_active and after_active into tabs_to_render while they fit in cols +// adds collapsed_tabs to the left and right if there's left over tabs that don't fit +fn populate_tabs_in_tab_line( + tabs_before_active: &mut Vec, + tabs_after_active: &mut Vec, + tabs_to_render: &mut Vec, + cols: usize, + palette: Palette, + capabilities: PluginCapabilities, +) { + let mut middle_size = get_current_title_len(tabs_to_render); + + let mut total_left = 0; + let mut total_right = 0; + loop { + let left_count = tabs_before_active.len(); + let right_count = tabs_after_active.len(); + let collapsed_left = left_more_message(left_count, palette, tab_separator(capabilities)); + let collapsed_right = right_more_message(right_count, palette, tab_separator(capabilities)); + + let total_size = collapsed_left.len + middle_size + collapsed_right.len; + + if total_size > cols { + // break and dont add collapsed tabs to tabs_to_render, they will not fit + break; + } + + let left = if let Some(tab) = tabs_before_active.last() { + tab.len + } else { + usize::MAX + }; + + let right = if let Some(tab) = tabs_after_active.first() { + tab.len + } else { + usize::MAX + }; + + // total size is shortened if the next tab to be added is the last one, as that will remove the collapsed tab + let size_by_adding_left = + left.saturating_add(total_size) + .saturating_sub(if left_count == 1 { + collapsed_left.len + } else { + 0 + }); + let size_by_adding_right = + right + .saturating_add(total_size) + .saturating_sub(if right_count == 1 { + collapsed_right.len + } else { + 0 + }); + + let left_fits = size_by_adding_left <= cols; + let right_fits = size_by_adding_right <= cols; + // active tab is kept in the middle by adding to the side that + // has less width, or if the tab on the other side doesn' fit + if (total_left <= total_right || !right_fits) && left_fits { + // add left tab + let tab = tabs_before_active.pop().unwrap(); + middle_size += tab.len; + total_left += tab.len; + tabs_to_render.insert(0, tab); + } else if right_fits { + // add right tab + let tab = tabs_after_active.remove(0); + middle_size += tab.len; + total_right += tab.len; + tabs_to_render.push(tab); + } else { + // there's either no space to add more tabs or no more tabs to add, so we're done + tabs_to_render.insert(0, collapsed_left); + tabs_to_render.push(collapsed_right); + break; + } + } +} + +fn left_more_message(tab_count_to_the_left: usize, palette: Palette, separator: &str) -> LinePart { + if tab_count_to_the_left == 0 { + return LinePart::default(); + } + let more_text = if tab_count_to_the_left < 10000 { + format!(" ← +{} ", tab_count_to_the_left) + } else { + " ← +many ".to_string() + }; + // 238 + // chars length plus separator length on both sides + let more_text_len = more_text.width() + 2 * separator.width(); + let text_color = match palette.theme_hue { + ThemeHue::Dark => palette.white, + ThemeHue::Light => palette.black, + }; + let left_separator = style!(text_color, palette.orange).paint(separator); + let more_styled_text = style!(text_color, palette.orange).bold().paint(more_text); + let right_separator = style!(palette.orange, text_color).paint(separator); + let more_styled_text = + ANSIStrings(&[left_separator, more_styled_text, right_separator]).to_string(); + LinePart { + part: more_styled_text, + len: more_text_len, + } +} + +fn right_more_message( + tab_count_to_the_right: usize, + palette: Palette, + separator: &str, +) -> LinePart { + if tab_count_to_the_right == 0 { + return LinePart::default(); + }; + let more_text = if tab_count_to_the_right < 10000 { + format!(" +{} → ", tab_count_to_the_right) + } else { + " +many → ".to_string() + }; + // chars length plus separator length on both sides + let more_text_len = more_text.width() + 2 * separator.width(); + let text_color = match palette.theme_hue { + ThemeHue::Dark => palette.white, + ThemeHue::Light => palette.black, + }; + let left_separator = style!(text_color, palette.orange).paint(separator); + let more_styled_text = style!(text_color, palette.orange).bold().paint(more_text); + let right_separator = style!(palette.orange, text_color).paint(separator); + let more_styled_text = + ANSIStrings(&[left_separator, more_styled_text, right_separator]).to_string(); + LinePart { + part: more_styled_text, + len: more_text_len, + } +} + +fn tab_line_prefix( + session_name: Option<&str>, + mode: InputMode, + palette: Palette, + cols: usize, +) -> Vec { + let prefix_text = " Zellij ".to_string(); + + let prefix_text_len = prefix_text.chars().count(); + let text_color = match palette.theme_hue { + ThemeHue::Dark => palette.white, + ThemeHue::Light => palette.black, + }; + let bg_color = match palette.theme_hue { + ThemeHue::Dark => palette.black, + ThemeHue::Light => palette.white, + }; + let prefix_styled_text = style!(text_color, bg_color).bold().paint(prefix_text); + let mut parts = vec![LinePart { + part: prefix_styled_text.to_string(), + len: prefix_text_len, + }]; + if let Some(name) = session_name { + let name_part = format!("({}) ", name); + let name_part_len = name_part.width(); + let text_color = match palette.theme_hue { + ThemeHue::Dark => palette.white, + ThemeHue::Light => palette.black, + }; + let name_part_styled_text = style!(text_color, bg_color).bold().paint(name_part); + if cols.saturating_sub(prefix_text_len) >= name_part_len { + parts.push(LinePart { + part: name_part_styled_text.to_string(), + len: name_part_len, + }) + } + } + let mode_part = format!("({:?})", mode); + let mode_part_len = mode_part.width(); + let mode_part_styled_text = style!(text_color, bg_color).bold().paint(mode_part); + if cols.saturating_sub(prefix_text_len) >= mode_part_len { + parts.push(LinePart { + part: format!("({:^6})", mode_part_styled_text), + len: mode_part_len, + }) + } + parts +} + +pub fn tab_separator(capabilities: PluginCapabilities) -> &'static str { + if !capabilities.arrow_fonts { + ARROW_SEPARATOR + } else { + "" + } +} + +pub fn tab_line( + session_name: Option<&str>, + mut all_tabs: Vec, + active_tab_index: usize, + cols: usize, + palette: Palette, + capabilities: PluginCapabilities, + mode: InputMode, +) -> Vec { + let mut tabs_after_active = all_tabs.split_off(active_tab_index); + let mut tabs_before_active = all_tabs; + let active_tab = if !tabs_after_active.is_empty() { + tabs_after_active.remove(0) + } else { + tabs_before_active.pop().unwrap() + }; + let mut prefix = tab_line_prefix(session_name, mode, palette, cols); + let prefix_len = get_current_title_len(&prefix); + + // if active tab alone won't fit in cols, don't draw any tabs + if prefix_len + active_tab.len > cols { + return prefix; + } + + let mut tabs_to_render = vec![active_tab]; + + populate_tabs_in_tab_line( + &mut tabs_before_active, + &mut tabs_after_active, + &mut tabs_to_render, + cols.saturating_sub(prefix_len), + palette, + capabilities, + ); + prefix.append(&mut tabs_to_render); + prefix +} diff --git a/default-plugins/compact-bar/src/main.rs b/default-plugins/compact-bar/src/main.rs new file mode 100644 index 000000000..3e5e4a184 --- /dev/null +++ b/default-plugins/compact-bar/src/main.rs @@ -0,0 +1,137 @@ +mod line; +mod tab; + +use std::cmp::{max, min}; +use std::convert::TryInto; + +use zellij_tile::prelude::*; + +use crate::line::tab_line; +use crate::tab::tab_style; + +#[derive(Debug, Default)] +pub struct LinePart { + part: String, + len: usize, +} + +#[derive(Default)] +struct State { + tabs: Vec, + active_tab_idx: usize, + mode_info: ModeInfo, + mouse_click_pos: usize, + should_render: bool, +} + +static ARROW_SEPARATOR: &str = ""; + +register_plugin!(State); + +impl ZellijPlugin for State { + fn load(&mut self) { + set_selectable(false); + subscribe(&[ + EventType::TabUpdate, + EventType::ModeUpdate, + EventType::Mouse, + ]); + } + + fn update(&mut self, event: Event) { + match event { + Event::ModeUpdate(mode_info) => self.mode_info = mode_info, + Event::TabUpdate(tabs) => { + if let Some(active_tab_index) = tabs.iter().position(|t| t.active) { + // tabs are indexed starting from 1 so we need to add 1 + self.active_tab_idx = active_tab_index + 1; + self.tabs = tabs; + } else { + eprintln!("Could not find active tab."); + } + } + Event::Mouse(me) => match me { + Mouse::LeftClick(_, col) => { + self.mouse_click_pos = col; + self.should_render = true; + } + Mouse::ScrollUp(_) => { + switch_tab_to(min(self.active_tab_idx + 1, self.tabs.len()) as u32); + } + Mouse::ScrollDown(_) => { + switch_tab_to(max(self.active_tab_idx.saturating_sub(1), 1) as u32); + } + _ => {} + }, + _ => { + eprintln!("Got unrecognized event: {:?}", event); + } + } + } + + fn render(&mut self, _rows: usize, cols: usize) { + if self.tabs.is_empty() { + return; + } + let mut all_tabs: Vec = vec![]; + let mut active_tab_index = 0; + for t in &mut self.tabs { + let mut tabname = t.name.clone(); + if t.active && self.mode_info.mode == InputMode::RenameTab { + if tabname.is_empty() { + tabname = String::from("Enter name..."); + } + active_tab_index = t.position; + } else if t.active { + active_tab_index = t.position; + } + let tab = tab_style( + tabname, + t.active, + t.is_sync_panes_active, + self.mode_info.style.colors, + self.mode_info.capabilities, + t.other_focused_clients.as_slice(), + ); + all_tabs.push(tab); + } + let tab_line = tab_line( + self.mode_info.session_name.as_deref(), + all_tabs, + active_tab_index, + cols.saturating_sub(1), + self.mode_info.style.colors, + self.mode_info.capabilities, + self.mode_info.mode, + ); + let mut s = String::new(); + let mut len_cnt = 0; + for (idx, bar_part) in tab_line.iter().enumerate() { + s = format!("{}{}", s, &bar_part.part); + + if self.should_render + && self.mouse_click_pos > len_cnt + && self.mouse_click_pos <= len_cnt + bar_part.len + && idx > 2 + { + // First three elements of tab_line are "Zellij", session name and empty thing, hence the idx > 2 condition. + // Tabs are indexed starting from 1, therefore we need subtract 2 below. + switch_tab_to(TryInto::::try_into(idx).unwrap() - 2); + } + len_cnt += bar_part.len; + } + let background = match self.mode_info.style.colors.theme_hue { + ThemeHue::Dark => self.mode_info.style.colors.black, + ThemeHue::Light => self.mode_info.style.colors.white, + }; + match background { + PaletteColor::Rgb((r, g, b)) => { + println!("{}\u{1b}[48;2;{};{};{}m\u{1b}[0K", s, r, g, b); + } + PaletteColor::EightBit(color) => { + println!("{}\u{1b}[48;5;{}m\u{1b}[0K", s, color); + } + } + self.should_render = false; + } +} diff --git a/default-plugins/compact-bar/src/tab.rs b/default-plugins/compact-bar/src/tab.rs new file mode 100644 index 000000000..993489620 --- /dev/null +++ b/default-plugins/compact-bar/src/tab.rs @@ -0,0 +1,84 @@ +use crate::{line::tab_separator, LinePart}; +use ansi_term::{ANSIString, ANSIStrings}; +use unicode_width::UnicodeWidthStr; +use zellij_tile::prelude::*; +use zellij_tile_utils::style; + +fn cursors(focused_clients: &[ClientId], palette: Palette) -> (Vec, usize) { + // cursor section, text length + let mut len = 0; + let mut cursors = vec![]; + for client_id in focused_clients.iter() { + if let Some(color) = client_id_to_colors(*client_id, palette) { + cursors.push(style!(color.1, color.0).paint(" ")); + len += 1; + } + } + (cursors, len) +} + +pub fn render_tab( + text: String, + palette: Palette, + separator: &str, + focused_clients: &[ClientId], + active: bool, +) -> LinePart { + let background_color = if active { palette.green } else { palette.fg }; + let foreground_color = match palette.theme_hue { + ThemeHue::Dark => palette.black, + ThemeHue::Light => palette.white, + }; + let left_separator = style!(foreground_color, background_color).paint(separator); + let mut tab_text_len = text.width() + 2 + separator.width() * 2; // 2 for left and right separators, 2 for the text padding + + let tab_styled_text = style!(foreground_color, background_color) + .bold() + .paint(format!(" {} ", text)); + + let right_separator = style!(background_color, foreground_color).paint(separator); + let tab_styled_text = if !focused_clients.is_empty() { + let (cursor_section, extra_length) = cursors(focused_clients, palette); + tab_text_len += extra_length; + let mut s = String::new(); + let cursor_beginning = style!(foreground_color, background_color) + .bold() + .paint("[") + .to_string(); + let cursor_section = ANSIStrings(&cursor_section).to_string(); + let cursor_end = style!(foreground_color, background_color) + .bold() + .paint("]") + .to_string(); + s.push_str(&left_separator.to_string()); + s.push_str(&tab_styled_text.to_string()); + s.push_str(&cursor_beginning); + s.push_str(&cursor_section); + s.push_str(&cursor_end); + s.push_str(&right_separator.to_string()); + s + } else { + ANSIStrings(&[left_separator, tab_styled_text, right_separator]).to_string() + }; + + LinePart { + part: tab_styled_text, + len: tab_text_len, + } +} + +pub fn tab_style( + text: String, + is_active_tab: bool, + is_sync_panes_active: bool, + palette: Palette, + capabilities: PluginCapabilities, + focused_clients: &[ClientId], +) -> LinePart { + let separator = tab_separator(capabilities); + let mut tab_text = text; + if is_sync_panes_active { + tab_text.push_str(" (Sync)"); + } + render_tab(tab_text, palette, separator, focused_clients, is_active_tab) +} diff --git a/nix/default.nix b/nix/default.nix index f001b2ec4..a863621be 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -69,6 +69,7 @@ flake-utils.lib.eachSystem [ ]; defaultPlugins = [ + plugins.compact-bar plugins.status-bar plugins.tab-bar plugins.strider @@ -123,6 +124,7 @@ flake-utils.lib.eachSystem [ cp ${plugins.tab-bar}/bin/tab-bar.wasm assets/plugins/tab-bar.wasm cp ${plugins.status-bar}/bin/status-bar.wasm assets/plugins/status-bar.wasm cp ${plugins.strider}/bin/strider.wasm assets/plugins/strider.wasm + cp ${plugins.compact-bar}/bin/compact-bar.wasm assets/plugins/compact-bar.wasm ''; desktopItems = [ diff --git a/nix/plugins.nix b/nix/plugins.nix index b20f673da..270544c95 100644 --- a/nix/plugins.nix +++ b/nix/plugins.nix @@ -50,4 +50,5 @@ in { status-bar = makeDefaultPlugin "status-bar"; tab-bar = makeDefaultPlugin "tab-bar"; strider = makeDefaultPlugin "strider"; + compact-bar = makeDefaultPlugin "compact-bar"; } diff --git a/src/install.rs b/src/install.rs index 95f1f0db3..1f50a1d60 100644 --- a/src/install.rs +++ b/src/install.rs @@ -21,6 +21,7 @@ macro_rules! asset_map { pub(crate) fn populate_data_dir(data_dir: &Path) { // First run installation of default plugins & layouts let mut assets = asset_map! { + "assets/plugins/compact-bar.wasm" => "plugins/compact-bar.wasm", "assets/plugins/status-bar.wasm" => "plugins/status-bar.wasm", "assets/plugins/tab-bar.wasm" => "plugins/tab-bar.wasm", "assets/plugins/strider.wasm" => "plugins/strider.wasm", diff --git a/zellij-utils/assets/config/default.yaml b/zellij-utils/assets/config/default.yaml index 070bacb6c..b053fa4a3 100644 --- a/zellij-utils/assets/config/default.yaml +++ b/zellij-utils/assets/config/default.yaml @@ -479,6 +479,8 @@ plugins: tag: status-bar - path: strider tag: strider + - path: compact-bar + tag: compact-bar # Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP # eg. when terminal window with an active zellij session is closed diff --git a/zellij-utils/assets/layouts/compact.yaml b/zellij-utils/assets/layouts/compact.yaml new file mode 100644 index 000000000..d20ff08af --- /dev/null +++ b/zellij-utils/assets/layouts/compact.yaml @@ -0,0 +1,13 @@ +--- +template: + direction: Horizontal + parts: + - direction: Vertical + body: true + - direction: Vertical + borderless: true + split_size: + Fixed: 1 + run: + plugin: + location: "zellij:compact-bar" diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs index 14b2971b8..648f09ac6 100644 --- a/zellij-utils/src/input/layout.rs +++ b/zellij-utils/src/input/layout.rs @@ -288,6 +288,7 @@ impl LayoutFromYamlIntermediate { Some("default") => Self::default_from_assets(), Some("strider") => Self::strider_from_assets(), Some("disable-status-bar") => Self::disable_status_from_assets(), + Some("compact") => Self::compact_from_assets(), None | Some(_) => Err(ConfigError::IoPath( std::io::Error::new(std::io::ErrorKind::Other, "The layout was not found"), path.into(), @@ -314,6 +315,12 @@ impl LayoutFromYamlIntermediate { serde_yaml::from_str(&String::from_utf8(setup::NO_STATUS_LAYOUT.to_vec())?)?; Ok(layout) } + + pub fn compact_from_assets() -> LayoutFromYamlIntermediateResult { + let layout: LayoutFromYamlIntermediate = + serde_yaml::from_str(&String::from_utf8(setup::COMPACT_BAR_LAYOUT.to_vec())?)?; + Ok(layout) + } } type LayoutFromYamlResult = Result; diff --git a/zellij-utils/src/input/plugins.rs b/zellij-utils/src/input/plugins.rs index 71ca264d5..0f11e8f4f 100644 --- a/zellij-utils/src/input/plugins.rs +++ b/zellij-utils/src/input/plugins.rs @@ -271,7 +271,7 @@ mod tests { )?; let plugins = PluginsConfig::get_plugins_with_default(plugins.try_into()?); - assert_eq!(plugins.iter().count(), 4); + assert_eq!(plugins.iter().count(), 5); Ok(()) } diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index 301bcee93..2df138eda 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -109,6 +109,12 @@ pub const NO_STATUS_LAYOUT: &[u8] = include_bytes!(concat!( "assets/layouts/disable-status-bar.yaml" )); +pub const COMPACT_BAR_LAYOUT: &[u8] = include_bytes!(concat!( + env!("CARGO_MANIFEST_DIR"), + "/", + "assets/layouts/compact.yaml" +)); + pub const FISH_EXTRA_COMPLETION: &[u8] = include_bytes!(concat!( env!("CARGO_MANIFEST_DIR"), "/", @@ -141,6 +147,7 @@ pub fn dump_specified_layout(layout: &str) -> std::io::Result<()> { match layout { "strider" => dump_asset(STRIDER_LAYOUT), "default" => dump_asset(DEFAULT_LAYOUT), + "compact" => dump_asset(COMPACT_BAR_LAYOUT), "disable-status" => dump_asset(NO_STATUS_LAYOUT), not_found => Err(std::io::Error::new( std::io::ErrorKind::Other,