aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/input (follow)
Commit message (Collapse)AuthorAge
...
* fix(input): refix ctrl-j (#3746)Aram Drevekenin2024-11-08
| | | | | * fix(input): refix ctrl-j * fix e2e tests
* fix(ux): forward keys to pane in locked mode and base mode rather than ↵Aram Drevekenin2024-10-31
| | | | | | | hard-coded normal mode (#3715) * fix(keybindings): only forward clear keys in locked mode and default mode * style(fmt): rustfmt
* fix(ux): configuration fixes (#3713)Aram Drevekenin2024-10-31
| | | | | | | | | * fix(startup): try create config folder if it doesn't exist * fix(configuration): tab bar ui * fix(configuration): rebind ctrl-s to ctrl-a * fix(configuration): remove extra rebinding leaders screen
* style(fmt): remove warnings (#3701)Aram Drevekenin2024-10-25
|
* style(fmt): various cleanups (#3698)Aram Drevekenin2024-10-24
| | | | | | | * fix(configuration): rounding error in ui * style(fmt): remove warnings * style(fmt): rustfmt
* fix(layouts): suspend commands in remote layouts (#3697)Aram Drevekenin2024-10-24
| | | | | * fix(layouts): suspend commands in remote layouts * style(fmt): rustfmt
* fix(config): watch/update config given with --config when appropriate (#3678)Aram Drevekenin2024-10-14
|
* fix(plugins): various plugin api and other fixes (#3665)Aram Drevekenin2024-10-11
| | | | | * fix(plugins): do not allow focusing an unselectable pane * fix(folders): make sure config and cache folders exist on app start
* feat(cli): make --layout idempotent(-ish) (#3650)Aram Drevekenin2024-10-08
| | | | | | | * feat(cli): if inside a session, apply --layout to the session * fix(screen): some focusing races when switching tab focus * style(fmt): rustfmt
* feat(ui): built-in plugin manager (#3633)Aram Drevekenin2024-09-30
| | | | | | | | | | | * add plugin list to session info * feat(plugins): new_plugin and reload_plugin API commands * feat(plugins): built-in plugin manager * style(fmt): rustfmt * update plugins
* feat(config): allow loading background plugins on startup (#3616)Aram Drevekenin2024-09-20
| | | | | | | | | | | | | * remove old partial implementation * feat(plugins): allow loading background plugins on startup * add e2e test * update config * udpate config merging * style(fmt): rustfmt
* feat(plugins): APIs to break multiple panes into a new tab or an existing ↵Aram Drevekenin2024-09-16
| | | | | | | | | | | | | | | | | tab (#3610) * feat(plugins): break multiple panes to a new tab * fix(layouts): properly ignore run instructions when breaking panes * feat(plugins): break multiple panes to existing tab * feat(apis): allow these methods to also specify whether they want focus changed to the tab * various fixes * allow specifying name for the new tab when breaking out panes * style(fmt): rustfmt
* feat(plugins): API to temporarily bind keys to send a message to a specific ↵Aram Drevekenin2024-08-21
| | | | plugin id (#3561)
* feat(ux): change themes at runtime (#3559)Aram Drevekenin2024-08-20
|
* feat(ux): reload config at runtime (#3558)Aram Drevekenin2024-08-19
| | | | | * feat(ux): reload config at runtime * style(fmt): rustfmt
* feat(ux): first run setup-wizard (#3556)Aram Drevekenin2024-08-16
| | | | | | | | | | | | | | | | | | | | | | | | | * separate saved/runtime structure, kind of working * serializing config * work * work * save config through the configuration screen * work * startup wizard * style(code): cleanups * fix(session): reload config from disk when switching sessions * style(fmt): rustfmt * fix(config): propagate cli config options to screen * style(fmt): rustfmt
* feat(plugins): allow opening command panes in the background (hidden) (#3530)Aram Drevekenin2024-07-29
| | | | | | | | | | | * start background pane * open command and edit panes in the background * some cleanups * style(fmt): rustfmt * more cleanups
* feat(plugins): some APIs for controlling and receiving information about ↵Aram Drevekenin2024-07-22
| | | | | | | | | | | | | other panes (#3515) * add context to opening command panes, and events for their start/finish * show/hide other panes plugin apis * get tests to pass * style(fmt): rustfmt * update plugin test snapshots
* fix(serialization): do not serialize junk sessions (#3504)Aram Drevekenin2024-07-18
| | | | | * fix(serialization): do not serialize junk sessions * style(fmt): rustfmt
* feat(plugins): add stringified layout to switch_session_with_layout (#3503)Aram Drevekenin2024-07-18
|
* feat(ui): configuration screen + configure non-colliding keys at runtime (#3502)Aram Drevekenin2024-07-17
| | | | | | | | | | | | | * rebind => reconfigure * persist keybinds and mode info to new tabs * add configuration plugin * make tests pass * remove warnings * style(fmt): rustfmt
* feat(ui): status bar redesign (#3475)Aram Drevekenin2024-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | * work * work * working * get default mode from server and some ui responsiveness * work * finish design and get tests to pass * get e2e tests to pass * add classic layout * add classic layout assets * fix e2e tests * style(fmt): rustfmt * fix plugin system test * style(fmt): some cleanups
* feat(keybindings): support multiple modifiers (eg. Ctrl+Alt) and the kitty ↵Aram Drevekenin2024-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | keyboard protocol (#3383) * parse kitty keys from STDIN * work * work * replace internal Key representation with the new KeyWithModifier in all the places * work * work * allow disabling with config * adjust ordering * handle enabling/disabling properly on the client * support multiple modifiers without kitty too * normalize uppercase keys * get tests to pass * various cleanups * style(fmt): rustfmt
* feat(layouts): allow consuming a layout from a url (#3351)Aram Drevekenin2024-05-15
| | | | | | | * feat(cli): allow loading layouts directly from a url * feat(plugins): allow loading layouts directly from a url * style(fmt): rustfmt
* feat(stdin): allow binding Ctrl J (#3307)hiasr2024-05-02
| | | | | * Fixed Control j keybindings * Fix formatting
* feat(cli): list clients, their focused pane_id and the running command (#3314)Aram Drevekenin2024-04-30
| | | | | * feat(cli): list clients * style(fmt): rustfmt
* feat(plugins): add API to open new tabs with a LayoutInfo (#3305)Aram Drevekenin2024-04-26
| | | | | * feat(plugins): add api to open new tabs with a layout info * fix tests
* feat(config): allow disabling writing session metadata to disk (#3258)Aram Drevekenin2024-04-12
| | | | | * feat(config): allow disabling writing session metadata to disk * style(fmt): rustfmt
* fix(swap-layouts): properly identify plugin aliases with initial cwd (#3250)Aram Drevekenin2024-04-10
| | | | | * fix(swap-layouts): properly identify plugin aliases with initial cwd * style(fmt): rustfmt
* fix(layouts): recover from resurrection crash and pick up swap layouts ↵Aram Drevekenin2024-04-10
| | | | | | | properly (#3249) * fix(layouts): recover from issues in the constraint system * fix(keybinds): pick up swap layouts for new tab keybinding
* fix(plugins): various pre-release issues (#3246)Aram Drevekenin2024-04-05
| | | | | | | | | | | * fix(strider): close_self instead of close_focus * fix(plugins): populate caller_cwd for all aliases * fix(config): launch the session-manager alias rather than the explicit internal url * style(fmt): rustfmt * fix tests
* utils/cli: Add `move-tab` action (#3244)har7an2024-04-04
| | | | | | | * utils/cli: Add `move-tab` action which was previously only exposed through keybindings. * CHANGELOG: Add PR 3244.
* fix(plugins): session layouts are still serialized using the legacy plugin ↵Axel H2024-03-27
| | | | | | | | | | | | | syntax (remote:) (#3224) * fix(plugins): session layouts were still serialized using the legacy plugin syntax (remote:) * use example domain * style(fmt): rustfmt --------- Co-authored-by: Aram Drevekenin <aram@poor.dev>
* fix(config): add support for Ctrl and Alt modifiers on function keys in ↵Bradford Hovinen2024-03-25
| | | | | | | | | | | | | | | | | | | | | | | | keybindings (#3179) Previously, it was not possible to define keybindings with a modifier and a function key. The `Key` enum only supported combinging the Ctrl and Alt modifiers with letters. This is somewhat limiting: I would like to make the Zellij keybindings more "distant" than those used in the programs I use from within Zelilj, so that Zellij does not intefere with those programs. Thus I would like to move some of the keybindings from Ctrl+<character> to Ctrl+<function key>. This change adds: * support for function keys with the Ctrl and Alt modifiers in the `Key` enum, * support for parsing such keybindings from the configuration file, * support for such keybindings in the protobuf which communicates the keybindings to plugins, and * support for these keybindings in the plugin API. This is tested by modifying one of the e2e tests to include an example of such keybindings. This verifies that the configuration is correctly parsed, communicated with the plugin, and rendered.
* fix(swap-layouts): properly identify plugin aliases (#3217)Aram Drevekenin2024-03-22
|
* feat(pipes): allow piping messages to plugins from keybindings (#3212)Aram Drevekenin2024-03-21
|
* chore(integrations): zpipe alias (#3210)Aram Drevekenin2024-03-20
| | | | | * chore(completions): zpipe alias * chore(integrations): zpipe alias
* feat(plugins): session manager cwd and new filepicker (#3200)Aram Drevekenin2024-03-18
| | | | | | | | | | | | | | | | | | | | | | | * prototype * folder selection ui in session manager * overhaul strider * scan folder host command * get strider to work from the cli and some cli pipe fixes * some ux improvements to strider * improve strider's ui * make strider ui responsive * make session-manager new ui parts responsive * fix tests * style(fmt): rustfmt
* feat(plugins): allow specifying the cwd when switching sessions (#3172)Aram Drevekenin2024-02-29
| | | | | * feat(plugins): allow specifying the cwd when switching sessions * style(fmt): rustfmt
* fix(plugins): respect cwd and start filepicker at filesystem root (#3161)Aram Drevekenin2024-02-28
| | | | | | | * allow padding cwd to plugins * improve strider performance and fix alias cwd issue * style(fmt): rustfmt
* feat(plugins): introduce plugin aliases (#3157)Aram Drevekenin2024-02-26
| | | | | | | | | | | | | | | | | | | | | * working prototype with passing tests * new tests and passing plugin tests as well * style(code): cleanups * cleanup strider from unused search feature * prototype of removing old plugin block from the config * aliases working from config file and all tests passing * fixups and cleanups * use aliases in layouts * update test snapshot * style(fmt): rustfmt
* feat: add moving tab to other position (#3047)Bartosz Zbytniewski2024-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: add moving tab to other position * docs(changelog): revert changes * test: update config snapshots * refactor: get rid of HorizontalDirection enum * refactor: cleanup code order * refactor: use debug! instead of info! * refactor: use more defensive way to switch tabs * refactor: revert tip changes * refactor: code formatting * refactor: improve invalid input notification * refactor: inline fns for calculating target index --------- Co-authored-by: Jae-Heon Ji <atx6419@gmail.com>
* feat(panes): allow specifying coordinates for a new floating pane through ↵Aram Drevekenin2024-02-08
| | | | | | | | | | | | | | | the CLI or plugins (#3122) * working * add tests * add coordinates to all the places * refactor: move things around: * style(fmt): rustfmt * style(code): cleanups
* fix(cli): respect cwd in zellij run and zellij plugin (#3116)Aram Drevekenin2024-02-07
| | | | | | | * fix(cli): respect cwd in zellij run and zellij plugin commands * style(fmt): rustfmt * fix tests
* feat(sessions): welcome screen (#3112)Aram Drevekenin2024-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * prototype - can send layout name for new session from session-manager * feat(sessions): ui for selecting layout for new session in the session-manager * fix: send available layouts to plugins * make tests compile * fix tests * improve ui * fix: respect built-in layouts * ui for built-in layouts * some cleanups * style(fmt): rustfmt * welcome screen ui * fix: make sure layout config is not shared between sessions * allow disconnecting other users from current session and killing other sessions * fix: respect default layout * add welcome screen layout * tests(plugins): new api methods * fix(session-manager): do not quit welcome screen on esc and break * fix(plugins): adjust permissions * style(fmt): rustfmt * style(fmt): fix warnings
* feat(plugins): introduce 'pipes', allowing users to pipe data to and control ↵Aram Drevekenin2024-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | plugins from the command line (#3066) * prototype - working with message from the cli * prototype - pipe from the CLI to plugins * prototype - pipe from the CLI to plugins and back again * prototype - working with better cli interface * prototype - working after removing unused stuff * prototype - working with launching plugin if it is not launched, also fixed event ordering * refactor: change message to cli-message * prototype - allow plugins to send messages to each other * fix: allow cli messages to send plugin parameters (and implement backpressure) * fix: use input_pipe_id to identify cli pipes instead of their message name * fix: come cleanups and add skip_cache parameter * fix: pipe/client-server communication robustness * fix: leaking messages between plugins while loading * feat: allow plugins to specify how a new plugin instance is launched when sending messages * fix: add permissions * refactor: adjust cli api * fix: improve cli plugin loading error messages * docs: cli pipe * fix: take plugin configuration into account when messaging between plugins * refactor: pipe message protobuf interface * refactor: update(event) -> pipe * refactor - rename CliMessage to CliPipe * fix: add is_private to pipes and change some naming * refactor - cli client * refactor: various cleanups * style(fmt): rustfmt * fix(pipes): backpressure across multiple plugins * style: some cleanups * style(fmt): rustfmt * style: fix merge conflict mistake * style(wording): clarify pipe permission
* Bump rust version to 1.75.0 (#3039)har7an2024-01-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rust-toolchain: Bump toolchain version to 1.69.0 which, compared to the previous 1.67.0, has the following impacts on `zellij`: - [Turn off debuginfo for build deps][2]: Increases build time (on my machine) from ~230 s in 1.67.0 to ~250 s now, *which is unexpected* This version also changes [handling of the `default-features` flag][3] when specifying dependencies in `Cargo.toml`. If a dependent crate requires `default-features = true` on a crate that is required as `default-features = false` further up the dependency tree, the `true` setting "wins". We only specify `default-features = false` for three crates total: - `names`: This is used only by us - `surf`: This is used only by us - `vte`: This is also required by `strip-ansi-escapes`, but that has `default-features = false` as well How this affects our transitive dependencies is unknown at this point. [2]: https://github.com/rust-lang/cargo/pull/11252/ [3]: https://github.com/rust-lang/cargo/pull/11409/ * rust-toolchain: Bump toolchain version to 1.70.0 which, compared to the previous 1.69.0, as the following impacts on `zellij`: 1. [Enable sparse registry checkout for crates.io by default][1] This drastically increases the time to first build on a fresh rust installation/a rust installation with a clean cargo registry cache. Previously it took about 75s to populate the deps/cache (with `cargo fetch --locked` and ~100 MBit/s network), whereas now the same process takes ~10 s. 2. [The `OnceCell` type is now part of std][2] In theory, this would allow us to cut a dependency from `zellij-utils`, but the `once_cell` crate is pulled in by another 16 deps, so there's no point in attempting it right now. Build times and binary sizes are unaffected by this change compared to the previous 1.69.0 toolchain. [1]: https://github.com/rust-lang/cargo/pull/11791/ [2]: https://doc.rust-lang.org/stable/std/cell/struct.OnceCell.html * rust-toolchain: Bump toolchain version to 1.75.0 which, compared to the previous 1.70.0, has the following impacts on `zellij`: 1. [cross-crate inlining][8] This should increase application performance, as functions can now be inlined across crates. 2. [`async fn` in traits][9] This would allow us to drop the `async_trait` dependency, but it is currently still required by 3 other dependencies. Build time in debug mode (on my own PC) is cut down from 256s to 189s (for a clean build). Build time in release mode is cut down from 473s to 391s (for a clean build). Binary sizes only change minimally (825 MB -> 807 MB in debug, 29 MB -> 30 MB in release). [8]: https://github.com/rust-lang/rust/pull/116505 [9]: https://github.com/rust-lang/rust/pull/115822/ * chore: Apply rustfmt. * CHANGELOG: Add PR #3039.
* feat(plugins): skip plugin cache flag (#2971)Aram Drevekenin2023-11-30
| | | | | | | * feat(plugins): allow explicitly skipping the plugin cache when loading * style(fmt): rustfmt * fix tests
* feat(config): add serialization interval configuration (#2923)Aram Drevekenin2023-11-10
| | | | | | | * add serialization interval configuration * fix e2e tests * fix e2e tests
* fix(ux): LaunchPlugin and some cwd fixes (#2916)Aram Drevekenin2023-11-08
| | | | | | | | | * LaunchPlugin and some cwd fixes * style(fmt): rustfmt * fix e2e tests and some cleanups * fmt