
VTM: A Text-Based Desktop Environment - mssdvd
https://vtm.netxs.online/
======
rudolfwinestock
Related: The MGR Window System
[https://hack.org/mc/mgr/](https://hack.org/mc/mgr/)

“MGR provides each client window with: curses-like terminal control functions,
graphics primitives such as line and circle drawing; facilities for
manipulating bitmaps, fonts, icons, and pop-up menus; commands to reshape and
position windows; and a message passing facility enabling client programs to
rendezvous and exchange messages.”

Essentially, each window was a souped up ASCII terminal with extra escape
sequences which implemented primitive graphics. It competed with X-Windows on
low-end workstations during the 1980s.

Discussion:
[https://news.ycombinator.com/item?id=18742611](https://news.ycombinator.com/item?id=18742611)

~~~
ilaksh
Love it! I have a strange desire to try to make that work in WASM over HTTP/2
and hack in MGR server hyperlinks.

~~~
sitkack
+1

SVG over HTTP/2 in Wasm with WebGL1 (for compat)

------
ajarmst
The width of the display used in the screenshot appears to be less than 150
characters. Why would you add the clutter and distraction of _transparent_
windows with frame decorations in such a limited environment? 30% of the real
estate is consumed by elements that don't present any information to the user.

On a modern display, this could far more productively be replaced with (1) any
number of tiling WMs with console terminals in the panes (I use stumpwm for
this), or---and you don't even need a GUI/WM for these---tmux or screen, or
even emacs -nw, which give you a much more configurable and robust text-only
environment. My normal working environment is a pretty heavily customized tmux
(including powerline and full 256-color/unicode support) running on a machine
that doesn't even have a GUI installed. (I do cheat a bit by using kmscon---or
fbcon in the past---to get colour and font support on linux vttys.).

~~~
egypturnash
The demo video
([https://www.youtube.com/watch?v=fLumnSctakY&feature=youtu.be](https://www.youtube.com/watch?v=fLumnSctakY&feature=youtu.be))
reveals that this is not just a traditional window manager for a static
screen, it's got a much larger virtual canvas that the display can scroll
around in. So there's a LOT more space to make an aesthetic decision for big,
character-wide window frames.

Seriously go watch the video, this thing feels like it's got a foot in the
realm of UI roads not taken like Raskin's zoomable UI, text-mode is maybe more
just a way to keep their focus on thinking about the interactions without
having to worry about drawing a bunch of pretty widgets.

~~~
ajarmst
Yeah, I see it. I just don't get it. There's an awful lot of UX work being
done to preserve an illusion that you have a bunch of fixed-size consoles that
are arbitrarily arranged in a 2d space. Which, I guess, is the defining
metaphor of GUI interfaces, but if that's what is desired, why create a
console-only (if only in appearance) GUI? Text buffers in emacs or panes in
screen or tmux can be made to have arbitrary size and dimension if you want to
turn off wrapping and keep a longish scrollback. You can have as many buffers
as you want, as many as your screen can accomodate visible at once and easily
navigate them as you like. All you have to give up is the conceit that windows
have independent physical size and location and embrace one that holds that
you can have an arbitrary number of text buffers available to arrange, swap,
hide, show, etc. Not trying to be nasty, but this feels like a bit of a cargo
cult: someone stuck in the windows GUI metaphor trying to create a version of
CLI metaphor they don't fully grasp. Of course, the fact that those of us who
prefer the CLI metaphor are rapidly dying off is relevant here---but seizing
all of the disadvantages of an all-text environment without any of the
advantages seems ill-advised. That said, no one needs my approval. If this
works for you (and I'll readily admit it's kind of cool), what do you care
that I don't get it.

~~~
z3t4
Typing text into a terminal/buffer is easy. But remembering all the shortcuts
or cammands to resize and move windows in termux et.al is hard. Resizing and
dragging with a mouse is easier (or fingers on a touch screen/interface)

------
bobuk
Looks like a modern version of twin
[https://github.com/cosmos72/twin](https://github.com/cosmos72/twin)

~~~
exikyut
Ha, you beat me by a minute :D I agree!

------
Abishek_Muthian
I've been thinking about such text-based DE for custom Raspberry Pi nano based
smartphone. Reason being, common mobile apps are not going to arrive for Linux
and Nano is not powerful enough to run web browsers anyways; So why not a
text-based DE or even just a console which enables basic communication
features and Lynx for browsing?

It would be great if we could get some GPU juice from Pi for text rendering in
such environment like how iTerm2 does on macOS.

~~~
ajford
Are you talking about a Pi Zero? That can totally run a desktop environment
and browser. Especially something light like XFCE or Enlightenment.

~~~
Abishek_Muthian
>Pi Zero?

Correct, sorry brain fart.

>That can totally run a desktop environment and browser. Especially something
light like XFCE or Enlightenment

Even regular sized Pi struggle with web browsing on a standard browser
(Firefox/Chromium), I know that it largely has to do with the web pages
themselves being memory hogs, but then again a similar specced Chromebook x86
doesn't hang while browsing(Same web page/Same no of Tabs); I think it largely
has to do with browsers not getting optimised for ARM architecture on Linux.

I had the same issue with XFCE i.e. browsers hang after sometime, as for
Enlightenment 3rd party apps didn't work last time I tried with Pi3[1] has the
situation changed now?

[1][https://abishekmuthian.com/getting-smoother-desktop-
experien...](https://abishekmuthian.com/getting-smoother-desktop-experience-
on-raspberry-pi/)

------
cientifico
Tip: If you want to escape from any ssh session you can press this sequence:

1\. <Enter> Press Enter.

2\. ~ Press Tilde.

3\. . Press dot.

This disconnects from the remote host.

If you want more: `man ssh` and look for "ESCAPE CHARACTERS"

~~~
afranchuk
I think the sequence is "<Enter>~.". I use it often.

~~~
411111111111111
why not use the logout shortcurt ^d ? this abort sequence is so much move
involved vs just ^c ^d -ing

~~~
EE84M3i
This shortcut works even if the remote side isn't responding to ^c and/or ^d.
It's handled by the local client. The two primary use cases I've found it
useful are when I accidentally wedge the remote box by using up all of some
resource or when some other event causes my network connection to hang and I
don't want to wait for a timeout.

~~~
411111111111111
yeah, i was specifically confused about him having to use it often. it is
sometimes useful, like when you're connected to the demo site and cba to
figure out how to disconnect.

but such situation are so rare that i was confused about the remark how often
he uses it.

~~~
EE84M3i
I use it pretty often because I have SSH sessions that get messed up from
(dis)connecting my VPN and I'm impatient.

~~~
Ignacy-s
If you do the first connection with mosh instead of ssh, it will survive
vpn/wifi/4g roaming and even system hibernation. Assuming that first hop is a
vps in the cloud with a stable connection, you can literally wake your pc from
hibernation and once you get any Internet access, mosh will happily restore
your "ssh" session for you.

mosh.org: >Mosh will log the user in via SSH, then start a connection on a UDP
port between 60000 and 61000.

Needs at least a couple of ports in that range open, because old sessions tend
to block ports until they are cleaned.

~~~
EE84M3i
I use mosh for personal stuff. My work does not allow mosh.

------
exikyut
Reminds me of
[https://en.wikipedia.org/wiki/Twin_(windowing_system)](https://en.wikipedia.org/wiki/Twin_\(windowing_system\)),
[https://github.com/cosmos72/twin/](https://github.com/cosmos72/twin/)

------
nsxwolf
It looks like DESQView for MS-DOS.

~~~
jmclnx
I really liked DESQView, too bad the industry had to move to GUIs :(

------
ape4
I just ssh-ed in, there are multiple users, its crazy!

~~~
blarglechien
same, but I will come back later to actually try it. Right now it's displaying
a bunch of colors and strobing really hard. Not sure what's happening.

~~~
LukeShu
Try a different terminal. It does that for me in URxvt, but works fine in
xterm.

------
throwawayForMe2
Along with DESQView and IBM’s TopView as already mentioned, this reminded me
of the first version of PC Smalltalk put out by Digitalk that was called
“Smalltalk Methods”. It was a character based windowed Smalltalk.

This was quickly followed with the full bit mapped windowed Smalltalk/V. I
believe all of this was when MS Windows still only had tiled windows without
overlap.

------
submeta
I came here expecting an article about my beloved Emacs ;)

~~~
ravar
serious question about exwm, how do you deal with a broken .emacs, and what
about when you hang emacs?

~~~
stjohnswarts
I would suggest keeping around some versions :) I use git for this very reason
locally when I'm futzing with settings, it's immeasurably handy for
experimenters and config file junkies.

------
mysterydip
Glad to see someone made this to save me the time! I've wondered if a TUI
could replace some desktops for low end or embedded systems, or something to
use on remoting into a datacenter etc.

~~~
z3t4
Drawing text is the most expensive in a GUI.

~~~
qayxc
That's only true for TrueType Fonts in graphical mode.

In text-mode, characters are "drawn" by simply writing their ASCII code point
into VRAM and writing another byte (two 4-bit values really) in an additional
"attribute" buffer to set the foreground and background colour.

Programmers can swap out the default character set to provide their own
typeface and graphical characters for use as window borders, shadows, etc.

(S)VGA text-mode is as cheap as it gets in terms of computational complexity.

~~~
ezoe
Come on. We had long past the ASCII only era.

~~~
FlyMoreRockets
ASCII is eternal

~~~
dividedbyzero
Tell that to the French, Germans, Russians, Chinese, Japanese, Koreans,
Spanish, Norwegians, etc. pp.

------
lehi
Emulating stacked translucency in a terminal is pretty interesting.

~~~
dankamongmen
notcurses takes this to its logical extreme: [https://nick-
black.com/dankwiki/index.php/Notcurses#Transpar...](https://nick-
black.com/dankwiki/index.php/Notcurses#Transparency.2FContrasting)

check it out in notcurses-demo -- pretty crazy stuff

------
raintrees
This reminds me of the DOS menuing system we used to install on clients'
computers several decades ago. Cannot remember the name, may have to dig out
my old 5 1/4" floppy collection binder I used to always carry with me if not
remembering starts to drive me crazy...

That system remapped the function keys to launch batch files or call up sub-
menus... Easiest way (at the time) to "customize" peoples' computers for
them...

~~~
anigbrowl
Could you be thinking of DesqView? That was a whole multitasking OS that sat
on top of DOS.

~~~
raintrees
Although I played with DesqView, that was not the menuing system I used to use
- It had some monumental name for the day, like SuperMenu or MenuGold 2000 or
some such... Internet search not getting any hits that match. Oh well.

------
smusamashah
This is amazing. Has there been anything like this before?

~~~
mightybyte
Oh yeah. I'm going to date myself here, but I was just going to say this
reminds me a lot of Borland Turbo C++ way back in the day. They had this thing
called Turbo Vision for building text UIs. It seemed super cool back then.

[https://en.wikipedia.org/wiki/Turbo_Vision](https://en.wikipedia.org/wiki/Turbo_Vision)

~~~
Minor49er
It definitely was super cool. The windows had types, could be resized, had
titles, dropdown menus, and form controls. The editor had syntax highlighting.
And most importantly (at least for me at the time), there was a language
reference included with the help system which had hyperlinking, so you could
click through pages about the supported syntax and various topics, gleaning a
wealth of information. All on DOS!

~~~
makapuf
Hypertext integrated help has been available earlier than turbo vision even.
It has been available from turbo pascal 3 at least. For a young like me who
... copied it on two disks, it was awesome what you could learn.

~~~
badsectoracula
Turbo Pascal 3 didn't have integrated help (hypertext or not), it was
introduced in Turbo Pascal 4 (which itself was AFAIK in general a big rewrite
of the compiler and IDE).

Though the integrated help really improved with version 6 (when Turbo Vision
was also introduced) since you could move a cursor freely inside the help
window as if it was an editor, select and copy text, the help text was much
more detailed and more organized and every function/procedure also had a small
example showing its use (version 5.5 also had examples but the overall help
was much more terse).

~~~
makapuf
Ah, maybe version 4. 5.5 was my favourite with objects. Later ones with turbo
vision swapped on my 640k 8086.

------
dec0dedab0de
I love things like this. Is it not released yet? A glance at the repo from my
phone looks like there is no code yet.

Does anyone remember Tandy Deskmate?

~~~
city41
Here is a nice quick tour of Deskmate:
[https://www.youtube.com/watch?v=mYHtojsaRkY&t=9m47s](https://www.youtube.com/watch?v=mYHtojsaRkY&t=9m47s)

------
ChrisMarshallNY
Reminds me of the first edition of MS Windows.

A lot of firmware systems still do their "windowing" like this.

------
cycomanic
This looks quite cool, but I don't think it's open source? I can't find any
source code in the repository, there's just a single file called
not_ready_yet.

~~~
trenchgun
It is probably not ready yet.

------
ashton314
I once built something like this. There’s a Perl library[1] that lets you
control windows, dialogues, etc. My grasp on concepts like asynchronous
programming, callbacks, process IO, etc. was nascent at best, so naturally
this UI that I built was pretty terrible. I learned a ton though!

[1]:
[https://metacpan.org/pod/Curses::UI](https://metacpan.org/pod/Curses::UI)

~~~
beojan
Not just Perl. Curses is what most TUIs on *nix are built in. It's a C library
with a few different implementations.

------
jefurii
I love the lines connecting all the windows to a single point. Helps with the
spatial relationships.

------
29athrowaway
The source code is just a file named "not ready yet". How is this open source?

~~~
Shared404
Pretty sure that MIT doesn't mean that they have to put the code in a repo.
Have you tried emailing them?

Edit: Presumably they plan to put the code in a repo, but it's not ready yet.

------
Yuioup
Tried to connect with Juice SSH on mobile and it looked quite ... abstract.

~~~
mpweiher
Also with Terminal.app from macOS...very..er..."colorful".

[https://www.dropbox.com/s/q52w26jsyv086hn/Screen%20Shot%2020...](https://www.dropbox.com/s/q52w26jsyv086hn/Screen%20Shot%202020-08-22%20at%2015.17.28.png)

~~~
reaperducer
Looks fun like that on iOS Prompt, too.

Must be looking for ANSI instead of VT100.

Mismatched emulator modes reminds me of BBS days.

------
blickentwapft
It’s funny when Microsoft comes to the Linux world it feels the urge to make
it windowy, rather than learning the Linux text CLI paradigm.

------
woutr_be
Just note that VTM is the main commercial TV station in Belgium, and the name
is most likely trademarked there as well.

------
agumonkey
I like that, a lot. For the low bandwidth only.

~~~
exikyut
> _" total sent: 56 878 123 bytes"_

:/

~~~
agumonkey
aka one gif video on imgur

------
wintorez
Ah, this reminds me of Turbo Pascal days :)

------
emilfihlman
The demo doesn't seemt to work on putty

~~~
moron4hire
Worked fine for me in PuTTY.

~~~
sfgweilr4f
What settings? Mines more like an abstract color art piece but not so much a
desktop environment.

~~~
forgotpwd16
Same on urxvt. Probably requires true color support. I had the same issue with
browsh, a text front-end to Firefox.

~~~
msla
Oh, if only there were a way to solve this problem which was well-tested and
widely-deployed!

[https://invisible-island.net/ncurses/](https://invisible-island.net/ncurses/)

~~~
JdeBP
That gained 24-bit RGB colour support in version 6.1, released in 2018. It's
not quite as widely deployed as you may have thought.

* [https://stackoverflow.com/a/36163656/340790](https://stackoverflow.com/a/36163656/340790)

------
peterisza
Floating windows are worse than tiling imho

~~~
person_of_color
Until you want to work with media/creative apps.

------
colordrops
What's the point of overlapping windows in text? Seems that tmux already fits
the bill for this use case.

~~~
Skunkleton
Its good to see experiments like this. Maybe this project won't be the next
big thing, but maybe it will give someone an idea of what the next big thing
should be.

------
globuous
Insane.

Well done brother ;)

------
deltron3030
Isn't it similar to the rio windowing system from Plan 9?.

~~~
forgotpwd16
rio is a graphical interface so not really. It is more like acme itself but
with floating windows and translucency.

------
7thaccount
Is this running on top of Windows and just replaces the GUI?

~~~
ktpsns
Nope, I guess this is a Linux or at least platform-independent command line
interface program.

You are probably confused by the powershell which seems to be available for
multiple platforms nowadays, see
[https://aka.ms/pscore6](https://aka.ms/pscore6)

~~~
moron4hire
There's also a window claiming to be Windows' CMD. As I can't figure out how
to enter text in any of these windows (I'm assuming it's disabled, otherwise
CHAOS) I can't tell if it's just a vestigial window of if it's a true output.

The topics on the Github repo list both Linux and Windows. The Readme calls
itself "aka Monotty Desktop". That makes me think they may have written the
code for the Mono runtime, so I'm expecting it's C#.

I had played around with a similar idea in C# some months back, though I was
targeting only Windows because it took P-Invoking into some Win32 APIs to get
most of the functionality.

~~~
cstross
Powershell. But Microsoft ported Powershell to run on UNIX/Linux, so ...

~~~
moron4hire
I know the difference between PowerShell and CMD. And I know Microsoft ported
PowerShell to Linux. You're not paying attention. Command Prompt is _also_ on
display:
[https://dice.netxs.online/cloud/vtm/mde_banner.png](https://dice.netxs.online/cloud/vtm/mde_banner.png)

~~~
7thaccount
Yep, I'm in the same boat as you. Part of it just looked like Linux running
Powershell, but CMD threw me off.

~~~
moron4hire
When PowerShell runs on Linux, it doesn't show a "C:/" prompt. This is clearly
running on Windows with WSL or Cygwin for the Unix tools.

~~~
7thaccount
My first thought as well, but I didn't think you could not use the GUI in
WIN10

~~~
moron4hire
There would be no need to kill the default desktop manager to run anything
we've seen here.

------
didip
I am curious, how does it render images/videos?

~~~
mixmastamyk
Yes it does have some support, though the resolution is low.

------
edwinyzh
It's very cool!

------
jasonm23
Emacs

