aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-server/src (follow)
Commit message (Collapse)AuthorAge
...
* fix(plugin): clean up the mouse PR a littleBrooks J Rady2021-10-12
|
* feat(plugin): Add mouse events for plugins (#629)qepasa2021-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(plugin): Add mouse events for plugins * Add double click support in strider * Add support for mouse clicks in tab-bar and fix bug in strider with selecting past the list of files and random double click action * continue working on mouse support for tab bar * finish tab change * fix fmt and fix bug in strider double-click * fix clippy * cleanup dbgs and logs * fix clippy * noop change to rerun e2e tests * Rebase and fix mouse click behavior in tab-bar and strider after rebase * fix fmt * remove dbgs and and comment in tab-line/main.rs * cargo fmt * Code review suggestions * rebase fix * fix clippy * fix mouse selection for tabs in tab-bar
* Preserve current umask (#777)Thomas Linford2021-10-12
| | | | | * preserve umask when starting server * make sure log files are created with explicit permissions
* feat(cli): add `kill-session` command (#745)Jae-Heon Ji2021-10-11
| | | | | | | | | | | | | | | | | | | | | | * feat: add kill-session command * style: apply formatting rules * feat: add new instruction for kill-session * feat: update feedback of kill-session * separation of command `kill-session` and `kill-all-sessions` function. * Add information to various situations * Add a question (yes or no) when executing the `kill-all-sessions` command. * chore: adjust clippy warning * fix warning wording * make rustfmt happy Co-authored-by: Aram Drevekenin <aram@poor.dev>
* refactor(clients): support multiple clients in tab/screen rendering infra (#770)Aram Drevekenin2021-10-07
|
* make sure tabs are updated when closing panes (#757)Thomas Linford2021-10-07
| | | | | | | | * call update_tabs on closing panes * screen: avoid explit render after update_tabs update_tabs causes a render anyway, by updating plugins, and after that a render is requested.
* Fix(scroll): Prevent scroll buffer overwrite (#655)Kunal Mohan2021-10-01
| | | | | | | | | * fix #306: Buffer new vte events when pane is scrolled up * Exit scroll mode after pressing [Enter] once * clear scroll of active pane when changing from scroll mode to normal or locked mode * Increase render interval
* fix(compatibility): scroll lines into scrollback when clearing screen (#747)Aram Drevekenin2021-09-28
| | | | | * fix(compatibility): scroll lines into scrollback when clearing screen * fix(tests): silently fail on channel close error
* fix(compatibility): handle cursor movements outside scroll region (#746)Aram Drevekenin2021-09-28
| | | | | * fix(compatibility): handle cursor movements outside scroll region * style(fmt): make clippy happy
* feat(ui): The status bar indicates that the panes are full screen and how ↵Kaito Akita2021-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | many hidden panes are (#450) * fix(ui): offset content after viewport construction * Added the feature to display fullscreen information on the second line of the status-bar. * fix(strider): update host mount-point * fix(plugin): create missing data directories as needed * feat(layout): specify only tab name in `tabs` section (#722) Allow specifying only the tab name in the `tabs` section - For example this is now possible: ``` tabs: - name: first parts: - direction: Vertical - direction: Vertical - name: second - name: third ``` For that the tab section defaults the direction to `direction::Horizontal` - Adds an error upon specifying a tab name inside the `parts` section of the tab-layout * docs(changelog): Solely name tab in `tabs` section * feature(release): Copy default config to the examples folder on release (#736) fixes #733 * docs(changelog): Copy example config on release * Update default config (#737) * feat(plugin): add manifest to allow for plugin configuration (#660) * feat(plugins-manifest): Add a plugins manifest to allow for more configuration of plugins * refactor(plugins-manifest): Better storage of plugin metadata in wasm_vm * fix(plugins-manifest): Inherit permissions from run configuration * refactor(plugins-manifest): Rename things for more clarity - The Plugins/Plugin structs had "Config" appended to them to clarify that they're metadata about plugins, and not the plugins themselves. - The PluginType::OncePerPane variant was renamed to be just PluginType::Pane, and the documentation clarified to explain what it is. - The "service" nomenclature was completely removed in favor of "headless". * refactor(plugins-manifest): Move security warning into start plugin * refactor(plugins-manifest): Remove hack in favor of standard method * refactor(plugins-manifest): Change display of plugin location The only time that a plugin location is displayed in Zellij is the border of the pane. Having `zellij:strider` display instead of just `strider` was a little annoying, so we're stripping out the scheme information from a locations display. * refactor(plugins-manifest): Add a little more documentation * fix(plugins-manifest): Formatting Co-authored-by: Jesse Tuchsen <not@disclosing> * chore(docs): update changelog * feat(sessions): mirrored sessions (#740) * feat(sessions): mirrored sessions * fix(tests): input units * style(fmt): make rustfmt happy * fix(tests): make mirrored sessions e2e test more robust * refactor(sessions): remove force attach * style(fmt): rustfmtify * docs(changelog): update change * fix(e2e): retry on all errors Co-authored-by: Brooks J Rady <b.j.rady@gmail.com> Co-authored-by: a-kenji <aks.kenji@protonmail.com> Co-authored-by: spacemaison <tuchsen@protonmail.com> Co-authored-by: Jesse Tuchsen <not@disclosing> Co-authored-by: Aram Drevekenin <aram@poor.dev>
* feat(sessions): mirrored sessions (#740)Aram Drevekenin2021-09-27
| | | | | | | | | | | | | | | | | * feat(sessions): mirrored sessions * fix(tests): input units * style(fmt): make rustfmt happy * fix(tests): make mirrored sessions e2e test more robust * refactor(sessions): remove force attach * style(fmt): rustfmtify * docs(changelog): update change * fix(e2e): retry on all errors
* feat(plugin): add manifest to allow for plugin configuration (#660)spacemaison2021-09-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(plugins-manifest): Add a plugins manifest to allow for more configuration of plugins * refactor(plugins-manifest): Better storage of plugin metadata in wasm_vm * fix(plugins-manifest): Inherit permissions from run configuration * refactor(plugins-manifest): Rename things for more clarity - The Plugins/Plugin structs had "Config" appended to them to clarify that they're metadata about plugins, and not the plugins themselves. - The PluginType::OncePerPane variant was renamed to be just PluginType::Pane, and the documentation clarified to explain what it is. - The "service" nomenclature was completely removed in favor of "headless". * refactor(plugins-manifest): Move security warning into start plugin * refactor(plugins-manifest): Remove hack in favor of standard method * refactor(plugins-manifest): Change display of plugin location The only time that a plugin location is displayed in Zellij is the border of the pane. Having `zellij:strider` display instead of just `strider` was a little annoying, so we're stripping out the scheme information from a locations display. * refactor(plugins-manifest): Add a little more documentation * fix(plugins-manifest): Formatting Co-authored-by: Jesse Tuchsen <not@disclosing>
* fix(plugin): create missing data directories as neededBrooks J Rady2021-09-19
|
* feat(plugin): add plugin data directories (#723)Tw2021-09-19
| | | | | | | | Every plugin will have following two directories for its use: `./data`: Plugin's own data should be saved here, every plugin will have its own directory. `/host/`: All plugins have access to this directory, it defaults to the current working directory of Zellij. Signed-off-by: Tw <tw19881113@gmail.com>
* feat(plugin): add visibility event for the plugin (#717)Tw2021-09-19
| | | | | When a tab becomes active/inactive, it send corresponding visibility event to its containing plugins. Signed-off-by: Tw <tw19881113@gmail.com>
* fix(server): fix leakage of SessionMetaData (#728)Tw2021-09-19
| | | | | | | There are different reasons leading the server thread exits, currently we only release the cached session data when client exits normally. This fix covers all the cases. Signed-off-by: Tw <tw19881113@gmail.com>
* fix(cwd-pane): Fix for cwd not being inherited when switching tabs (#729)spacemaison2021-09-17
| | | | | | | | | | | | | fixes #727 Inheriting the current working directory didn't work when switching between tabs. This happened because the event to notify the pty of an pane change was triggered when setting the active pane inside of the current tab, but switching between tabs will only cause a re-render of the newly selected tab and it's panes without setting the active pane. This was fixed by moving the event to notify the pty of the pane change into the tabs render method. Co-authored-by: Jesse Tuchsen <not@disclosing>
* Fix prompt line overflowing when resizing panes (#725)Aram Drevekenin2021-09-15
| | | | | | | | | | | * fix(wrap): do not wrap empty lines and properly place cursor when resizing * fix(wrap): truncate last blank line wraps * fix(wrap): truncate lines right after unwrapping them * refactor(grid): remove unused method * docs(changelog): document change
* fix(frames): don't pad empty pane title (#724)Paulo Coelho2021-09-15
|
* feat(screen): support specifying tab's name in layout (#715)Tw2021-09-13
| | | Signed-off-by: Tw <tw19881113@gmail.com>
* feat(cwd-pane): Keeping the cwd when opening new panes (#691)spacemaison2021-09-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(cwd-pane): Add a new trait to get the cwd of a given pid Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Allow for setting the cwd when spawning a new terminal Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Add an active_pane field to the Pty struct Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Update Pty with Tab's active pane id Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Refactor spawn_terminal to use cwd by default Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Fix tests and lints Co-authored-by: Quentin Rasmont <qrasmont@gmail.com> * feat(cwd-pane): Fix formatting * feat(cwd-pane): Refactor child pid fetching to handle errors better Instead of panicking when transfering the process id of the forked child command we just return an empty process id. * feat(cwd-pane): Add non Linux/MacOS targets for the get_cwd method. This will allow Zellij to compile on non Linux/MacOS targets without having an inherited cwd. * feat(cwd-pane): Refactor spawn_terminal method to use ChildId struct. The spawn_terminal methods been refactored to use the ChildId struct in order to clarify what the Pid's returned by it are. The documentation for the ChildId struct was improved as well. * feat(cwd-pane): Fix tests/lints Co-authored-by: Jesse Tuchsen <not@disclosing> Co-authored-by: Quentin Rasmont <qrasmont@gmail.com>
* feat(plugin): add exec_cmd helper for executing command in hostTw2021-09-09
| | | | Signed-off-by: Tw <wei.tan@intel.com> Signed-off-by: Tw <tw19881113@gmail.com>
* style(clippy): various fixes (#704)Paulo Coelho2021-09-09
| | | | | | | | * test: fix clippy unused_io_amount * chore(clippy): various clippy fixes needless_borrow, let_and_return, vec_init_then_push, unit_arg, useless_format, field_reassign_with_default, redundant_clone
* fix(borders): properly handle in-viewport borderless panes (#697)Aram Drevekenin2021-09-06
| | | | | | | | | | | * fix(borders): properly handle in-viewport borderless panes * style(fmt): make clippy happy * fix(borders): properly handle panes outside the viewport on startup * style(fmt): not this time, clippy * docs(changelog): document change
* fix(borders): properly handle wide chars in pane titles (#698)Aram Drevekenin2021-09-06
| | | | | | | | | | | * work * fix(frame): properly handle widechars in frame titles * style(fmt): make rustfmt happy * fix(truncate): do not reverse second part of string (oops) * docs(changelog): document change
* fix(tabs): use tab index for tab name (#686)Paulo Coelho2021-09-06
|
* fix(tabs): force render by index rather than by position (#684)Aram Drevekenin2021-09-01
| | | | | * fix(tabs): force render by index rather than by position * docs(changelog): document change
* fix(ui): offset content after viewport constructionBrooks Rady2021-08-31
|
* fix(ui): resize correctly without pane-frames (#673)Brooks Rady2021-08-30
|
* refactor(tab): use borderless instead of selectable where appropriate (#672)Aram Drevekenin2021-08-30
| | | | | | | | | * next pane position => next terminal position * borderless * update comment * style(fmt): make rustfmt happy
* fix(ui): render correctly after tab closing (#670)Brooks Rady2021-08-30
| | | | | * fix(ui): render correctly after tab closing * That was a silly bug...
* feat(ui): overhauled resize and layout systemsBrooks Rady2021-08-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * refactor(panes): move to parametric pane sizes * Fixed the simpler errors by casting to usize * The least I can do is pass the formatting check... * Move to stable toolchain * Well, it compiles? * And now it doesn't! ;) * Baseline functionality with the new Dimension type * Working POC for percent-based resizing * REVERT THIS COMMIT – DELETES TESTS * Perfected the discrete resize algorithm * Fixed fixed-size panes * Basic bidirectional resize * feat(resize): finalised parametric resize algorithm * Reduce the logging level a bit * Fixed nested layouts using percents * Bug squishing for implicit sizing * Here is a funky (read: rubbish) rounding approach * And now it's gone again! * Improve discretisation algorithm to fix rounding errors * Fix the last layout bug (maybe?) * Mixed explicit and implied percents work now * Let's pretend that didn't happen... * Make things a bit less crashy * Crash slightly more for now (to find bugs) * Manaually splitting of panes works now * Start moving to percent-based resizes * Everything but fullscreen seems to be working * Fix compilatation errors * Culled a massive amount of border code * Why not pause to please rustfmt? * Turns out I was still missing a few tests... * Bringing back even more tests! * Fix tests and pane boarders * Fix the resize system without gaps * Fix content offset * Fixed a bug with pane closing * Add a hack to fix setting of the viewport * Fix toggling between shared borders and frames * fix(tests): make e2e properly use PaneGeom * style(fmt): make rustfmt happy * Revert unintentional rounding of borders * Purge some old borderless stuff * Fix busted tab-bar shrinking * Update E2E tests * Finish implementing fullscreen! * Don't crash anymore? * Fix (almost) all tests * Fix a lack of tab-stops * All tests passing * I really can't be bothered to debug a CI issue * Tie up loose ends * Knock out some lingering FIXMEs * Continue to clean things up * Change some naming and address FIXMEs * Cull more code + FIXMEs * Refactor of the resize system + polish * Only draw frames when absolutely necessary * Fix the tab-bar crash * Fix rendering of boarders on reattach * Fix resizing at small pane sizes * Deduplicate code in the layout system * Update tab-bar WASM * Fixed the pinching of panes during resize * Unexpose needlessly public type * Add back a lost test * Re-add tab tests and get them to compile * All tabs need layouts * Start fixing tests + bug in main * Stabilize the resize algorithm rounding * All tests from main are now passing * Cull more dead code
* fix(plugin): fix set_timeout() host functionBrooks Rady2021-08-27
|\ | | | | fix: add missing to_plugin channel initialization (#664)
| * fix: add missing to_plugin channel initialization (#664)Tw2021-08-27
| | | | | | | | Signed-off-by: Tw <wei.tan@intel.com>
* | Merge pull request #625 from a-kenji/tab-layouta-kenji2021-08-26
|\ \ | |/ |/| Add `tabs` to `layouts`
| * Split tab-layout into `template` & `tabs` sectiona-kenji2021-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * adjust example layouts and move them from `./example` to `./example/layouts` * simplify the deserialization of the layout * layouts are now constructed as follows: ``` --- template: direction: Horizontal parts: - direction: Vertical borderless: true split_size: Fixed: 1 run: plugin: tab-bar - direction: Vertical body: true # <== The body section specifies the position of the # inserted tab - direction: Vertical borderless: true split_size: Fixed: 2 run: plugin: status-bar tabs: - direction: Vertical - direction: Vertical ```
| * Merge branch 'tab-layout' of https://github.com/a-kenji/zellij into ↵Aram Drevekenin2021-08-24
| |\ | | | | | | | | | a-kenji-tab-layout
| | * Add `template` section in `layout` filea-kenji2021-08-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It works as follows: ``` --- template: direction: Horizontal parts: - direction: Vertical split_size: Fixed: 1 run: plugin: tab-bar - direction: Vertical body: true - direction: Vertical split_size: Fixed: 2 run: plugin: status-bar tabs: - direction: Vertical ``` The tabs are created in the body section of the template.
| | * Merge branch 'main' of https://github.com/zellij-org/zellij into tab-layouta-kenji2021-08-01
| | |\
| | * | !fixup cargo fmta-kenji2021-07-23
| | | |
| | * | Merge branch 'main' of https://github.com/zellij-org/zellij into tab-layouta-kenji2021-07-23
| | |\ \
| | * | | Add `tabs` to `layouts`a-kenji2021-07-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fixes #603, fixes #349 * The layout has now a unique `tabs` section, that can be used, like the `parts` section, everything that is not inside the tabs section is assumed to be present on every single tab that is opened. This is a BREAKING CHANGE for people that use custom `layouts` already, since the `tabs` section is not optional - for clarity and intentionality reasons. The functionality to specify multiple tabs is already there, but is still gated behind a panic, until #621 is fixed. So for now one tab can be specified to load on startup. * The `NewTab` action can optionally be bound to open a layout that is assumed to be in the new `tabs` section This is a BREAKING CHANGE for people that have the `NewTab` action already bound in the config file: ``` - action: [NewTab, ] key: [F: 5,] ``` must now be specified as: ``` - action: [NewTab: ,] key: [F: 5,] ``` Optionally a layout that should be opened on the new tab can be specified: ``` - action: [NewTab: { direction: Vertical, parts: [ {direction: Horizontal, split_size: {Percent: 50}}, {direction: Horizontal, run: {command: {cmd: "htop"}}},], key: [F: 6,] ``` or: ``` - action: [NewTab: {direction: Vertical, run: {command: {cmd: "htop"} }},] key: [F: 7,] ``` or ``` - action: [NewTab: { direction: Vertical, parts: [ {direction: Vertical, split_size: {Percent: 25},run: {plugin: "strider" }}, {direction: Horizontal}],}, MoveFocus: Left,] key: [F: 8,] ```
* | | | | fix(compatibility): maintain original cursor shape (#659)Aram Drevekenin2021-08-25
| | | | | | | | | | | | | | | | | | | | | | | | | * fix(compatibility): maintain original cursor shape * docs(changelog): document change
* | | | | fix(compatibility): only send bracketed paste to terminals requesting it (#658)Aram Drevekenin2021-08-24
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | * fix(compatibility): only send bracketed paste to terminals requesting it * docs(changelog): update change * style(fmt): make rustfmt happy
* | | | Merge pull request #622 from sagittarius-a/feature/go-to-last-taba-kenji2021-08-23
|\ \ \ \ | | | | | | | | | | feat(tab): add keybind to go to last tab visited
| * | | | fix cargo clippy lintSagittarius-a2021-08-03
| | | | |
| * | | | store tab history in a stack-like data structureSagittarius-a2021-08-03
| | | | |
| * | | | fix: fix clippy warningSagittarius-a2021-08-03
| | | | |
| * | | | fix: rename action to ToggleTabSagittarius-a2021-08-03
| | | | |
| * | | | fix: fix toggle to previous tab when deleting tabsSagittarius-a2021-08-03
| | | | |