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 dotfileschezmoi- 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(~) 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.
- Both
homeandrootconfigs 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
dotior 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
Metadata
Release files for doti 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| doti-0.4.0.tar.gz | 21.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| doti-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.9 kB
Release files / doti-0.4.0.tar.gz
| Download URL | doti-0.4.0.tar.gz |
|---|---|
| Size | 21.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09df457e5e9477627862db895c54061086fe3b9b1d5ec47dcc5cb47ae647c4c4
|
|
BLAKE2b-256 checksum How to use checksums |
8205904503de994e7b683d6093378cce2df01746ef87ae317bbd1c61376ae558
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Release files / doti-0.4.0-py3-none-any.whl
| Download URL | doti-0.4.0-py3-none-any.whl |
|---|---|
| Size | 22.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c054cb9d1552747390b85d20f4db0c54ec79a5d0f79b05ef407c02fc5ac64f4
|
|
BLAKE2b-256 checksum How to use checksums |
062dae9845af6132e7a39d606298ec2f3d4926fa2c38c64ca3965071618cebd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|