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
Please submit xterm-kitty terminfo to ncurses database #879
Comments
In my experience ncurses upstream is not very responsive (or maybe they just dont like me :). As far as I know most distros already package kitty. If they follow the kitty packaging guidelines they should have a separate kitty-terminfo package which you can simply install on your servers. If not bug your distro kitty package maintainer to create such a package. Alternately if you use ansible/puppet/whatever simply create a rule in them into install the kitty terminfo file into /usr/share/terminfo or ~/.terminfo That said feel free to try to get the kitty terminfo file included in ncurses, maybe they will listen to you. I will be happy to provide any help/support needed. |
Missing xterm-kitty in ncurses is a show stopper for me. If xterm-kitty is included in ncurses it's safe to assume that it's available everywhere, just like That said I'll reach out ncurses upstream and we'll see, how it goes. |
Just curious, why |
@maximbaz because Ansible, Kitchen and probably other tools, that exec Second issue comes up, when you do Probably there are some other similar cases, that haven't stumbled upon while evaluated kitty. But general unavailability of xterm-kitty requires to much of a hassle when working on remote environments. |
Even if ncurses included the terminfo file today, it would be years before you could be confident of having it available everywhere. But as I said, I am happy to provide any info/support needed to get the terminfo into ncurses. |
So to summarize the ncurses maintainer's response:
About what I expected from my previous interactions with him. He excels at presenting excuses to maintain the status quo. I'm afraid I am not interested in tying kitty to this particular boat anchor. There's a reason the terminal ecosystem has stagnated for so long, and ncurses is a big part of that stagnation. |
A bit more context at https://lists.gnu.org/archive/html/bug-ncurses/2018-09/msg00007.html Well, thing is, there is no alternative, and going rouge won't help with adoption of this terminfo. It's your call, but from perspective of regular user it's a lose-lose situation. Ultimately there is nothing wrong of being picky about things you care and maintain, to some extent all developers are like this. The ncurses maintainers answer doesn't have an ultimate "no" context. I propose to continue discussion, as I truly hope we can find a consensus for this case. |
Just wondering, would it not be a better approach to convince That way ncurses will not be a bottle-neck anymore, not for kitty, not for any other terminal that is not yet included in ncurses database. |
@zorc Again, simply get your linux distribution's maintainers to create a separate package for kitty-terminfo and install that. Or distribute the terminfo file via Ansible. There are plenty of alternatives. If you insist on enthroning ncurses as the one true source of truth for terminal capabilities you are essentially dooming the terminal ecosystem to perpetual stagnation. The only use for terminfo is to detect terminal features. If the terminfo maintainer refuses to accept any new features then it is a dead weight on the entire ecosystem. I contacted him to try to get him to include terminfo entries for new features adopted by many modern terminals, such as styled underlines (kitty, all VTE based terminals, hyper). I was refused and told to go add my own fields to kitty's terminfo. So that's what I did. If the maintainer now says he wont accept the terminfo file because it has those extra fields, I dont know what to tell you. And I'll note that the maintainer of ncurses happily allows xterm to have hundreds of extra definitions in its terminfo file which is included with ncurses http://lists.gnu.org/archive/html/bug-ncurses/2018-02/msg00008.html Similarly many people have been begging for years for a terminfo property for truecolor, it was finally added this year I think after being refused endlessly on the grounds that "no one needs truecolor in a terminal". As a direct result of that we have the insane mess described here: https://gist.github.com/XVilka/8346728 @maximbaz yes that is the best way to liberate the terminal ecosystem from ncurses, as I noted here: https://sw.kovidgoyal.net/kitty/faq.html#i-get-errors-about-the-terminal-being-unknown-or-opening-the-terminal-failing-when-sshing-into-a-different-computer |
@kovidgoyal I got your point. I know how to automate this, but in general this won't happen, if you have a team of developers. Changing configuration of entire server fleet, just because single developer uses uncommon terminal emulator? This sounds a bit ridiculous. My point isn't about enthroning the ncurses, but making life of regular user a bit easier given existing solutions by making thing to work out of the box in all cases, even if takes a couple of years to do so. I would wholeheartedly support alternative solution, that can replace ncurses in the long run, if there is any. My only wish is to make it common, so I don't have worry what TERM should be used when doing ssh. Maybe it's possible to convince OpenSSH team to support this, but I don't think it's easier than ncurses case. |
Would you mind starting a thread on their mailing list, shortly describing what we want and why we want this? Let's see what the response will be. |
@maximbaz Sorry, I already have my share by discussing this at ncurses ML (it's not over yet). It's your idea, so I believe you'll be able to better represent it. |
Well, hopefully kitty will not remain an uncommon terminal emulator for much longer :) |
And this is the email exchange I just had with the maintainer of ncurses: Email I sent: reproduced below since I dont trust the integrity of ncurses mailing list.
And email I received in response (which was not posted to the email list) from the maintainer of ncurses:
I will note that he did not answer my question quoted above about why using xterm-kitty is a problem for ncurses, and completely ignored the second part of my mail about why xterm is allowed to have custom properties in the ncurses database but kitty is not. And apparently I am the one that is somehow causing a problem. I am at a loss as to how to proceed at this point. I give up. |
@kovidgoyal |
No, I will not. I chose to use xterm-kitty for a good reasons. Just grep the net for the number of shell scripts that detect functionality based on something like:
|
Hmm, but there are certainly incompatibilities with xterm, e.g. handling of bold/bright colors, and certainly other things. I would assume that people would update their rc files / scripts if necessary, no? E.g. rxvt-unicode is also not matched by those scripts. Renaming it would give us the benefit of having the terminfo available on systems already (not a problem really for me, but what this issue is about). |
I think users who want to use upstream's terminfo can set |
Alternatively, users can ensure kitty's terminfo files are installed. Since there is no Ubuntu 18.04 package for kitty, binary installs can solve this issue by creating a Maybe we should add this to the binary install instructions? |
the kitty binaries automatically use their bundled terminfo, there is no
need to do anything.
…On Wed, Oct 16, 2019 at 08:21:47AM -0700, Capi Etheriel wrote:
Alternatively, users can ensure kitty's terminfo files are installed. Since there is no Ubuntu 18.04 package for kitty, binary installs can solve this issue by creating a `$HOME/.terminfo/x` directory and then symlinking or copying `$HOME/.local/share/terminfo/x/xterm-kitty` into it.
Maybe we should add this to the binary install instructions?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
#879 (comment)
|
I installed kitty on Ubuntu 18.04 using the binary install. Then I logged in to it using ssh from an Archlinux host. I had the usual terminal issues. In Archlinux, I then proceded to copy the |
@kovidgoyal probably assumed, that you were not using ssh. |
@barraponto When you ssh you need to have terminfo files available on the remote host, which is easy to do using the kitty ssh kitten as documented in the FAQ and pointed out by Luflosi. @Luflosi It does not need you to know where the kitty terminfo files are on the localhost |
There seems to be some issue here with ubuntu |
What a crazy story, it seems more an ego issue than anything else. |
@eoli3n You are correct, Dickey's ego is the issue, yes. |
I agree, but what now ? That's the problem when the power is in a single hand... |
I don't know, but certainly bumping this issue will not help. |
@eoli3n See what happened with X11/Wayland, SVN/git, SourceForge/Github, and more related Vim/NeoVim. Expect an ncurses alternative/fork to pop up. It is a tough world, you either learn and adopt, or inadvertently waiting for your irrelevance. |
Here's a diff of the --- xterm-kitty 2020-11-16 03:04:47.117018542 +0000
+++ kitty 2020-11-16 03:04:57.737137703 +0000
@@ -1,50 +1,40 @@
-# Reconstructed via infocmp from file: /root/.terminfo/x/xterm-kitty
-xterm-kitty|KovIdTTY,
- am, ccc, hs, km, mc5i, mir, msgr, npc, xenl,
- colors#0x100, cols#80, it#8, lines#24, pairs#0x7fff,
+# Reconstructed via infocmp from file: /run/current-system/sw/share/terminfo/k/kitty
+kitty|KovId's TTY,
+ am, ccc, hs, mc5i, mir, msgr, npc, xenl,
+ colors#0x100, cols#80, it#8, lines#24, pairs#0x10000,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, 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, dsl=\E]2;\007, ech=\E[%p1%dX,
- ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
- fsl=^G, 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,
+ dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+ dl1=\E[M, dsl=\E]2;\007, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, fsl=^G, 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,
initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\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,
- ka1=, ka3=, kbs=^?, kc1=, kc3=, kcbt=\E[Z, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF,
- 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~, khlp=, khome=\EOH, kich1=\E[2~,
- kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kri=\E[1;2A, kund=, 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,
- rmso=\E[27m, rmul=\E[24m, rs1=\E]\E\\\Ec, sc=\E7,
+ kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, 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~, kf4=\EOS, kf5=\E[15~,
+ kf6=\E[17~, 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, 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, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, 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%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
smcup=\E[?1049h, smir=\E[4h, smkx=\E[?1h, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, tsl=\E]2;, vpa=\E[%i%p1%dd, Regardless of politics, it seems like they ought to match I've sent a message to the ncurses mailing list to try to rectify this |
Good luck! |
@NickHu I have sent you email as well, but as I am having email deliverability issues these days, am also posting it here:
|
…thout acknowledgement and decided to use incompatible escape codes for. Completely in keeping with that project's past behavior. See #879 XTerm announcement: https://www.mail-archive.com/xorg@lists.x.org/msg06419.html
Just to add that simply installing the |
Yup, the distributions are realizing the unreliability of the ncurses database, and packing terminfo's it refuses. Good news. |
@NickHu does now kitty in ncurses and xterm-kitty in sync? |
Debian has had the terminfo files since buster [Package info] |
It is worth noting that the version of TERMINFO on the host connected via SSH should match the version of kitty that is used, otherwise there will be problems. For example, kitty does not work properly after entering the docker container due to TERMINFO version mismatch. |
As kitty introduced its own terminfo, running ssh from it is getting quite difficult because this terminfo isn't widely available. I'm aware about
kitty +kitten ssh
solution, but it isn't suitable when you have big amount of remote servers that constantly changing or running automation like Ansible or Kitchen.Ad-hock solution with compiling terminfo on remote server works, but long-term solution would be submitting xterm-kitty to ncurses. After inclusion this would be automatically picked up by all Linux distributions in some time. Wide adoption would take years, but it's right approach. tmux, st and multiple other terminal emulators went this way. Of course this would require to make xterm-kitty a stable interface, and don't change it frequently.
ncurses accepts contributions in quite old way and doesn't use vcs of any sorts. In order to submit terminfo, please reach out developer as instructed at https://invisible-island.net/ncurses/ncurses.faq.html#report_bugs. More info on terminfo database at https://invisible-island.net/ncurses/#download_database.
The text was updated successfully, but these errors were encountered: