danielixir
I just started to learning Elixir. I’m a very visual guy, so I like my terminal colors very much. I noticed on YouTube, that the mix command does actually produce colored output, which led me down a rabbit hole.
Somewhere in the middle of it, I found the following code part in C:\Program Files (x86)\Elixir\bin\elixir.bat
reg query HKCU\Console /v VirtualTerminalLevel 2>nul | findstr /e "0x1" >nul 2>nul
if %errorlevel% == 0 (
set beforeExtra=-elixir ansi_enabled true !beforeExtra!
)
Windows Terminal does support ANSI/VT100 escape sequences, regardless of whether this key exists or not. I don’t know when support was added, but I believe it was in 2021, if not 2022. Changing the above code part to
set beforeExtra=-elixir ansi_enabled true !beforeExtra!
successfully enabled colors on commands like mix phx.new hello when in a Windows Terminal session.
Unfortunately, I don’t know how to reliably check if the current console host is Windows Terminal. But I can observe that Windows Terminal adds two environment variables WT_PROFILE_ID and WT_SESSION. Maybe this could be leveraged to improve elixir.bat to not rely solely on the existence of a registry key that the majority of people don’t know or care about (no offense).
What do you think?
Trending in Discussions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
garazdawi
Erlang/OTP 26 (to be released in May 2023) has a completely rewritten shell implementation that solves the problem for windows. So if you wait a while the problem will go away on its own.
webuhu
In the meanwhile probably just set the registry key.
Documentation about it is probably what is hard to find if starting with Elixir.
→ IEx - Encoding and coloring
But then you’re are also good to go on Windows with the current situation.
PS: I’m also waiting with pleasure for the new shell implementation in OTP 26.
And yes your suggestion, detecting Windows Terminal, would probably be a good one with Windows Terminal getting standard anywhere in the future…
& welcome to Elixir.
danielixir
Great, thanks for pointing me to the PR. Until then, I just leave the workaround in the script file.