Maximus5 / cygwin-connector

https://conemu.github.io/ terminal connector for cygwin/msys
https://conemu.github.io/en/CygwinMsysConnector.html
Other
82 stars 5 forks source link

Problem with "indn" terminfo capability support #32

Open rcx opened 5 years ago

rcx commented 5 years ago

Hello, I have been experiencing issues with terminal output mangling on newer distributions (namely 18.04). I have attached two terminfo files: screen-256color-NEW, copied from an installation of WSL Ubuntu 18.04, and screen-256color-OLD, copied from a Ubuntu 16.04 host. The screen-256color-NEW terminfo file causes broken output, whereas screen-256color-OLD produces correct output.

It took me a lot of time, but I narrowed this issue down to differences in terminfo. The use case is bash or zsh within tmux. Fish shell works perfectly, but bash and zsh are broken. Bash does not refresh the top line on Ctrl-L, and zsh seems to have an off-by-one issue refreshing the console. Moreover, vim and nano seem badly broken.

Steps to reproduce.

cp screen-256color-NEW /lib/terminfo/s/screen-256color-NEW
export TERM=screen-256color-NEW
tmux
zsh 
# then press enter a few times

I am using connector, and my Windows is 1809 Build 17763.

terminfo.zip

rcx commented 5 years ago

Try TERM=xterm or TERM=xterm-256color. It's broken inside tmux. Then, try TERM=xterm-color. No breakage. There must be something in xterm compared to xterm-color which is breaking it.

rcx commented 5 years ago

I looked at xterm-256color terminfo.

#   Reconstructed via infocmp from file: /lib/terminfo/x/xterm-256color
xterm-256color|xterm with 256 colors,
    am,
    bce,
    ccc,
    km,
    mc5i,
    mir,
    msgr,
    npc,
    xenl,
    colors#0x100,
    cols#80,
    it#8,
    lines#24,
    pairs#0x7fff,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G,
    blink=\E[5m,
    bold=\E[1m,
    cbt=\E[Z,
    civis=\E[?25l,
    clear=\E[H\E[2J,
    cnorm=\E[?12l\E[?25h,
    cr=\r,
    csr=\E[%i%p1%d;%p2%dr,
    cub=\E[%p1%dD,
    cub1=^H,
    cud=\E[%p1%dB,
    cud1=\n,
    cuf=\E[%p1%dC,
    cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH,
    cuu=\E[%p1%dA,
    cuu1=\E[A,
    cvvis=\E[?12;25h,
    dch=\E[%p1%dP,
    dch1=\E[P,
    dim=\E[2m,
    dl=\E[%p1%dM,
    dl1=\E[M,
    ech=\E[%p1%dX,
    ed=\E[J,
    el=\E[K,
    el1=\E[1K,
    flash=\E[?5h$<100/>\E[?5l,
    home=\E[H,
    hpa=\E[%i%p1%dG,
    ht=^I,
    hts=\EH,
    ich=\E[%p1%d@,
    il=\E[%p1%dL,
    il1=\E[L,
    ind=\n,
    indn=\E[%p1%dS, # PROBLEMATIC LINE
    initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
    invis=\E[8m,
    is2=\E[!p\E[?3;4l\E[4l\E>,
    kDC=\E[3;2~,
    kEND=\E[1;2F,
    kHOM=\E[1;2H,
    kIC=\E[2;2~,
    kLFT=\E[1;2D,
    kNXT=\E[6;2~,
    kPRV=\E[5;2~,
    kRIT=\E[1;2C,
    kb2=\EOE,
    kbs=^?,
    kcbt=\E[Z,
    kcub1=\EOD,
    kcud1=\EOB,
    kcuf1=\EOC,
    kcuu1=\EOA,
    kdch1=\E[3~,
    kend=\EOF,
    kent=\EOM,
    kf1=\EOP,
    kf10=\E[21~,
    kf11=\E[23~,
    kf12=\E[24~,
    kf13=\E[1;2P,
    kf14=\E[1;2Q,
    kf15=\E[1;2R,
    kf16=\E[1;2S,
    kf17=\E[15;2~,
    kf18=\E[17;2~,
    kf19=\E[18;2~,
    kf2=\EOQ,
    kf20=\E[19;2~,
    kf21=\E[20;2~,
    kf22=\E[21;2~,
    kf23=\E[23;2~,
    kf24=\E[24;2~,
    kf25=\E[1;5P,
    kf26=\E[1;5Q,
    kf27=\E[1;5R,
    kf28=\E[1;5S,
    kf29=\E[15;5~,
    kf3=\EOR,
    kf30=\E[17;5~,
    kf31=\E[18;5~,
    kf32=\E[19;5~,
    kf33=\E[20;5~,
    kf34=\E[21;5~,
    kf35=\E[23;5~,
    kf36=\E[24;5~,
    kf37=\E[1;6P,
    kf38=\E[1;6Q,
    kf39=\E[1;6R,
    kf4=\EOS,
    kf40=\E[1;6S,
    kf41=\E[15;6~,
    kf42=\E[17;6~,
    kf43=\E[18;6~,
    kf44=\E[19;6~,
    kf45=\E[20;6~,
    kf46=\E[21;6~,
    kf47=\E[23;6~,
    kf48=\E[24;6~,
    kf49=\E[1;3P,
    kf5=\E[15~,
    kf50=\E[1;3Q,
    kf51=\E[1;3R,
    kf52=\E[1;3S,
    kf53=\E[15;3~,
    kf54=\E[17;3~,
    kf55=\E[18;3~,
    kf56=\E[19;3~,
    kf57=\E[20;3~,
    kf58=\E[21;3~,
    kf59=\E[23;3~,
    kf6=\E[17~,
    kf60=\E[24;3~,
    kf61=\E[1;4P,
    kf62=\E[1;4Q,
    kf63=\E[1;4R,
    kf7=\E[18~,
    kf8=\E[19~,
    kf9=\E[20~,
    khome=\EOH,
    kich1=\E[2~,
    kind=\E[1;2B,
    kmous=\E[M,
    knp=\E[6~,
    kpp=\E[5~,
    kri=\E[1;2A,
    mc0=\E[i,
    mc4=\E[4i,
    mc5=\E[5i,
    meml=\El,
    memu=\Em,
    oc=\E]104\007,
    op=\E[39;49m,
    rc=\E8,
    rev=\E[7m,
    ri=\EM,
    rin=\E[%p1%dT,
    ritm=\E[23m,
    rmacs=\E(B,
    rmam=\E[?7l,
    rmcup=\E[?1049l,
    rmir=\E[4l,
    rmkx=\E[?1l\E>,
    rmso=\E[27m,
    rmul=\E[24m,
    rs1=\Ec\E]104\007,
    rs2=\E[!p\E[?3;4l\E[4l\E>,
    sc=\E7,
    setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
    setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
    sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
    sgr0=\E(B\E[m,
    sitm=\E[3m,
    smacs=\E(0,
    smam=\E[?7h,
    smcup=\E[?1049h,
    smir=\E[4h,
    smkx=\E[?1h\E=,
    smso=\E[7m,
    smul=\E[4m,
    tbc=\E[3g,
    u6=\E[%i%d;%dR,
    u7=\E[6n,
    u8=\E[?1;2c,
    u9=\E[c,
    vpa=\E[%i%p1%dd,

Removing this cap indn=\E[%p1%dS,, recompiling with tic resolves this issue. I am not sure why.

From man terminfo:

parm_index          indn           SF       scroll forward #1 lines (P)

Is this cap not implemented by connector? Not using the connector avoids this issue.

rcx commented 5 years ago

Workaround here. Unfortunately, I have to install it on every server, but much better than before.

QrchackOfficial commented 5 years ago

This! Thanks, that saved my day. The workaround works beautifully