Package: doti
dotiEasily manage all your dotfiles across your devices.MotivationI wanted a simple way to manage allmy dotfileswhile 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 dotfileschezmoi- powerful tool but I didn't want the complexity that came with itI createddotito extend the functionality, simplicity, and portability ofstowwith a config file to manage dotfiles of multiple programs on different systems.FeaturesFeatures:Isolate all configs of an application into its own directory.Use same directory structure as can be seen from thehome(~) orroot(/) 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.Bothhomeandrootconfigs supported.Hostname-specific, system-specific, and general configsSupports Linux, Termux, OSX, OpenBSD, FreeBSD, and Cygwin.Non-root installation usingpip.Non-features:No template files. I want the configs to be portable and not rely ondotior any specific dotfile manager.InstallationRequirements:stow# Cross-Platform (pip)
pip install doti

# or

# Arch Linux (AUR)
yay -S dotiSetupWithin 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
    └── .zshenvConfigurationCheck the sampledoti.cfgfile for details.UsageRundotiwithout arguments to use all the settings from the config file.doti -husage: 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 numberdoti add -husage: 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 homedoti remove -husage: 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