Show HN: I wrote a "web OS" based on the Apple Lisa's UI, with 1-bit graphics

alpha.lisagui.com

500 points by ayaros 2 days ago


https://lisagui.com/info.html

This is a web OS I wrote in vanilla JS that looks like the Apple Lisa Office System (1983-85), with other contemporaneous influences and additional improvements and features. It's currently in alpha and isn't remotely bug free. I had been holding off on posting this here until it was somewhat presentable and useful. Please note; the Lisa conforms more literally to the desktop metaphor than most modern GUIs - some of the important differences are mentioned in the readme.

This is a complete recreation of the UI in JS; it all renders to a single canvas element. It's not a CSS theme, and not an emulator ported to JS. None of the code is written by Apple. I'll be happy to elaborate more in the comments, but the short version is the entire UI is defined outside the DOM using JS objects. Thus, every interface element - menus, windows, controls, and even typefaces - was recreated from scratch. There are no font files - I wrote my own typesetting system, which supports combining multiple text styles and generates new glyph variants on the fly.

Many of the technical decisions I made were motivated by a desire to have this look the same in every browser. That's harder to do with the DOM and CSS, and why I moved as much logic as I could to JS. Also, the only part of the project outside of vanilla JS and standard web APIs is the Gulp toolkit, which I'm using as a minification/build tool. No vibe coding was used to make this!

This is based on a UI from the 80s, and won't work well on your phone. If you insist on running it that way, turn on trackpad mode in the touchscreen settings panel of the preferences app. For best results, install it as a PWA (add it to your home screen). Also there are some odd Android bugs; the native touchscreen keyboard is currently broken, and there's an issue with the cursor when dragging windows.

I realize there's not a whole lot to do within LisaGUI right now; I've got a big list of additional features and apps I'll be adding in the future. I've been working on this project for a while, and I'm eager to hear people's feedback and answer questions about it.

ayaros - 2 days ago

The Lisa doesn't have square pixels, so the canvas is scaled to be 1.5x as high as it is wide. This generally looks fine on high-dpi displays, because there's technically twice as much space to render with (pixels are 2px wide by 3px high). However, things will look distorted on a lower resolution display (where pixels are 1px wide by 1.5px high). That's just a compromise I made when designing this.

The good news is, if you have a large enough low-dpi display, and you make the window big enough, the automatic integer scaling settings will kick in, and the pixels themselves will be displayed larger. This can be forced via the preferences app (under the display options). If you screw this up, then restart LisaGUI while holding the shift key to reset the scaling settings.

EDIT: Unrelated to this, there are a couple minor bugs with PWAs on iOS relating to the positioning of the canvas. These can be resolved by rotating your device to a different orientation and then rotating it back to the original position... but this is annoying.

EDIT 2: To close windows, just double click the icon in the titlebar! This "collapses the window back into an icon."

ayaros - a day ago

I've received several comments regarding the font - people are saying some of the character widths appear uneven. The font characters are literally bitmap fonts; each character is printed the same way every time, unless one or more styles is applied to it, but this is done in a consistent way. The Lisa's system font is also of a notably distinct style; the vertical parts of each letter are slightly wider than the horizontal parts to make up for the 2:3 pixel aspect ratio.

If things appear uneven, these issues may be due to viewing the screen at 1x scale on a lower-DPI display, as I mentioned in another comment. The only way for me to debug these issues is with a screenshot. You can press Windows + PrintScreen to take a screenshot on Windows, or press Command + Shift + 3 on a Mac. You can send them to me using the email link at the bottom of https://yaros.ae/ or by messaging me on Bluesky (https://bsky.app/profile/lisagui.com).

Also, I've been posting project updates to the Bluesky account, and I'll continue to do so in the future for anyone interested in keeping up with the project. There's also an RSS link on my website for anyone who's old-school and doesn't want to make a Bluesky account.

rustystump - 2 days ago

These are the kinds of show hn I live for. Tasty vanilla js + learning about an esoteric "Lisa GUI" well before my time. Bravo!

I would love to see a breakout style game or something in the demo/examples but that is my inner child speaking.

rgovostes - 2 days ago

The shadow text style and fatbits editor in the Preferences app really took me back. Other than a lack of close buttons on windows, it's remarkable that you can strip away 40 years of UX "innovation" and the result is still productive and intuitive.

(Edit: Menus staying open after one click was a welcome improvement that I think came much later.)

hoistbypetard - 2 days ago

I never spent a lot of time using Lisa, but I got several opportunities to kick the tires as a Mac repair tech in the early 90s. I even fixed a Lisa or two, and converted one to a "Mac XL". You've captured the UI really nicely, and it was fun to click around. Good job!

jonathanlydall - 2 days ago

Very cool.

Something I recommend doing for the mouse cursor on mobile is to make it work like Microsoft’s Remote Desktop on iOS (possibly Android too, but I’m an iPhone user so don’t know for sure) where the cursor isn’t where you tap on the screen, but you kind of pan anywhere on the screen which proportionally moves the cursor which is somewhere not under your finger. It’s a bit hard to explain, you just need to try using RDP on Microsoft’s free Windows App on your mobile device.

MarkusWandel - a day ago

Works perfectly in Desktop Google Chrome. And on a 13 year old computer, running in Javascript, is lightning fast. Just shows how lean software can be and how responsive a desktop environment should be. Not that it was that fast originally. Never used a Lisa, but did use an original Mac 512K and the GUI environment was "ambitious" for the CPU of the day.

Cieric - 2 days ago

This is pretty cool and it's surprising how well it works on mobile. I think the shuffle puzzle game has a bug where it can generate unsolvable puzzles. I ran into a parity issue. I solved it with the blank in the upper left but got no response from the game so I don't believe that was the intended solution.

Also checked with an online solver and it verified that there was no solution.

djaychela - a day ago

Just trying this out on iPhone on Firefox, and found something. If the phone is rotation locked in portrait mode (which mine normally is) I don't see buttons to install, try etc.

But if rotation lock is off, it's fine. Maybe there's something in the way the resolution is read that is different if the lock is on? Nothing appears in the menu bar at the top so there was no way to do anything.

Amazing efforts here though, now I can actually use it! Truly impressive.

mysterydip - 2 days ago

I'm on mobile so only able to try a couple things, but impressed with how responsive it is! Thanks for sharing

rbanffy - a day ago

In many ways, the Lisa is more sophisticated than our current GUIs. In particular, I liked the way applications meshed into the system and disappeared into stationery - if you want to create a document, double click on its corresponding stationery stack and a new document is created. No need to find open Excel (or LisaCalc).

IIRC, Windows 95 briefly had this in the form of a Templates folder. You added files to that folder and then you could create new copies of those files from the context menu. I don't remember it persisting into other versions of Windows.

leakycap - 2 days ago

I never realized it, but I'd never even used an emulated Lisa - until today! Thanks for bringing life back to this old platform and letting us relive the thinking that led off the GUI. Cheers.

fitsumbelay - 2 days ago

very cool, plus so much tasty design and functional tips that spark inspiration. I really love that look of aliased type that still reaches for that calligraphic look that's _just_ beyond the GUI's capacity to display. Nostalgia shmacking me in the taste buds with this one ...

shusaku - 2 days ago

Unfortunately it doesn’t work on my iPhone SE due to the small screen. I’ll have to upgrade my hardware if I want to use the latest OS I guess :)

gwbas1c - a day ago

Took me a minute to figure out how to close a window. (Had to remember it's the same way as closing a window in Win 3.1) I even scrolled through the help document and didn't see it.

badc0ffee - 19 hours ago

It looks good in a maximized window on an external retina display on my MBP.

One thing, though, is that it "stutters" every 15 seconds or so. Like, it pauses for a noticeable time, like hundreds of ms. The UI shows a consistent 119-120 FPS, even when this is happening.

It's possible the fault is Firefox, and not your page. I do have 64 GB of RAM, but also a zillion tabs open.

mch82 - 13 hours ago

The mouse actually works quite well with trackpad mode disabled. I’m using an iPhone Mini. One trick: To select a menu option tap-and-hold a menu title then drag to an option and let go to select.

Really cool!

sfblah - 2 days ago

So I played the puzzle game on this Lisa and it appears unsolvable to me, which sort of surprised me. Has anyone else given it a shot?

Here's a picture of how far I got: https://imgur.com/a/QhnnC4X

malkia - 2 days ago

This brings back good memories, My first computer was Apple ][/e or /c clone (bulgarian Правец 8Ц), and then had a 286, later 386 PC with Hercules (monographics) monitor!

So I appreciate when things look really cool, reminds of me Think-Pascal.

hackyhacky - 2 days ago

How did you research this? Do you own a Lisa?

muzani - a day ago

Kind of an edge case here, but I love making 1-bit palettes and then testing them on old Apple UIs. This is just perfect. I hope you can make the color editable :)

durakot - 11 hours ago

Aesthetically perfect, great job.

edda7 - 17 hours ago

Please add Frotz to this, so we can play text adventures. Amazingly, well done!

demetrius - a day ago

It treats any of my clicks as an attempt to select text, and draws everything with blue selection overlay (Firefox on Windows).

Otherwise, looks cool!

smokel - 2 days ago

Perhaps I'm doing something wrong, but the line widths in the characters are quite inconsistent. For example the two l's in "install" have different widths. This makes something pretty amazing look slightly disappointing.

(Tested in Firefox and Chrome on desktop.)

DigiEggz - 2 days ago

Love both the project and the landing page design. Thank you for creating this!!

kaoD - 2 days ago

The font looks weird and uneven horizontally (some characters are "fatter" like if they were randomly bold). Is it supposed to look like that? Firefox + Windows.

cruffle_duffle - a day ago

The FPS display needs a way to be disabled. It rapidly “flickers” between several values on my iPhone due to what I’d assume is rounding or something. It’s a very annoying distraction from what otherwise looks pretty cool.

DustinBrett - 2 days ago

Looks great! I love the choice to make it consistent across browsers through canvas rendering. Cool that it's a PWA.

JSR_FDED - 2 days ago

This is amazing! Thanks for the excellent memories!

subjectsigma - 2 days ago

Just clicking around I accidentally highlighted the background element or something, which caused the whole page to turn blue. Then no matter what I clicked I couldn't get it to un-select. Making everything blue didn't ruin the experience or anything but it was a little annoying. Safari 18.5 (20621.2.5.11.8) and Google Chrome 138.0.7204.93.

zahirbmirza - a day ago

I miss those "extra" icons mac used to have.

ceautery - a day ago

What's up with the clock? Mine was two minutes off of local system time.

reconnecting - 2 days ago

Amazing turn on/off effect!

DubDouble - 11 hours ago

Its awesome.

int_19h - 2 days ago

Is keyboard not supposed to work? E.g. tabbing through the widgets.

mlindner - a day ago

Why does the screen turn light blue like it's highlighted text a few seconds after the page loads? Firefox on Mac OS.

FerkiHN - 2 days ago

Wow this is mega cool!

spagoop - a day ago

would love to see the source code for this, poked around but couldn't find anything :-)

Jonovono - 2 days ago

Crazy cool, wow!

em3rgent0rdr - a day ago

amazing how fast and snappy this UI is, even though it is running inside a browser.

ckrapu - 2 days ago

Very cool.

fnord77 - 11 hours ago

hmmm

https://i.imgur.com/uVpcRPz.png

russellbeattie - a day ago

On the original Mac, the menu bar drop downs didn't stay open if you just clicked on the title. You had to keep the mouse button down, highlight the menu item then let go to activate. Not sure if that is how the Lisa worked.

ww520 - 2 days ago

This is awesome. It's actually pretty quick. Major kudos.

g_host56 - 2 days ago

very cool!

- 2 days ago
[deleted]
revskill - 2 days ago

Cool but color hurt my eyes.

Avshalom - 2 days ago

> Author's note: I pronounce the letters in GUI separately. Why would you ever pronounce it "gooey?" Please don't do that. Just don't.

Solidarity!

londons_explore - 2 days ago

> minor bugs with PWAs on iOS

There are major bugs with PWA's, and I suspect most of them stem from the tens of billions of dollars per year of app store revenue that would be undermined if PWA's actually became useful...

iluvfossilfuels - 2 days ago

[flagged]

andy_nguyen - a day ago

[flagged]