Cloud sync all budgie-settings / backup & restore

I have raised the following GitHub issue:

Anyone interested in helping out here?

Several parts - so many people can dip in here.

  1. Shell scripting or maybe python to gather information
  2. Googling around and digging out similar projects and seeing what we can borrow
  3. knocking up a prototype GUI

Interesting approach here - bash script (licensed MIT) … step by step guide as well -although it does appear to be a more generic backup/restore rather than per settings approach that we are after. Good ideas though about tar-ball production, encrypting options etc.

Depending on how this is architected. If this is a “true” service (running the syncing mechanism, etc). There is a ton to consider. Security, high availability, fault tolerance, etc.

Or are you more so thinking about an app that more so dumps settings, and a user uses their own sync mechanism (ie dropbox, seafile, nextcloud, etc)?

How do you envision this?

the latter - simple gui - that will dump what’s needed into whatever cloud folder the user specifies.

The gui perhaps could be a tree view with checkboxes to allow what to sync.

It should be dynamic preferably - i.e. built from the file/files dragged from a public git repo - so the files contains the info of what to backup/restore and importantly how to backup / restore.

Ah ok. A GUI to interact with dconf. (for budgie settings). I might be able to take a crack at this.

1 Like

Would it make sense to leverage the amazing Timeshift? It supports rsync and btrfs, has both a GUI and a CLI, snapshot schedule and so on. you could leverage to create and restore backups. The drawback of that, I believe it needs a linux-formatted drive as destination, There is no other destination that I know of.

This topic is more than just backups and restores - this is looking at capturing the desktop look and feel so that you could easily restore it if required … or replay the configuration on another install so that you get the same look and feel.

I understand. Timeshift can do that provided that we add a profile that auto-selects the correct files and folders. But I see the point, timeshift is probably not the easiest especially if you want to move config files across installs.
Is there an easy to find list of files and folders for the budgie desktop settings (panels, applets and everything needed to backup) so I can play with some backup scripts I use for other purposes?

sounds interesting!

So the idea would be to capture various areas of dconf as well as areas of .local/share & .config

Anything that has in its path “budgie” or “gnome”

Where the pain points will be is for a script to see on the current install if restoring certain paths would be invalid - especially for applets that may not exist.

From memory applets are described in the panel section under com.solus-project

Ideally, my thoughts would be something like chrome/firefox sync and how they deal with extensions. If the applets don’t exist on the install then optionally, go away and install those applets and apply the config.

1 Like

Thank you for the explanation.
I see the idea and it sounds awesome. It would be an amazing little thing to have, especially if can save time and effort with tedious tasks such as re configuring your panels, applets, themes.
I would love to be able to do something like with firefox. login my account and get everything back. The only possible issue I see with that, would be some challenges by users worried about their privacy and data. But maybe that is problem #216 and we are still handling #1 here :smiley:

I will try to dig out a list of what is needed for backups and play a bit on how we could query installed themes and applets. Then write it in a list and use that list to issue an install command before data is restored.

1 Like

Ok I am writing down individual commands and the logic of scripts. So far if seems all fairly straightforward.

Backup

  1. Query installed software, filter by budgie, and output the list to file.
  2. Save applet data such as notes
  3. Save budgie settings by dumping dconf, filter by budgie, to file
  4. Compress to archive

Restore

  1. Decompress archive to temporary location
  2. Grab software list from file (backup step1), and issue install command
  3. Restore budgie settings using dconf
  4. Restore applet data
  5. Delete temp folder

Questions/things to consider
Themes seem to be a bit of a pain, as themes installed by budgie themes, most likely require extra repositories, and often separate repository for each theme.
So in order to manage that properly, if needed, we would need to query theme package names one by one, output to file during backup phase. And during restore, query each theme name and based on those, issue commands to add ppa first, then reinstall themes.

possibly to consider is that themes & icons etc could be installed via .deb as well as manually.

I suppose it should be possible to use something like apt-file to search for a folder such as “/usr/share/themes/Pocillo” - it should return the .deb if it was a package installed. Then could determine which repo that .deb came from. If apt-file didn’t find anything then assume a manual install - so tar up that folder structure to be later restored from that tar ball.

Yes, agree.
Backing up and restoring themes manually is easy, but I think it would be better to reinstall with proper repositories when needed, so that themes can be automatically updated with system. Nothing impossible, just probably a bit time consuming. I will look up how to handle efficiently and report back.

Another question. Since plank is part of ubuntu budgie, shall we look to backup plank settings too? or is it out of scope here?

Would suggest plank is in-scope.

I made some progress. I have the workflow logic, task list and each single bash command to do backup and restore. I am now moving into testing the commands one by one and from a first round of testing it seems to be working fine. In order to make things a bit easier I created a task to add all the PPAs that are needed to install applets and themes. This can be refined later on if needed.

What works so far:

  1. Backup and restore of Budgie desktop settings, panels, and applets, done with dconf dump.
  2. Backup and restore of Budgie installed applets.
  3. Backup and restore of Budgie installed themes. (Only themes that are supported by Ubuntu budgie, therefore themes that are in the “Budgie Themes”).
  4. Backup and restore of Budgie applet data.
  5. Backup and restore of Plank launchers, provided that apps for the restored launchers are installed in destination system.
  6. Backup and restore of Plank settings, done via dconf dump.

Good to know the backup and restore function is feasible and actually quite straightforward. I will keep testing the commands and probably combine into a bash script for simple use. If you think this is helpful for Ubuntu Budgie team to write a small GUI, I am happy to share what I have.

1 Like

@vlijm re above - what sort of GUI do you think would be needed here?

Just reading up on the subject. I have the feeling this is a risky feature that can go wrong/cause issues on many, many areas, depending on the user’s setup. Possibly there is also manually edited/changed stuff etc, etc. Also the order of things to copy/restore might be essential. I also would suggest an automatic virtual test-run to check for possible issues before applying, but even then.
Similar features on Mac an Windows in the past never worked for me, often ending up with a borked box.

Given the above, I would only include stuff that we feel is straightforward, within “our own” area of knowledge,easy to auto check and with a minimum risk on conflicting situations.

For a GUI, I think we need a three-page setup:

  • one to setup/push a new backup -or edit an existing one-, check-boxes with what to include, check-box.
  • one to occasionally update/import from an existing backup, check-boxes to include what.
  • one to setup a shared, synchronized source backup.

No need to mention that the options above need to be checked on each other, set up warnings in case conflicting usage of the options will happen, greyed out options if applicable etc, etc.

In case we use option 3, it should at all times be visible on the desktop. i.e. an applet’s icon or something.
Please shout if I am misunderstanding the concept!

Good point. For each area being backed up there needs to be tests devised to ensure the validity of the data. Likewise before the restore another separate series of tests to see if the data can be applied over the top.

So you make a good point about manual changes. E.g. is the folder being written into for - say - plank read & writable.

I am sure we can come up with a battery of tests to ensure robust backups and restores.

I am sure. I am also sure this would be a feature -if robust- many users would love to see.

I am only beginning to test this backup and restore, and so far it seems fairly stable. But I only have done a couple of times and I am sure I have not seen all possible results.
Because of the potential issues you mentioned, and other issues that users might face, would it be nice to offer an extra feature to allow the user to just wipe budgie configurations and start from scratch?

I believe I had some issue a while back and resolved by doing:
dconf reset -f /com/solus-project/budgie-panel/
nohup budgie-panel --replace