Skip to main content

A TUI that manages your dotfiles (.bashrc, .vimrc, etc.) — lets you snapshot current config, switch between named profiles (e.g., "work", "home", "minimal"), and diff profiles side by side.

Project description

DotfileSync 🚀

DotfileSync is a lightweight, intuitive Terminal User Interface (TUI) designed to manage your configuration files (.bashrc, .vimrc, .gitconfig, etc.) without the complexity of traditional symlink managers.

Unlike other tools, DotfileSync allows you to maintain multiple named profiles (e.g., "Work", "Home", "Minimal") and switch between them instantly using a clean, interactive interface.


✨ Features

  • 📂 Multi-Profile Support: Create and manage distinct profiles for different environments.
  • 🖥️ Interactive TUI: Built with Textual for a smooth terminal experience.
  • 🔗 Intelligent Symlinking: Seamlessly link and unlink your configurations without manual ln -s commands.
  • 📝 Built-in Editor: View and edit your managed files directly within the TUI.
  • 🛡️ Automatic Backups: Every file you add is automatically backed up before any changes are made.
  • 🚀 Cross-Platform: Works on both Windows and Linux/macOS, following OS-specific configuration standards.

🛠️ Installation

Using pip (Recommended)

Install the latest version directly from PyPI:

pip install DotfileSync

From Source

  1. Clone the repository:
    git clone https://github.com/MadushankaRajapaksha/DotfileSync.git
    cd DotfileSync
    
  2. Install the package:
    pip install .
    

Post-Installation

After installation, the dotSync command will be available in your terminal.


📖 User Guide & Tutorial

This section walks you through a complete workflow with DotfileSync.

1. Launching the App

Open your terminal and type:

dotSync

You will see the main dashboard with a banner and two main tables: Profiles and Managed Files.

2. Setting Up Your First Profile

A profile represents a set of configurations. For example, you might have one for "Work" and another for "Personal".

  • Click the "Add Profile" button.
  • Enter a name (e.g., Work) and confirm.
  • This creates a dedicated folder in your config directory to store this profile's version of your dotfiles.

3. Adding Files to Manage

To start tracking a file (like your .bashrc):

  • Click "Manage Files" on the main screen.
  • In the file manager modal, click "Add File".
  • Use the built-in file browser to navigate to your home directory or wherever your config is located.
  • Select the file and click "Add File".
  • What happens next?
    1. DotfileSync creates a backup of the original file.
    2. It copies the file into every existing profile directory.
    3. It registers the file in the internal database.

4. Editing Files in the TUI

You don't need to leave the app to make changes:

  • In the Manage Files modal, select a file from the list.
  • Its content will appear in the editor below.
  • Make your changes and click "Save".
  • Note: Changes are saved to the copy within the active profile directory.

5. Activating and Linking

This is where the magic happens.

  • On the main screen, select the profile you want to use from the Profiles table.
  • Click "Activate Profile".
  • Click "Link Profile".
  • Result: DotfileSync replaces the actual file on your system with a symlink pointing to the file inside your active profile's folder. Your system now uses the "Work" version of your .bashrc.

6. Switching or Reverting

  • To switch profiles: Select a new profile, "Activate", and "Link".
  • To revert to originals: Click "Unlink Profile". The symlinks will be removed, and your original files (restored from backup) will be put back in their place.

🧪 Development

To run the project in development mode:

pip install -e .
python -m dotfilesync.cli

Dependencies

  • textual: Core TUI framework.
  • rich: Beautiful CLI formatting.
  • pyfiglet: Banner generation.

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


👨‍💻 Author

Madushanaka Rajapaksha
GitHub | Email

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dotfilesync_cli-1.0.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dotfilesync_cli-1.0.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file dotfilesync_cli-1.0.0.tar.gz.

File metadata

  • Download URL: dotfilesync_cli-1.0.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for dotfilesync_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 314d2c723848ebf020289c5191b469927d116df3efbb6b940ac0bb34f0126275
MD5 f26fd292c3721a9a9c7edef845f15876
BLAKE2b-256 062fd3dbb7d6d8c4455e78ceccc6482ba1b7da6151eeb876cc7827e4d096938e

See more details on using hashes here.

File details

Details for the file dotfilesync_cli-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dotfilesync_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c3cf8ecbdb787ed21a1b1dd745dbb99b7e39599d82210b1bc23985ee5a75c23e
MD5 8e94469cc5d6417b832e143a1a740d6e
BLAKE2b-256 1785c73648f38fad6f634defad2af08b11afe14b228c2f34907826bfdd0d2cf6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page