Skip to main content

dotbot-windows

Configure Windows using dotbot.


Table of contents

What you can do with it

The dotbot-windows plugin is able to configure Windows in the following ways:

  • Configure the desktop background color

  • Import registry files (*.reg) from a specified directory

Sample configuration:

windows:
  personalization:
    background-color: "#2A4661"

  registry:
    import: "my-registry-tweaks/"

  fonts:
    path: "my-standard-fonts/"

Installation

There are two ways to install and use the plugin:

  1. Install it as a Python package.

  2. Add it as a git submodule in your dotfiles repository.

  3. Copy dotbot_windows.py into your dotfiles directory.

Python package

If you want to install dotbot-windows as a Python package (for example, if you’re using a virtual environment), then you can install the plugin using pip:

pip install dotbot-windows

Then, when running dotbot, use the -p or --plugin option to tell dotbot to load the plugin:

dotbot [...] --plugin dotbot_windows [...]

If you’re using one of dotbot’s install scripts, you’ll need to edit that file to add the --plugin option.

Git submodule

If you want to track dotbot-windows as a git submodule (for example, if you manage your dotfiles using git) then you can add the plugin repository as a submodule using git:

git submodule add https://github.com/kurtmckee/dotbot-windows.git

This will clone the repository to a directory named dotbot-windows. Then, when running dotbot, use the -p or --plugin option to tell dotbot to load the plugin:

dotbot [...] --plugin dotbot-windows/dotbot_windows.py [...]

Note that you may need to initialize the plugin’s git submodule when you clone your dotfiles repository or pull new changes to another computer. The command for this will look something like:

git submodule update --init dotbot-windows

Copy dotbot_windows.py

If desired, you can copy dotbot_windows.py to your dotfiles directory. You might choose to do this if you already use other plugins and have configured dotbot to load all plugins from a plugin directory.

If you copy dotbot_windows.py to the root of your dotfiles directory then, when running dotbot, use the -p or --plugin option to tell dotbot to load the plugin:

dotbot [...] --plugin dotbot_windows.py [...]

If you copy dotbot_windows.py to a directory containing other plugins, you can use dotbot’s --plugin-dir option to load all plugins in the directory. In the example below, the plugin directory is named dotbot-plugins:

dotbot [...] --plugin-dir dotbot-plugins [...]

Configuration

Personalization

You can configure the desktop background color using a hexadecimal color (like "#2A4661") or a triplet of decimal RGB values (like "0 153 255").

Here are examples demonstrating the two formats:

windows:
    personalization:
        background-color: "#2A4661"
windows:
    personalization:
        background-color: "42 70 97"

Registry

You can import registry files by specifying a directory containing *.reg files. The directory will be recursively searched for *.reg files, and each of them will be imported.

Note that registry imports may fail if the changes require administrator privileges.

Here’s a dotbot configuration file example:

windows:
    registry:
        import: "registry-export-files"

Fonts

Starting with Windows 10 build 17704, users can install fonts without admin permissions. The fonts can be copied into "%LOCALAPPDATA%/Microsoft/Windows/Fonts", so this plugin replaces that directory with a symlink to a directory of your choosing.

Here’s a dotbot configuration file example:

windows:
  fonts:
    path: "my-standard-fonts/"

Development

To set up a development environment, clone the dotbot-windows plugin’s git repository. Then, follow these steps to create a virtual environment and run the unit tests locally:

# Create the virtual environment
$ python -m venv .venv

# Activate the virtual environment (Windows-only)
$ & .venv/Scripts/Activate.ps1

# Update pip and setuptools, and install wheel
(.venv) $ pip install -U pip setuptools wheel

# Install poetry, tox, and scriv
(.venv) $ pip install poetry tox scriv

# Install all dependencies
(.venv) $ poetry install

# Run the unit tests locally
(.venv) $ tox

Metadata

Release files for dotbot-windows 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotbot-windows 1.1.0
File Size Uploaded
dotbot_windows-1.1.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dotbot-windows 1.1.0
File Interpreter ABI Platform
dotbot_windows-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.4 kB

Release files / dotbot_windows-1.1.0.tar.gz

Download URL dotbot_windows-1.1.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3f275d9152c7b755cbdff1c127032e8579c6e4615aa264c0e364e2081f10a4bc
BLAKE2b-256 checksum
How to use checksums
a188524c6aacdba227579858b8ed2cb1404d1e772a72c7d97a6ff0cdbc5d67a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / dotbot_windows-1.1.0-py3-none-any.whl

Download URL dotbot_windows-1.1.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5bfe0e5e33c50977b66dcefca4188b659d7b657493e1c034ebf0357ec2f134a4
BLAKE2b-256 checksum
How to use checksums
db6f4392aad5ccd27f00d8efc2a960362a203cdc035b54115aaccefe17cb0081
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page