[GH-ISSUE #240] Store .XBEL in a Local Folder #229

Closed
opened 2026-02-25 22:36:33 +03:00 by kerem · 24 comments
Owner

Originally created by @TCB13 on GitHub (Mar 16, 2019).
Original GitHub issue: https://github.com/floccusaddon/floccus/issues/240

Hello,
I was looking for a good bookmark solution and I found Floccus, it does almost everything I need and keeps it simple, however I've an idea/request to make it even simpler.

We have the ability to store XBEL files in WebDAV but what about a local folder in our machines?
Why? Because this way I can sync the file using Syncthing, Dropbox, MEGA, or any other public cloud service. Someone might even do it with git!

This feature will also make it possible for people that aren't that tech savvy / own servers etc to use this extension. For instance, KeePass/KeePassXC store the file anywhere you would like and then you can sync it around with your favourite tool.

Software versions

  • Browser: Chromium 71.0.3578.98
  • Floccus: 3.2.8
  • Floccus sync method: XBEL/webdav
Originally created by @TCB13 on GitHub (Mar 16, 2019). Original GitHub issue: https://github.com/floccusaddon/floccus/issues/240 Hello, I was looking for a good bookmark solution and I found Floccus, it does almost everything I need and keeps it simple, however I've an idea/request to make it even simpler. We have the ability to store XBEL files in WebDAV but what about a local folder in our machines? Why? Because this way I can sync the file using Syncthing, Dropbox, MEGA, or any other public cloud service. Someone might even do it with git! This feature will also make it possible for people that aren't that tech savvy / own servers etc to use this extension. For instance, KeePass/KeePassXC store the file anywhere you would like and then you can sync it around with your favourite tool. ### Software versions <!-- Please provide the versions of the following software products in your set up --> - Browser: Chromium 71.0.3578.98 - Floccus: 3.2.8 - Floccus sync method: XBEL/webdav
kerem 2026-02-25 22:36:33 +03:00
Author
Owner

@marcelklehr commented on GitHub (Mar 19, 2019):

Hey there,

this is a great idea, theoretically. However, browsers don't allow extensions to access the file system, and this is unlikely to change. I see no easy workaround for this limitation, other than implementing adapters that work with Syncthing/Dropbox/etc. directly (which is possible).

<!-- gh-comment-id:474407555 --> @marcelklehr commented on GitHub (Mar 19, 2019): Hey there, this is a great idea, theoretically. However, browsers [don't allow extensions to access the file system](https://wiki.mozilla.org/WebExtensions/Filesystem), and this is unlikely to change. I see no easy workaround for this limitation, other than implementing adapters that work with Syncthing/Dropbox/etc. directly (which is possible).
Author
Owner

@MA3o commented on GitHub (Mar 19, 2019):

Hi,

I would also be very interested in some solution where a local .xbel file could be synced directly between my devices (be it using syncthing or dropbox or a USB-Stick or rsync or whatever).

KeePassXC (which was mentioned by the OP) uses Native Messaging to communicate with an app that is running locally on the computer. Basically, one could write a very simple local app that just serves a local .xbel file on request. From the floccus side, this would be pretty much identical to a WebDavAdapter, just with altered "downloadFile" and "uploadFile" functions.

The obvious downside is of course the need for an external program to run.

The mozilla Wiki provides a detailed documentation on this feature, including a sample python script for the "server-side" implementation: Link

If there is an interest in going down that route, I'd be willing to help with the server side. I've been waiting far too long for a good reason to learn python ;-)

<!-- gh-comment-id:474439360 --> @MA3o commented on GitHub (Mar 19, 2019): Hi, I would also be very interested in some solution where a local .xbel file could be synced directly between my devices (be it using syncthing or dropbox or a USB-Stick or rsync or whatever). KeePassXC (which was mentioned by the OP) uses Native Messaging to communicate with an app that is running locally on the computer. Basically, one could write a very simple local app that just serves a local .xbel file on request. From the floccus side, this would be pretty much identical to a WebDavAdapter, just with altered "downloadFile" and "uploadFile" functions. The obvious downside is of course the need for an external program to run. The mozilla Wiki provides a detailed documentation on this feature, including a sample python script for the "server-side" implementation: [Link](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging) If there is an interest in going down that route, I'd be willing to help with the server side. I've been waiting far too long for a good reason to learn python ;-)
Author
Owner

@TCB13 commented on GitHub (Mar 19, 2019):

@marcelklehr thank you for the update. I don't particularly like the adapter idea because that will restrict the number of services available for the user. I believe that as @MA3o pointed out, a local app running and native messaging would be a good workaround.

Another option: a small program with a built in webdav server (maybe https://github.com/mar10/wsgidav with https://wsgidav.readthedocs.io/en/latest/addons-virtual.html) and then connect floccus to it. This would avoid the need to implement native messaging.

<!-- gh-comment-id:474456637 --> @TCB13 commented on GitHub (Mar 19, 2019): @marcelklehr thank you for the update. I don't particularly like the adapter idea because that will restrict the number of services available for the user. I believe that as @MA3o pointed out, a local app running and native messaging would be a good workaround. Another option: a small program with a built in webdav server (maybe https://github.com/mar10/wsgidav with https://wsgidav.readthedocs.io/en/latest/addons-virtual.html) and then connect floccus to it. This would avoid the need to implement native messaging.
Author
Owner

@marcelklehr commented on GitHub (Mar 19, 2019):

I'd be happy to review and coach work on a native messaging adapter. I will likely not have time to work on this myself. I think in the interest of simplicity a relatively self-contained GUI app would be nice, as I think mostly non-techsavvy users will have the need for something that doesn't involve setting up a webdav server or similar. Perhaps an electron app (I'm not particular about this)?

For now the workaround with a local webdav server would also have been my suggestion. WsgiDAV looks like a nice option. @TCB13 Would you like to write a tutorial in the Wiki on how to set this up?

<!-- gh-comment-id:474476974 --> @marcelklehr commented on GitHub (Mar 19, 2019): I'd be happy to review and coach work on a native messaging adapter. I will likely not have time to work on this myself. I think in the interest of simplicity a relatively self-contained GUI app would be nice, as I think mostly non-techsavvy users will have the need for something that doesn't involve setting up a webdav server or similar. Perhaps an electron app (I'm not particular about this)? For now the workaround with a local webdav server would also have been my suggestion. WsgiDAV looks like a nice option. @TCB13 Would you like to write a tutorial in the Wiki on how to set this up?
Author
Owner

@TCB13 commented on GitHub (Mar 19, 2019):

For now the workaround with a local webdav server would also have been my suggestion. WsgiDAV looks like a nice option. @TCB13 Would you like to write a tutorial in the Wiki on how to set this up?

Its not about just writing a Wiki page. WsgiDAV is a generic server we still need to write an App/GUI around it, the problem with using it as it is, it that it would probably mean exposing more than we should.

<!-- gh-comment-id:474486604 --> @TCB13 commented on GitHub (Mar 19, 2019): > For now the workaround with a local webdav server would also have been my suggestion. WsgiDAV looks like a nice option. @TCB13 Would you like to write a tutorial in the Wiki on how to set this up? Its not about just writing a Wiki page. WsgiDAV is a generic server we still need to write an App/GUI around it, the problem with using it as it is, it that it would probably mean exposing more than we should.
Author
Owner

@marcelklehr commented on GitHub (Mar 19, 2019):

we still need to write an App/GUI around it

I agree. I should have explained my reasoning more thoroughly: As I see it, the short-term solution would be to run a local webDAV server, while the long-term solution is definitely to have some GUI app that ideally also cuts out the need for configuring webDAV in the extension. From its docs it looks like wsgiDAV allows setting an arbitrary root folder, which would allow a floccus user to create a webdav folder just for the xbel file inside e.g. a dropbox folder. It even allows restricting access using Basic Auth.

<!-- gh-comment-id:474492863 --> @marcelklehr commented on GitHub (Mar 19, 2019): > we still need to write an App/GUI around it I agree. I should have explained my reasoning more thoroughly: As I see it, the short-term solution would be to run a local webDAV server, while the long-term solution is definitely to have some GUI app that ideally also cuts out the need for configuring webDAV in the extension. [From its docs](https://wsgidav.readthedocs.io/) it looks like wsgiDAV allows setting an arbitrary root folder, which would allow a floccus user to create a webdav folder just for the xbel file inside e.g. a dropbox folder. It even allows restricting access using Basic Auth.
Author
Owner

@TCB13 commented on GitHub (Mar 19, 2019):

looks like wsgiDAV allows setting an arbitrary root folder

Yes it does and I can write a guide on how to use it that way, however we would be better suited with the virtual add on restricted to a bookmarks file.

short-term solution would be to run a local webDAV server

Why can't we keep using WebDAV? Maybe we can write a GUI around WsgiDAV that only allows the user to pick a bookmarks file. Then we can duplicate the current WebDavAdapter to something like WebDavLocalAdapter that automatically connects to the local WebDAV. The user doesn't really have to know that it uses WebDAV at all or do any configuration. Possible downside: anything in the localhost can access the favorites in a know port.

<!-- gh-comment-id:474495764 --> @TCB13 commented on GitHub (Mar 19, 2019): > looks like wsgiDAV allows setting an arbitrary root folder Yes it does and I can write a guide on how to use it that way, however we would be better suited with the virtual add on restricted to a bookmarks file. > short-term solution would be to run a local webDAV server Why can't we keep using WebDAV? Maybe we can write a GUI around WsgiDAV that only allows the user to pick a bookmarks file. Then we can duplicate the current WebDavAdapter to something like WebDavLocalAdapter that automatically connects to the local WebDAV. The user doesn't really have to know that it uses WebDAV at all or do any configuration. Possible downside: anything in the localhost can access the favorites in a know port.
Author
Owner

@marcelklehr commented on GitHub (Mar 19, 2019):

Why can't we keep using WebDAV?

Good question! I hadn't considered that. In that case we should make sure to secure that webDAV wrapper in a way that still keeps it as easy to use as possible. But I like the idea. That way we don't need a new/different protocol.

<!-- gh-comment-id:474587901 --> @marcelklehr commented on GitHub (Mar 19, 2019): > Why can't we keep using WebDAV? Good question! I hadn't considered that. In that case we should make sure to secure that webDAV wrapper in a way that still keeps it as easy to use as possible. But I like the idea. That way we don't need a new/different protocol.
Author
Owner

@TCB13 commented on GitHub (Mar 24, 2019):

@marcelklehr I've come up with a very crude GUI to do what we were discussing.

This small GUI was designed to: 1) only accept webdav connections from the localhost 2) generate a random port, username and password for each setup 3) only accept digest auth 4) store your XBEL location across sessions and 5) minimize to Windows tray / macOS top bar.

image

Link for the code: https://gist.github.com/TCB13/8f59088a807aebe58bd67bc0f9fd6b55
Packed exe for Windows: https://cdn.iklive.eu/tcb13/2019/floccus-local-xbel.rar

And yes, the code is ugly, but I'm not python dev and this was my first experience with the language. I didn't even cared to make it pretty.

<!-- gh-comment-id:475917893 --> @TCB13 commented on GitHub (Mar 24, 2019): @marcelklehr I've come up with a _very crude_ GUI to do what we were discussing. This small GUI was designed to: **1)** only accept webdav connections from the localhost **2)** generate a random port, username and password for each setup **3)** only accept digest auth **4)** store your XBEL location across sessions and **5)** minimize to Windows tray / macOS top bar. ![image](https://user-images.githubusercontent.com/6315832/54873460-9d597c80-4dce-11e9-8745-7d7a46ecd884.png) Link for the code: https://gist.github.com/TCB13/8f59088a807aebe58bd67bc0f9fd6b55 Packed exe for Windows: https://cdn.iklive.eu/tcb13/2019/floccus-local-xbel.rar And yes, the code is ugly, but I'm not python dev and this was my first experience with the language. I didn't even cared to make it pretty.
Author
Owner

@marcelklehr commented on GitHub (Mar 24, 2019):

@TCB13 Awesome! That looks quite good already. And the code is not that crude IMO. :D

<!-- gh-comment-id:475954968 --> @marcelklehr commented on GitHub (Mar 24, 2019): @TCB13 Awesome! That looks quite good already. And the code is not that crude IMO. :D
Author
Owner

@jlbprof commented on GitHub (Mar 24, 2019):

That is cool, can you link this project from your README.md so others can
see it too?

On Sun, Mar 24, 2019 at 7:39 AM Marcel Klehr notifications@github.com
wrote:

@TCB13 https://github.com/TCB13 Awesome! That looks quite good already.
And the code is not that crude IMO. :D


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/marcelklehr/floccus/issues/240#issuecomment-475954968,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJS39fYF0s8SnblzX0_BvN-mQXjN43Lkks5vZ3IbgaJpZM4b8WMT
.

<!-- gh-comment-id:475956747 --> @jlbprof commented on GitHub (Mar 24, 2019): That is cool, can you link this project from your README.md so others can see it too? On Sun, Mar 24, 2019 at 7:39 AM Marcel Klehr <notifications@github.com> wrote: > @TCB13 <https://github.com/TCB13> Awesome! That looks quite good already. > And the code is not that crude IMO. :D > > — > You are receiving this because you are subscribed to this thread. > Reply to this email directly, view it on GitHub > <https://github.com/marcelklehr/floccus/issues/240#issuecomment-475954968>, > or mute the thread > <https://github.com/notifications/unsubscribe-auth/AJS39fYF0s8SnblzX0_BvN-mQXjN43Lkks5vZ3IbgaJpZM4b8WMT> > . >
Author
Owner

@TCB13 commented on GitHub (Mar 24, 2019):

@jlbprof allow me to improve it a bit and I'll PR.

<!-- gh-comment-id:475966138 --> @TCB13 commented on GitHub (Mar 24, 2019): @jlbprof allow me to improve it a bit and I'll PR.
Author
Owner

@TCB13 commented on GitHub (Mar 24, 2019):

@marcelklehr @jlbprof ,

From now on, my GUI is called LoFloccus and is available here https://github.com/TCB13/LoFloccus. I've made several importements to it, it has more options now and looks better:

lofloccus

You can find an updated Windows exe here: https://github.com/TCB13/LoFloccus/blob/master/LoFloccus.exe (not working properly, please run python LoFloccus.py. I need assisting packing this with pyinstaller.)

Hope you enjoy.

<!-- gh-comment-id:475985932 --> @TCB13 commented on GitHub (Mar 24, 2019): @marcelklehr @jlbprof , From now on, my GUI is called **LoFloccus** and is available here https://github.com/TCB13/LoFloccus. I've made several importements to it, it has more options now and looks better: ![lofloccus](https://user-images.githubusercontent.com/6315832/54883850-1950d480-4e62-11e9-943c-dffb88b44ac5.png) You can find an updated Windows exe here: https://github.com/TCB13/LoFloccus/blob/master/LoFloccus.exe (not working properly, please run `python LoFloccus.py`. I need assisting packing this with `pyinstaller`.) Hope you enjoy.
Author
Owner

@marcelklehr commented on GitHub (Mar 24, 2019):

Thanks for the PR. Looks even better now. I'm not sure if the webDAV adapter currently supports Digest Authentication, though.

<!-- gh-comment-id:475991715 --> @marcelklehr commented on GitHub (Mar 24, 2019): Thanks for the PR. Looks even better now. I'm not sure if the webDAV adapter currently supports Digest Authentication, though.
Author
Owner

@TCB13 commented on GitHub (Mar 24, 2019):

Thanks for the PR. Looks even better now. I'm not sure if the webDAV adapter currently supports Digest Authentication, though.

I just have to say one thing: it works. I'm using it and it is able to sync without trouble.
Anyway, does anyone have experience with pyinstaller? I'm having issues packing the App into an exe...

<!-- gh-comment-id:475993169 --> @TCB13 commented on GitHub (Mar 24, 2019): > Thanks for the PR. Looks even better now. I'm not sure if the webDAV adapter currently supports Digest Authentication, though. I just have to say one thing: it works. I'm using it and it is able to sync without trouble. Anyway, does anyone have experience with `pyinstaller`? I'm having issues packing the App into an exe...
Author
Owner

@marcelklehr commented on GitHub (Mar 24, 2019):

I just have to say one thing: it works. I'm using it and it is able to sync without trouble.

Mh. Alright :)

does anyone have experience with pyinstaller?

Not me :D

<!-- gh-comment-id:475993464 --> @marcelklehr commented on GitHub (Mar 24, 2019): > I just have to say one thing: it works. I'm using it and it is able to sync without trouble. Mh. Alright :) > does anyone have experience with pyinstaller? Not me :D
Author
Owner

@TCB13 commented on GitHub (Mar 24, 2019):

@marcelklehr well anyone can run LoFloccus via python LoFloccus.py and it works just fine. The current exe doesn't start the server properly, probably due to some issue with pyinstaller. My ultimate goal is to provide a standalone Windows exe and macOS app that anyone can download and run without touching the CLI.

<!-- gh-comment-id:475995971 --> @TCB13 commented on GitHub (Mar 24, 2019): @marcelklehr well anyone can run LoFloccus via `python LoFloccus.py` and it works just fine. The current `exe` doesn't start the server properly, probably due to some issue with `pyinstaller`. My ultimate goal is to provide a standalone Windows exe and macOS app that anyone can download and run without touching the CLI.
Author
Owner

@marcelklehr commented on GitHub (Mar 24, 2019):

Meta aspect: Let's continue this in the issues of LoFloccus :)

<!-- gh-comment-id:475996836 --> @marcelklehr commented on GitHub (Mar 24, 2019): Meta aspect: Let's continue this in the issues of LoFloccus :)
Author
Owner

@allobrogica commented on GitHub (Apr 3, 2019):

I know this item is already closed, but for anyone who checks it: If you are on a Mac and have High Sierra or above you don't need any additional WebDAV software to enable local XBEL storage. WebDAV services are built-in and very easy to enable. I wrote up a wiki page on how to do it (just enter 2 commands at the command line and your specified folder will be available via WebDAV on localhost).
https://github.com/marcelklehr/floccus/wiki/Using-Floccus-locally-with-MacOS-built-in-WebDAV-service

<!-- gh-comment-id:479457097 --> @allobrogica commented on GitHub (Apr 3, 2019): I know this item is already closed, but for anyone who checks it: If you are on a Mac and have High Sierra or above you don't need any additional WebDAV software to enable local XBEL storage. WebDAV services are built-in and very easy to enable. I wrote up a wiki page on how to do it (just enter 2 commands at the command line and your specified folder will be available via WebDAV on localhost). https://github.com/marcelklehr/floccus/wiki/Using-Floccus-locally-with-MacOS-built-in-WebDAV-service
Author
Owner

@jlbprof commented on GitHub (Apr 3, 2019):

Awesome

On Wed, Apr 3, 2019 at 6:54 AM allobrogica notifications@github.com wrote:

I know this item is already closed, but for anyone who checks it: If you
are on a Mac and have High Sierra or above you don't need any additional
WebDAV software to enable local XBEL storage. WebDAV services are built-in
and very easy to enable. I wrote up a wiki page on how to do it (just enter
2 commands at the command line and your specified folder will be available
via WebDAV on localhost).

https://github.com/marcelklehr/floccus/wiki/Using-Floccus-locally-with-MacOS-built-in-WebDAV-service


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/marcelklehr/floccus/issues/240#issuecomment-479457097,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJS39Wyy_OZpgqWi_bA089GD0nXh3WpKks5vdJZagaJpZM4b8WMT
.

<!-- gh-comment-id:479487201 --> @jlbprof commented on GitHub (Apr 3, 2019): Awesome On Wed, Apr 3, 2019 at 6:54 AM allobrogica <notifications@github.com> wrote: > I know this item is already closed, but for anyone who checks it: If you > are on a Mac and have High Sierra or above you don't need any additional > WebDAV software to enable local XBEL storage. WebDAV services are built-in > and very easy to enable. I wrote up a wiki page on how to do it (just enter > 2 commands at the command line and your specified folder will be available > via WebDAV on localhost). > > https://github.com/marcelklehr/floccus/wiki/Using-Floccus-locally-with-MacOS-built-in-WebDAV-service > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/marcelklehr/floccus/issues/240#issuecomment-479457097>, > or mute the thread > <https://github.com/notifications/unsubscribe-auth/AJS39Wyy_OZpgqWi_bA089GD0nXh3WpKks5vdJZagaJpZM4b8WMT> > . >
Author
Owner

@TCB13 commented on GitHub (Apr 3, 2019):

@allobrogica @jlbprof the idea of a standalone app is to make it easy to use to anyone, not only those who know their way around the terminal....

<!-- gh-comment-id:479491642 --> @TCB13 commented on GitHub (Apr 3, 2019): @allobrogica @jlbprof the idea of a standalone app is to make it easy to use to anyone, not only those who know their way around the terminal....
Author
Owner

@marcelklehr commented on GitHub (Apr 3, 2019):

I think both are worthwhile approaches for the respective audiences :)

<!-- gh-comment-id:479634441 --> @marcelklehr commented on GitHub (Apr 3, 2019): I think both are worthwhile approaches for the respective audiences :)
Author
Owner

@TCB13 commented on GitHub (Apr 27, 2019):

Just released v1.1.1 LoFloccus, the solution to sync Floccus to a local folder. It was a complete rewritte in GoLand featuring a Qt5 UI. Get it at https://github.com/TCB13/LoFloccus .

LoFloccus-1.1.1

<!-- gh-comment-id:487279228 --> @TCB13 commented on GitHub (Apr 27, 2019): Just released v1.1.1 LoFloccus, the solution to sync Floccus to a local folder. It was a complete rewritte in GoLand featuring a Qt5 UI. Get it at https://github.com/TCB13/LoFloccus . ![LoFloccus-1.1.1](https://cdn.iklive.eu/tcb13/2019/lofloccus-1-1-0.png)
Author
Owner

@github-actions[bot] commented on GitHub (Mar 21, 2023):

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

<!-- gh-comment-id:1477489699 --> @github-actions[bot] commented on GitHub (Mar 21, 2023): This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/floccus#229
No description provided.