Skip to content
/ dotfiles Public

My 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

This repository contains my personal configurations for various tools and applications I use daily.


Terminal

Rocks, soils, leaves, flowers, and the sky.

Overview

  • Single command setup: Works on fresh installs and subsequent updates.
  • Bash-powered automation: No dependencies needed, even on the first run.
  • Idempotent execution: The only side effect is installing new updates.
  • Centralized configuration: Creates symbolic links targeting the repository.
  • Automatic cleanup: Removes broken symlinks and orphaned directories.
  • Manual intervention: Ephemeral or sensitive files are not touched.
  • XDG compliant: Organized and predictable file locations, where possible.
  • GOPATH: Go convention for all the projects. Improves discoverability.
  • Homebrew Bundle: System-wide package management.
  • asdf: Multiple tool and runtime version management.
  • fish: The default shell used for everyday tasks, outside the setup process.
  • Starship: Informative shell prompt. No icons for better readability.
  • tmux: Terminal multiplexing, beyond the tabs and panes.
  • Alacritty: Lightweight terminal emulator.
  • Natural key bindings in terminal: Smooth motions, like the native fields.
  • Automatic terminal colors: Dark or light, follows the system setting.
  • Neovim: Fast and extensible code editor with Tree-sitter and LSP support.
  • Visual Studio Code: Occasionally used for some tasks.
  • Zen Browser: Distraction-free web, auto-hiding sidebar, vertical tabs.
  • JetBrains Mono: Font for coding. No ligatures for better readability.
  • Gruvbox-inspired: The theme for welcoming the sunrise with less eye pain.
  • yabai: Window management. Automatic fullscreening, resizing, and more.
  • skhd: Scriptable hotkey management.
  • JankyBorders: Custom window borders. For boosting the botanic feel.
  • SketchyBar: Customizable status bar. Mostly hidden, bound to a hotkey.
  • AltTab: Application switcher, window listing, vertical layout.
  • Background photo from Unsplash: Both elegant and wild, nature's own art.

Additional screenshots are in the screenshots directory.

Configuration

The configuration files are organized by tool names and are located in the config directory.

Scripts

The setup process is automated with the help of Bash scripts. These scripts are located in the scripts directory, and they are organized by corresponding tools' names.

For reducing the complexity and increasing the maintainability, the scripts are detected automatically and executed in a structured manner.

The scripts are divided into four categories, each of which is optional, and must be executed in the respective order:

  1. prepare.sh: Prepares the environment for the tool.
  2. pre-configure.sh: Executes preliminary configuration steps.
  3. configure.sh: Applies the main configurations.
  4. post-configure.sh: Finalizes the setup.

The automatic detection and execution of the scripts are done with the following logic:

  1. Prioritized Execution:
    1. For each number between 0 and 100, check if a corresponding subdirectory exists within each tool's directory.
    2. If found, execute the scripts inside that directory.
    3. If no matching subdirectory exists, skip to the next tool.
  2. General Execution:
    1. After the prioritized pass, execute scripts directly present in each tool's directory.

Running the setup

The setup can be run with the following command, from the root directory of the repository:

bash entrypoint.sh

After setup, a shortcut can be used as well to update tools or apply new configurations (create symlinks), by running the following command, from any working directory:

dotfiles_reload

Partial setup

Running the setup for specific tools is also possible. This can be done by providing the tool names as arguments to the script:

bash entrypoint.sh fish tmux

Similarly, the shortcut also accepts tool names as arguments:

dotfiles_reload lsp nvim

Commands

After the setup, several commands are available for the user. Some of the most relevant ones are:

  • brew_bundle: Install packages listed in the Brewfile.
  • brew_update: Update all installed packages.
  • dotfiles_edit: Open the dotfiles repository in the code editor.
  • dotfiles_reload: Reload configurations, update tools, etc.
  • setenv_prefers_color_scheme: Set terminal color scheme to dark or light.

Environment variables

After the setup, several environment variables are set for the user. Some of the most relevant ones are:

  • DOTFILES_DIR: Path to the dotfiles repository.
  • PREFERS_COLOR_SCHEME: Preferred color scheme (dark or light).

Resources

License

The files in the third_party directory are licensed under their respective licenses.

The rest of the repository is licensed under the MIT License, see the LICENSE file for more information.