{"id":25018028,"url":"https://github.com/ertgl/dotfiles","last_synced_at":"2025-04-26T08:33:39.100Z","repository":{"id":275383846,"uuid":"790968425","full_name":"ertgl/dotfiles","owner":"ertgl","description":"My setup: A minimal design with a botanical-inspired theme.","archived":false,"fork":false,"pushed_at":"2025-04-25T13:46:23.000Z","size":35598,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-25T22:30:39.486Z","etag":null,"topics":["alacritty","asdf","bash","brewfile","dotfiles","fish","gruvbox","neovim","tmux"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ertgl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-23T21:16:13.000Z","updated_at":"2025-04-25T13:46:27.000Z","dependencies_parsed_at":"2025-04-25T14:14:35.776Z","dependency_job_id":"7afe9a6c-3467-430d-835d-32fc71d873e6","html_url":"https://github.com/ertgl/dotfiles","commit_stats":null,"previous_names":["ertgl/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertgl%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertgl%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertgl%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertgl%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ertgl","download_url":"https://codeload.github.com/ertgl/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250923207,"owners_count":21508484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alacritty","asdf","bash","brewfile","dotfiles","fish","gruvbox","neovim","tmux"],"created_at":"2025-02-05T10:19:36.897Z","updated_at":"2025-04-26T08:33:39.054Z","avatar_url":"https://github.com/ertgl.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n\nThis repository contains my personal configurations for various tools and\napplications.\n\n___\n\n![Terminal](./screenshots/dotfiles/01-showcase.png)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cb\u003e\n    \u003csmall\u003e\n      Rocks, soils, leaves, flowers, and the sky.\n    \u003c/small\u003e\n  \u003c/b\u003e\n\u003c/div\u003e\n\n___\n\n## Overview\n\n- **Single command setup**: Works on fresh installs and subsequent updates.\n- **[Bash-powered](https://www.gnu.org/software/bash/) automation**: No\n  dependencies needed, even on the first run.\n- **[Idempotent](https://en.wikipedia.org/wiki/Idempotence) execution**: The\n  only side effect is installing new updates.\n- **Centralized configuration**:\n  Creates [symbolic links](https://en.wikipedia.org/wiki/Symbolic_link)\n  targeting the repository.\n- **Automatic cleanup**: Removes broken symlinks and orphaned directories.\n- **Manual intervention**: Ephemeral or sensitive files are not touched.\n- **[XDG](https://specifications.freedesktop.org/basedir-spec/latest/)\n  compliant**: Organized and predictable file locations, where possible.\n- **GOPATH**: [Go convention](https://go.dev/wiki/GOPATH) for all the projects.\n  Improves discoverability.\n- **[Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle)**:\n  System-wide package management.\n- **[asdf](https://asdf-vm.com/)**: Multiple tool and runtime version\n  management.\n- **[fish](https://fishshell.com/)**: The default shell used for everyday\n  tasks, outside the setup process.\n- **[Starship](https://starship.rs/)**: Informative shell prompt. No icons for\n  better readability.\n- **[tmux](https://github.com/tmux/tmux/wiki)**: Terminal multiplexing, beyond\n  the tabs and panes.\n- **[Alacritty](https://alacritty.org/)**: Lightweight terminal emulator.\n- **Natural key bindings in terminal**: Smooth motions, like the native fields.\n- **Automatic terminal colors**: Dark or light, follows the system setting.\n- **[Neovim](https://neovim.io/)**: Fast and extensible code editor with\n  [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) and\n  [LSP](https://en.wikipedia.org/wiki/Language_Server_Protocol) support.\n- **[Visual Studio Code](https://code.visualstudio.com/)**: Occasionally used\n  for some tasks.\n- **[Zen Browser](https://zen-browser.app/)**: Distraction-free web,\n  auto-hiding sidebar, vertical tabs.\n- **[JetBrains Mono](https://www.jetbrains.com/lp/mono/)**: Font for coding. No\n  ligatures for better readability.\n- **[Gruvbox](https://github.com/morhetz/gruvbox)-inspired**: The theme for\n  welcoming the sunrise with less eye pain.\n- **[yabai](https://github.com/koekeishiya/yabai)**: Window management.\n  Automatic fullscreening, resizing, and more.\n- **[skhd](https://github.com/koekeishiya/skhd)**: Scriptable hotkey\n  management.\n- **[JankyBorders](https://github.com/FelixKratz/JankyBorders)**: Custom window\n  borders. For boosting the botanic feel.\n- **[SketchyBar](https://github.com/FelixKratz/SketchyBar)**: Customizable\n  status bar. Mostly hidden, bound to a hotkey.\n- **[AltTab](https://alt-tab-macos.netlify.app/)**: Application switcher,\n  window listing, vertical layout.\n- **Background photo from\n  [Unsplash](https://unsplash.com/photos/14baodaJBb8?utm_content=creditCopyText\u0026utm_medium=referral\u0026utm_source=unsplash)**:\n  Both elegant and wild, nature's own art.\n\nAdditional screenshots are in the [`screenshots`](./screenshots) directory.\n\n## Configuration\n\nThe configuration files are organized by tool names and are located in the\n[`config`](config) directory.\n\n## Scripts\n\nThe setup process is automated with the help of Bash scripts. These scripts\nare located in the [`scripts`](scripts) directory, and they are organized by\ncorresponding tools' names.\n\nFor reducing the complexity and increasing the maintainability, the scripts\nare detected automatically and executed in a structured manner.\n\nThe scripts are divided into four categories, each of which is optional, and\nmust be executed in the respective order:\n\n1. `prepare.sh`: Prepares the environment for the tool.\n2. `pre-configure.sh`: Executes preliminary configuration steps.\n3. `configure.sh`: Applies the main configurations.\n4. `post-configure.sh`: Finalizes the setup.\n\nThe automatic detection and execution of the scripts are done with the\nfollowing logic:\n\n\u003col\u003e\n  \u003cli\u003e\n    \u003cb\u003ePrioritized Execution\u003c/b\u003e:\n    \u003col\u003e\n      \u003cli\u003e\n        For each number between 0 and 100, check if a corresponding\n        subdirectory exists within each tool's directory.\n      \u003c/li\u003e\n      \u003cli\u003e\n        If found, execute the scripts inside that directory.\n      \u003c/li\u003e\n      \u003cli\u003e\n        If no matching subdirectory exists, skip to the next tool.\n      \u003c/li\u003e\n    \u003c/ol\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003cb\u003eGeneral Execution\u003c/b\u003e:\n    \u003col\u003e\n      \u003cli\u003e\n        After the prioritized pass, execute scripts directly present in each\n        tool's directory.\n      \u003c/li\u003e\n    \u003c/ol\u003e\n  \u003c/li\u003e\n\u003c/ol\u003e\n\n## Running the setup\n\nThe setup can be run with the following command, from the root directory of the\nrepository:\n\n```bash\nbash entrypoint.sh\n```\n\nAfter setup, a shortcut can be used as well to update tools or apply new\nconfigurations (create symlinks), by running the following\ncommand, from any working directory:\n\n```bash\ndotfiles_reload\n```\n\n### Partial setup\n\nRunning the setup for specific tools is also possible. This can be done by\nproviding the tool names as arguments to the script:\n\n```bash\nbash entrypoint.sh fish tmux\n```\n\nSimilarly, the shortcut also accepts tool names as arguments:\n\n```bash\ndotfiles_reload lsp nvim\n```\n\n## Commands\n\nAfter the setup, several commands are available for the user. Some of the most\nrelevant ones are:\n\n- `brew_bundle`: Install packages listed in the [`Brewfile`](./Brewfile).\n- `brew_update`: Update all installed packages.\n- `dotfiles_edit`: Open the dotfiles repository in the code editor.\n- `dotfiles_reload`: Reload configurations, update tools, etc.\n- `setenv_prefers_color_scheme`: Set terminal color scheme to dark or light.\n\n## Environment variables\n\nAfter the setup, several environment variables are set for the user. Some of\nthe most relevant ones are:\n\n- `DOTFILES_DIR`: Path to the dotfiles repository.\n- `PREFERS_COLOR_SCHEME`: Preferred color scheme (dark or light).\n\n## Resources\n\n- [Alacritty integration with Tmux](https://arslan.io/2018/02/05/gpu-accelerated-terminal-alacritty)\n- [ANSI escape code - Wikipedia](https://en.wikipedia.org/wiki/ANSI_escape_code)\n- [Automatic dark mode for terminal applications](https://arslan.io/2021/02/15/automatic-dark-mode-for-terminal-applications)\n- [Box-drawing characters - Wikipedia](https://en.wikipedia.org/wiki/Box-drawing_characters)\n\n## License\n\nThe files in the [`third_party`](third_party) directory are licensed under\ntheir respective licenses.\n\nThe rest of the repository is licensed under the\n[MIT License](https://opensource.org/license/mit),\nsee the [`LICENSE`](./LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fertgl%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fertgl%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fertgl%2Fdotfiles/lists"}