aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-server/src (follow)
Commit message (Collapse)AuthorAge
...
* fix(terminal): persist cursor hide/show through alternate screen (#1586)Aram Drevekenin2022-07-14
| | | | | | | * fix(terminal): persist cursor hide/show through alternate screen * style(fmt): rustfmt * style(clippy): make clippy happy
* perf(terminal): better responsiveness (#1585)Aram Drevekenin2022-07-13
| | | | | * performance(pty): only buffer terminal bytes when screen thread is backed up * style(fmt): rustfmt
* feat(terminal): sixel support (#1557)Aram Drevekenin2022-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * work * work * work * work * work * more work * work * work * work * hack around stdin repeater * refactor(sixel): rename sixel structs * feat(sixel): render text above images * fix(sixel): reap images once they're past the end of the scrollbuffer * fix(sixel): display images in the middle of the line * fix(sixel): render crash * fix(sixel): react to SIGWINCH * fix(sixel): behave properly in alternate screen mode * fix(sixel): reap images on terminal reset * feat(sixel): handle DECSDM * fix(terminal): properly respond to XTSMGRAPHICS and device attributes with Sixel * Add comment * fix(sixel): hack for unknown event overflow until we fix the api * feat(input): query terminal for all OSC 4 colors and respond to them in a buggy way * fix(sixel): do not render corrupted image * feat(input): improve STDIN queries * fix(client): mistake in clear terminal attributes string * fix(ansi): report correct number of supported color registers * fix(sixel): reap images that are completely covered * style(comment): fix name * test(sixel): infra * test(sixel): cases and fixes * fix(sixel): forward dcs bytes to sixel parser * refactor(client): ansi stdin parser * refactor(output): cleanup * some refactorings * fix test * refactor(grid): sixel-grid / sixel-image-store * refactor(grid): grid debug method * refactor(grid): move various logic to sixel.rs * refactor(grid): remove unused methods * fix(sixel): work with multiple users * refactor(pane): remove unused z_index * style(fmt): prepend unused variable * style(fmt): rustfmt * fix(tests): various apis * chore(dependencies): use published version of sixel crates * style(fmt): rustfmt * style(fmt): rustfmt * style(lint): make clippy happy * style(lint): make clippy happy... again * style(lint): make clippy happy... again (chapter 2) * style(comment): remove unused * fix(colors): export COLORTERM and respond to XTVERSION * fix(test): color register count * fix(stdin): adjust STDIN sleep times
* refactor(crates): move shared contents from zellij tile to zellij utils (#1541)har7an2022-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * zellij-tile: Move `data` to zellij-utils The rationale behind this is that all components of zellij access the data structures defined in this module, as they define some of the most basic types in the application. However, so far zellij-tile is treated like a separate crate from the rest of the program in that it is the only one that doesn't have access to `zellij-utils`, which contains a lot of other data structures used throughout zellij. This poses issues as discussed in https://github.com/zellij-org/zellij/pull/1242 and is one of the reasons why the keybindings in the status bar default plugin can't be updated dynamically. It is also the main reason for why the keybindings are currently passed to the plugin as strings: The plugins only have access to `zellij-tile`, but since this is a dependency of `zellij-utils`, it can't import `zellij-utils` to access the keybindings. Other weird side-effect are that in some places `server` and `client` have to access the `zellij-tile` contents "through" `zellij-utils`, as in `use zellij_utils::zellij_tile::prelude::*`. By moving these central data structures to one common shared crate (`zellij-utils`), `zellij-tile` will be enabled to import `zellij-utils` like `screen` and `client` already do. This will, next to other things, allow dropping a lot of `std::fmt::Fmt` impls needed to convert core data structures into strings and as a consequence, a lot of string parsing in the first place. * utils: Integrate new `data` module, bump rust ver Integrates the `data` module that was previously part of `zellij-tile` to allow sharing the contained data structures between all components of zellij. This allows `zellij-tile` to use `utils` as a dependency. However, since `tile` is build against the wasm target, it cannot include all of `zellij-utils`, since a lot of dependencies there cannot compile with `wasm` as target (Examples include: termwiz, log4rs, async-std). Thus we make all the dependencies that cannot compile against `wasm` optional and introduce a new feature `full` that will compile the crate with all dependencies. Along with this, modify `lib.rs` to include most of the data structures only when compiling against the `full` feature. This makes the compiles of `zellij-tile` lighter, as it doesn't include all of `utils`. As a side effect, due to the dependency notation for the optional dependencies (See https://doc.rust-lang.org/cargo/reference/features.html#optional-dependencies), we bump the rust toolchain version to 1.60.0. * tile: Import `data` from zellij-utils Add `zellij-utils` as a dependency to `zellij-tile` and allow us access to the `data` module defined there. Update the re-export in the `prelude` such that from all of the plugins points of view *absolutely nothing changes*. * utils: Fix `data` module dependency Since the `data` module has been migrated from `zellij-tile` to `zellij-utils`, we import it from `zellij-utils` directly now. Also unify the imports for the `data` module members: We import all of the through `data::` now, not through a mixture of `data::` and `prelude::`. * client: Fix `data` module dependency Since the `data` module has been migrated from `zellij-tile` to `zellij-utils`, we import it from `zellij-utils` directly now. Also unify the imports for the `data` module members: We import all of the through `data::` now, not through a mixture of `data::` and `prelude::`. Add the "full" feature flag to the `zellij-utils` dependency so it includes all the components we need. * server: Fix `data` module dependency Since the `data` module has been migrated from `zellij-tile` to `zellij-utils`, we import it from `zellij-utils` directly now. Also unify the imports for the `data` module members: We import all of the through `data::` now, not through a mixture of `data::` and `prelude::`. Add the "full" feature flag to the `zellij-utils` dependency so it includes all the components we need. * tests: Fix `data` module dependency Since the `data` module has been migrated from `zellij-tile` to `zellij-utils`, we import it from `zellij-utils` directly now. * utils: Remove "full" feature in favor of conditional compilation using `target_family`. Replace the rust 1.60 method of specifying optional dependencies based on features and optionally include the dependencies only when not building for wasm instead. (I.e. `cfg(not(target_family = "wasm"))`) * cargo: Update module dependencies since `client`, `server` and `tile` now all depend on `utils` only.
* fix: various typos (#1553)a-kenji2022-07-02
| | | Because they were wrong.
* fix(scroll): reset scroll properly when typing (#1547)Aram Drevekenin2022-06-27
|
* fix(terminal): properly trim lines with widechars on resize (#1545)Aram Drevekenin2022-06-27
|
* fix(editor): handle editor in fullscreen (#1544)Aram Drevekenin2022-06-27
|
* feat: add action to undo rename (#1513)Jae-Heon Ji2022-06-18
|
* feat: fullscreen focus swapping (#1515)nacairns12022-06-16
|
* fix(clippy): clippy fixes (#1508)a-kenji2022-06-15
| | | | | * fix(clippy): clippy fixes * chore(fmt): cargo fmt
* feat: add capability to dispatch actions from cli (#1265)a-kenji2022-06-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Deduplicate code in zellij-server screen (#1453)har7an2022-06-14
|
* add(style): add trailing comma in match blocks (#1483)a-kenji2022-06-10
| | | This makes it easier to distinguish from normal blocks
* docs: fix typos (#1481)Kian-Meng Ang2022-06-10
|
* add: fix a small lint (#1476)a-kenji2022-06-10
|
* fix(client): exit client-loop on empty message receive (#1454)Spyros Roum2022-06-06
|
* feat(scroll): edit scrollback with default editor (#1456)Cosmin Popescu2022-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * initial commit for opening the current buffer in an editor * fix(editor): take hidden panes into consideration when manipulating tiled grid * when closing an edit buffer, take the geometry of the replaced buffer from the closed buffer * if the floating panels are displayed, don't add to hidden panels the current buffer * strategy changing - put the panels inside a suppressed_panels HashMap instead of hidden_panels * Revert "strategy changing - put the panels inside a suppressed_panels HashMap instead of hidden_panels" This reverts commit c52a203a20cf4c87c147be8b9c193ed6458c1038. * remove the floating panes by moving them to the tiled_panes in hidden_panels * feat(edit): open editor to correct line and don't crash when none is set * formatting * feat(edit): use suppressed panes * style(fmt): rustfmt and logs * style(fmt): clean up unused code * test(editor): integration test for suppressing/closing suppressed pane * test(e2e): editor e2e test * style(fmt): rustfmt * feat(edit): update ui and setup * style(fmt): rustfmt * feat(config): allow configuring scrollback_editor explicitly * style(fmt): rustfmt * chore(repo): build after merging Co-authored-by: Aram Drevekenin <aram@poor.dev>
* feat(actions): dump the terminal screen into a file (#1375)Cosmin Popescu2022-05-20
| | | | | | | | | | | | | | | | | | | | | | | * Initial commit for fixing #1353 * adding a new line between the lines_above and the viewport * changes following code review * implementing a test case for the dump screen * implemented test case for dump_screen * better regexp replace * fixes following code review * style(api): remove extraneous method in plugin pane * style(fmt): rustfmt * style(tests): fix method name Co-authored-by: Aram Drevekenin <aram@poor.dev>
* fix: ensure pty_writer thread closes (#1422)Thomas Linford2022-05-17
|
* fix(pty): paste freeze with large amounts of text (#1383)Thomas Linford2022-05-16
| | | add pty writer thread to avoid screen thread blocking on unistd::write
* fix(mouse): middle or right clicks creating selection (#1372)Thomas Linford2022-05-03
|
* fix(mouse): mouse events not forwarded to plugin panes (#1369)Thomas Linford2022-05-02
| | | * fix mouse click and release events not forwarded to plugin panes
* fix(mouse): improve mouse event reporting (#1329)Thomas Linford2022-04-30
| | | | | * fix: do not rebroadcast mouse press events * fix: do not send generated mouse hold events to applications * begin selecting only if click is on terminal pane
* Fix crash on renaming a floating pane (#1323) (#1357)raphCode2022-04-29
| | | | | | | * Fix crash on renaming a floating pane (#1323) * Add rename tests for embedded and floating panes * docs(changelog): fix floating pane rename
* fix(compatibility): adjust saved cursor position on resize (#1362)Aram Drevekenin2022-04-29
| | | | | * fix(compatibility): adjust saved cursor position on resize * style(fmt): rustfmt
* Fix title widechar overflow (#1361)Aram Drevekenin2022-04-29
| | | | | * fix(ui): make sure wide characters don't cause a title overflow * style(fmt): rustfmt
* fix(compatibility): respond to bg and fg color ansi queries (#1358)Aram Drevekenin2022-04-28
| | | | | | | | | | | * fix(compatibility): respond to background/foreground queries * style(fmt): rustfmt * style(clippy): make clippy happy * style(fmt): rustfmt * style(fmt): remove unused code
* fix(stability): avoid link handler panic on bad index (#1356)Thomas Linford2022-04-28
| | | root cause needs investigating, but for now fix the crash.
* fix(ipc): empty ipc msg crash (#1351)Aram Drevekenin2022-04-27
| | | | | * fix(ipc): recover from corrupted channel state * style(fmt): rustfmt
* fix(compatibility): fix crash and don't allow cursor beyond row width (#1349)Aram Drevekenin2022-04-26
| | | | | * fix(compatibility): fix crash and don't allow cursor beyond row width * style(fmt): rustfmt
* fix: minor system improvements (#1328)Jae-Heon Ji2022-04-16
|
* feat(copy): add copy_on_select option (#1298)Thomas Linford2022-04-16
| | | | | | | | | | | | | | | | | | * feat(copy): add copy_on_select option with default value of true, keep current behavior of automatically copying selection to clipboard when done selecting. with copy_on_select = false, on mouse release the selection remains, and can be copied with the `Copy` action. * add example to default.yaml * add copy action example to default.yaml, cleanup * fix updated tab tests * fix selection changing while scrolling after release * fix clippy warnings
* fix(pty): send SIGHUP instead of SIGTERM when closing a pane (#1320)raphCode2022-04-15
| | | | | | | | SIGHUP correctly states the intention behind sending a signal when a pane is closed: The controlling terminal is "hung up". Also, SIGHUP is better suited than SIGTERM since bash ignores the latter. This led to the zombie processes observed by some users. Furthermore, SIGHUP has a special meaning in bash's job control, namely re-sending the signal to all owned jobs before exiting.
* fix(compatibility): various ansi fixes (#1324)Aram Drevekenin2022-04-14
| | | | | | | * fix(compatibility): rotate scroll region up properly * fix(compatibility): rotate scroll region down properly * style(fmt): rustfmt
* fix(multiuser): properly clear UI when a user detaches (#1317)Aram Drevekenin2022-04-13
|
* feat(signals): support XTWINOPS 14 and 16 (and query the terminal for them ↵Aram Drevekenin2022-04-12
| | | | | | | | | | | | | on startup and SIGWINCH) (#1316) * feat(signals): get pixel info from terminal emulator * feat(signals): query for pixel info on sigwinch * feat(signals): reply to csi 14t and csi 16t * style(fmt): rustfmt * style(comments): remove outdated
* refactor(tab): tiled_pane_grid (#1299)Amir Arad2022-04-12
| | | | | | | | | * use `try_` methods when applicable * fix bug * extract commonresize check logic * clean unused import
* fix(compatibility): single line scroll and other edge cases (#1307)Aram Drevekenin2022-04-09
|
* fix(compatibility): keep colors when scrolling (#1305)Aram Drevekenin2022-04-09
|
* fix(compatibility): don't crash on invalid state when padding line (#1285)Aram Drevekenin2022-03-30
|
* Revert "fix(compatibilty): do not use current cursor style in csi erase ↵Thomas Linford2022-03-29
| | | | | display (#1142)" (#1283) This reverts commit efd2fa412f0f4494795d44a10826597b257dd525.
* fix(selection): rendering of characters with unset background (#1250)Thomas Linford2022-03-28
| | | create cursor with RESET_STYLES instead of empty styles
* fix(compatibility): ansi scroll down (#1279)Aram Drevekenin2022-03-28
| | | | | * fix(compatibility): ansi scroll down * style(fmt): rustfmt
* fix(tab): catch and report errors about tty I/O (#1051)raphCode2022-03-25
| | | | | | | | | | | | | | | Quick and dirty bandaid fix to some server crashes which occur to me lately. The underlying issue seems to be a race condition somewhere when the shell in the pane exits and the tty file descriptor becomes invalid, but zellij wants to write/read it? Bug trigger: - open some panes - exit the shells in the panes by spamming Ctrl-D works best when the system only runs on a single CPU, run the following to disable all cores but one: echo 0 | sudo tee /sys/devices/system/cpu/cpu*/online Co-authored-by: raphTec <git@raphtec.net>
* fix(screen): crash in intermediate no-tabs state (#1272)Aram Drevekenin2022-03-25
| | | | | * fix(screen): log error instead of crashing in intermediate state with no active tabs * style(fmt): rustfmt
* fix(screen): handle various edge cases rather than crashing (#1269)Aram Drevekenin2022-03-25
| | | | | | | | | * fix(screen): handle various edge cases rather than crashing * style(fmt): rustfmt * fix(logging): add error logs when unable to find tab * style(fmt): rustfmt
* fix(tab): floating panes embed/fullscreen and frame color (#1267)Aram Drevekenin2022-03-24
| | | | | * fix(tab): floating panes embed/fullscreen and frame color * style(fmt): rustfmt
* fix(tab): do not crash when only floating panes are left (#1266)Aram Drevekenin2022-03-24
|
* fix(crash): ensure ZELLIJ_TMP_DIR exists when starting plugins (#1256)Thomas Linford2022-03-23
|