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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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