bevry / dorothy

πŸ§™πŸ»β€β™€οΈ Bring your dotfile commands and configuration to any shell. Sensible defaults and hundreds of commands preloaded. Supports Bash, Zsh, Fish, Nu, Xonsh, Elvish, Dash, KornShell, macOS, Linux, Windows.
Other
277 stars 21 forks source link
bash cli dotfiles dotfiles-automation dotfiles-linux dotfiles-macos dotfiles-manager fish fish-shell linux macos nushell productivity shell shell-script terminal ubuntu unix wsl-ubuntu zsh

Dorothy

Status of the GitHub Workflow: dorothy-workflow
GitHub Sponsors donate button ThanksDev donate button Liberapay donate button Buy Me A Coffee donate button Open Collective donate button crypto donate button PayPal donate button
Discord server badge Twitch community badge

Dorothy is a dotfile ecosystem featuring:

Introduction

Watch the 2023 November Presentation to see what Dorothy can do!

Screenshot of the 2022 April Presentation

Setup

Supported Platforms

Operating System Architecture Support
🍏 macOS 🍏 Apple Silicon (ARM64) πŸ‘Œ Daily Driver
🍏 macOS 🍏 Apple on Intel (x86_64) πŸ‘Œ Daily Driver, πŸ€– CI
🍏 macOS 🍏 Apple Silicon with HOMEBREW_ARCH="x86_64" πŸŒ— Monthly Driver
πŸͺŸ Windows 10/11 WSL2 Ubuntu πŸ‘” Intel/AMD (x86_64) πŸ‘Œ Daily Driver
πŸ“ Raspberry Pi OS with Desktop πŸ“ Raspberry Pi 4/400/5 (ARM64) πŸ‘Œ Daily Driver
πŸ“ Raspberry Pi OS Lite πŸ“ Raspberry Pi 4/400/5 (ARM64) πŸŒ— Monthly Driver
⭕️ Ubuntu Desktop πŸ“ Raspberry Pi 4/400/5 (ARM64) πŸ‘Œ Daily Driver
⭕️ Ubuntu Desktop πŸ‘” Intel/AMD (x86_64) πŸ‘Œ Daily Driver
⭕️ Ubuntu Server πŸ“ Raspberry Pi 4/400/5 (ARM64) πŸ‘Œ Daily Driver
⭕️ Ubuntu Server πŸ‘” Intel/AMD (x86_64) πŸ‘Œ Daily Driver, πŸ€– CI
⭕️ Ubuntu Server 5️⃣ StarFive’s VisionFive (RISC-V) πŸŒ— Monthly Driver
β–² Manjaro / Arch πŸ‘” Intel/AMD (x86_64) πŸ‘Œ Daily Driver, πŸ€– CI
∞ Fedora Workstation πŸ‘” Intel/AMD (x84_64) πŸŒ— Monthly Driver, πŸ€– CI
🦎 OpenSUSE Leap & Tumbleweed πŸ‘” Intel/AMD (x84_64) πŸŒ— Monthly Driver, πŸ€– CI
β›° Alpine πŸ‘” Intel/AMD (x84_64) πŸŒ— Monthly Driver, πŸ€– CI
β›° Alpine 🍏 Apple Silicon (ARM64) πŸŒ— Monthly Driver
πŸ‰ Kali πŸ‘” Intel/AMD (x84_64) πŸŒ— Monthly Driver, πŸ€– CI

Other platforms may or may not be supported. Mageia, Nix, Gentoo are unsupported.

Prerequisites

macOS:

xcode-select --install

Windows 10/11:

# [Install WSL.](https://learn.microsoft.com/en-au/windows/wsl/install)
wsl --install
wsl --set-default-version 2
# note that [wsl --version] does not report WSL2, you need to do [wsl -l -v]

Ubuntu / Debian / Kali:

sudo apt-get update
sudo apt-get install bash curl

Fedora:

dnf check-update
dnf --refresh --best install bash curl

OpenSUSE / SUSE:

zypper --gpg-auto-import-keys refresh
zypper install bash curl

Alpine:

doas apk update
doas apk add bash curl grep

Manjaro:

pamac install bash curl

Arch:

pacman-key --init
pacman --refresh --sync --needed bash curl

Void:

xbps-install --sync --update xbps
xbps-install --sync bash curl

Try

You can trial Dorothy commands without configuring your shell.

To run a specific command in/from the Dorothy environment, enter the following, swapping out everything after the double-dash (--) with whatever command to run:

bash -ic "$(curl -fsSL https://dorothy.bevry.me/run)" -- echo-verbose -- a b c
# if your shell doesn't recognize any of the above syntax, run `bash -i` then try again

To run multiple commands in/from a Dorothy-configured REPL, enter the following line by line:

bash -ic "$(curl -fsSL https://dorothy.bevry.me/repl)"
# if your shell doesn't recognize any of the above syntax, run `bash -i` then try again

# now you can run whatever and how many commands as you'd like, such as:
echo-verbose -- a b c
echo-style --success=awesome

# once you are done, exit the trial environment
exit

Install

To install Dorothy enter the following in your favorite terminal application:

bash -ic "$(curl -fsSL https://dorothy.bevry.me/install)"
# if your shell doesn't recognize any of the above syntax, run `bash -i` then try again

During installation, Dorothy will ask you to create a repository to store your user configuration, such as a dotfiles repository. If you already have a dotfiles repository, you can use that, or make another.

Verify the installation worked by selecting a theme for Dorothy by running:

# you must open a new terminal instance first
dorothy theme
# then open a new terminal

To select your login shell, run setup-shell.

Troubleshooting

If packages are failing to install, go back to the "Prerequisites" section.

If your shell doesn't recognize any of the Dorothy commands (you get a command not found error, or an undefined/unbound variable error), then it could be that:

If you see unrecognised symbols, you probably require fonts. Once Dorothy is loaded, run setup-util-noto-emoji which installed Noto Emoji, a font for enabling emojis inside your terminal. For rendering glyphs, run setup-util-nerd-fonts which will prompt you for which Nerd Font to install. You may need to update your terminal preferences the installed fonts.

Overview

Dorothy Core

Dorothy installs itself to $DOROTHY, which defaults to the XDG location of ~/.local/share/dorothy, and consists of the following:

For each shell that you configured during the Dorothy installation (can be reconfigured via the dorothy install command), the configured shell performs the following steps when you open a new shell instance via your terminal:

  1. The shell loads Dorothy's initialization script:

  2. The initialization script will:

    1. Ensure the DOROTHY environment variable is set to the location of the Dorothy installation.

    2. If a login shell, it loads our login script sources/login.(bash|dash|elv|fish|ksh|nu|xsh|zsh), which will:

      1. Apply any configuration changes necessary for that login shell
      2. Load our environment script sources/environment.(bash|dash|elv|fish|ksh|nu|xsh|zsh), which will:

        1. Invoke commands/setup-environment-commands which determines and applies all necessary environment configuration changes to the shell. It loads your user/config(.local)/environment.bash configuration script for your own custom environment configuration that will be applied to all your login shells.
    3. If a login and interactive shell, it loads our interactive script sources/interactive.(bash|dash|elv|fish|ksh|nu|xsh|zsh), which will:

      1. Load your own user/config(.local)/interactive.(sh|bash|dash|elv|fish|ksh|nu|xsh|zsh) configuration script for your own interactive login shell configuration.
        • Elvish will only load interactive.elv if it exists.
        • Fish will load interactive.fish if it exists, otherwise it will load interactive.sh.
        • Nu will only load interactive.nu and it must exist.
        • Xonsh will only load interactive.xsh if it exists.
        • POSIX shells (Bash, Zsh, Dash, KSH, etc) will load their interactive.(bash|zsh|...etc) file if it exists, otherwise they will load interactive.sh if exists.
      2. Load any common alias and function utilities.
      3. Load our theme configuration.
      4. Load our ssh configuration.
      5. Load our autocomplete configuration.

This is the foundation that enables Dorothy's hundreds of commands to work across hundreds of machines, across dozens of operating system and shell combinations, seamlessly.

Dorothy User Configuration

Your user configuration goes to the XDG location of ~/.local/config/dorothy which Dorothy symlinks to ~/.local/share/dorothy/user, your user configuration consists of the following:

The order of preference within Dorothy is (commands|config).local first, then (commands|config), then Dorothy's own (commands|config) then everything else.

You can find the various configuration files that are available to you by browsing Dorothy's default config directory.

Showcase

Use these sources to find inspiration for your own user commands and configuration.

After installing Dorothy, there will now a plethora of commands available to you. You can invoke any stable command with --help to learn more about it. The most prominent commands are noted below.

Stable commands:

Beta commands:

macOS

Stable commands:

Beta commands:

media

Beta commands:

Community

Join the Bevry Software community to stay up-to-date on the latest Dorothy developments and to get in touch with the rest of the community.

Backers

Code

Discover how to contribute via the CONTRIBUTING.md file.

Authors

Maintainers

Contributors

Finances

GitHub Sponsors donate button ThanksDev donate button Liberapay donate button Buy Me A Coffee donate button Open Collective donate button crypto donate button PayPal donate button

Sponsors

Donors

License

Unless stated otherwise all works are:

and licensed under: