A CLI program that will let you sync and export your Linux customizations with just one command! It officially supports KDE Plasma but it can be used on any other desktop environment!
Install from PyPI using pipx, (not yet implemented)
for now just pipx install konsyncgit clone https://github.com/EpicStuff/konsync and run python konsync/konsync/__main__.py
konsync -h or konsync --help
konsync -s or konsync --sync.
You may need to log out and log in to see all the changes.
konsync -sc config.taml or konsync --sync --config config.taml.
The default config file location is ~/.config/konsync.taml
konsync -sf <local,sync> or konsync --sync --force <local|sync>
konsync -r <local,sync> or konsync --remove <local|sync>
Export larger files/folders that you may not want stored without compression, see compression format for detailed behaviour
konsync -e or konsync --export
konsync -i or konsync --import.
Note this will move existing files to the trash
konsync -if or konsync --export --force will delete existing files instead to
moving them to trash
konsync --edit will open the default config with your default editor
konsync -v or konsync --version
You can make changes to Konsync's configuration file according to your needs. Konsync will check for ./config.taml by default unless a config file or sync location is specified.
For KDE Plasma users, the configuration file will be pre-configured.
The configuration file should be formatted in the following way:
sync_dir:
placeholder: # this is required due to the way the parsing functions were written
location:
save:
name:
location: "path/to/parent/directory"
entries:
# These are files to be backed up.
# They should be present in the specified location.
- file1
- file2
- folder1/
- folder2/file3
export:
# This includes files which will be exported with your profile.
# They will not be saved but only be exported and imported.
# These may include files like complete icon packs and themes..
name:
location: "path/to/parent/directory"
entries:
- file1
- file2You can add more files/folders in the configuration file like this:
save:
another_name:
location: "another/path/to/parent/directory"
entries:
- file1You can use a few placeholders in the location of each entry in the configuration file. These are:
$HOME: the home directory
$CONFIG_DIR: refers to "$HOME/.config/"
$SHARE_DIR: refers to "$HOME/.local/share"
$BIN_DIR: refers to "$HOME/.local/bin"
${ENDS_WITH="text"}: for folders with different names on different computers whose names end with the same thing.
The best example for this is the ".default-release" folder of firefox.
${BEGINS_WITH="text"}: for folders with different names on different computers whose names start with the same thing.
save:
firefox:
location: "$HOME/.mozilla/firefox/${ENDS_WITH='.default-release'}"
entries:
- chromePlease read CONTRIBUTION.md for info about contributing.
This project uses GNU General Public License 3.0