mobile-shell / mosh

Mobile Shell
https://mosh.org
GNU General Public License v3.0
12.61k stars 730 forks source link

Cursor Color and Style changes #352

Open Shoozza opened 11 years ago

Shoozza commented 11 years ago

MinTTY allows to change cursor styles and colors but mosh ignores them. This would be useful for vim (different insert and normal mode cursors)

Mode-dependent cursor in vim: CSI Ps SP q

Example: echo -ne '\e]12;#00FF00\a' # green cursor http://code.google.com/p/mintty/wiki/Tips#Mode-dependent_cursor_in_vim

Changing colors: OSC Ps ; Pt ST OSC Ps ; Pt BEL

Example: echo -ne "\e[2 q" # non blinking block cursor http://code.google.com/p/mintty/wiki/Tips#Changing_colours


Xterm Control Sequences taken from http://invisible-island.net/xterm/ctlseqs/ctlseqs.txt

theeternalsw0rd commented 11 years ago

Not just mintty. This is across the board. Mosh currently only looks for visibility and position of the cursor.

The spec is at http://vt100.net/docs/vt510-rm/DECSCUSR

theeternalsw0rd commented 11 years ago

There's also another sequence used by iTerm2 and Konsole https://code.google.com/p/iterm2/issues/detail?id=710 among others documented at http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes

In addition with tmux running, the codes must be further escaped by "\ePtmux;\e" and "\e\"

To make matters worse, when using tmux if you have a remote tmux session within a local tmux session, you have to send multiple codes so that it will update on multiple ends. In my case I use Konsole on linux and iTerm2 on OSX and still have to send the xterm-based sequence to get tmux within tmux to display the correct cursor even though both ends should support the same sequence.

ssh works fine because it sends the full stream both ways, but with mosh's diff based system I'm not sure how feasible monitoring all this would be because I don't think it's something that can be queried, at least not across the board, and even if it can be queried, which code should it use and on which end.

Why cursor shape definition isn't a followed standard is beyond me. Makes portability extremely difficult.

ddickstein commented 7 years ago

+1 on this issue

msva commented 6 years ago

is it any work in this direction? :D

xPMo commented 6 years ago

Re: Tmux: Adding set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q' to .tmux.conf is the way to allow tmux to pass cursor codes. Mosh still needs to support it, ofc.

broander commented 4 years ago

Cursor change should be possible, unlike a lot of the other open feature requests it won't add a lot of data overhead. Seems like the problem is there have been no new releases in years?

kovasap commented 3 years ago

+1 on this issue!

NightMachinery commented 3 years ago

This also works on Kitty. It would be great to support it.

printf '\x1b]12;%s\a' '#ffffe4e4c4c4'
achernya commented 1 year ago

It looks like this was supported in xterm per https://invisible-island.net/xterm/ctlseqs/ctlseqs.html

redone9211 commented 1 year ago

i would like to contribute to this issue , can you let me know how i can solve it.

achernya commented 1 year ago

PR #1167 from Issue #1084 is a (partial?) solution to this.

oscarmlage commented 7 months ago

Any news or progress on this issue?