Feature Requests >> Feature Requests >> Synchronize to cloud service (Goggle,Dropbox, etc)

Synchronize to cloud service (Goggle,Dropbox, etc)
Post by houston on Dec 15th, 2017, 06:42am


I am a long time user of stickies on my notebook, since I usually work on that device.
Now I thought about installing it to my desktop too, but I would like to have the possibility to synchronize both machines without using a Usb stick, restarting the app, etc. (Read a few threads about syncing on this forum)

I already thought about putting the files in the Google-Drive folder, that get synced automatically.
But this would be the "restart app" method.
Since I am not that into coding and stuff, I would think, it is the easiest way to create a remote DB file.
I already looked in the data folder off stickies and saw the stickes are stored within a db file.
The stickies.ini only stores which stickie is shown or deleted (if I understand it right)
- I don't know if this interfere with my idea...

In my scenario this file would remain in its place and is the local database.
But every now and then stickies would check the remote file, that can be saved within a synchronized folder for Dropbox, Google, Mega, etc pp., for any new stickies.
The stickies should have a hashed key (generated from content) to determine their "first state" after creating and saving the first time to the remote-db.
Also their should be a possibility for stickies to check the date and time of the last change, maybe even a counter that states the "version" of this one note.
And of course the content, formatting, sender/last editor.
Also every stickie should be manually marked as a synchronized stickie by pressing a sync-button.

- Note is created and filled with content by PC A.
- Stickes checks after x minutes (or on clicking a "sync this note" button, etc) if the hashkey is present in the remote-db.
----> Not present: Saving the Note to the remote-db.
----- Sync-mode is running: Stickies is checking for any other not synced hash-keys.
------->Not present: Loading the note into local-db.
------->Present: Compare Version of local copy to determine if sync is needed. (Last Change, Counter, etc)
----- Sync-mode ends if local-DB is up to date
- Stickies has synced the new note to remote DB and received maybe new ones (new ones could have a temporary color to mark them new, maybe showing the last editor)

- Stickies on PC B is not used right now.
- After x min stickies is checking remote-DB, searching for present hashkeys and new ones.
---> Present: Check version
---> Not Present: Load new note to local-DB
- Sync is ended if all entries are checked.

All the syncing of the remote-DB would be done by a client-app per user wishes. Could even be a nextcloud client, a network-drive, etc.
Only database-work is needed and no other software apis are called.
DB can be encoded by a defined password within settings.
This method would be future proof, since it does not relay on a particular software version of a third party.
And it should be easy to make, if one know how to work with databases and since stickies is already using databases, it should be possible.

Other things that could be saved:
- versions history that can be called with the local client to make sure it is the latest version.
- deleting notes is not incl. in scenario, but remote-db could contain hashkeys in a "deleted" group to move local notes to recycle bin (not deleting completely, breaking sync until commanded otherwise). The remote-db would not contain any more content to any deleted stickie, only the hashkey, the stickie will remain local until deleted completely.
- Logging should be done incl. user notifications for new/changed/deleted stickies.
- Images by embedding the "image-code" inside the stickie. (con: significant size increase)

Settings could contain:
--- Hands-free-mode: All syncing is done automatically. (Deleting, changing, creating)
--- Confirmations-mode: Before deleting, creating and changing local notes, the user will be asked (Notification system?)(Settings individually for creating, deleting and changing)
--- Changing: Confirm changes within a popup containing old/new content, author, date
--- Sync-All-Notes: Sync all notes automatically, without pressing the sync-button.
--- Snyc-Intervall: Every xx min check for DB-changes (file-date), manually
--- DB-File or Remote-DB: Since this method is using a db structure, it should not be a problem to provide a possibility to connect to a existing database on a private server.

If the file remain small, there is even the possibility to sync to a mobile device over mobile data connection.

The only contra I can think of this way...
For every sync the whole remote-db file is synced between all clients.
But, if using google drive, the sync-client is only syncing on filechange.
Using a private db would help here, since then it could only sync the necessary entrys.

I hope this (or any other syncing method) will be implemented in near future :)
Thanks for your time

PS: any thoughts about this?
Re: Synchronize to cloud service (Goggle,Dropbox,
Post by SPOOK on Dec 16th, 2017, 06:39am

Untill then - Synchronize to cloud service (Goggle,Dropbox, etc):


Options/General/Use transfer fie / 'x:\...\transfer.ini'

Send to file
Copy to file

Import from file
Re: Synchronize to cloud service (Goggle,Dropbox,
Post by houston on Dec 16th, 2017, 08:52am

Oh, already heard about this transfer file, but thought it would be the whole data dictionary that would be synced.
I will definitely try this asap!
Thanks for mentioning
Re: Synchronize to cloud service (Goggle,Dropbox,
Post by SPOOK on Dec 16th, 2017, 09:05am

Ya, its just the Stickies you chose to Send/Copy.

You my need to grab the Directory to get the 'transfer.ini' and the Stickies you have Sent or Copied.

My Pleasure.

Re: Synchronize to cloud service (Goggle,Dropbox,
Post by SPOOK on Dec 17th, 2017, 05:30am

'You my need to grab the Directory', More specifically:

x:\...\Data Transfer\transfer.ini
Re: Synchronize to cloud service (Goggle,Dropbox,
Post by houston on Dec 17th, 2017, 07:31am

Just tried it.
Have to say, it is not what I meant to du with my syncing method.
The transfer.ini will contain the sticky completely, the sticky will not be available on PC A anymore, after transferring.
Sure, it can be read again, but there is no real sync but just a one direction transfer.

Would the transfer.ini remain in the destination folder and the sticky won't disappear on PC A after transferring, it would be more like what I need.
Just found the "copy to file" button.
Still this means I have to be aware of editing it only on one machine at a time.

Another thing is, because of the nature of the transfer.ini, it won't be unattended.

But right now it is better than noting.
If I don't forget it, I can move the file on GDrive and if I need it, I can load it from there...
Best possible solution right now.

Re: Synchronize to cloud service (Goggle,Dropbox,
Post by SPOOK on Dec 17th, 2017, 10:15pm

Addressesing some parts of your reply #5.

Note: The 'Transfer file' (transfer.ini) is in my Folder called 'Data Transfer' and I will be using this nomenclature as the Example.

The thing that needs to be 'Synchronize to cloud service (Goggle,Dropbox, etc)' is the 'Data Transfer' Folder.

If you just recently discovered the "Copy to file" button it seems reasonable that you may have some more things to discover about the 'Data Transfer' Folder, and the content and structure thereof, and some Technics utilizing the "Copy to file" button.

I.e. If you have 'Copy to file' a Stickie and then add or change the content of the original, just go ahead and 'Copy to file' the changed original again. You will now have two in the 'Data Transfer' Folder, one old and one new. When you 'Import from file' you will get both, then just compare the 'Modified Date' on each and 'Close' the old one and keep the new one. (Or add '2' or '3' or whatever in the title for the newer ones before you 'Copy to file'.)

(Note: Changing the 'Title' does not change the 'Modified Date'.)

Another part of the discovery process might involve when you 'Import from file' many Stickies. When many Stickies have been 'Import from file' some or many will be stacked on top of each other because they return to the position they were at when 'Copy to file'. I just grab each one and Snap them each together lining them up vertically for display, then 'Close' old dups and move or insert whats left into the 'Stacks' I desire them to be in or whatever.

EXAMPLE of my Directories: (I now run 24 v9 Stickies.exe)

Stickies 0 Data Transfer (My Main Stream 'Transfer file' Folder)
Stickies 1 RLD
Stickies 1 RLD FAMILY
Stickies 2 COMPUTERS

(Note that I have only one 'Data Transfer' Folder for all 24 v9 Stickies.exe that I run.)

Now, if I 'Send to file' or 'Copy to file' 4 Stickies - there will be at least 5 files in my 'Data Transfer' Folder.



or a combination of .rtf and .png - totaling 5 files. (one 'transfer.ini')
As for the remaining parts of your reply #5 I am not smart enough to figure out what you mean.
Re: Synchronize to cloud service (Goggle,Dropbox,
Post by Tom Revell on Jan 2nd, 2018, 1:37pm

I've given sync code a fair bit of thought over the years, and even started to write it a few times. Never finished it, though.

I think that in order to sync two sides, for each note you need a unique ID, the "last modified" date, and finally you need to know the date of the last successful sync. With that info, you could perform a hands-free sync, with the one proviso of when a note has been modified on both sides. At that point though, the sync code should probably create two instances, rather than overwrite anything.

Part of what's stopped by coding is stored notes. I know that were I to release anything, it would need to be the full solution - I've learned in the past that putting out half-baked ideas isn't a good idea. See check boxes in the app :/

This means I'd need to also include sync for stored notes, as well as desktop/sleeping/recurring/attached/stacked/closed notes. That makes the task more complex again.

Finally, although the "dropbox/onedrive" method would work OK for some people, these days sync is really an online thing - Stickies /should/ be syncing with an online service. Something which listens to HTTPS requests, and uses a REST API or the like. However, that's a business I actively want to avoid - as soon as I wrote something like that, I'd move into the online security world, as my server would hold other people's data. That adds complexity, security, backup, reliability, and therefore subscription. I'm happy to keep it low key, and that's not what I'm looking to get into...

Re: Synchronize to cloud service (Goggle,Dropbox,
Post by SPOOK on Jan 10th, 2018, 5:33pm


Tried it - It Works Flipping Perfect!


Logged into: GOOGLE DRIVE: Backup and Sync from Google

SEE: (Do what it says)

C:\Users\RLD\Google Drive (I am RLD)

Network Path:
\\RLD-VISTA-DV7\Googe Drive (RLD-VISTA-DV7 = My Computer name)

Advanced Sharing
Share this folder (Checked)
Share name: Google Drive
Limit the number of simultaneous users to: 1 (Just for you 'Houston', At home or at work. not both at same time)

Map Network Drive

(Copy the UNC path to Transfer Folder and add '\transfer.ini')

'\\RLD-VISTA-DV7\Users\RLD\Google Drive\Stickies 0 GD Data Transfer\transfer.ini'
(Stickies 0 GD Data Transfer = MY 'GOOGLE DRIVE' FOLDER NOTATION)

NOTE: No HTTPS requests!

Re: Synchronize to cloud service (Goggle,Dropbox,
Post by houston on Jan 12th, 2018, 03:09am

I don't completely understand what you are saying, but I will try to follow your tutorial in 2-3 weeks... Right now I am in preparations for my exams.
Especially the "one user/time" is promising.
Thanks for trying nevertheless.