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 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
home
androot
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09df457e5e9477627862db895c54061086fe3b9b1d5ec47dcc5cb47ae647c4c4 |
|
MD5 | 958470469445c4fca6a26b651f8f3ea8 |
|
BLAKE2b-256 | 8205904503de994e7b683d6093378cce2df01746ef87ae317bbd1c61376ae558 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c054cb9d1552747390b85d20f4db0c54ec79a5d0f79b05ef407c02fc5ac64f4 |
|
MD5 | 5f764177578dbfad1cb3e8485e3f8555 |
|
BLAKE2b-256 | 062dae9845af6132e7a39d606298ec2f3d4926fa2c38c64ca3965071618cebd2 |