Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(plugins): add configurable black background for ui components #3681

Merged

Conversation

dj95
Copy link
Contributor

@dj95 dj95 commented Oct 15, 2024

In #3658 (comment) we've discovered, that terminals handle transparency different (even with different platforms like linux and macOS!).

Thus it would be good to give plugin maintainers the ability to retain at least the transparent background in their plugins. In order to implement this, I've made one small addition to the line protocol, but very carefully to retain backwards compatibility.

Demo

Screenshot 2024-10-15 at 19 24 07

Transparent

If a utf-8 separated byte list begins with a clear-text z, it will be considered "transparent". Eg.

<ESC>Pzribbon;z114,105,98,98,111,110,32,49<ESC>\

I've just implemented it to the Text and NestedListItem for now as a kind of proof-of-concept. In case you agree with this small addition, I can implement the flag also to the remaining components.

Please feel also free to close this pull request, in case you do not agree to this solution. I can also understand if you don't want to make changes to the protocol :)

@imsnif
Copy link
Member

imsnif commented Oct 15, 2024

Hey, thanks for whipping this up! Let's leave this on the back burner for now as an alternative. We might want to add explicit background colors to UI components in the future and since this is a protocol, it would be better to give it some more thought.

I'd rather solve this issue in its core if possible. My current thinking is to revert the background color PR and then fix things by removing the background color of the status-bar and tab-bar entirely. Assuming we can find a way to get the ribbons to look natural without a background (not sure if this is possible). Would you like to give that a shot?

@dj95
Copy link
Contributor Author

dj95 commented Oct 16, 2024

No worries. Defining the background color would also be a cool use case. Especially when you then can omit it to create transparency.

For the latter one, I'm not sure if it's possible. After some research in various terminals and issue trackers, it does not seem to be possible in a consistent way. The only solution I could find is the current behaviour of zellij with specific terminals (kitty, alacritty, rio), but not for all of them.

Another solution would be to have a feature toggle for specific terminals to fix the transparent behaviour for powerline, such that you can toggle the commit you want to revert. But I'm not sure if it will be too hard to maintain or too confusing.


For alacritty, I found out that you need to configure the behaviour. It's now also added to the table of the previous discussion.

@imsnif
Copy link
Member

imsnif commented Oct 16, 2024

Alright, thanks for looking into this. Personally I'm not a fan of having this be configurable. This feels to me like one of those "offloading complexity on to the user" sort of things. IMO we should find the "right" way to behave. I'm leaning toward reverting the commit and then specifying in the docs that a theme's "black" color should also be the terminal background (until the theme overhaul PR is merged and then things will be much clearer). I want to give this some more thought though - maybe I'll come up with something else (or you'll have another idea).

@imsnif
Copy link
Member

imsnif commented Oct 18, 2024

Hey @dj95 - I thought about this some more and decided to go with this direction after all with a minor change (see below).

My rationale: the best way would be to "do the right thing" and have all UI components use the terminal's background and be transparent if the terminal is transparent (which Zellij cannot know about). Since this is not possible (as you discovered in the linked issue), I think the second best thing would be to have plugin authors deal with this issue. They know best whether their component should have a background (eg. when dealing with bars) or should defer to the terminal's background (eg. when representing text, titles, items in lists, etc.)

I feel though that the basic use-case should be deferring to the terminal's background, with an explicit "theme's black" background being the exception. So I'd like to go forward with this change but reverse the config flag. What do you think, would you like to adjust this PR? (also, full disclaimer: I have not looked at the code for this, so might have more comments once this is changed).

@dj95
Copy link
Contributor Author

dj95 commented Oct 18, 2024

Hi @imsnif, sure. I can go forward with it.

So you mean, that there's not a .transparent() function for text, but some sort of .bg_black()? I think that's a good addition, as it does not break the current functionality and plugin API.

Also, feel free to review it afterwards, I'm completely open for any feedback :)

@dj95
Copy link
Contributor Author

dj95 commented Oct 18, 2024

The flag is now implemented for text, nested lists and tables. I've also added a precedence, such that the selected() flag has a higher priority, than .bg_black().

However, I'm not sure what to do with the ribbons. I've tried several things there. We could set the transparent background on the ending symbol, but not as foreground on the first symbol. But that looks a little bit inconsistent and would break current behaviour.

Here's a test screenshot of the current state:

Screenshot 2024-10-18 at 18 20 52

@dj95 dj95 changed the title Draft: feat(plugins): add transparent background for ui components feat(plugins): add transparent background for ui components Oct 18, 2024
@dj95 dj95 changed the title feat(plugins): add transparent background for ui components feat(plugins): add configurable black background for ui components Oct 18, 2024
@imsnif
Copy link
Member

imsnif commented Oct 21, 2024

Hey @dj95 - thanks for putting this together!

A few points:

  1. Instead of bg_black, let's call it opaque. We might want to add background parsing in the future and since this is a protocol we'll need to still have it make sense :)
  2. The precedence with selected is great - nice touch! Can we do it on the server side too so the API isn't solely in-charge of it? (I think it's that way in most places but not all)
  3. About ribbons: I don't think we have anything to do here. Let's have them be opaque and leave it at that.
  4. Would you like to move the built-in components to use this new API? I think this will fix a lot of problems in some themes. The guideline is: if it's in a bar (eg. tab-bar or status-bar) it should be opaque, otherwise it should be transparent. Ribbons should ideally color the rest of the line to be a black-background bar (this should be done with ANSI from within the plugin, I think the status-bar does this... something like \033[46mI am a ribbon\033[K. You can test this out in your terminal with: echo -e "\033[46mI am a ribbon\033[K"

Let me know if you want more specific pointers (especially regarding 4), I can look up specific places in the code where this is done.

@imsnif imsnif mentioned this pull request Oct 21, 2024
@dj95
Copy link
Contributor Author

dj95 commented Oct 23, 2024

Thanks a lot for your feedback. I've tried to implement it everything.

  1. renamed bg_black() to opaque (which I really like!)
  2. precedence handling is now also implemented in the server. The only thing there is, that selected and opaque needs to be received in the correct order, as it's a line protocol. I can also try to implement the for various combinations, if you'd like to (zx and xz; right now only xz will work correctly).
  3. Left them, as they are
  4. Implemented the change in the tab-bar, session-manager and plugin-manager. status-bar and compact-bar seem to already have the completely opaque bar implemented. Strider does not have any status bars or ribbons, if I saw it correctly.

@imsnif
Copy link
Member

imsnif commented Oct 23, 2024

Hey, great work!

I played around with it and have some additions ( I test these by setting the theme's black color to something distinct from my terminal background, so everything looks horrible - sorry). I don't remember if these are implemented as UI components or self rolled, if it's the latter we can forgo them (though if you'd like to do them anyway, that'd be awesome - but it can be a lot of work)

  1. The new "one-line ui", we need to have the primary and secondary modifiers have a black background (first screenshot) and also the mode shortcuts (second screenshot)
    img-2024-10-23-173718
    img-2024-10-23-174045
    img-2024-10-23-174356

  2. The tab bar in the configuration:
    img-2024-10-23-174117
    img-2024-10-23-174221

Otherwise, about the protocol - let's enforce explicit order. I'll make sure to document it.

@dj95
Copy link
Contributor Author

dj95 commented Oct 24, 2024

Hey,

one-line UI and configuration plugin are now fixed. I've also rebased the MR on the new main changes.

@imsnif
Copy link
Member

imsnif commented Oct 24, 2024

Fantastic (and quick!) job. Thank you!

@imsnif imsnif merged commit 0cd6d5f into zellij-org:main Oct 24, 2024
6 checks passed
@dj95 dj95 deleted the feature/transparent-background-for-ui-components branch October 24, 2024 16:27
Tomcat-42 pushed a commit to Tomcat-42/zellij that referenced this pull request Nov 9, 2024
…ellij-org#3681)

* feat(plugins): add transparent background for text and nested_list

* chore: fix formatting issue

* feat: invert flag behaviour

* feat: implement bg_black handling for table cells

* fix: order of selected and bg_black in protocol

* chore: rename from bg_black to opaque

* fix: explicit selected, if opaque and selected for text

* chore: fix formatting issues

* feat: opaque tab-bar

* feat: opaque session-manager bars

* feat: opaque ribbon in plugin manager

* feat: opaque one-line ui

* feat: opaque tab-bar in configuration plugin
imsnif pushed a commit to AutumnMeowMeow/zellij that referenced this pull request Dec 31, 2024
…ellij-org#3681)

* feat(plugins): add transparent background for text and nested_list

* chore: fix formatting issue

* feat: invert flag behaviour

* feat: implement bg_black handling for table cells

* fix: order of selected and bg_black in protocol

* chore: rename from bg_black to opaque

* fix: explicit selected, if opaque and selected for text

* chore: fix formatting issues

* feat: opaque tab-bar

* feat: opaque session-manager bars

* feat: opaque ribbon in plugin manager

* feat: opaque one-line ui

* feat: opaque tab-bar in configuration plugin
imsnif added a commit that referenced this pull request Jan 14, 2025
* Switch to multi-valued mouse buttons and stub for remembering old mouse button state

* Stubs for passing all mouse events from user-facing terminal to server
side terminal(s) in, including protobuf.

Removed "held" mouse actions.

Currently commented out calls to left/middle/right-click/release --
need to fix this though, as selection/copy-paste are broken too.

cargo build/test/run works OK.

cargo xtask build/test/run fails, unable to find crate input::mouse.

* 'cargo xtask build' working using refactored functions.

* fix(plugins): various cwd fixes (#3545)

* fix(plugins): various cwd fixes

* fix tests

* docs(changelog): floating_panes cwd fix

* feat(plugins): rerun_command_pane API (#3546)

* feat(plugins): rerun_command_pane API

* fix tests

* docs(changelog): rerun command pane plugin API

* feat(plugins): command pane re-run event (#3553)

* docs(changelog): CommandPaneReRun plugin event

* feat(ux): first run setup-wizard (#3556)

* 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

* docs(changelog): first run setup wizard

* feat(ux): reload config at runtime (#3558)

* feat(ux): reload config at runtime

* style(fmt): rustfmt

* docs(changelog): reload config at runtime

* feat(ux): change themes at runtime (#3559)

* docs(changelog): change themes at runtime

* feat(plugins): API to temporarily bind keys to send a message to a specific plugin id (#3561)

* docs(changelog): message to specific plugins API

* feat(ux): reload config options at runtime (#3564)

* change simplified_ui at runtime

* change default_shell at runtime

* change pane_frames (from config) at runtime

* all other options

* some refactoring

* style(fmt): rustfmt

* docs(changelog): reload config options at runtime

* feat(plugins): add plugin APIs to affect other panes (#3576)

* resize_pane_with_id and close_pane_with_id

* focus_pane_with_id and edit_scrollback_for_pane_with_id

* write_to_pane_id and write_chars_to_pane_id

* lots more commands

* style(fmt): rustfmt

* docs(changelog): new plugin apis

* docs(readme): update sponsors

* feat(plugins): APIs to break multiple panes into a new tab or an existing 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

* docs(changelog): break multiple panes APIs

* feat(config): allow loading background plugins on startup (#3616)

* remove old partial implementation

* feat(plugins): allow loading background plugins on startup

* add e2e test

* update config

* udpate config merging

* style(fmt): rustfmt

* docs(changelog): background plugins

* feat(ui): built-in plugin manager (#3633)

* 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

* docs(changelog): plugin-manager

* fix(resurrection): various serialization issues (#3636)

* fix(serialization): use kdl-rs for serialization

* style(fmt): remove dead code

* tests(serialization): update snapshots

* style(fmt): rustfmt

* docs(changelog): resurrection fixes

* fix(http): web requests (#3643)

* docs(changelog): http fix

* feat(cli): make --layout idempotent(-ish) (#3650)

* feat(cli): if inside a session, apply --layout to the session

* fix(screen): some focusing races when switching tab focus

* style(fmt): rustfmt

* docs(changelog): improve --layout flag

* fix(plugins): handle race when setting plugin selectable (#3651)

* docs(changelog): plugin selectable race

* feat(cli): show CACHE_DIR in `zellij setup --check` (#3652)

* docs(changelog): add cache dir to setup

* fix(ui): various pane name fixes (#3653)

* docs(changelog): pane name fixes

* fix(ux): only damage the relevant swap layout layer when resizing panes (#3654)

* docs(changelog): swap layout damage fix

* fix(ui): set background color for UI components according to theme (#3658)

* docs(changelog): ui component fix

* fix(tab): recover from crash when resizing panes (#3659)

* chore(git): Add plugin’s issue templates (#3621)

Co-authored-by: Zykino <3809938+Zykino@users.noreply.github.com>

* fix(ux): make sure esc works as expected in unlock-first (#3660)

* fix(ux): make sure esc always drops us back to base mode

* fix(ux): add locked

* fix(plugins): handle concurrent http downloads (#3664)

* docs(changelog): concurrent http plugin downloads

* fix(plugins): various plugin api and other fixes (#3665)

* fix(plugins): do not allow focusing an unselectable pane

* fix(folders): make sure config and cache folders exist on app start

* docs(changelog): plugin fixes

* fix(plugins): force use curl system lib on macOS (#3668)

* docs(changelog): fix http requests for macos

* fix(resurrection): plugin alias resurrection (#3673)

* fix(resurrection): make sure plugin aliases are serialized properly

* style(fmt): rustfmt

* docs(changelog): resurrection alias fix

* fix(plugins): do not allow attaching to the same session (#3674)

* docs(changelog): fix plugins attaching to same session

* fix(plugins): allow switching to a new session with cwd without specifying a layout (#3676)

* docs(changelog): switch_session_with_cwd plugin api

* fix(config): watch/update config given with --config when appropriate (#3678)

* docs(changelog): reload config flag fix

* feat(plugins): rebind keys api (#3680)

* feat(plugins): add API to explicitly unbind/rebind specific keys in specific modes

* style(fmt): rustfmt

* docs(changelog): rebind keys plugin api

* fix(client): repeat retry screen instruction (#3570)

* docs(changelog): sixel fix

* feat(ui): rebind keys UI (#3686)

* rebind action working

* functional ui

* responsive ui

* some refactoring

* properly reset ui state

* minor fixes

* style(fmt): rustfmt

* style(fmt): remove dead code

* chore(deps): update to Wasmtime 21.0.2 (#3685)

This fixes a race condition which causes occasional crashes and may
enable a sandbox escape:

<GHSA-7qmx-3fpx-r45m>

* docs(changelog): wasmtime patch upgrade

* feat(plugins): add API to list clients, their focused panes and running commands/plugins (#3687)

* fix(list-clients): properly show client info after a tab was closed

* feat(plugins): add API to list clients, their focused panes and running commands/plugins

* style(fmt): rustfmt

* docs(changelog): list-clients plugin api

* docs(changelog): rebind keys UI

* feat(ui): bring back fullscreen indication (#3688)

* feat(ui): bring back fullscreen indication

* fix e2e tests

* docs(changelog): bring back fullscreen indication

* fix(ux): new interface/configuration touch-ups (#3691)

* fix(ui): copy to clipboard in new ui

* fix(ux): allow navigating out of scrolled pane

* style(fmt): rustfmt

* docs(changelog): ui touch-ups

* fix(plugins): rebind insert (#3692)

* fix(tab): recover from closing a pane outside the viewport

* remap insert in plugin manager

* fix(plugins): remap insert key

* style(fmt): rustfmt

* docs(changelog): insert rebind

* fix(plugins): make sure to always render on first resize (#3693)

* fix(plugins): make sure to always render on first resize

* style(fmt): rustfmt

* fix tests

* docs(changelog): plugins first-render fix

* fix(terminal): recover from partial line drop (#3695)

* docs(changelog): grid fix

* fix(configuration): leave notification up when base mode changes (#3696)

* fix(layouts): suspend commands in remote layouts (#3697)

* fix(layouts): suspend commands in remote layouts

* style(fmt): rustfmt

* docs(changelog): suspend commands in remote layouts

* feat(plugins): add configurable black background for ui components (#3681)

* feat(plugins): add transparent background for text and nested_list

* chore: fix formatting issue

* feat: invert flag behaviour

* feat: implement bg_black handling for table cells

* fix: order of selected and bg_black in protocol

* chore: rename from bg_black to opaque

* fix: explicit selected, if opaque and selected for text

* chore: fix formatting issues

* feat: opaque tab-bar

* feat: opaque session-manager bars

* feat: opaque ribbon in plugin manager

* feat: opaque one-line ui

* feat: opaque tab-bar in configuration plugin

* style(fmt): various cleanups (#3698)

* fix(configuration): rounding error in ui

* style(fmt): remove warnings

* style(fmt): rustfmt

* docs(changelog): ui components bg fix

* feat(theme): add theme ao (#3478)

* feat(themes): add atelier sulphurpool theme (#3596)

* feat(themes): added ayu mirage, light, and dark themes (#3567)

Co-authored-by: Evan Lauer <evanlauer@u.boisestate.edu>

* feat(themes): add Vesper theme (#3443)

* feat(themes): add night-owl theme (#3393)

Co-authored-by: Bruno Mesquita <bmesquita@atlassian.com>

* feat: add iceberg dark/light themes (#3323)

* theme: add onedark theme to the available themes (#3313)

Onedark is a popular theme from Atom text editor. 

I've used these sources as the reference for implementing the theme in zellij.
https://github.com/joshdick/onedark.vim
https://www.figma.com/community/file/1137445418485757476/atom-one-dark-color-palette

* feat(themes): add basic ANSI theme (#3308)

* fix(theme): fix for gruvbox light and dark (#3255)

the previous themes do not have the correct colors and aren't great
for the eyes. when selecting e.g. to copy text, it uses
red for light theme and the same bg for dark theme.

the previous light theme is not even a light theme so I also
fixed that as well.

Signed-off-by: Soc Virnyl Estela <contact@uncomfyhalomacro.pl>

* feat(themes): create lucario.kdl (#3030)

* docs(changelog): new themes

* style(fmt): remove warnings (#3701)

* fix: (tabs) move to next tab if moving to next pane from fullscreen pane (#3498)

Co-authored-by: Vasilis Manolopoulos <vmanolop@gmail.comh>

* docs(changelog): MoveFocusOrTab fullscreen awareness

* docs(readme): add https to curl download

* fix(ux): configuration fixes (#3713)

* 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

* docs(changelog): configuration fixes

* fix(ux): forward keys to pane in locked mode and base mode rather than hard-coded normal mode (#3715)

* fix(keybindings): only forward clear keys in locked mode and default mode

* style(fmt): rustfmt

* docs(changelog): base mode keybindings fix

* chore(release): v0.41.0

* HOTFIX: default plugins generic compilation issue

* HOTFIX: patch version

* chore(release): v0.41.1

* chore(repo): bump development version

* fix(input): remove support for extra modifiers (#3725)

* docs(changelog): kitty input fix

* fix(input): refix ctrl-j (#3746)

* fix(input): refix ctrl-j

* fix e2e tests

* docs(changelog): refix ctrl-j

* fix(plugins): cwd and usability fixes (#3749)

* fix(plugins): maintain cwd between plugin reloads

* fix(plugin-manager): default to loading plugins in the foreground and allow sending space in configuration

* docs(changelog): plugin fixes

* fix(output-buffer): truncate grid height when not rendering it fully (#3750)

* fix(output-buffer): truncate grid height when not rendering it fully

* also fix for cases where the changed lines are not contiguous

* docs(changelog): output-buffer fix

* fix(tabs): maintain event order for MoveTab (#3758)

* fix(tabs): maintain event order for MoveTab

* style(fmt): rustfmt

* docs(changelog): event ordering fix

* fix(plugins): do not open extra instances of aliases (#3759)

* docs(changelog): do not duplicate built-in plugins

* fix(terminal): reset kitty keyboard support when resetting terminal state (#3760)

* docs(changelog): kitty reset fix

* fix(config): crash if unable to watch config folder (#3761)

* docs(changelog): config dir crash fix

* fix(statup): slow startup on some occasions (#3767)

* add debug logs

* add log messages

* some more logs and possible fix?

* remove logs

* style(fmt): rustfmt

* remove comment

* docs(changelog): occasional slow startup fix

* fix(panes): handle various invalid state situations (#3776)

* docs(changelog): invalid state handling

* chore: add vendored_curl feature (#3766)

* docs(changelog): vendored curl option

* fix(ux): change plugin manager shortcut (#3779)

* docs(changelog): shortcut change

* fix(screen): send PaneClosed event to plugins also when closing the whole tab (#3781)

* docs(changelog): pane-closed event

* feat(plugins): add /cache folder (#3787)

* feat(plugins): add /cache folder

* style(fmt): rustfmt

* docs(changelog): plugin cache folder

* docs(changelog): plugin cache folder url

* chore(package): vendor common_path (#3780)

* vendoring common_path

* add original license to common_path

* Clarify license scope

* refactor: remove rand dependency

---------

Co-authored-by: Aram Drevekenin <aram@poor.dev>

* docs(changelog): vendor common_path

* fix(plugins): derive hash and ord for PaneId (#3790)

* docs(changelog): derive hash and ord for paneid

* style(fmt): remove warnings

* chore(version): set patch version

* chore(release): v0.41.2

* chore(repo): bump development version

* chore(repo): fix typo in lock file

* fix(plugins): properly focus pane after tab was closed (#3797)

* fix(plugins): properly focus pane after tab was closed

* style(fmt): rustfmt

* docs(changelog): focus_pane_with_id fix

* fix(plugins): properly pad UI elements when they have a background (#3806)

* fix(plugins): mark selected background up until component width

* style(fmt): rustfmt

* docs(changelog): ui component padding

* feat(plugins): allow changing the plugin's `/host` folder (under a new permission) (#3827)

* working without notifying plugins

* permissions and events

* cleanups and formatting

* style(fmt): rustfmt

* docs(changelog): allow plugins to change host folder

* chore(repo): add funding.json (#3838)

* chore(repo): add funding.json

* update funding json url

* fix(plugins): do not detach if using a slash in a session name (#3839)

* docs(changelog): slash detach fix

* fix(plugins): properly focus plugin after it was hidden (#3841)

* docs(changelog): plugin hidden focus fix

* fix(screen): off by 1 error when focusing layout tab (#3844)

* docs(changelog): layout tab focus fix

* fix(multiuser): properly clear fake cursors (#3845)

* docs(changelog): multiplayer cursor fix

* feat(ux): pin floating panes (#3876)

* working

* ui indication

* add keybinding

* add to plugin panes

* fix with multiple cursors

* toggle with the mouse

* fix e2e tests and add new one

* some cleanups

* add to layouts

* make mouse click more lenient

* allow setting a new floating pane as pinned

* make toggle work throughthe command line

* add to plugin api

* get tests to pass

* style(fmt): rustfmt

* docs(changelog): pin floating panes

* fix(layout-applier): logical index pane sorting (#3893)

* initial draft

* working with floating panes as well

* use the same method for applying an initial layout to tiled panes

* some refactoring

* all code paths working with logical positioning fallback!

* get tests to compile

* get e2e tests to pass

* fix e2e remote runner

* breadth-first layout sorting

* fix some bugs

* style(fmt): rustfmt

* style(fmt): remove comments

* docs(changelog): logical index pane sorting

* fix(terminal): mode 2026 feature detection response (#3884)

The response to the 2026 mode query was missing a `?` character.

The response should be of the format `CSI ? 2026 ; N $ y` where N can
be any value in the range 0-4 inclusive.

References:

https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036
https://vt100.net/docs/vt510-rm/DECRPM.html

* docs(changelog): synchronized rendering query response

* fix(terminal): cursor overflow (#3894)

* docs(changelog): cursor overflow fix

* fix(ux): make the Zellij mouse interaction work

* fix(rendering): only render if selection/floating-pane position was changed

* do not clear copied to clipboard message on mouse motion

* various functionality fixes

* fix tests

* fixes and cleanups

* style(fmt): rustfmt

* fix(mouse): only report state to plugins when it changed

* fix(plugins): send mouse clicks to inactive panes

* tests: any event tracking in panes

* style(fmt): rustfmt

* style: remove unused stuff

---------

Signed-off-by: Soc Virnyl Estela <contact@uncomfyhalomacro.pl>
Co-authored-by: Autumn Lamonte <AutumnWalksTheLake@gmail.com>
Co-authored-by: Aram Drevekenin <aram@poor.dev>
Co-authored-by: Zykino <Zykino@users.noreply.github.com>
Co-authored-by: Zykino <3809938+Zykino@users.noreply.github.com>
Co-authored-by: Daniel Jankowski <Daniel.Jankowski@rub.de>
Co-authored-by: Manuel de Prada Corral <6536835+manueldeprada@users.noreply.github.com>
Co-authored-by: bjorn3 <17426603+bjorn3@users.noreply.github.com>
Co-authored-by: Michael Jones <yardquit@pm.me>
Co-authored-by: carl <44021312+achristmascarl@users.noreply.github.com>
Co-authored-by: Evthestrike <62308745+Evthestrike@users.noreply.github.com>
Co-authored-by: Evan Lauer <evanlauer@u.boisestate.edu>
Co-authored-by: Rafael Bardini <rbardini@users.noreply.github.com>
Co-authored-by: Bruno Mesquita <brunocmesquita@gmail.com>
Co-authored-by: Bruno Mesquita <bmesquita@atlassian.com>
Co-authored-by: Chromo-residuum-opec <x@matte.fyi>
Co-authored-by: Shone Binu <62597277+shonebinu@users.noreply.github.com>
Co-authored-by: Mike Greiling <mike@pixelcog.com>
Co-authored-by: Soc Virnyl S. Estela <socvirnyl.estela+github@uncomfyhalomacro.pl>
Co-authored-by: Eric Raio <43896+ericraio@users.noreply.github.com>
Co-authored-by: Vasileios Manolopoulos <44965914+VasilisManol@users.noreply.github.com>
Co-authored-by: Vasilis Manolopoulos <vmanolop@gmail.comh>
Co-authored-by: tranzystorekk <tranzystorek.io@protonmail.com>
Co-authored-by: s1syph0s <34000276+s1syph0s@users.noreply.github.com>
Co-authored-by: Darren Burns <darrenburns@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants