Skip to main content

Easily manage all your dotfiles across your devices

Project description

doti

Easily manage all your dotfiles across your devices.

Motivation

I wanted a simple way to manage all my dotfiles while having each application isolated, so I can easily share them across different devices.

Popular options:

  • stow - great simple tool but a hassle to manage multiple separate dotfiles
  • chezmoi - powerful tool but I didn't want the complexity that came with it

I created doti to extend the functionality, simplicity, and portability of stow with a config file to manage dotfiles of multiple programs on different systems.

Features

Features:

  • Isolate all configs of an application into its own directory.
  • Use same directory structure as can be seen from the home (~) or root (/) directories within the application's own directory.
  • Symlink configs so we can edit directly from the dotfiles directory instead of trying to hunt the config files down.
  • Both home and root configs supported.
  • Hostname-specific, system-specific, and general configs
  • Supports Linux, Termux, OSX, OpenBSD, FreeBSD, and Cygwin.
  • Non-root installation using pip.

Non-features:

  • No template files. I want the configs to be portable and not rely on doti or any specific dotfile manager.

Installation

Requirements: stow

# Cross-Platform (pip)
pip install doti

# or

# Arch Linux (AUR)
yay -S doti

Setup

Within the dotfiles directory, create a separate sub-directory for each program. Within each sub-directory organize that programs config files as they appear from the home or root directory.

Example dotfiles directory structure:
.
├── doti
│   └── .config
│       └── doti
│           └── doti.cfg
├── dircolors
│   └── .config
│       └── dircolors
│           └── .dir_colors
├── env_root
│   └── etc
│       └── environment
├── git
│   └── .config
│       └── git
│           └── config
├── gtk
│   └── .config
│       ├── gtk-2.0
│       │   └── gtkrc
│       └── gtk-3.0
│           ├── gtk.css
│           └── settings.ini
├── termux
│   └── .termux
│       ├── colors.properties
│       └── termux.properties
├── tty
│   └── etc
│       ├── issue
│       └── profile
└── zsh
    ├── .config
    │   └── zsh
    │       ├── .zprofile
    │       └── .zshrc
    └── .zshenv

Configuration

Check the sample doti.cfg file for details.

Usage

Run doti without arguments to use all the settings from the config file.

doti -h
usage: doti [-h] [-r] [-R] [-c FILE] [-d DIR] [-v] [-q] [-n] [-V]
            {add,remove} ...

Symlink dotfiles into their respective directories using `stow`.

positional arguments:
  {add,remove}

options:
  -h, --help            show this help message and exit
  -r, --root-enable     enable root section in config
  -R, --root-only       only use root section in config
  -c FILE, --config FILE
                        path to config file (doti.cfg)
  -d DIR, --dotfiles DIR
                        path to dotfiles directory
  -v, --verbose         show verbose output
  -q, --quiet           supress output
  -n, --no, --simulate  simulate run, no filesystem modification
  -V, --version         show version number
doti add -h
usage: doti add [-h] [-r] NAME [NAME ...]

positional arguments:
  NAME        symlink dir[s]'s files to the home directory

options:
  -h, --help  show this help message and exit
  -r, --root  use root dir instead of home
doti remove -h
usage: doti remove [-h] [-r] NAME [NAME ...]

positional arguments:
  NAME        remove dir[s]'s symlinks from the home directory

options:
  -h, --help  show this help message and exit
  -r, --root  use root dir instead of home

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

doti-0.4.0.tar.gz (21.6 kB view details)

Uploaded Source

Built Distribution

doti-0.4.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file doti-0.4.0.tar.gz.

File metadata

  • Download URL: doti-0.4.0.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for doti-0.4.0.tar.gz
Algorithm Hash digest
SHA256 09df457e5e9477627862db895c54061086fe3b9b1d5ec47dcc5cb47ae647c4c4
MD5 958470469445c4fca6a26b651f8f3ea8
BLAKE2b-256 8205904503de994e7b683d6093378cce2df01746ef87ae317bbd1c61376ae558

See more details on using hashes here.

File details

Details for the file doti-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: doti-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 22.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for doti-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c054cb9d1552747390b85d20f4db0c54ec79a5d0f79b05ef407c02fc5ac64f4
MD5 5f764177578dbfad1cb3e8485e3f8555
BLAKE2b-256 062dae9845af6132e7a39d606298ec2f3d4926fa2c38c64ca3965071618cebd2

See more details on using hashes here.

Supported by

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