Show HN: NotepadJs – A cross-platform love letter to Notepad (github.com)
As a native Windows user who switched to macOS a few years back, one thing I never got over was the simplicity and usefulness of the old school Notepad app. This app aims to recreate that very same experience, cross-platform and easily installable as a PWA.
I've been using this for personal use for around 2 years and I figured it was time to share it with the world. Criticism, issues and PRs are welcome. Thanks!
122 comments
[ 4.0 ms ] story [ 180 ms ] threadIt's good that you made an alternative but it's not serious. I need to run Firefox, enable JS, reload the page, there is no "top menu" or install button, the open/save button does nothing, I can't choose my own fonts, and I guess it doesn't work if I don't have an internet connection.
There is also "Load last session" option in Kate's configuration, if you only ever use one session.
Most text editors I use on MacOS do that, TextEdit included.
I'm only posting because I had come to think that's the normal behaviour, not an extra... haven't been using non mac os desktops too much in the past years.
I understand that in the 90s, disk space was a concern, and that disk operations were a big deal with moving parts, etc. But we really need to move on from this paradigm.
I just tested, and it looks like that "new" software does this on Linux, but "old" software didn't modernize. IntelliJ products, VSCodium does this, QOwnNote does it, Kate does it when I explicitly start a session (bit of a nonsense...), and no other software that I use does it: LibreOffice products, KWrite, Geany, GIMP etc all operate on the paradigm that when closing, it asks if it should save the draft document or no.
I always keep that disabled, I absolutely hate that kind of behaviour.
So native apps need to offer something more than "not a web app" to pay their rent on my system where they have often things like full filesystem access.
Notepad is a plaintext editor, of which their is no equivalent built into Macs outside of terminal applications.
I prefer TextEdit over Notepad. Its undo is way better, and it's overall a snappier app.
But I also risk losing something in the process. Did I emphasize things with bold or italic in the editor? That will be lost when saving to plain text. In that sense Word and TextEdit are both correctly called rich text editors which just happen to have the ability to save to plain text.
Notepad, however, doesn't support the formatting... so you can't create something that you can't save. That's the difference.
This is completely different from Word.
> What's wrong with TextEdit on macOS?
Nothing wrong as such, but does it match the “cross-platform” description?
> Firefox … the open/save button does nothing
As per the readme, it is using an API that is not yet supported in Firefox for local file access: https://caniuse.com/native-filesystem-api
> there is no "top menu" or install button
That is meaning the browser's menu. Perhaps there is better terminology that should be used here. The readme does show a screenshot of it, so it seems clear from that to me. The install option is found there.
> and I guess it doesn't work if I don't have an internet connection.
Also in the readme: “Installable as a PWA”, which I think implies offline support, given it doesn't have sync features so has no reason once installed that way to talk to the wider network.
Yes, it's a plain-text editor too. The files are compatible with the Commodore 64 if you need.
> not yet supported in Firefox ... implies offline support ...
It implies a lot more stuff than all the other pre-installed plain-text editors on every other OS.
I read it as promising Notepad features with anything else it mentions as extras, not more features it doesn't mention from other text editors.
[1] https://coteditor.com/
I'm sure this varies but, for me, on macOS Chrome, it's the '3 vertical dots' menu in the top right of the browser window. Very confusing instructions.
I also see an "Install Notepad" icon in my address bar, just to the left of the Bookmark icon. I never look in this area, though, so I totally missed it.
> I need to run Firefox, enable JS, reload the page,
Or you can just open a tab, nothing to reload/enable/run
> there is no "top menu"
Of course there is, it's browser's top menu
> the open/save button does nothing
it opens/saves files in Chrome. Guess Firefox API limitations?
> I guess it doesn't work if I don't have an internet connection.
wrong guess, that's what "install" is for
I do most of my work in browser tabs. It's much more convenient for me to have a plaintext editor app as a tab I can position among my other tabs, rather than another window.
My email is a tab. My word processor is a tab. My files in the cloud are a tab. It makes sense that my plaintext editor should be a tab too. It's just UX consistency and convenience.
Anyway, it's not about which app is better. If you love the Notepad experience, then you know - it's something about its simplicity, and perhaps its familiarity as well.
About being serious - this is indeed a side project. Sorry about FF support - since the relevant FS API isn't available there I added an alert indicating that on page load.
It does work without an internet connection though (PWAs are great)!
Thanks for this, will take a look. (One thing that comes close is Stickies on MacOS)
As for plain-text, you can go into the Settings and switch it into plain-text mode, which it remembers.
You can even set it not to append ".txt" to the filename when saving, allowing you to enter whatever file extension you want when saving.
After a 5min config there, I don't notice a difference from NotePad, but I was never a "NotePad power user" though. For example, never used the ".LOG" feature.
It's feature-rich, but it just shows´an empty text window on startup. Can't remember if that's the default or I configured it that way.
For larger text files I use vscode.
I do most of my work in browser tabs, but often need a "scratch pad" to paste or type things in, like snippets of code or a short todo list. And I use TextEdit on my Mac, but I'd prefer a browser tab so this is wonderful.
Four requests, from most to least important:
1) Let me choose the font and font size? For code snippets, I really want monospace. And make sure the preference persists
2) Keep current contents in local storage, so it survives a browser restart? (Or maybe you do already?)
3) Having tabs feels redundant with my browser tabs -- I'd rather get rid of the extra bar at the top and just have a 100% clean typing space, with just the (wonderfully unobtrusive) menu bar. (I understand their utility in a PWA though, maybe a menu option to toggle the tab bar? Also full screen mode to hide the menu bar for a pure editing experience?)
4) Get a proper domain name. :) So I can start typing "note" in my address bar and it will autocomplete. Surely "notepadjs" is available for some TLD? Or "notepadx" (for cross-platform) or "notepage" (for webpage) or similar?
But this is a great idea. I'm surprised I've never come across something like it before, it seems so obvious in hindsight. I love it.
https://edna.arslexis.io/
https://edna.arslexis.io/help
https://github.com/kjk/edna
Too bad its contents won't persist across a restart or accidental close tab, but as a scratch pad it's fantastic.
Maybe I'm getting old, but using a browser for something you have available natively seems like an antipattern to me.
(I'm not a browser fan, but even in my weaker moments, this one thing is what stops me from fully embracing living in browser.)
--
[0] - AFAIK there's still nothing in the browser one could reliably use to get the equivalent of persisting data to a hard drive. There's like 5 different mechanisms that could allow it, if you could rely on any of them, and of course none of them are user-inspectable except through dev tools.
My browser does a better job of retaining state than most of my apps. My desktop apps have clunkier auto-update than my browser. My browser apps auto-save to the cloud, my desktop ones often don't auto-save at all.
(Also that "serverless" really means "there actually is a server, but you don't get to manage it".)
Desktop apps can save files and read files. That alone puts them miles ahead of any purely client-side app. As for convenience, most apps today auto-save stuff when you're not looking, but lack of that feature isn't a big deal for me - I started using computers some 25 years ago, so I habitually press "CTRL+S" every couple seconds without even realizing it.
On my Win11 computer in notepad.exe:
- press Ctrl+H brings up a replace dialog - if I tap the ALT-key, tooltips pop up near the relevant buttons (D for search down, U for search up, R for replace, A for replace all)
- press CTRL-F brings up the find dialog - if I tap the ALT-key, tooltips pop up near the relevant buttons (D for search down, U for search up)
pressing the relevant key invokes the associated function, e.g. press D searches for the entered text in the window below the current cursor.
In Windows 10 the "Replace" dialog has underlined accelerator shortcuts for
- _F_ind Next - _R_eplace - Replace _A_ll
which are obvious and visible in the dialog.
Having to tap alt is lousy UI, and frankly results in an ugly and cluttered appearance --- the underlines were able to communicate the functionality well, and far less obnoxious.
EDIT: Hopefully Windows 11 will develop a way to visually communicate this sort of functionality, as opposed to expecting folks to read a (non-existent) manual or randomly tapping keys.
Didn't have autocomplete, but was incredibly fast compared to Eclipse or NetBeans or other IDEs back in the day, and I used to swear by it. It also had a basic scripting language with which you could automate your work. But yes, off-topic.
I think it's the same reason I sometimes decide to leave the computer entirely and grab some pen and paper to really get things done.
I think there's little credit to be given here. A text widget is part of any gui toolkit and there are hundreds of notepad like text editors. I think basically every DE on Linux has their own...
There's been UltraEdit since 1994, SciTE since 1999, Notepad++ since 2003, the browser's address bar to remove formatting or just for holding some text...
Just like how almost everyone I knew used Paint.NET rather than mspaint.
If I had the time I would explore the following myself ... but I am guessing I will never get to them at all so posting my thoughts aloud:
- Could it be modified to optionally store the files online, say a selected git repo or s3 bucket (credentials configured in a local file)
- Could it have a flavour that accepts markdown formatting/preview
- Could we allow users to "paste" images from clipboard (or drag-and-drop image files) to have them saved alongside the txt/md files or in a subfolder
- obligatory Dark mode (toggle)
I know all this diverges from the spirit of original notepad but these were some things I desired in a lightweight awlays online notepad that i can access from all my devices. Kind of like a diet Obsidian with sync?
These days the only thing that comes close is a feature rich vscode that is slower than other pwa apps.
Kudos for the project though.
Upvotes, please? I said software was bad - I expect to be showered with praise for my taste and quality of opinion.
> This PWA will also never work on Firefox.
True. But as much as I like Firefox, that doesn't seem to me to be NotepadJs's doing.
That's fair. I am just upset with a general shift away from simple, accessible cross-platform GUI libraries to complicated web apps.
Literally any GUI toolkit has a textbox widget. You could make a cross-platform qt text editor in 100~ lines of Python.
> as much as I like Firefox, that doesn't seem to me to be NotepadJs's doing.
Well NotepadJS chose to create a PWA that can only be used in Chrome and Opera. Though like you said, it's just a pet project.
A Show HN, and really, most HN threads aren't the place to vent about this. It's even mentioned in the site docs:
Please don't post shallow dismissals, especially of other people's work.
Is there another way that I'm unaware of to conveniently edit arbitrary local files in a browser that has wider support (or anything upcoming that doesn't have much support yet)?
If you include the OS, the hardware BIOS, the switch gear at the ISP, the internet backbone, DNS, BIND, etc, etc it's probably into the billions.
And that's entirely firefox's doing.
Please don't dismiss other people's work like this. It poisons community and disincentivizes people from sharing in the future, making HN worse for all of us.
All: if your comment begins with a snarky "Great, another", you should probably rethink whether the entire post is suitable for this site.
p.s. I don't mean to pile on what dspillett already said and am sorry if it felt that way. I just need to say something because it's so important to the future of the community here. Especially when someone is personally sharing their own work.
This is a primarily tech oriented website. When someone posts a 2 years old cross-platform project that's arguably suboptimal from many technical perspectives, and the submitter explicitly asks for feedback and criticism, I think it is fair game to actually give feedback instead of hugboxing.
Also, "we have had better for decades" is arguably a shallow dismissal of someone's work, which https://news.ycombinator.com/newsguidelines.html asks commenters to avoid:
If I make my own toaster as a side project, pointing out that there have been better toasters for decades is not meaningfully engaging with that work.Better might be to inquire: what is it about the toasters that have existed for decades that wasn't satisfying you? And then I might say "well, I wanted it to have a progress bar". And you might say "Mousetoaster was released 18 years ago and more or less already had that," and then we could have an interesting conversation about it.
That's the sort of interaction we want. It still offers lots of ways to talk about what's missing from a project, or the fact that it won't work on Firefox.
This whole thing is a learning process for all of us, and me most of all.
p.s. I appreciate your reply. It's not easy to be so open and most people can't or won't do it.
probably the best browser based note taking app for me, full markdown support + persistence.
It's funny people are saying it takes an entire OS to use this when I dream of emulating DOS as a print spooler with Wordperfect, the last non-enshittified font selector. That's my working theory. Good day sir.
That's part of it. Classic NotePad is just plain simple.
> Sorry, your browser does not support the File System Access API. Plese consider using another browser for installing this app.
Firefox also seems to require an extension to install PWAs: https://addons.mozilla.org/en-US/firefox/addon/pwas-for-fire... (and not just an extension, but a couple of external programs need to be installed too).
So you can jump through the extra hoops to get the PWA installed, but the first warning seems accurate. Can't load or save files.
How much space and ram does this use?
The MacOS textedit bundle is 2 Mb too.
TextMate's bundle is 38 Mb but even that is probably less than a browser, npm and all the baggage it comes with.
Actually much better than I expected.
NotePad runs on Win32 (or whatever it is these days). This runs on Chrome + Win32.
The argument doesn't really pass the sniff test frankly. Windows is a general purpose operating system much like Chrome is a general purpose web browser.
Infact nowadays to get this sort of NotePad you'll always have Edge installed in your computer, so you don't even have to download Chrome!
And you conveniently forget that you can choose not to start a browser while running the native notepad.
I mentioned how many resources are downloaded. NPM is not required. "Modern" webapps get bundled, NPM is not distributed.
> And you conveniently forget that you can choose not to start a browser while running the native notepad.
When running a PWA, you don't have to start a browser. Does Chromium run in the background, sure, but you just click a icon or search like you always do. And honestly it opens and is ready to use possibly quicker than Notepad itself.
No need to hate on a submission. Some things aren't for everyone, but that doesn't mean its fundamentally flawed.
You are arguing by chucking out claims and seeing what lands. That's not a good faith argument.
It also supports creating new documents, but that’s more of an ancillary use case (for me anyhow).
The nice thing is that it’s 100% local.
(I'm only half-kidding)