u/M4dmaddy

Ignis - Open Source harness for self-hosting Obsidian as a first class web app.
▲ 81 r/freesoftware+1 crossposts

Ignis - Open Source harness for self-hosting Obsidian as a first class web app.

I still haven't found an open source note taking app I like, that I can also self-host and access remotely. I tried Logseq but that wasn't for me, which means for now I am stuck with Obsidian which is good but unfortunately closed source. Its also unfortunately local only and any established ways to get remote access has essentially been using KasmVNC, not a very convenient solution.

So, Ignis shims the Electron and Node APIs that Obsidian uses, and by doing so lets the app run in a browser. It works mostly just like on desktop, with some features requiring more involved workarounds. And naturally plugins may or may not work depending on what APIs are used and if they've been shimmed yet.

No obsidian code is shipped with the project, the docker image downloads the official obsidian release and serves it unmodified into the shimmed page.

License: AGPL-3.0
Live Demo: https://ignis-demo.thiefling.com/

github.com
u/M4dmaddy — 11 hours ago

Ignis - Self-host Obsidian as a first-class web app with your files living on the server.

First things first, this is not a KasmVNC or remote desktop solution. Its Obsidian running as a proper web app.

A short explanation for why I made this at the bottom but first, an overview:

Repo: https://github.com/Nystik-gh/ignis
Live demo: https://ignis-demo.thiefling.com/

Ignis lets you self-host Obsidian as a browser accessable web app with a backend server holding your notes. Is achieved by a shim layer that replaces the Electron and Node APIs used by Obsidian and so the app doesn't know its running in a browser rather than Electron.

Self-hostable with docker (no Obsidian code is baked in, its downloaded on first run and served without modification.)

What works:

  • All core editor features: markdown, canvas, bases, and the command palette.
  • Context menus throughout the UI.
  • Image rendering, inline image URLs, and image paste from the clipboard.
  • Print to PDF.
  • Mobile UI auto-activates when the window is under 600 px wide.
  • Themes and CSS snippets.
  • Most community plugins built on Obsidian's plugin API.
  • Cross-origin plugin requests via requestUrl and fetch, proxied through the server.
  • Obsidian Sync, in self-hosted deployments with a logged-in browser tab open.

What doesn't work:

  • Plugins that depend on Node native modules or child_process won't load.
  • Streaming zlib classes aren't implemented. The synchronous and callback variants work via pako.
  • The synchronous file picker, used by plugins like Importer, has a staged-files workaround: the shim asks you to pick once and serves the result on retry. Usable but rough.
  • safeStorage is passthrough at this stage. Anything plugins store via safeStorage ends up as plaintext on disk. I don't know how many plugins actually uses safeStorage, I'll see how I tackle this based on what requires it.

Ignis also adds a number of browser specific features like file upload/download as well as being able to load different workspaces in different browser tabs.

See the Readme or the Architecture document for technical for more details.

The code is licensed under AGPL-3.0.

So, why make this?

I've been trying to get away from Notion for years, and Obsidian has been the alternative I've eyed again and again. The main block preventing me from switching has always been the lack of a web accessible version of Obsidian. There are ways to run Obsidian in a docker container and access it via KasmVNC for example, but this is horrible UX in my opinion, and not something I'd want to use.

But Obsidian is an Electron app. There is nothing theoretically impossible about making it run in a browser, if you can shim the various Electron and Node APIs the app uses. I've been thinking about this idea for over a year, and a couple of months back I decided to actually check how viable this would be to do. I did not have very high expectations at the time.

Turns out it is actually very viable. Suprisingly viable. I didn't need to shim all that much to get the basics working. And after that, its mostly been a process of filling in gaps in the shim as I stumble on them, and adding ancillary functionality that makes sense in browser context.

Its still early in development, but I use this as my primary notetaking app now. And I figured Its time to tentatively share this with other people.

Disclaimer:
No Obsidian code is bundled, the container pulls it from the official source at first run and serves it unmodified. There's no built-in auth, so don't put this on the public internet without something (reverse proxy, SSO, VPN) in front of it.

u/M4dmaddy — 4 days ago
▲ 16 r/tauri

WorkTop - Real multiple desktops for Windows (Tauri 2 + Svelte)

For those who don't know what that means: not virtual desktops, real desktop folders. Microsoft has made the confusing decision to call virtual desktops "Multiple desktops" and I took personal offense to this case of false advertisement.

Figured I should share it here because I might get some fun technical discussion. If you just want the features and technical stuff skip to the end. I'm about to bore you with context.

Oh and a disclaimer, this isn't open source. I opted for a freemium tool where the free version should be useful enough for the majority of users.

Some background: I am not good at keeping my Windows desktop clean. No matter how many times I've cleaned it up, or done a re-install, or tried to organize, I alsways end up slipping, and files start to accumulate. And soon enough my desktop is a cluttered dump of all manner of files, from work, to personal projects, to random screenshots. So for years, I've been wanting some way to have more desktops, and man did I get excited when I found out about "Multiple desktops". Only followed by intense disappointment as I found out that no, its not multiple actual desktops for different files and icons, its just another virtual desktop implementation. Sad.

So a couple of years back, I figured I'd give it a shot myself, I hadn't found any app that solved this problem for me, so why not. I'll do it. I figured out pretty quickly how to redirect the Desktop folder, so I figured why not try to link that to when the virtual desktop switches. I dug into COM APIs, I read a bunch of C++ examples, and in the end, I shelved the project because the Virtual Desktop COM APIs are not stable and not reliable, and it would be a pain in the ass to maintain as they break on Windows updates.

But, last fall I picked it back up, decided to just make it standalone and ignore the virtual desktop problem. And so here we are.

A side note here: The app actually does support switching on Virtual Desktop change now, as it was basically the first feature a user requested as soon as I shared the project. And turns out you learn a lot over four years so I figured out how to solve it with registry watchers instead of the fragile APIs. So that was nice.

Anyway, features:

Free version:

  • Multiple desktops, different files per desktop.
  • Up to 3 desktops (OS default + 2).
  • Maintains each desktop's layout, including on multiple monitors. (including on arrangment change and disconnect/reconnect)
  • Switch via tray, hotkey, right click, whichever you prefer.
  • Link WorkTop desktops to Virtual Desktops for coupling files and layout to your workspaces.
  • Compatible with OneDrive desktop folder backup. (with some caveats)

And if 3 desktops are not enough, or you want per desktop wallpaper (you can get this in the free version by using the Virtual Desktop feature and let them handle wallpaper), there's a paid version for a one time cost.

Pro version ($14.99 one time. you get 3 devices):

  • Unlimited desktops
  • Scheduled switching
  • Wallpaper per desktop

And finally the technical stuff:

  • Tauri v2 (started as v1, had to upgrade that when I picked it back up)
  • Svelte - My default for any web based UI, I am not a fan of the other available frameworks.
  • windows-rs for all the Win32/COM stuff needed for the Windows Shell integration.

Biggest hurdles came from figuring out the correct COM API calls, and then solving issues with the clipboard when switching the desktop, as well as avoiding breaking open explorer windows.

Website: https://worktop.dev
Microsoft Store: https://apps.microsoft.com/detail/xpfd8sb15vgkl9

Would love to know if anyone else has been dealing with COM API stuff in Rust, it was both interesting and horrible to work with.

u/M4dmaddy — 13 days ago

Is there an existing plugin that can show the folder structure in the graph, or do I just gotta roll my own half-baked plugin?

(regular graph included for context).

Ok, so I went looking for plugins to show only the folder topography in the graph, but I haven't found it really mentioned in any of their feature lists, and I don't feel like installing every advanced graph plugin to investigate all of their settings. I tried the Folders to Graph plugin, which does half the job, namely inserting folder nodes, but it didn't seem to have any way to hide existing links. (please let me know if I'm wrong about that.)

There was also one, i forget what it was called, that generated index files for your folders, but I'd very much prefer not to have to clutter my vault with strictly meta-focused notes. Also don't know if that would solve the "hide regular links" problem.

I made a half-assed plugin myself to get what i want, but it's very quickly thrown together, and I don't particularly want to spend a bunch of time maintaining it if there's already some established plugin that can do this.

So does anyone know of an existing plugin that can create this kind of view?

u/M4dmaddy — 14 days ago

Its been a while since I last went looking for a dictation app, but now I am back to looking again.

I feel like it could really help me get a lot of ideas out of my head and into actual notes if I could just dictate them instead of having to sit and write it down.

Last time I tried to find one, all I tried felt like they missed half the words, or the UX was bad. I want something simple, that I can then copy the notes out of.

For android preferably, but windows would also work, or something online. Doesn't have to be free but I'd like to try it out without having to pay.

reddit.com
u/M4dmaddy — 18 days ago

It has taken two weeks of evenings, restructuring, consolidating, going over revisions, and cleaning up notes, but I have finally moved all my notes over from Notion (and Google Keep) into Obsidian.

6 years of TTRPG notes, both as player as DM, active campaigns, planned campaigns, and other pieces of writing and scattered notes.

I've even managed to set up a custom publishing pipeline to an Astro generated website for my active worldbuilding project.

When I find some more energy the next step is to try and set up some workspace layouts for campaign prep, and for when I'm at the table.

I'm very happy but also god I'm exhausted.

u/M4dmaddy — 20 days ago