{"id":26306170,"url":"https://github.com/thenameiswiiwin/.dotfiles","last_synced_at":"2025-03-15T09:20:11.273Z","repository":{"id":49797340,"uuid":"447261359","full_name":"thenameiswiiwin/.dotfiles","owner":"thenameiswiiwin","description":"My personal dev environment, rewrite in Lua and Bash scripts. Minimal and I never have to leave the terminal.","archived":false,"fork":false,"pushed_at":"2025-03-11T22:32:38.000Z","size":28220,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T23:28:16.898Z","etag":null,"topics":["automation","bash-script","dev","dotfile","dotfiles-linux","dotfiles-macos","ghostty","lua","neovim","neovim-config","neovim-dotfiles","test-automation","tmux","tmux-conf"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thenameiswiiwin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-01-12T15:03:16.000Z","updated_at":"2025-03-11T22:32:42.000Z","dependencies_parsed_at":"2025-02-01T14:28:16.591Z","dependency_job_id":"c2515cc5-b4c8-406f-9a04-1c076d06848c","html_url":"https://github.com/thenameiswiiwin/.dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenameiswiiwin%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenameiswiiwin%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenameiswiiwin%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenameiswiiwin%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thenameiswiiwin","download_url":"https://codeload.github.com/thenameiswiiwin/.dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243707734,"owners_count":20334690,"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":["automation","bash-script","dev","dotfile","dotfiles-linux","dotfiles-macos","ghostty","lua","neovim","neovim-config","neovim-dotfiles","test-automation","tmux","tmux-conf"],"created_at":"2025-03-15T09:20:10.683Z","updated_at":"2025-03-15T09:20:11.265Z","avatar_url":"https://github.com/thenameiswiiwin.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Dev Environment Repo\n\nTerminal-based development, productivity, and workflow efficiency.\n\n## Table of contents\n\n- [Install](#install)\n- [Tools](#Tools)\n- [Scripts](#scripts)\n  - [Dev-Env Script](#dev-env)\n    - [Usage](#usage-for-dev-env-script)\n  - [Run Script](#run)\n    - [Usage](#usage-for-run-script)\n  - [Init Script](#init)\n    - [Usage](#usage-for-init-script)\n  - [Tmux-Sessionizer Script](#tmux-sessionizer)\n    - [Usage](#usage-for-tmux-sessionizer)\n\n## Install\n\n**Note**: This install as if you have a new machine, and need everything setup.\nThis script automates the setup process for your development environment.\n\n```bash\nexport DEV_ENV=$HOME/dev\ncurl -fsSL https://raw.githubusercontent.com/thenameiswiiwin/.dotfiles/main/resources/setup | bash\n```\n\nIf you prefer downloading and running it manually:\n\n```bash\nexport DEV_ENV=$HOME/dev\ncurl -fsSL https://raw.githubusercontent.com/thenameiswiiwin/.dotfiles/main/resources/setup -o setup\n./setup\n```\n\n## Tools\n\n- [**Neovim**](https://neovim.io/) – A highly extensible, fast, and modern text editor that improves upon Vim with Lua-based configurations and built-in LSP support.\n\n- [**Tmux**](https://github.com/tmux/tmux) – A terminal multiplexer that allows managing multiple terminal sessions within a single window, supporting session persistence and efficient workflows.\n\n- [**Ghossty**](https://ghostty.org/) – A lightweight and customizable terminal setup that integrates with tmux, Neovim, and other CLI tools to enhance productivity.\n\n- [**Lazygit**](https://github.com/jesseduffield/lazygit) – A simple and fast terminal UI for Git that provides an intuitive way to manage repositories, commits, and branches.\n\n- macOS\n\n  - [**Rectangle**](https://rectangleapp.com/) – A macOS window management tool that provides easy keyboard shortcuts for resizing and snapping windows for improved productivity.\n\n  - [**Homebrew**](https://brew.sh/) – A package manager for macOS that simplifies software installation, dependency management, and system updates.\n\n- Linux\n\n  - [**i3 Window Manager**](https://i3wm.org/) – A lightweight tiling window manager for Linux that provides a highly configurable, keyboard-driven approach to workspace organization.\n\n## Scripts\n\n### Dev-Env\n\nThis script automates the setup of a development environment by copying configuration files and scripts to their appropriate locations.\n\n- Ensures Required Environment Variables\n\n  - Checks if `$DEV_ENV` (config directory) is set.\n  - Uses `$XDG_CONFIG_HOME` (default: `~/.config`) for storing configurations.\n\n- Supports Dry Run Mode (`--dry`)\n\n  - Run the script with `--dry` to preview changes without applying them.\n\n- Copies Configurations \u0026 Scripts\n\n  - Updates `~/.config` and `~/.local` with necessary files.\n  - Copies `.zshrc`, `.zsh_profile`, `.xprofile`, `tmux-sessionizer`, and other essential scripts.\n\n- Cleans Up Old Files\n  - Removes existing configurations before copying new ones.\n\n#### Usage for dev-env script\n\nExecutes the full development setup.\n\n```bash\n./dev-env\n```\n\nRun in dry-run mode to preview changes:\n\n```bash\n./dev-env --dry\n```\n\n---\n\n### Run\n\nThis script automates the execution of setup scripts located in the `runs` directory, applying optional filtering and a **dry-run mode** for testing changes before applying them.\n\n- Ensures `$DEV_ENV` is Set\n\n  - Exits if the required `DEV_ENV` environment variable is missing.\n\n- Finds and Runs Executable Scripts\n\n  - Searches for scripts inside the `runs/` directory and executes them.\n  - Supports both macOS (`Darwin`) and Linux.\n\n- Supports Filtering by Name\n\n  - Accepts an optional argument to only run scripts matching a keyword.\n\n- Dry Run Mode (`--dry`)\n  - Allows previewing changes without executing scripts.\n\n#### Usage for run script\n\nExecute all available scripts inside the `runs/` directory.\n\n```bash\n./run\n```\n\nRun with a keyword filter (only executes script that match the provided keyword).\n\n```bash\n./run {keyword}\n```\n\nRun in dry-run mode to preview changes:\n\n```bash\n./run --dry\n```\n\n---\n\n### Init\n\nThis script initializes and updates Git submodules, ensuring that dependencies are correctly checked out on their respective branches.\n\n- Initializes and Updates Git Submodules\n\n  - Runs `git submodule init` to prepare submodules.\n  - Runs `git submodule update` to fetch and sync submodules.\n\n- Checks Out the Branch for Submodules\n  - Ensures `env/.config/nvim` is on the `main` branch.\n  - Ensures `tmux-sessionizer` is on the `master` branch.\n\n#### Usage for init script\n\n```bash\n./init\n```\n\n---\n\n### Tmux-Sessionizer\n\nThis script automates the creation, switching, and hydration of **tmux** sessions based on directories. It allows users to quickly jump between development environments using **fzf** for selection.\n\n- Selects a directory to work in\n\n  - If a directory is passed as an argument, it uses that.\n  - Otherwise, it opens **fzf** (a fuzzy finder) to let you pick a directory from:\n    - `~/`\n    - `~/personal`\n    - `~/dev/env/.config`\n\n- Manages tmux sessions\n\n  - If tmux is not running, it creates a new session.\n  - If tmux is running:\n    - It attaches to an existing session if found.\n    - If no session exists, it creates one and switches to it.\n\n- Hydrates the session\n  - Runs `.tmux-sessionizer` (if present) in either the selected directory or `~/.tmux-sessionizer`, allowing project-specific configurations.\n\n#### Usage for tmux-sessionizer\n\nRun the Script Manually\n\n```bash\n./tmux-sessionizer.sh\n```\n\nOr\n\nKeyboard Shortcut (**Ctrl + f**)\n\nKey binding setup is in `env/.zsh_profile` -\u003e (`bindkey -s ^f \"tmux-sessionizer\\n\"`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenameiswiiwin%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthenameiswiiwin%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenameiswiiwin%2F.dotfiles/lists"}