raphamorim / rio

A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers.
https://raphamorim.io/rio
MIT License
3.45k stars 108 forks source link

use-kitty-keyboard-protocol = true doesn't work with tmux #599

Open jZhangTk opened 3 weeks ago

jZhangTk commented 3 weeks ago

Environment:

I'm using the default config with only use-kitty-keyboard-protocol = true added. It works fine without tmux. However, once I launch tmux, it seems to stop working. E.g. I have a key mapping for ctrl-shift-t set up in Neovim, but it doesn't work when I use it within tmux.

raphamorim commented 2 weeks ago

Hey @jZhangTk thanks for the issue! Could you test with latest main?

jZhangTk commented 2 weeks ago

Thanks for the update, @raphamorim. I followed the instructions here and confirmed that the version is 0.1.10 (20230528.115631), but the behavior is still the same.

raphamorim commented 2 weeks ago

Thank you for testing @jZhangTk! Very interesting, I tested Rio and Kitty key inputs and looks is correct at least. Wondering what could be

Screenshot 2024-08-27 at 16 05 56
raphamorim commented 2 weeks ago

I assume it does work with kitty right?

raphamorim commented 2 weeks ago

I did a bit of searching, and tested tmux with Kitty and Ghostty but looks the protocol doesn't really work there (at least with no configuration), found this as well https://github.com/tmux/tmux/issues/3335

jZhangTk commented 2 weeks ago

Interesting. It works fine for me on Kitty. What are you using to test the key press? I can test it on my side too.

raphamorim commented 2 weeks ago

ah if it does work with kitty terminal then is likely to be a bug in Rio.

I use the kitty cli https://sw.kovidgoyal.net/kitty/invocation/ , there's a command that I can test the inputs kitty +kitten show_key -m kitty

can you send me your tmux configuration as well? I will try to reproduce here

jZhangTk commented 2 weeks ago

When I was testing it, I commented out everything in tmux.conf, so you don't need any tmux configuration. For Kitty, I also commented out everything except for kitty_mod ctrl+shift+alt so I can use ctrl+shift.

I'm going to test the key press later today and let you know.

jZhangTk commented 2 weeks ago

I'm not sure if I did it right. I tried to run kitty +kitten show_key -m kitty in tmux for both Rio and Kitty, but it behaves very strangely compared to no tmux. When I press a key, it only responds with Text: and nothing else. One thing I noticed is that when I press c-s-t, Rio displays the same Text:, but Kitty does not show anything, as if no key has been pressed, so they do act a little differently.

I should have provided this earlier. Here are the steps I'm using to test if c-s-t works.

  1. Add this line to neovim init.lua
    -- reopen a closed tab
    vim.keymap.set('n', '<C-S-t>', '<cmd>tabnew#<CR>', { noremap = true, silent = true })
  2. Open neovim in tmux
  3. Press c-s-t
  4. Notice that Rio and Kitty shows different messages (Rio acts as c-t is pressed)

Rio image Kitty image