121 comments

  • gwbas1c 11 minutes ago 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.

  • ayaros 18 hours ago 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."

    • ivape 15 hours ago ago

      How do you handle dynamic window/font scaling regardless of browser size (you get it for free with html mostly).

      • ayaros 15 hours ago ago

        It's integer scaling; it involves changing the width, height, and style attributes of the canvas dynamically. I have a whole class that handles this, and let me tell you it took a lot of effort to get working properly and involved juggling around quite a few parameters, including the DPI, the border width, the pixel aspect ratio, and more. I had to use a ResizeObserver object to detect changes in the size of the DOM's body element.

        To get the canvas to be consistently smooth, I had to apply a lot of contrast using a CSS filter, and I set image-rendering to pixelated, IIRC.

  • zahirbmirza 9 minutes ago ago

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

  • ayaros 12 hours ago 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.

  • rgovostes 19 hours ago 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.)

    • ayaros 18 hours ago ago

      Yes, sticky menus arrived much later. I put the extra effort to add them here because everyone's so used to them now. Both options work - you can single-click to keep a menu open, or you can hold down the mouse and drag to open a menu which closes when you release the mouse.

      There's at least one Mac extension I know of that lets you use sticky menus on earlier versions of Mac OS, like System 6. I figured I'd backport that feature a little further, so to speak...

      EDIT: Also, forgot to mention it in this reply, but you double click the titlebar icon to close the window.

    • layer8 18 hours ago ago

      You can double-click on the icon in the top left corner of a window to close it. (Which, I guess, is just the shorthand for File > Set Aside.)

      • ayaros 18 hours ago ago

        Yes.

        Setting aside specifically places something on the desktop. Save-able documents have a "save and put away" option which "refiles" it back in its folder without putting it on the desktop.

        You made me realize I still need to add a separate "put away" option on all windows regardless, so there's always a menu command that can be used to refile something.

        The desktop isn't a normal directory - I discuss this in the readme a bit.

  • rustystump 16 hours ago 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.

    • ayaros 16 hours ago ago

      Thank you. That means a lot to me!

      That's a good game idea. The next game I'm going to do will be solitaire. I was also thinking of trying to eventually make something like the mazewar game from the Xerox Alto to pay my respects to Xerox, although I know that will be an undertaking, especially adding in networking...

  • rbanffy 4 hours ago 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.

    • kalleboo 4 hours ago ago

      macOS still supports turning any file into a template, a feature first introduced in System 7 back in 1991.

      Just Get Info on any file in the Finder, then check the "Stationary pad" box.

      • rbanffy 3 hours ago ago

        Wow! That's amazing! Never realized it was still there.

  • djaychela 8 hours ago 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.

    • zoom6628 2 hours ago ago

      I had to scale down a bit using page zoom to see the buttons and after that all was good. Well not good actually .... it was bloody brilliant!!

      Love this .... actually made me smile while using it. And so fast!

    • ayaros 7 hours ago ago

      The menu bar is hidden in the installer because that's how the Lisa's installer looked. I definitely need to do some work on layouts to make things more responsive. If your phone's screen is too small the text may overflow and things can get cut-off. But I don't want to cram scroll-able panes into all these dialogs because the Lisa didn't even do that.

      I'm balancing historical accuracy with modern constraints with my own self-imposed technical debts, so there's bound to be compromises!

  • MarkusWandel 2 hours ago 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.

  • hoistbypetard 14 hours ago 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!

    • ayaros 11 hours ago ago

      I'm really happy you enjoyed it! The Lisa's a really cool machine; definitely easier to work with and service than some of Apple's other designs...

  • Cieric 16 hours ago 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.

    • ayaros 16 hours ago ago

      I haven't gone as far as verifying puzzles are solvable - right now I only verify the state of the puzzle is valid. Maybe in the future. For now I guess it will be like solitaire, where if you can't solve it you'll have to reshuffle it.

      Incidentally, I'm planning on adding solitaire as the next game!

      • Cieric 15 hours ago ago

        Oh nice. I don't actually know how to play solitaire, but I know Microsoft used the method of randomly generating them, solving them and then saving solvable seeds. (I believe they had 2 that weren't solvable somehow though so maybe it was a human solving them and it was a typo or mistake)

        Also, I was just checking around to see if there were any good methods for telling if a puzzle is solvable without solving it. Seems geeks for geeks have some code for it.

        https://www.geeksforgeeks.org/dsa/check-instance-15-puzzle-s... The only other solution I can think of is detecting both configurations (blank in bottom right or top left) and displaying something when either is reached.

      • Shorel 16 hours ago ago

        I remember making that puzzle in C++.

        Half of the random states created are solvable, and the other half are unsolvable.

        My solution was not checking if the puzzle is solvable (the mathematics of this seem complicated), but starting with a solved one and then do a fixed number of random movements.

        • ayaros 15 hours ago ago

          That's a good idea.

      • BubbleRings 15 hours ago ago

        Great work, great memories on the Lisa.

        But sheesh! The first time I play the numbers puzzle on a computer in my life, and the first time in 30 years that I play it at all, and I find out some joker has snapped two of the pieces out and reversed them, making it unsolvable?! Diabolical!

      • pedroslopez 9 hours ago ago

        I spent so long fiddling with the puzzle game, trying to get a final 2 tiles swapped, just to find it was unsolvable sigh

        Cool stuff though!

        • jcheng 6 hours ago ago

          Same here, I spent forever on it :(

  • jonathanlydall 18 hours ago 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.

    • ayaros 18 hours ago ago

      Thanks. And yes, I did that! Under preferences, go to the touchscreen options panel, then enable trackpad mode!

      • john-aj 16 hours ago ago

        That is surprisingly pleasant to use, actually!

        • ayaros 15 hours ago ago

          Yes, one thumb on each side works great in landscape mode. Eventually I'll have to add some UI feedback to this mode when toggling it on or off, which shouldn't be too hard to do with a little CSS since the trackpad and button are just div elements overlaid on top of the canvas.

          • phatskat 13 hours ago ago

            I don’t know if multi-tap functions are already spoken for, I’ve only played with this a little so far (great job btw!). I think being able to toggle Trackpad Mode with a three-finger tap would be a nice _touch_.

  • demetrius 2 hours ago 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!

    • jannes an hour ago ago

      I thought the same, but it's actually just the default Color Palette being applied. You can change it in the preferences.

  • mysterydip 19 hours ago ago

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

    • ayaros 18 hours ago ago

      Thanks for looking!

  • shusaku 14 hours ago 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 :)

    • ayaros 12 hours ago ago

      That's definitely way too small! You should try it on a desktop or laptop.

  • fitsumbelay 18 hours ago 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 ...

    • ayaros 18 hours ago ago

      Yes. The text styles were fun to do. They aren't implemented the same way QuickDraw does it, but it's close enough.

  • muzani 9 hours ago 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 :)

    • ayaros 7 hours ago ago

      I do have plans to eventually add a UI to add, edit, and remove custom color palette values... it's just a matter of coding up a dialog that lets you type in the RGB values and a label for each user-defined preset. I just haven't gotten around to it yet.

  • malkia 14 hours ago 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.

    • ayaros 12 hours ago ago

      Be sure to check out LisaGUI's "Windows 93™" theme which (aside from being a reference to the colors of that other great Web OS) is a Blue/Pink CGA-inspired theme, and the "Through the Looking Glass" icon theme which is literally just icons from Windows 1.x/2.x. (Although I had to make the recycle bin icon myself using the Win95 recycle symbol)

  • sfblah 17 hours ago 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

    • Shorel 16 hours ago ago

      If it is randomly generated, half of the puzzles are unsolvable.

    • ayaros 16 hours ago ago

      Oh, it's totally solvable, but it's tricky! You kind of have to strategically "snake" the letters around a bit to sequentially place them in the right spots - you get less and less room to do so as you place more and more tiles.

    • phyzix5761 17 hours ago ago

      Yeah, I was able to solve it

  • leakycap 14 hours ago 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.

    • ayaros 12 hours ago ago

      It's my pleasure. I am very happy you got some nostalgia out of it!

  • hackyhacky 19 hours ago ago

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

  • DigiEggz 14 hours ago ago

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

    • ayaros 12 hours ago ago

      Thanks! You might also appreciate the 404 page on the alpha subdomain! And whatever you do, do NOT try to open this with MS Internet Explorer! I can't imagine what might happen if you do that!

  • smokel 19 hours ago 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.)

    • ayaros 19 hours ago ago

      I'll take a closer look at this. Might be a kerning issue.

      EDIT: I'm honestly not sure what this issue might be... If you're up for sending me a screenshot, there's an email link at the bottom of https://yaros.ae/.

  • kaoD 14 hours ago 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.

  • DustinBrett 14 hours ago ago

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

  • JSR_FDED 18 hours ago ago

    This is amazing! Thanks for the excellent memories!

    • ayaros 18 hours ago ago

      Thank you! I'm happy you enjoyed it!

  • ceautery 12 hours ago ago

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

    • ayaros 12 hours ago ago

      The clock is not entirely bug-free and has been a bit of a victim of my impulse towards premature optimization. I've rewrote it once and I'm considering rewriting it again... so it's not just you. It should hopefully work properly if you reload the page.

    • magicalhippo 12 hours ago ago

      Here it was "on time" except it apparently uses round(), so 30 seconds past the minute it would show the next minute.

      • ayaros 12 hours ago ago

        For some reason I never seem to encounter bugs like this myself! I guess I'll have to do another rewrite of that. Was it just the menu clock? Did the clock app exhibit the same behavior?

        • magicalhippo 3 hours ago ago

          Boy do I know that feeling :D

          I didn't look at the menu clock, only the clock app.

          Real cool project tho, kudos!

  • subjectsigma 19 hours ago 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.

    • rgovostes 19 hours ago ago

      I had the same reaction, but it's intentional. Open the Preferences app, check Decorate Desktop, and then select something other than Pale Blue Dot from the color palette picker.

    • ayaros 19 hours ago ago

      Unless the canvas element itself is being selected - which would be a big oversight on my part, that's the default color palette, which is a blue tint to mimic the Lisa's CRT. Right now, it isn't applied until the settings start loading.

      If this is causing any confusion I might put a priority on saving this setting in a way where it can be applied immediately as the page is loaded.

      • subjectsigma 17 hours ago ago

        I think you and other commenters are correct - it's just the theming. I can't get it to not have the tint on startup and it goes away when changing the theme as rgovostes described. The reason I was confused was because it starts out as black-and-white and then turns blue, and the blue is basically the same color as selecting text! Oh well, I feel silly now.

        • ayaros 16 hours ago ago

          Yeah. This is part of why I wanted to get this on places like HN eventually. This is valuable user feedback! For the longest time I kept this project totally secret.

          What I'll probably do is serialize the setting data to localstorage so it's available before the system starts up and loads from IndexedDB.

    • humptybumpty 19 hours ago ago

      Same on iphone. Maybe a swipe or something and it selected the whole page blue

      Edit: doing nothing will do the autoselect. Odd

    • pvg 19 hours ago ago

      I think that tint is intended to emulate the look of the Lisa CRT.

      • ayaros 19 hours ago ago

        Yes, that's correct. There's a variety of palettes to choose from in the preferences!

  • int_19h 12 hours ago ago

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

    • ayaros 12 hours ago ago

      The Lisa doesn't have an alt-tab function for Window management, so I haven't added one. Also, it would be difficult to use those keys in particular because it would conflict with your system's alt+tab keyboard shortcut.

      When you select text in a textbox, the keyboard should input text. Also, individual menu items have their own keyboard shortcuts. If you're on a PC, it defaults to using the Control key as the "Apple" key. If your on a Mac, it defaults to using the Command key. This option can be changed in the preferences app in the "Set Conveniences" pane.

      • int_19h 9 hours ago ago

        I don't mean Alt+Tab, just Tab by itself to move focus through the widgets in the current window. I don't know how it's supposed to work on Lisa, but pretty much every TUI or GUI I've seen from early 90s onwards had full keyboard navigation support like that.

  • reconnecting 18 hours ago ago

    Amazing turn on/off effect!

    • ayaros 18 hours ago ago

      Thanks! I put a lot of effort into making sure it was just right. The delay right after shutdown before the button panel shows up where you see absolutely nothing before noticing your own reflection in the blackness of your screen was also intentional!

  • spagoop 10 hours ago ago

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

    • ayaros 7 hours ago ago

      It's not open source right now... maybe someday, but not right now. :)

  • em3rgent0rdr 11 hours ago ago

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

  • FerkiHN 18 hours ago ago

    Wow this is mega cool!

    • ayaros 18 hours ago ago

      Thanks! <3

  • Jonovono 19 hours ago ago

    Crazy cool, wow!

    • ayaros 12 hours ago ago

      Thank you!

  • ckrapu 15 hours ago ago

    Very cool.

    • ayaros 15 hours ago ago

      Thank you!

  • russellbeattie 11 hours ago 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 13 hours ago ago

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

    • ayaros 12 hours ago ago

      Thank you! Although just between you and me, it really depends on the speed of your computer and whatever JS engine you're using. If you open up the bounce demo and start increasing the number of objects on screen, you'll find the FPS dips quite a bit. Also, scrolling through a multi-page text document may also slow things down..... just don't tell anyone! ;)

  • g_host56 17 hours ago ago

    very cool!

    • ayaros 15 hours ago ago

      <3 <3 <3

  • 18 hours ago ago
    [deleted]
  • revskill 18 hours ago ago

    Cool but color hurt my eyes.

    • ayaros 18 hours ago ago

      In the preferences app, you can set the brightness after clicking "Set Conveniences," and you can change the color palette after clicking "Decorate Desktop." You may have to play around a little to find a setting that is most comfortable to you.

  • Avshalom 18 hours ago 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!

    • wpm 15 hours ago ago

      We should pronounce all acronyms/initialisms.

      TUI = tooey

      CLI = clee

      TCP/IP = tickipip

      GPT = gipity

      DNS = dunce

      HTTP = Hittup

      USB = Oosbuh

      USB-C = Oosbuhc

      • phatskat 12 hours ago ago

        My favorite is my friend’s pronunciation of “LGBTQIA”, or “littebittiqua”. Also, I’m definitely gonna start using “dunce” and “Oosbuh”, but stick with “USB C”

      • hoistbypetard 14 hours ago ago

        > GPT = gipity

        I'm calling foul on that one. It's "Jay pay tay". Which sounds the same as the French phrase "J'ai pété" or "I farted."

        That makes me laugh more than gipity.

      • ayaros 15 hours ago ago

        This is pure evil

    • johnklos 17 hours ago ago

      ...because fighting about silly things that are just fun to poke each other about is much more fun than fighting about things like politics in this day and age...

      vi versus emacs, vi versus vim, (guh sound)IF versus (j sound)IF, m68k versus x86, Mac versus Amiga, BSD versus Linux, et cetera.

      • ayaros 16 hours ago ago

        Yes, I know right! Imagine what kind of beautiful world we could live in if we spent trillions of dollars on this instead of the military industrial complex!

      • bbarnett 16 hours ago ago

        Where I grew up, in the 80s, it was a toss between a mouse and trackball for people. Same sort of arguments.

        I kind of like both.

    • 13 hours ago ago
      [deleted]
    • ayaros 16 hours ago ago

      Thankfully someone agrees with me!

      • bbarnett 16 hours ago ago

        Initialisms are just that!

        Otherwise, how can you tell snmp from sntp from smtp!

      • Avshalom 15 hours ago ago

        There! Are! Dozens! Of! Us!

        (actually there's a shit ton of us who learned computers via text and pronounce things correctly)

  • londons_explore 18 hours ago 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...

    • dang 17 hours ago ago

      We detached this subthread from https://news.ycombinator.com/item?id=44483280.

    • ayaros 18 hours ago ago

      Well, yeah... of course. Thankfully, mobile support hasn't been the highest priority.

    • frumplestlatz 18 hours ago ago

      Users aren’t demanding and have never demanded good PWA support. I suspect it has more to do with that.

      • yoz-y 17 hours ago ago

        Random people have no business of knowing what a “PWA” is. So of course they don’t ask specifically for that.

        People asking for “I just want to have fully featured apps coming from wherever” are aplenty. Apple has pushed app snippets and in-AppStore one shot apps for a long time. These would be much better as PWAs.

        Not because PWAs are inherently better. I believe native programs are superior. However history has shown that vast majority of apps are just poorly wrapped websites.

        As an aside, iOS PWA support is really phoned in. For example they introduced environmental css variables for safe insets. And then provided no way to test them outside of real device or a simulator.

      • slivanes 17 hours ago ago

        I’d bet they would if they were offered a nearly 30% price reduction.

    • 17 hours ago ago
      [deleted]
  • iluvfossilfuels 19 hours ago ago

    [flagged]

  • andy_nguyen 9 hours ago ago

    [flagged]