zellij-org / zellij

A terminal workspace with batteries included
https://zellij.dev
MIT License
22.01k stars 671 forks source link

Tmux General Compatibility in Zellij: #376

Open SaintFenix opened 3 years ago

SaintFenix commented 3 years ago

Tmux General Compatibility list:

This issue will exist to document the equivalent features that tmux has that Zellij currently does not, and will exist to allow discussion for what features should be ported and which shouldn't be. (Even if ultimately all of them are implemented.)

It will also serve as a semi-organizational way to get Issues, Pull Requests, and other discussions together that already address these features.

This was discussed briefly in PR #362 with @khs26

=============================================== Should anyone notice an Issue, or Pull Request that aids in this, that is not mentioned here, please post it, and I'll add it to this post. ===============================================

Tmux-Zellij Equivalency Sheet:

Here is the list of tmux keybinds listing all the actionable features that a user can use while using tmux, and their equivalent in Zellij if one exists, and most importantly noting which ones don't. It is also a numbered list so that issues and Pull Requests can be create to address those that haven't been addressed.

``` ########################################### List of Tmux Commands as implemented in tmux.yaml for Zellij ########################################################### ######################################################### Commands were gathered from tmux V. 3.1c-1 ############################################################### #Shortcuts #Actions: #Equivalents: #------------------------------------------------------------------------------------------------------------------------------------------------------------ 01# C-b C-b Send the prefix key Doesn't exist in Zellij Currently. (passes prefix keybind to the application that tmux has open.) 02# C-b C-o Rotate through the panes Not Implemented in Zellij. 03# C-b C-z Suspend the current client Sessions are a planned implementation in Zellij, but not currently implemented. 04# C-b Space Select next layout A swap layout function, doesn't exist in Zellij Currently. 05# C-b ! Break pane to a new window A collapse pane into a new tab function, doesn't exist in Zellij Currently. 06# C-b " Split window vertically Implemented. 07# C-b # List all paste buffers A paste buffer doesn't exist in Zellij Currently. 08# C-b $ Rename current session Planned implementation in Zellij, but not currently. 09# C-b % Split window horizontally Implemented. 10# C-b & Kill current window Implemented, as kill currently focused tab instead. 11# C-b ' Prompt for window index to select A tab index doesn't exist in Zellij Currently. 12# C-b ( Switch to previous client Sessions are a planned implementation in Zellij, but not currently implemented. 13# C-b ) Switch to next client Sessions are a planned implementation in Zellij, but not currently implemented. 14# C-b , Rename current window Implemented. 15# C-b - Delete the most recent paste buffer A paste buffer doesn't exist in Zellij Currently. 16# C-b . Move the current window A tab index doesn't exist in Zellij Currently. 17# C-b / Describe key binding This displays what a keybind does briefly in tmux, probably no need to implement in Zellij. 18# C-b 0 Select window 0 Implemented. 19# C-b 1 Select window 1 Implemented. 20# C-b 2 Select window 2 Implemented. 21# C-b 3 Select window 3 Implemented. 22# C-b 4 Select window 4 Implemented. 23# C-b 5 Select window 5 Implemented. 24# C-b 6 Select window 6 Implemented. 25# C-b 7 Select window 7 Implemented. 26# C-b 8 Select window 8 Implemented. 27# C-b 9 Select window 9 Implemented. 28# C-b : Prompt for a command Not Implemented in Zellij. 29# C-b ; Move to the previously active pane Not Implemented in Zellij, currently. 30# C-b = Choose a paste buffer from a list A paste buffer doesn't exist in Zellij Currently. 31# C-b ? List key bindings Currently Not implemented, but exists as a small help menu that otherwise is always shown. 32# C-b D Choose a client from a list Sessions are a planned implementation in Zellij, but not currently implemented. 33# C-b E Spread panes out evenly Not Implemented in Zellij. 34# C-b L Switch to the last client Sessions are a planned implementation in Zellij, but not currently implemented. 35# C-b M Clear the marked pane Not Implemented in Zellij. 36# C-b [ Enter copy mode A paste buffer doesn't exist in Zellij Currently. 37# C-b ] Paste the most recent paste buffer A paste buffer doesn't exist in Zellij Currently. 38# C-b c Create a new window Implemented. 39# C-b d Detach the current client Sessions are a planned implementation in Zellij, but not currently implemented. 40# C-b f Search for a pane Not Implemented in Zellij. 41# C-b i Display window information Not Implemented in Zellij. (Displays focused pane number) 42# C-b l Select the previously current window Implemented, however only goes back one tab, not to last recent tab. 43# C-b m Toggle the marked pane Not Implemented in Zellij. 44# C-b n Select the next window Implemented. 45# C-b o Select the next pane Implemented. 46# C-b p Select the previous pane Implemented. 47# C-b q Display pane numbers Not Implemented in Zellij. 48# C-b r Redraw the current client Not Implemented in Zellij. 49# C-b s Choose a session from a list Sessions are a planned implementation in Zellij, but not currently implemented. 50# C-b t Show a clock Not Implemented in Zellij. 51# C-b w Choose a window from a list Not Implemented in Zellij. 52# C-b x Kill the active pane Implemented. 53# C-b z Zoom the active pane Not Implemented in Zellij. 54# C-b { Swap the active pane with the pane above Not Implemented in Zellij. 55# C-b } Swap the active pane with the pane below Not Implemented in Zellij. 56# C-b ~ Show messages Not Implemented in Zellij. 57# C-b DC Reset so visible part of window follows cursor Not Implemented in Zellij. (Not really sure what this does.) 58# C-b PPage Enter copy mode and scroll up A paste buffer doesn't exist in Zellij Currently. 59# C-b Up Select the pane above the active pane Implemented. 60# C-b Down Select the pane below the active pane Implemented. 61# C-b Left Select the pane to the left of the active pane Implemented. 62# C-b Right Select the pane to the right of the active pane Implemented. 63# C-b M-1 Set the even-horizontal layout Not Implemented in Zellij. 64# C-b M-2 Set the even-vertical layout Not Implemented in Zellij. 65# C-b M-3 Set the main-horizontal layout Not Implemented in Zellij. 66# C-b M-4 Set the main-vertical layout Not Implemented in Zellij. 67# C-b M-5 Select the tiled layout Not Implemented in Zellij. 68# C-b M-n Select the next window with an alert Not Implemented in Zellij. 69# C-b M-o Rotate through the panes in reverse Implemented. 70# C-b M-p Select the previous window with an alert Not Implemented in Zellij. 71# C-b M-Up Resize the pane up by 5 Can't increment by 5 Cells in Zellij Currently. 72# C-b M-Down Resize the pane down by 5 Can't increment by 5 Cells in Zellij Currently. 73# C-b M-Left Resize the pane left by 5 Can't increment by 5 Cells in Zellij Currently. 74# C-b M-Right Resize the pane right by 5 Can't increment by 5 Cells in Zellij Currently. 75# C-b C-Up Resize the pane up Implemented 76# C-b C-Down Resize the pane down Implemented 77# C-b C-Left Resize the pane left Implemented 78# C-b C-Right Resize the pane right Implemented 79# C-b S-Up Move the visible part of the window up Overlapping Tabs Not Currently Implemented in Zellij. 80# C-b S-Down Move the visible part of the window down Overlapping Tabs Not Currently Implemented in Zellij. 81# C-b S-Left Move the visible part of the window left Overlapping Tabs Not Currently Implemented in Zellij. 82# C-b S-Right Move the visible part of the window right Overlapping Tabs Not Currently Implemented in Zellij. # !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ #################################################################################################################################################################### ```

Implementation

Here is the list of the currently implemented items, and list of Issues / Discussions / Pull Requests of those items. Once the feature has been implemented, or decided to not be implemented, the checkbox will be marked.

These numbers come from the Equivalency sheet above, and only reference PR's, Issues, and other discussions as they are found to relate to it. - [x] Tmux Feature: 01 #418 - [x] Tmux Feature: 02 #165 - [x] Tmux Feature: 03 #223 #69 - [x] Tmux Feature: 04 #370 #349 - [ ] Tmux Feature: 05 #196 - [x] Tmux Feature: 06 - [ ] Tmux Feature: 07 #375 #302 - [x] Tmux Feature: 08 #223 #69 - [x] Tmux Feature: 09 - [x] Tmux Feature: 10 - [ ] Tmux Feature: 11 #379 - [x] Tmux Feature: 12 #223 #69 - [x] Tmux Feature: 13 #223 #69 - [x] Tmux Feature: 14 - [ ] Tmux Feature: 15 #375 #302 - [ ] Tmux Feature: 16 #379 - [ ] Tmux Feature: 17 - [x] Tmux Feature: 18 - [x] Tmux Feature: 19 - [x] Tmux Feature: 20 - [x] Tmux Feature: 21 - [x] Tmux Feature: 22 - [x] Tmux Feature: 23 - [x] Tmux Feature: 24 - [x] Tmux Feature: 25 - [x] Tmux Feature: 26 - [x] Tmux Feature: 27 - [ ] Tmux Feature: 28 - [x] Tmux Feature: 29 #398 398 - [ ] Tmux Feature: 30 #375 #302 - [ ] Tmux Feature: 31 - [x] Tmux Feature: 32 #223 #69 - [x] Tmux Feature: 33 #370 #349 - [x] Tmux Feature: 34 #223 #69 - [ ] Tmux Feature: 35 - [ ] Tmux Feature: 36 #375 #302 - [ ] Tmux Feature: 37 #375 #302 - [x] Tmux Feature: 38 - [x] Tmux Feature: 39 #223 #69 - [ ] Tmux Feature: 40 #341 - [ ] Tmux Feature: 41 #341 - [ ] Tmux Feature: 42 - [ ] Tmux Feature: 43 - [x] Tmux Feature: 44 - [x] Tmux Feature: 45 - [x] Tmux Feature: 46 - [ ] Tmux Feature: 47 - [ ] Tmux Feature: 48 - [x] Tmux Feature: 49 #223 #69 - [ ] Tmux Feature: 50 - [ ] Tmux Feature: 51 - [x] Tmux Feature: 52 - [ ] Tmux Feature: 53 - [x] Tmux Feature: 54 #164 - [x] Tmux Feature: 55 #164 - [ ] Tmux Feature: 56 #350 #322 - [ ] Tmux Feature: 57 #175 - [ ] Tmux Feature: 58 #375 #302 - [x] Tmux Feature: 59 - [x] Tmux Feature: 60 - [x] Tmux Feature: 61 - [x] Tmux Feature: 62 - [x] Tmux Feature: 63 #370 #349 - [x] Tmux Feature: 64 #370 #349 - [x] Tmux Feature: 65 #370 #349 - [x] Tmux Feature: 66 #370 #349 - [x] Tmux Feature: 67 #370 #349 - [ ] Tmux Feature: 68 #341 - [x] Tmux Feature: 69 - [ ] Tmux Feature: 70 #341 - [ ] Tmux Feature: 71 - [ ] Tmux Feature: 72 - [ ] Tmux Feature: 73 - [ ] Tmux Feature: 74 - [x] Tmux Feature: 75 - [x] Tmux Feature: 76 - [x] Tmux Feature: 77 - [x] Tmux Feature: 78 - [ ] Tmux Feature: 79 - [ ] Tmux Feature: 80 - [ ] Tmux Feature: 81 - [ ] Tmux Feature: 82

SaintFenix commented 3 years ago

@khs26 Here, we are, this is a half-way stop to what we were talking about.

This will allow us to keep tabs on what features Tmux has that are missing in Zellij, and slowly see those features flesh out. Once the features are implemented, I can then re-edit my tmux-like configs so that they can ideally be merged into the default configuration for Zellij. (Or perhaps easily enabled for those making the switch.)

auronandace commented 3 years ago

Is this list still being maintained? I think some of these can now be ticked.

a-kenji commented 3 years ago

This list is maintained fairly sporadically. But thank you for the heads up, ill look through it again!