alacritty: tmux doesn't recognize alacritty

First, thank you for this superb terminal 😃

Which operating system does the issue occur on? I’m using macOS Mojave 10.14.5

After I install alacritty terminfo as mentioned here, I can’t open tmux anymore. I killed all tmux session, restarted the machine also, but it didn’t work.

This message shows up when I run tmux inside alacritty:

open terminal failed: missing or unsuitable terminal: alacritty

It seems that I installed the terminfo correctly because I can run imfocmp inside alacritty and get the following result. (click on Details to expand).

~ ❯❯❯ infocmp

# Reconstructed via infocmp from file: /usr/share/terminfo/61/alacritty
alacritty|alacritty terminal emulator,
	am, bce, ccc, hs, km, mc5i, mir, msgr, npc, xenl,
	colors#256, cols#80, it#8, lines#24, pairs#32767,
	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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, 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=^J,
	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\\,
	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=^H,
	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,
	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B, rmam=\E[?7l,
	rmcup=\E[?1049l\E[23;0;0t, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmm=\E[?1034l, 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,
	setb@, setf@,
	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\E[22;0;0t, smir=\E[4h, smkx=\E[?1h\E=,
	smm=\E[?1034h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E]2;, u6=\E[%i%d;%dR, u7=\E[6n,
	u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 4
  • Comments: 31 (20 by maintainers)

Most upvoted comments

@dinhtungdu tmux requires screen-256color or tmux-256color terminfo ( other terminfo can work, but there’s no guaranty about it) . As far as I remember macOs lacks tmux-256color. screen-256color lacks italics support btw. You can try adding

set -g default-terminal screen-256color
set -g terminal-overrides ",alacritty:RGB"

in your .tmux.conf. ( if alacritty:RGB fails try alacritty:Tc )

I’m thinking this issue should be closed, maybe with a terminfo entry added to the FAQ? I don’t see any action we need to take in the codebase. Am I missing something?

Just to see how bad things are, I ssh’d into a server without the alacritty terminfo entry and tried a few commands:

$ clear
'alacritty': unknown terminal type.
$ tmux
open terminal failed: missing or unsuitable terminal: alacritty

Fixing the issue was trivial (as others have mentioned):

$ export TERM=xterm-256color

Just set TERM in alacritty.yml or do env TERM=xterm-256color ssh or install terminfo on remote server yourself with tic, I don’t see an issue here.

The only solutions for now seems to downgrade ncurses

This is not a solution, you were using xterm-256color terminfo, what stops you to continue using it in config? Like I don’t get your problem, sorry.

This issue breaks tmux/htop/… over SSH

Are there any features I loose when I use alacritty with TERM=xterm-256color?

Yes.

Alacritty is not XTerm. And neither is gnome-terminal, Kitty, or any other terminal emulator. Pretending you are just leads to problems, since XTerm supports features which Alacritty doesn’t support and Alacritty supports features which XTerm doesn’t support. In fact, there is no terminal emulator which supports 100% of what XTerm does, so using its terminfo will lead to issues. Not everyone might notice them, but they definitely exist.

What’s even more problematic with this, is that no program running inside of a terminal emulator can rely on terminfos being correct, when everyone is using xterm-256color. Which in the end just leads to dirty hacks like reading environment variables to see if the terminal is VTE or not.

There is no winning with this, it takes years and years for a new terminfo entry to be available almost everywhere. OS X still doesn’t have tmux and it was added to terminfo in 2015. RHEL7 will probably never have it, and it isn’t EOL until 2024. I have no idea about AIX or Solaris.

You either use the new one and require users to work around it if it is missing or live for >10 years with all the annoyances that come from having the wrong entry.

Personally I think Alacritty has made the right choice here, it should not be a huge burden on the typical user to work around this.

He has mentioned before that he uses i3. Since it’s a tiling window manager, he likely just starts up new terminals as needed and reorganizes if necessary.

I switched back to iTerm (and I don’t use tmux anymore), but I’ll try to reproduce the issue when I have time.

Did you install the alacritty terminfo yourself? At the time of this issue, I installed it by following this https://github.com/alacritty/alacritty/blob/master/INSTALL.md#terminfo

Because you can’t reproduce, let’s close this, for now.

I think that having default working conf might be better, don’t you think?

Our terminfo in ncurses already for more than a year. It was shipped on most distros by default for a long time, like Gentoo, Debian testing, etc. It’s just your Arch recently updated to something new and now you see a critical problem. Our recommendation is to use our terminfo if you read our config file, you can also notice, that we’re falling back to xterm-256color if alacritty is missing, so things worked like that for a long time already.

In short, default does break now, but it makes sense for fast modernization instead of waiting for every production servers to have default terminfo knowing about alacritty (which is probably gonna take years).

It was like that for a long time already, so you just noticed it due to update of outdated ncurses on your system.

Well, it was not outdated considering I was on latest stable (6.1.7). It seems like alacritty was added some times ago, but in the master: it’s mentioned as new terminfo definition in the 6.2 changelog (see https://invisible-island.net/ncurses/announce.html) which is dated from february 12th, 2020.

So yeah, it’s probably now an “old” change that got triggered by the arrival of alacritty’s definition in ncurses 6.2’s terminfo.

There is no winning with this, it takes years and years for a new terminfo entry to be available almost everywhere. OS X still doesn’t have tmux and it was added to terminfo in 2015. RHEL7 will probably never have it, and it isn’t EOL until 2024. I have no idea about AIX or Solaris.

You either use the new one and require users to work around it if it is missing or live for >10 years with all the annoyances that come from having the wrong entry.

Personally I think Alacritty has made the right choice here, it should not be a huge burden on the typical user to work around this.

Now with some explanations I also understand and think the choice is the right one. However, documenting the issue might be a good idea I think. Sorry for the confusion or if the way I expressed things was unclear regarding that 😃

The difference is that xterm-256color is for the version of the terminal emulator for the X Window System that supports 256 colors. The alacritty terminfo is thus for the Alacritty terminal emulator. It describes “the capabilities of hundreds of different display terminals. This allows external programs to be able to have character-based display output, independent of the type of terminal.” (Per the Wikipedia article: https://en.wikipedia.org/wiki/Terminfo).

The way I see it, it is the job of every terminal emulator to include or provide some sort of terminfo at some point during its development.

@chrisduerr Sorry, it’s been too long since I reported this issue, but I’m sure that it doesn’t relate to ssh in my original report. it’s the issue of starting new tmux session when terminfo is set to alacritty.

@nixpulvis There has been a lot of noise in this issue unfortunately, but as far as I understand it, @dinhtungdu issue does not involve any ssh.

Running tmux locally with the alacritty terminfo set at Alacritty startup should work. The only thing that doesn’t work locally is to have alacritty terminfo inside of tmux, but I don’t think that’s the case here?

Maybe some clarification from @dinhtungdu could be useful. If we’re talking about ssh or alacritty terminfo inside of tmux, then this issue can be closed since there is no issue present.

Thank @kchibisov and @chrisduerr!

FYI, I ended up with aliasing tmux to TERM=xterm-256color tmux while terminfo is set to alacritty.

There are simpler ways to be considered:

  • Set TERM in config file to xterm-256color.
  • Don’t install alacritty terminfo if you’re using tmux.

@chrisduerr: How do you manage multiple session with alacritty without tmux?

Yeah, as far as I understood it the problem here is that tmux does not launch from Alacritty if the term outside is set to Alacritty.

@kchibisov I don’t use tmux myself, but that’s inside of tmux, not outside of it, right? It should start just fine with the Alacritty terminfo.