Skip to content
/ dotfiles Public

My personal setup: A minimal design with a botanical-inspired theme.

License

Notifications You must be signed in to change notification settings

ertgl/dotfiles

Repository files navigation

dotfiles

My personal OSX setup.

Terminal


The setup contains configurations for various tools and applications that I use mostly on a daily basis. These are the key features of the setup:

  • Run the automation for either the entire setup or specific tools.
  • Idempotent scripts. Suitable for both initial setup and updates.
  • Configurations are applied using symbolic links.
  • Unused configurations (broken symlinks) are removed automatically.
  • XDG Base Directory Specification for user directories.
  • Ephemeral/sensitive config/data can be enabled without being tracked by Git.
  • Homebrew Bundle for managing system-wide packages.
  • asdf for managing runtime versions.
  • Bash scripts for the entire setup automation.
  • fish shell for daily use.
  • Starship as the shell prompt, without icons.
  • tmux for terminal multiplexing.
  • Alacritty as the terminal emulator.
  • Native input like key bindings and motions for the terminal (e.g. CMD/Option + Arrow/Backspace/Delete).
  • Automatic dark/light mode for terminal applications.
  • GNU gls as the ls replacement, for directory listing with consistent speed.
  • Neovim as the code editor.
  • Visual Studio Code with Neovim integration as the IDE.
  • Zen Browser for a calmer experience on the web.
  • Jetbrains Mono as the font, with ligatures disabled.
  • Gruvbox based color scheme. I used to use monochrome color scheme like Apex UI for a long time, but I switched to a solarized one for my eyes. Although I miss the monochrome look a lot, blending it within a botanical theme, Gruvbox makes me feel comfortable with its natural colors.
  • yabai as the tiling window manager.
  • skhd for hotkey management.
  • JankyBorders for window borders.
  • SketchyBar for a minimal menu. In this setup it's mostly hidden and only appears when needed, with a key binding.
  • No spotlight due to some privacy concerns.
  • AltTab for a better application switching experience.
  • A wild, yet, elegant wallpaper from Unsplash.
  • Screenshots available in the assets/screenshots directory.

Scripts

The scripts directory contains all the scripts used during setup, organized based on the tools they correspond to. The execution process follows these steps:

  1. Loop through numbers from 0 to 100, this allows for easy prioritization of scripts.
  2. Iterate over the subdirectories within the scripts directory.
  3. Check if a subdirectory matches the current iteration number.
  4. If a matching subdirectory is found, check for the following scripts and execute them in order if they exist:
  • prepare.sh
  • pre-configure.sh
  • configure.sh
  • post-configure.sh
  1. After completing 100 iterations, iterate over the subdirectories again and check for the following scripts and execute them in order if they exist:
  • prepare.sh
  • pre-configure.sh
  • configure.sh
  • post-configure.sh

Running the setup

No prerequisites are required, except having an internet connection and cloning the repository. The setup will install the necessary tools and applications or update them if they are already installed and outdated.

The following command will run the entire setup.

bash entrypoint.sh

Once the setup is complete, a shortcut will be created for the command above to make it accessible from any working directory.

dotfiles_reload

Partial setup

The setup can be run partially for specific tools by passing the tool names as arguments to the entrypoint script. This is useful for updating specific tools or configurations.

bash entrypoint.sh fish tmux

The shortcut can also be used for partial setups.

dotfiles_reload fish tmux

Commands

These are some of the commands available after the setup:

  • brew_bundle: Install packages from the Brewfile.
  • brew_update: Update all installed packages, including the ones from the Brewfile.
  • dotfiles_reload: Reload the dotfiles setup.
  • pgrep_kill: Send a signal to a process by name.

Environment variables

After running the setup, many environment variables will be set. The full list can be observed in the config/fish/conf.d directory. The most relevant ones are:

  • DOTFILES: The path to the dotfiles repository.
  • PREFERS_COLOR_SCHEME: The user's preferred color scheme (dark/light). This is set based on the system appearance and gets updated automatically when the system appearance changes.

Resources