[qutebrowser] Sharing sessions between machines

Simon Désaulniers sim.desaulniers at gmail.com
Sun Jul 5 22:44:58 CEST 2020


Hi J Pablo,

I recommend that you look into Syncthing [1]. This is a cross platform syncing
software which operates in a decentralized and end-to-end (E2E) encrypted manner
for syncing files. On the surface, it works pretty much like any directory
syncing solution such as the well-known website Dropbox. You simply select
directory to make them "synced" and you chose devices with which you want to
share.

> Is there a way to share sessions between different machines? Other option I'd 
> like would be to peak into other session and copy/move tabs from machine A to 
> machine B.
>
> [...]
>
> So in the end, maybe what I'm asking for is a way to export a session to a file 
> or if there is such a file already in my disk.

Regarding how you would use that with Qutebrowser, all you need to do is to
select the ~/.local/share/qutebrowser/sessions/ directory in Syncthing and share
it with your other device. Obviously, when receiving the invitation to share on
the other device, you have to select the same directory so that Qutebrowser can
find the synced sessions.

All of this works seamlessly with Qutebrowser. I have noticed recently (after
some upgrade) that Qutebrowser even now reloads session files when they change
on disk (it wasn't the case a few months ago I think). Since you can activate an
option on Syncthing to watch files when they change on disk also, then you can
literally save a session on one computer and go on the other computer and in
less than a few seconds, you can bring the :session-load menu on the other
computer and see that the session has appeared in the list.

> Other option I'd like would be to peak into other session and copy/move tabs
> from machine A to machine B.

Regarding this, I can suggest a script that I wrote: qurlshare [2]. It lets you
share a tab between two computers. It is using a distributed hash table (DHT) to
send over the URL to the other Qutebrowser instance(s). The downside of this is
that it is presently slow: everytime you want to share or recover an URL on the
exchanging point in the DHT, a local node is created and this node has to
discover its peers again and again. I would like to use a persistent proxy
running on the machine as a daemon for sending the requests so that requests
take no longer than a second, but for now it is not quite possible to develop
this on Debian since the proxy functionnality of OpenDHT it is not yet
packaged [3]. I know that I could do without and simply compile what I need, but
I guess I didn't give enough thoughts to it to motive me. There is however
another HTTP proxy script for OpenDHT [4] that could work and I could make it
usable while the official proxy is getting support for packaging. While this
solution is not perfect, it works for now. Sharing an URL takes something like 3
seconds in total. If you're not working too quickly between both computers that
would work. However, keep in mind that a share on OpenDHT doesn't last more than
10 minutes. You then have to recover the URL in the 10 minutes following the
share.

Anyways, I hope that this gives you some ideas.

Regards,

NOTE 1: You can obviously use that to share other things like quickmarks,
bookmarks, etc.

NOTE 2 (if privacy is important for you): While syncing is decentralized and E2E
encrypted, it unfortunately uses centralized discovery. It is perfectly feasible
to use a distributed communication library for discovery (such as distributed
hash tables), but it is not yet accomplished. This change would particularly
help to protect against censorship. Anyhow, I think that this solution is the
most secure and privacy preserving solution there is. Plus, indeed, it is
software libre.

[1]: https://syncthing.net/
[2]: https://github.com/sim590/qurlshare
[3]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=950198
[4]: https://github.com/savoirfairelinux/opendht/blob/master/python/tools/http_server.py

On Tue, Jun 30, 2020 at 11:27:11AM +0200, J Pablo Navarro wrote:
> Hi there!
> 
> Is there a way to share sessions between different machines? Other option I'd 
> like would be to peak into other session and copy/move tabs from machine A to 
> machine B.
> 
> My usecase involves a laptop for being in the move and a desktop while I'm at 
> home, so sometimes I'd like to rescue a few tabs I left opened in my laptop. 
> The sync-side wouldn't be an issue if I can export a list through a shared 
> Nextcloud account, maybe syncthing or even ssh.
> 
> So in the end, maybe what I'm asking for is a way to export a session to a file 
> or if there is such a file already in my disk.
> 
> Cheers and thank you for this wonderful piece of software,
> Pablo.
> 
> 

-- 
Simon Désaulniers
sim.desaulniers at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://listi.jpberlin.de/pipermail/qutebrowser/attachments/20200705/270cc2bb/attachment.asc>


More information about the qutebrowser mailing list