Hacker News new | past | comments | ask | show | jobs | submit login
MapSCII – The Whole World in Your Console (github.com/rastapasta)
187 points by luke2m on May 4, 2021 | hide | past | favorite | 43 comments

It's such a beautiful project. The telnet access, the supported zoom and scroll gestures...

I once heavily hacked the (very!) well organized and readable code to send the vector features -- the roads -- to an Arduino that was generating a TV signal. I actually used two Arduinos, one showing text labels only, the other one for line features.

MapSCII was programmed to slowly pan between two of my homes (between Quebec City and Montreal), along the highway connecting these cities. The pan was in real time -- 300km in about 3 hours. I've been going back and forth between these cities for many years. This art piece, named "Contrecœur" (a city name along the way, and also "against one's heart" in French) was a digital contemplative take on this.

A video, if anyone's curious:


@rastapasta, thanks a lot for your work!

thank you for the big smile and amazement about MapSCII being adapted for a whole new level of creativity - beautiful project, kudos to you!

Can I try adding Teletext mosaic support? It’s 2x3 only, but, unlike Braille, it’s evenly spaced.

something very soothing about this project. I love it.

two homes! is this common or am I a mere plebe with my single home?

Parent's/"home home", and my own home in a city 3 hours away. :-)

Sometimes you live somewhere. And work somewhere else far away ( and sleep in a closet at night there )

It’s not great

I've recently been looking into terminals that can show images properly - and it's looking more widely supported and maturing than I thought. Is there anyone else also looking into the same thing?

It's promising but my main problem is that the multiplexers tmux and screen don't really support the various protocols.

There are some terminals that support images using various protocols:

- iTerm2 (Macos) - bespoke protocol

- Kitty - bespoke protocol

- Mlterm - Sixel and iTerm2 protocol

- Wezterm - iTerm2 protcol (and potentially Sixel too)

- Xterm - Sixel (but not built with it in your distro, maybe)

- Gnome-terminal/libvte terminals - Sixel - not released yet/not available to me, so unconfirmed

Using this support one can for example configure IPython to render images in the terminal inline using its mime-type hooks.

It would be great if we could slowly move terminals forward with this (even if I understand the technology is quite cumbersome to work with). Imagine having neovim, IPython or jupyter notebooks etc all available with image support in a multiplexed terminal.

Given the terminals you listed above, I assume you are referring to something very specific when you say "show images properly". However, there is a lot more flexibility to use the terminal of your choice (not to mention compatibility with other programs like tmux) if you don't need pixel-perfect reproduction.

For example, I made an image browser for the terminal [0] based on Terminal Image Viewer [1] (for most image formats) and catimg [2] (for animated GIFs) that doesn't require installing a new terminal. It works great with tmux and SSH and I use it all the time for this purpose (though I didn't initially expect to find it so useful).

YMMV, but I have found that the image quality provided by TIV for example is more than sufficient for the kinds of use cases I tend to have when in a console session and needing to quickly view one or more images. Mostly that involves quickly identifying a particular image file among others in a directory, but it's so much easier to not have to leave the terminal and change contexts that it's often more convenient to reach for it for more general tasks too. Any tradeoff in quality is more than made up for in my view by the convenience of being able to use my regular terminal.

[0]: https://github.com/dohliam/console-image-browser [1]: https://github.com/stefanhaustein/TerminalImageViewer [2]: https://github.com/posva/catimg/

There is also dnkl/foot, a very nice wayland native terminal with sixel support.


Thanks for the tip

Googles hterm also supports the iTerm2 protocol. Can be good for embedding a terminal in a slideshow presentation.

If your language has a REPL with appropriate control over the display of objects you can get a pretty great experience. I used it to get familiar with Haskell's diagrams and JuicyPixel libraries and it was great[0].

[0] https://hackage.haskell.org/packages/search?terms=iterm-show

Yes, I'm looking for something that can display plots like a jupyter notebook could so the low resolution solutions don't really cut it. Maybe it's good as a fallback, though..

This is using the iTerm2 protocol from the REPL. So it's high resolution. For example all the plots in this Haskell tutorial [0] can be plotted in your terminal from the REPL while you are developing and the appear as they do in the PDF.

[0] https://lancelet.github.io/space-workshop/notes.pdf

You can get 2x3 Teletext mosaics on VTE without font support. Sixel support is problematic for full-screen. You can try Tektronix graphics.

Not a terminal, but might be of interest: https://github.com/dankamongmen/notcurses

Much appreciated. Thanks!

Quick update: scaling up again atm, HN was a bit too much for the current machines :)

That video zoomed in to a place 200m from my house (near C-Base, Berlin). It felt totally natural (of course I'll zoom to my house!) and only when it deviated slightly from my actual home did it seem weird (wait, It's not me who zoomed to my house).

Really like the Braille Console hacks.

this is great. I have been looking for map alternatives to google and apple. this is great for those times when all you have is a shell and no Gui. very nice. will bookmark and remember this.

> this is great for those times when all you have is a shell and no Gui.

Genuine question: like when?

Fair amount of times I can think of, such as:

* Installing a new OS, some installers are cmdline only

* Server console

* If you've broken your GUI installation and need to fall back to the shell

I will say though: I don't know if I've ever needed a map in any of these situations :)

When on a bike ride between Spain and France but you only have 2G connection from your termux session to the tmux session running mapscii on your VPS. Google maps would timeout and you can't download a billion gigabyte map file.

Just use OSMand from FDroid and download the offline maps. The just use the GPS.

That's what I did with my GF at the French Basque Country in order to avoid paying roaming fees. The map files for a few provinces don't occupy more than few GB's. I think the whole map of Spain was about 3GB.

Between Spain and France you can barely download mail (a few kB), let alone download a map.

In Europe you don't need to worry about roaming, if you have and European SIM.

Any time I haven't bothered to start the windowing system and am instead using tmux from a kernel TTY.

A shell that can display Braille. No VT-100 for you.

If this [0] is your mobile device :-)

[0] https://n-o-d-e.net/zeroterminal3.html

This is awesome! I'm desperately looking for rougelike ideas that could rely on those maps.

Here's a project bringing Boston into Cataclysm DDA. The visuals of MapSCII could easily pass as screenshot for that game.


If I may ask you rather than the robots: what is rougelike?

It's a subgenre of games that has some combination of roleplaying, ASCII graphics (or low resolution bitmaps without animation), procedural content generation and perma-death. Most well known are NetHack and Dwarf Fortress.

People tend to enjoy them for two very different reasons. First is that focus on things other than graphics tends to improve depth and re-playability. Second is that without graphics, the player's imagination plays large part in building world. It's bit more like reading a book than watching a movie.

This is impressive, and really quite fun.

Does this use a custom algorithm to map pixels to characters? It really shines when zooming in and out.

Indeed it does, take a look at the BrailleBuffer[1] :) Thanks for the kudos!

[1] https://github.com/rastapasta/mapscii/blob/master/src/Braill...


The telnet server zooms and scrolls more smoothly than Google Maps for me.

Feature request: ability to toggle mouse support off so I can copy/paste portions of the map more easily. :)

The TUI. It truly explodes my mind using it for novel applications like this. I don't know why.

It's great, but what's novel about that? I've seen similar stuff since more than 20 years ago. This particular repository is maybe 6 years old?

Imagine using it for a real time drill down of global traffic, news, incidents, attacks, trades, visits, current events.

You mean, like using the terminal-based elinks browser to read news sites? ;)

I was thinking about using this as a library to have a map capability to visualize events in a larger application.

very cool

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact