Zim – A Desktop Wiki
zim-wiki.org
zim-wiki.org
There are a few quirks I've gotten used to over the years though:
- Pasting code will be garbled or auto-create tags unless you use the source view plugin or paste verbatim.
- Takes a little configuration out of the box to get just right, system dependencies, links opening in right browser, plugins, shortcuts, fonts. But once you get streamlined it just works.
- The syntax feels a little strange to me but I rarely need to edit raw files. I could also export to Markdown if I ever wanted to migrate.
My last tip, templates are awesome. I have ones for all kinds of things, like interviewing, 1-1s, and architecture design outline.
> Pasting code will be garbled or auto-create tags unless you use the source view plugin or paste verbatim.
I had used Zim extensively in the past, I absolutely love it. The dev is responsive and terrific and terrific as well. But I've lost quite a lot of code snippets due to the auto-formatting and auto-linking. If you are interested, these are two of the bugs that I filed on the subject:"Do not parse input as wikicode" https://bugs.launchpad.net/zim/+bug/585300
"Option to disable all autolinking" https://bugs.launchpad.net/zim/+bug/585301
The syntax selection dropdown isn't great though. I wish I could type-to-search in it.
Pros:
1. Data is saved in SQlite. I am at 33k notes and it springs open instantaneously.
2. Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree. (Think soft-links)
3. WYSIWYG support (CKEditor)
4. Tags, advanced scripting features
5. Other ususal wiki stuff like backlinks, note-map etc
Cons: 1. Electron.
2. Data is saved in SQlite, not plain text.However, you could probably still use sqlite for analytic queries by just creating an in-memory or temporary database at startup then watching for file changes to keep the database consistent. Creating this database probably won't take that long unless you are trying to store all of Wikipedia in your knowledge base.
It supports various types of file stores for syncing between devices. I've used OneDrive and WebDAV. The project has also recently launched a cloud service for people who want to sync between devices but don't want to set up a network file store.
Sounds like you're happy with the performance though, why a con?
I am not blind to the advantages electron brings to a developer. Including electron as a con is in no way a critic of the developer but a expression of disbelief that the developer world has not yet managed to agree upon and popularize a reasonable electron alternative.
PS: Webview hoards memory in linux for some reason.
I see a bunch of people here with laundry lists of requirements, and when I see them, I'm like -- yes, a lot of those seem reasonable, but I've also had the same, and I've just built them myself, with some very hacky Bash. But any language will work.
Examples..lets see. I add todo items from anywhere (including phone) with email. I use Blitzmail on the phone and an IMAP script on the computer to send myself a tagged email, then I have another script to check and parse and add them to Zims "Journal"
My personal website is in Zim. I have a short one-liner to update it to my server; but I also teach at a college. I learned just enough of the Canvas API to also update certain pages of it to my class webpages. Also another one to update the Slides I make in Zim as well.
Etc.
Recently I updated my setup to use syncthing for syncing between my desktop, laptop, and my Android phone. On my phone I use Markor, an open source app that supports the Zim markup format (along with Markdown and some others). I've been pretty happy with this setup.
How happy are you with Markor on the phone? Is it good enough to edit your Zim files on the go or are there any bigger down sites?
I do have some issues making nested check box lists (maybe I need to review the Zim syntax) and it's not clear if you can add images. Mostly I review and update my todo items, read notes, and write small notes. For that I've been pretty happy with it.
And syncthing is great.
I wrote about it some years back on my ugly blog: https://www.tidbitsfortechs.com/2013/12/tech-tool-tidbit-zim...
[edit. It said I turned many people into it which assumes that there are people out there who are Zims. Space invaders notwitstanding.]
It has the hackability of emacs but can run anywhere a browser can ( both online and offline ). And of course, an active community and ecosystem built around it.
Needing a browser is definitely not a positive. The website taking two seconds to load even when in cache while zim is absolutely instant even on potato PC neither.
Last time (a few weeks ago) I tried rclone with WebDAV. I do what the instructions say, I get a local web site where I can open the empty.hmtl, I do the basic setup, write a tiddler, it says "Saved" and the empty.html is still pristine and never gets written.
The times before that I tried several other ways documented on their web site, but failed with all of them. git? Only GitHub (and GitLab) seem to be supported, not my own git repo. Or SourceHut.
Cloud connectors? Which of the three? I've tried at least one of them, didn't work.
[0] https://tiddlywiki.com/static/Installing%2520TiddlyWiki%2520...
Also see https://tiddlywiki.com/#WebServer and https://www.npmjs.com/package/tiddlywiki
I haven't yet gotten around to properly hosting the source code publicly, but it's just a single python file that I run locally. To actually replicate the wikis between my devices, I use Syncthing. I'll be happy to put the source code up if folks are interested...it'll probably take only an hour or so.
I don't care to evaluate which plugin will actually _save_ my data. That's a pretty fundamental operation in my opinion, and the fact that I have to evaluate and choose from one of 13 options does not instill a lot of faith that my data will not be lost.
AFAIK there is a single default. Just use that. If you need more features you can go down that rabbit whole but I think tiddlywiki is very usable without any modifications like you're describing.
> The next step is to choose a method for saving changes. There's a wide variety of methods available, with different features and limitations.
But my concern with Tiddlywiki is extracting the data if needed, there was a time when my wiki had some file issues and lucky that I was able to recover without sorting the files manually.
Just open the tiddlywiki in your text editor. All your tiddlers are neatly filed away at the bottom. It's that simple.
In fact, I had a folding expression in vim which folded everything neatly, and allowed one to just navigate between tiddlers, all in vim.
If its that simple to interactively browse through the data without running the javascript "engine", then you can see how trivial it is to pull out any or all tiddlers, on demand, out of the tiddlywiki.
Hope that helps
- check lists as todo lists
- daily log
- drafting slides for presentations (using export to Presentation option and S5 option)
Primary way of syncing to other devices - shared nextcloud folder.
Pro: plain text files - can be edited by any available text editor in case I want to edit notes on an unsupported devices.
Cons: I don't like when it automatically creates notes for all phrases written in CamelCase. It is a wiki, but i don't use it as a true wiki, but as a bunch of notes.
There's a preference to ignore CamelCase:
Because it's written in python it is comparatively easy to extend and through its integrated web server you can serve up your notes with a custom design in no time.
This might be a little odd but I get a very “homey” vibe from the program, like, there are parts that aren’t as polished and improvements are slow and steady over the years, but there’s something of personal touch that makes it charming to use.
I can tell you the export to HTML functionality is solid, but for something like a wiki you really need searchability which as far as I know zim templates do not provide. The available templates are also not responsive other than maybe the eight-five-zero theme that i modified for my site.
I like it so much I became a sponsor. Same kinda deal, writes markdown you spaff at gitlab or wherever, but with a graph, amazing linking and soft (unreferenced) links, it’s literally my external brain at this point.
Few tools I can recommend so much, and it doesn’t even have a vi mode yet. I hope to continue using it for many years.
The main reason I don’t use it today is my mobile and tablet experience is much better with Craft, which feels similar to Zim in its WYSIWYG mode (but more like Notion). However, I can run Zim fine on an older raspberry pi, which I can’t do with Craft and wouldn’t bother to try with Obsidian. My cloud-hosted Craft notes aren’t gonna survive after decades of supply chain crises and global turmoil, but my Zim notes and the application will probably outlast me with even a half baked plan.
Why wouldn’t you bother to try it? When I was doing my oscp I had to take mad amounts of notes, I tried zim, cheeytree, a few others I forget and obsidian was clearly the best, electron notwithstanding (and it was religious to me also, but really it has improved quite a lot since we formed our views about electron)
These days, I tend to use obsidian for longer form entries, in the same repo I use logseq primarily (and with working copy git client on my phone, obsidian mobile gives me access to all my logseq files, stopgap until they release the mobile app).
[1]: https://forum.obsidian.md/t/open-sourcing-of-obsidian/1515
* It never changes - the same user-inter face,the same muscle memory, for over a decade * Pages are stored as plain text files and sub pages in sub folders - which means attachments are also in subfolders * The index and todo list can be re-created from the files at any time * Pages are saved as you type them * As well as full text search, you get the ability to instantly search for page names
It has made the all the difference in my career.
To any new person I know in my career I try to hammer home take notes, all the time take notes. I always wondered if some day I could write a book just from it
Keep coming back to my beloved Zim.
Super extensible without being overwhelming.
I do my personal notes, my blogging, my course website and even my Slides (instead of Powerpoint) with it.
Obsidian: faster rate of change, Markdown, closed source, aesthetics
Zim: stable, open source, aesthetics, not Markdown
[zim-github]: https://github.com/zim-desktop-wiki/zim-desktop-wiki
[proprietary]: https://forum.obsidian.md/t/open-sourcing-of-obsidian/1515/4
So Occams razor might just be "I'm more used to it;" though there might be an argument for Obsidian growing too slick too quickly? It's got a LOT going on and looks like its flashier and has more features, perhaps too many for me. Also, if mobile is at all important, you probably want Obsidian.
Amazing application. Comparable and better than everything I've seen on hacker news over the years.
My only complaint is no mobile client, though markor can generate a Zim-Wiki file.
I find myself favoring self-hosted webapps over local running apps. It eliminates the "no client for X platform" problem while also providing syncing across devices.
No third party apps, just my version of sneaker-net.
At its core it's a bulleted list that you can expand and collapse. Super simple and works just as well for quick ToDo lists as for in-depth ideation and project tracking. Recently they've added features such as tags and boards, which I mostly ignore, but the core product is super simple, powerful, and flexible. 100% free and with good web, mobile, and desktop apps.
The one thing I'd miss about shifting to a local note taking program is just how easy it is to share / collaborate Google Docs with people. Click one button and there's a URL for it anyone can view or potentially edit, served instantly through their fast servers.
This looks like a lightweight improvement on my current one-text-file workflow. Might be worth trying out.
I've coupled this with git pre-commit and post-commit hooks which basically ensure that the changes are always pushed to GitHub.
I've found a similar application for Android called GitJournal. Unfortunately it doesn't do the wiki syntax which Zim recognizes. Only markdown and plain text. So I have a separate repo for my mobile notes. They're usually much shorter anyway, the type of notes you'd put on a sticky.
Hopefully one of these tools will learn the format of the other in the future. That would allow us to use both of them on the same repo.
I've used Markor but there's too much file management involved, instead of organising pages at a higher level and letting the app handle the filesystem ops.
I'd be open to adding the zim wiki syntax support, assuming I can have at least one designated person who uses Zim, and can test things out and report issues. GitJournal now has basic support for OrgMode, and the code is now in a state where it doesn't necessarily assume Markdown.
How about you file an issue on GitHub? [0]. Ideally, if you could get some other people to vote on it, I'll be more motivated to prioritize it.
Additionally, do you know a good source for the zim syntax? I see [1] and [2], but I'm not sure if I'm missing more.
[0] - https://github.com/GitJournal/GitJournal/issues
- sortable table like wikipedia's
- sortable list and other list manipulation tools from dynalist/worflowy's
- automatically adding titles when you copy links of articles/videos/etc.
I'd like to think I'm not the only one who mostly uses lists and tables to organize information and notes. Quick googling says org-mode can do the first 2. I tried spacemacs and it was just confusing. One day.
Can't argue with it being confusing. It takes some effort in the beginning until one day you realize that your mind blended with the machine.
- Advanced Tables (handful of features including sort col while in edit mode): https://github.com/tgrosinger/advanced-tables-obsidian
- Sortable (Wikipedia-like col sort for view mode): https://github.com/alexandru-dinu/obsidian-sortable/issues
- Outliner: https://github.com/vslinko/obsidian-outliner
- Auto Link Title: https://github.com/zolrath/obsidian-auto-link-title
For even more fun:
- DataView: https://github.com/blacksmithgu/obsidian-dataview
That solves writing. I find it actually works because phone notes tend to be write only — little snippets of information that record something important and never get edited again once they are written, to be turned into a “real” note at a later date, once in a system that supports “real editing”.
For reading notes I dump everything onto a personal website.
Do you know of any other app that is even close? I had Scrivener on my Mac for writing, but it didn't work well for project management/note taking.
Markdown solutions are there, but nothing as cohesive as OneNote as far as I have found.
I use it for a few years also.
I like it because it is simple, efficient, fast. Straight to the point. Not like all these cloud and electron apps.
And the main top feature of this tool is that data are stored as plain files in a simple folder structure.
Maybe they improved it since, but the Zim graphing capabilities just didn't even compare to foam's last time I tried it.
I've been looking at Logseq and Obsidian recently.
I think I saw an opensource tool like that before, but lost track of it.
EDIT: I'm trying out some of your links. Logseq seems cool, has a strange logic but has some graph visualization of nodes and plugins with direct mindmap support. Feel free to make suggestions anyway!
TreeSheets?
Logseq has a bit of a learning curve (it's simple but confusing) but after initial shock it has everything.
If you use nextcloud, you could also use other text editors on mobile phone like joplin, qOwnNotes, etc. - so you are not stuck only with the nextcloud notes app. Also, if you are not an adherent to open source software, my workflow can also be used via dropbox, box.com, onedrive, etc. too i suppose (you're just drafting notes on the road and saving them up to someone e;lse's server/cloud). I hope that helps!
But this one is the first desktop application which is really interesting and could have become my solution for these tasks. I'll definitely keep it installed and try it out.
I feel like at some point I must have tried Zim, but for some reason I abandoned it. Perhaps it was the inter-document linking/referencing thing. Or it was its markup language having other limitations? I don't remember.
Nowadays I do all my note taking and knowledge storing using org-mode.
Why worst? Anything you try, except for writing text, does not work the way you would expect and usually works in exactly the worst possible way. Good luck copy/pasting anything.
I really need to find a better note-taking that does not try to do a fancy "mind map".
Zim Wiki uses plain text files with its own markup language.
I used OneNote 2016 after Zim in a period where I was stuck on Windows anyway but modern OneNote broke so much that I don't use OneNote anyway even if it is now cross platform.
The last year I have used Joplin which is awesome.
Lately though I have used Logseq for no other reason than that it feels even more awesome.
- Not a service. This has to be durable and portable.
- Backed primarily by git and plaintext files, not a database. Explorable and manageable on the filesystem.
- Markdown
- Hyperlinks to articles that show up red if the page doesn't exist (yet). If a page is renamed, all hyperlinks to it must automatically update.
- Multiple tags / categories can be added to any page. Bonus if it supports hierarchical categories. These get indexed and can be bulk managed. When pages are updated and their tags change, the system automatically handles the bookkeeping.
- Indexed fuzzy search better than grep
- Server + browser interface (mobile friendly). It should also support editing from the browser and saving back to git.
- Native desktop app. Less important, but also enforces that git, files, and a simple set of indices are the core data model.
- Sync over git / github with easy diff fixing
- Publish to a public or private website. Bonus if statically rendered snapshots are supported.
- Despite all of the ancillary indices and support mechanisms, it must remain CLI/vim editing friendly. Indexes and links should update as a post commit hook or async job
- Images and media can be uploaded to a secondary service that handles indexing, hosting, backups, and thumbnail generation. This is a whole set of concerns all on its own.
tl;dr: git + markdown data model with a bunch of bookkeeping, indexing, and tooling on the side
I haven't found a good fit yet, but I haven't explored the entire space. I might just write it one of these days.
Definitely looking for recommendations!
Edit: thanks for the suggestions! :)
it's basically a clone of Roam Resarch as a vscode extension that uses Markdown.
It's markdown, has a desktop app (vscode), since it's just markdown you can put it all in git with easy diffs, vscode allows you to search the entire project for words, it has tags. It even has a window to see your notes as a star map where you see the links between the different markdown files, but they also recently added tags to that starmap.
You also get to use other extensions compatible with markdown like render inline plantuml and stuff like that, which is what is the nicest about it being markdown.
If you're serious about making your own, I would consider contributing to FOAM's project instead.
- It's a product, not a service (they do offer their own paid syncing service though)
- It is backed by plaintext: markdown files in folders. As for Git, I'm pretty sure you could use it easily- and I noticed there's also a community-supported Git integration plugin [2].
- Just tested link renaming, it's there.
- It does have a tagging system. I haven't used it extensively enough to see if the rest of your requirements are met, but it seems very thorough.
- The desktop and mobile clients do support full-text search. Not sure how it's indexed but it is quite fast.
- Server + browser interface: unfortunately, it doesn't look like this is the case out of the box, but since the files are Just Markdown On A Filesystem I feel like you could probably just have a completely unrelated server to make changes to them.
- Native desktop app: hate to break the news, but the desktop app is Electron. That being said, it's extremely snappy and doesn't seem like a complete memory hog. (A cursory check of Activity Monitor says it's got four processes running, using 127 MB, 73 MB, 55MB, and 11.8MB.)
- Sync over git/github- again, community supported, but the plugin [2] looks quite solid and offers plenty of the kind of features you might like. I would also note that because everything's just Markdown files, other syncing mechanisms like Dropbox or iCloud "just work". They have a mobile app as well, and seamless iCloud syncing has been the killer feature for me.
- Publishing is an interesting one. They do have a paid service which allows you to "publish" vaults, which basically means they do the static rendering and then host it for you. It looks like their static rendering gives the published version of a vault a "table of contents" pane and other stuff. I imagine it wouldn't be too tricky to do this oneself, and you could possibly even integrate it into the editor.
- So, CLI/Vim editing works like a dream. I just edited a file from Vim and immediately saw it updated in the desktop and mobile apps. Updating backlinks works in the app just fine, but simply moving files around in the filesystem doesn't update backlinks.
- Yeah, this kinda is a whole concern of its own, but for what it's worth: images and media are stored in the same directory structure as Markdown files, and can be embedded into a "note" via linking. (like ![[imagename.jpg]]). So I imagine you could keep them in a separate directory that's gitignored or something like that.
Thank you for sharing!
Strikes me as similar to the excellent (but unfortunately abandoned) NoteLiner.
Its not possible to DISABLE WORD/LINE WRAPPING which is very annoying.
Tables could just be HTML, but stuff like Gnuplot diagrams or GraphViz graphs need to store their input data aswell as the actual rendered image.
Even better, it stores everything in plain Markdown files in a folder hierarchy, so you can easily back everything up and/or interact with them outside the app if need be.
Even EVEN better, they have mobile apps that are perfectly happy to let you use your own file-syncing mechanism if you want to (although they do offer a sync service of their own as well.) Once I got it set up, everything Just Worked.