diff --git a/bootstrap/components/mocha-port.bash b/bootstrap/components/mocha-port.bash index 4a15ff4..9b89a03 100644 --- a/bootstrap/components/mocha-port.bash +++ b/bootstrap/components/mocha-port.bash @@ -22,154 +22,154 @@ mkdir -p "${HOME}/.local/share/fcitx5/themes" # Function for downloading files download_file() { - local url="$1" - local output_path="$2" - local output_dir + local url="$1" + local output_path="$2" + local output_dir - # Extract directory from output path - output_dir=$(dirname "$output_path") + # Extract directory from output path + output_dir=$(dirname "$output_path") - # Create directory if it doesn't exist - if [ ! -d "$output_dir" ]; then - mkdir -p "$output_dir" - fi + # Create directory if it doesn't exist + if [ ! -d "$output_dir" ]; then + mkdir -p "$output_dir" + fi - # Print status message - echo "Downloading: $url" - echo " to: $output_path" + # Print status message + echo "Downloading: $url" + echo " to: $output_path" - # Download with curl (using -L to follow redirects) - if ! curl -L -s --fail "$url" -o "$output_path"; then - echo "Error: Failed to download $url" >&2 - return 1 - fi + # Download with curl (using -L to follow redirects) + if ! curl -L -s --fail "$url" -o "$output_path"; then + echo "Error: Failed to download $url" >&2 + return 1 + fi - # Verify file was downloaded - if [ ! -f "$output_path" ]; then - echo "Error: File was not created at $output_path" >&2 - return 1 - fi + # Verify file was downloaded + if [ ! -f "$output_path" ]; then + echo "Error: File was not created at $output_path" >&2 + return 1 + fi - echo "Download successful." - return 0 + echo "Download successful." + return 0 } # Function to check if command exists command_exists() { - command -v "$1" >/dev/null 2>&1 + command -v "$1" >/dev/null 2>&1 } # Install Bat themes if command_exists bat; then - BAT_CONFIG_DIR=$(bat --config-dir 2>/dev/null || echo "${HOME}/.config/bat") - mkdir -p "${BAT_CONFIG_DIR}/themes" + BAT_CONFIG_DIR=$(bat --config-dir 2>/dev/null || echo "${HOME}/.config/bat") + mkdir -p "${BAT_CONFIG_DIR}/themes" - echo "Installing Bat themes..." - THEMES=("Latte" "Frappe" "Macchiato" "Mocha") + echo "Installing Bat themes..." + THEMES=("Latte" "Frappe" "Macchiato" "Mocha") - for theme in "${THEMES[@]}"; do - download_file "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20${theme}.tmTheme" \ - "${BAT_CONFIG_DIR}/themes/Catppuccin ${theme}.tmTheme" - done + for theme in "${THEMES[@]}"; do + download_file "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20${theme}.tmTheme" \ + "${BAT_CONFIG_DIR}/themes/Catppuccin ${theme}.tmTheme" + done - echo "Rebuilding Bat cache..." - bat cache --build || echo "WARNING: Failed to rebuild Bat cache" >&2 + echo "Rebuilding Bat cache..." + bat cache --build || echo "WARNING: Failed to rebuild Bat cache" >&2 else - echo "Bat not found, skipping Bat themes installation" >&2 + echo "Bat not found, skipping Bat themes installation" >&2 fi # Install Tmux plugin if command_exists tmux; then - echo "Installing Tmux plugin..." + echo "Installing Tmux plugin..." - TMUX_PLUGIN_DIR="${HOME}/.config/tmux/plugins/catppuccin" - rm -rf "${TMUX_PLUGIN_DIR}" - mkdir -p "${TMUX_PLUGIN_DIR}" + TMUX_PLUGIN_DIR="${HOME}/.config/tmux/plugins/catppuccin" + rm -rf "${TMUX_PLUGIN_DIR}" + mkdir -p "${TMUX_PLUGIN_DIR}" - if command_exists git; then - if ! git clone -b v2.1.2 --depth=1 https://github.com/catppuccin/tmux.git "${TMUX_PLUGIN_DIR}/tmux" 2>/dev/null; then - echo "WARNING: Failed to clone Tmux plugin repository" >&2 - fi - else - echo "Git not found, skipping Tmux plugin installation" >&2 + if command_exists git; then + if ! git clone -b v2.1.2 --depth=1 https://github.com/catppuccin/tmux.git "${TMUX_PLUGIN_DIR}/tmux" 2>/dev/null; then + echo "WARNING: Failed to clone Tmux plugin repository" >&2 fi + else + echo "Git not found, skipping Tmux plugin installation" >&2 + fi else - echo "Tmux not found, skipping Tmux plugin installation" >&2 + echo "Tmux not found, skipping Tmux plugin installation" >&2 fi # Install Yazi theme if command_exists yazi; then - echo "Installing Yazi theme..." - download_file "https://raw.githubusercontent.com/catppuccin/yazi/main/themes/mocha/catppuccin-mocha-lavender.toml" \ - "${HOME}/.config/yazi/theme.toml" + echo "Installing Yazi theme..." + download_file "https://raw.githubusercontent.com/catppuccin/yazi/main/themes/mocha/catppuccin-mocha-lavender.toml" \ + "${HOME}/.config/yazi/theme.toml" else - echo "Yazi not found, skipping Yazi theme installation" >&2 + echo "Yazi not found, skipping Yazi theme installation" >&2 fi # Install BTopa themes if command_exists btop; then - echo "Installing BTopa themes..." - download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_mocha.theme" \ - "${HOME}/.config/btop/themes/catppuccin_mocha.theme" - download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_latte.theme" \ - "${HOME}/.config/btop/themes/catppuccin_latte.theme" + echo "Installing BTopa themes..." + download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_mocha.theme" \ + "${HOME}/.config/btop/themes/catppuccin_mocha.theme" + download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_latte.theme" \ + "${HOME}/.config/btop/themes/catppuccin_latte.theme" else - echo "BTopa not found, skipping BTopa themes installation" >&2 + echo "BTopa not found, skipping BTopa themes installation" >&2 fi # Install Delta config echo "Installing Delta config..." download_file "https://raw.githubusercontent.com/catppuccin/delta/main/catppuccin.gitconfig" \ - "${HOME}/.config/git/catppuccin-delta.gitconfig" + "${HOME}/.config/git/catppuccin-delta.gitconfig" # Configure FZF if command_exists fzf; then - echo "Configuring FZF..." + echo "Configuring FZF..." - # Check shell type to determine how to set environment variables - if [ -n "${FISH_VERSION:-}" ] || command_exists fish; then - # For Fish shell - fish -c 'set -U FZF_DEFAULT_OPTS "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi"' || - echo "WARNING: Failed to set FZF options for Fish shell" >&2 - else - # For Bash/Zsh - add to both .bashrc and .zshrc if they exist - FZF_CONFIG="export FZF_DEFAULT_OPTS=\"--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi\"" + # Check shell type to determine how to set environment variables + if [ -n "${FISH_VERSION:-}" ] || command_exists fish; then + # For Fish shell + fish -c 'set -U FZF_DEFAULT_OPTS "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi"' \ + || echo "WARNING: Failed to set FZF options for Fish shell" >&2 + else + # For Bash/Zsh - add to both .bashrc and .zshrc if they exist + FZF_CONFIG="export FZF_DEFAULT_OPTS=\"--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi\"" - # Add to .bashrc if it exists - if [ -f "${HOME}/.bashrc" ]; then - if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.bashrc"; then - echo "${FZF_CONFIG}" >>"${HOME}/.bashrc" - echo "Added FZF configuration to .bashrc" - fi - fi - - # Add to .zshrc if it exists - if [ -f "${HOME}/.zshrc" ]; then - if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.zshrc"; then - echo "${FZF_CONFIG}" >>"${HOME}/.zshrc" - echo "Added FZF configuration to .zshrc" - fi - fi + # Add to .bashrc if it exists + if [ -f "${HOME}/.bashrc" ]; then + if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.bashrc"; then + echo "${FZF_CONFIG}" >>"${HOME}/.bashrc" + echo "Added FZF configuration to .bashrc" + fi fi + + # Add to .zshrc if it exists + if [ -f "${HOME}/.zshrc" ]; then + if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.zshrc"; then + echo "${FZF_CONFIG}" >>"${HOME}/.zshrc" + echo "Added FZF configuration to .zshrc" + fi + fi + fi else - echo "FZF not found, skipping FZF configuration" >&2 + echo "FZF not found, skipping FZF configuration" >&2 fi # Install LSD themes if command_exists lsd; then - echo "Installing LSD themes..." - download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-mocha/colors.yaml" \ - "${HOME}/.config/lsd/colors.yaml" - download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-latte/colors.yaml" \ - "${HOME}/.config/lsd/colors-light.yaml" + echo "Installing LSD themes..." + download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-mocha/colors.yaml" \ + "${HOME}/.config/lsd/colors.yaml" + download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-latte/colors.yaml" \ + "${HOME}/.config/lsd/colors-light.yaml" else - echo "LSD not found, skipping LSD themes installation" >&2 + echo "LSD not found, skipping LSD themes installation" >&2 fi # Install Midnight Commander skin echo "Installing Midnight Commander skin..." download_file "https://raw.githubusercontent.com/catppuccin/mc/main/catppuccin.ini" \ - "${HOME}/.local/share/mc/skins/catppuccin.ini" + "${HOME}/.local/share/mc/skins/catppuccin.ini" # Print MC configuration hint echo "Note: To use the Midnight Commander theme:" @@ -179,51 +179,51 @@ echo " - Save setup through F9 > Options > Save setup" # Install PowerShell module if command_exists pwsh; then - echo "Installing PowerShell module..." - PS_MODULE_PATH=$(pwsh -C 'Write-Output $Env:PSModulePath.split(":")[0]' 2>/dev/null) + echo "Installing PowerShell module..." + PS_MODULE_PATH=$(pwsh -C 'Write-Output $Env:PSModulePath.split(":")[0]' 2>/dev/null) - if [ -n "${PS_MODULE_PATH}" ]; then - if command_exists git; then - if ! git clone --depth=1 https://github.com/catppuccin/powershell.git "${PS_MODULE_PATH}/Catppuccin" 2>/dev/null; then - echo "WARNING: Failed to clone PowerShell module repository" >&2 - fi - else - echo "Git not found, skipping PowerShell module installation" >&2 - fi + if [ -n "${PS_MODULE_PATH}" ]; then + if command_exists git; then + if ! git clone --depth=1 https://github.com/catppuccin/powershell.git "${PS_MODULE_PATH}/Catppuccin" 2>/dev/null; then + echo "WARNING: Failed to clone PowerShell module repository" >&2 + fi else - echo "PowerShell module path not found, skipping PowerShell module installation" >&2 + echo "Git not found, skipping PowerShell module installation" >&2 fi + else + echo "PowerShell module path not found, skipping PowerShell module installation" >&2 + fi else - echo "PowerShell not found, skipping PowerShell module installation" >&2 + echo "PowerShell not found, skipping PowerShell module installation" >&2 fi # Install Fish themes if command_exists fish; then - echo "Installing Fish themes..." - download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Mocha.theme" \ - "${HOME}/.config/fish/themes/Catppuccin Mocha.theme" - download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Latte.theme" \ - "${HOME}/.config/fish/themes/Catppuccin Latte.theme" + echo "Installing Fish themes..." + download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Mocha.theme" \ + "${HOME}/.config/fish/themes/Catppuccin Mocha.theme" + download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Latte.theme" \ + "${HOME}/.config/fish/themes/Catppuccin Latte.theme" else - echo "Fish not found, skipping Fish themes installation" >&2 + echo "Fish not found, skipping Fish themes installation" >&2 fi # Install Fcitx5 themes if command_exists fcitx5; then - echo "Installing Fcitx5 themes..." + echo "Installing Fcitx5 themes..." - rm -rf "${TEMP_DIR}/fcitx5" - if command_exists git; then - if git clone --depth=1 https://github.com/catppuccin/fcitx5.git "${TEMP_DIR}/fcitx5" 2>/dev/null; then - cp -r "${TEMP_DIR}/fcitx5/src/"* "${HOME}/.local/share/fcitx5/themes/" - else - echo "WARNING: Failed to clone Fcitx5 repository" >&2 - fi + rm -rf "${TEMP_DIR}/fcitx5" + if command_exists git; then + if git clone --depth=1 https://github.com/catppuccin/fcitx5.git "${TEMP_DIR}/fcitx5" 2>/dev/null; then + cp -r "${TEMP_DIR}/fcitx5/src/"* "${HOME}/.local/share/fcitx5/themes/" else - echo "Git not found, skipping Fcitx5 themes installation" >&2 + echo "WARNING: Failed to clone Fcitx5 repository" >&2 fi + else + echo "Git not found, skipping Fcitx5 themes installation" >&2 + fi else - echo "Fcitx5 not found, skipping Fcitx5 themes installation" >&2 + echo "Fcitx5 not found, skipping Fcitx5 themes installation" >&2 fi # Clean up temporary directory diff --git a/bootstrap/components/symlinks.bash b/bootstrap/components/symlinks.bash index 4655d72..b166bf4 100644 --- a/bootstrap/components/symlinks.bash +++ b/bootstrap/components/symlinks.bash @@ -29,74 +29,74 @@ test -d ~/.local/state/zsh || mkdir -p ~/.local/state/zsh declare -A linkDots linkDots=( - ["$DOTFILES/common/condarc.yaml"]="$XDG_CONFIG_HOME/conda/.condarc" - # ["$DOTFILES/common/gitconfig"]="$XDG_CONFIG_HOME/git/config" - ["$DOTFILES/common/glow.yaml"]="$HOME/.config/glow/config.yml" - ["$DOTFILES/common/haskeline"]="$HOME/.haskeline" - ["$DOTFILES/common/ideavimrc"]="$XDG_CONFIG_HOME/ideavim/ideavimrc" - ["$DOTFILES/common/lazygit.yaml"]="$XDG_CONFIG_HOME/lazygit/config.yml" - ["$DOTFILES/common/lesskey"]="$XDG_CONFIG_HOME/lesskey" - ["$DOTFILES/common/npmrc"]="$NPM_CONFIG_USERCONFIG" - ["$DOTFILES/common/NuGet.Config"]="$XDG_CONFIG_HOME/NuGet/NuGet.Config" - ["$DOTFILES/common/pip.conf"]="$XDG_CONFIG_HOME/pip/pip.conf" - ["$DOTFILES/common/starship.toml"]="$HOME/.config/starship.toml" - ["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf" - ["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc" - ["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl" - # ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d" - ["$DOTFILES/tools/doom"]="$HOME/.config/doom" - ["$DOTFILES/tools/fish"]="$HOME/.config/fish" - ["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython" - ["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim" - ["$DOTFILES/tools/yazi"]="$HOME/.config/yazi" - ["$DOTFILES/tools/zsh/zshrc"]="$ZDOTDIR/.zshrc" - ["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv" - ["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1" + ["$DOTFILES/common/condarc.yaml"]="$XDG_CONFIG_HOME/conda/.condarc" + # ["$DOTFILES/common/gitconfig"]="$XDG_CONFIG_HOME/git/config" + ["$DOTFILES/common/glow.yaml"]="$HOME/.config/glow/config.yml" + ["$DOTFILES/common/haskeline"]="$HOME/.haskeline" + ["$DOTFILES/common/ideavimrc"]="$XDG_CONFIG_HOME/ideavim/ideavimrc" + ["$DOTFILES/common/lazygit.yaml"]="$XDG_CONFIG_HOME/lazygit/config.yml" + ["$DOTFILES/common/lesskey"]="$XDG_CONFIG_HOME/lesskey" + ["$DOTFILES/common/npmrc"]="$NPM_CONFIG_USERCONFIG" + ["$DOTFILES/common/NuGet.Config"]="$XDG_CONFIG_HOME/NuGet/NuGet.Config" + ["$DOTFILES/common/pip.conf"]="$XDG_CONFIG_HOME/pip/pip.conf" + ["$DOTFILES/common/starship.toml"]="$HOME/.config/starship.toml" + ["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf" + ["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc" + ["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl" + # ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d" + ["$DOTFILES/tools/doom"]="$HOME/.config/doom" + ["$DOTFILES/tools/fish"]="$HOME/.config/fish" + ["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython" + ["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim" + ["$DOTFILES/tools/yazi"]="$HOME/.config/yazi" + ["$DOTFILES/tools/zsh/zshrc"]="$ZDOTDIR/.zshrc" + ["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv" + ["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1" ) if [ $(uname) = "Darwin" ]; then - echo "[INFO] Running on macOS" - linkDots+=( - ["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner" - ["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc" - ["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc" - ["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc" - ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" - ["$DOTFILES/tools/zed"]="$HOME/.config/zed" - ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" - ) + echo "[INFO] Running on macOS" + linkDots+=( + ["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner" + ["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc" + ["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc" + ["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc" + ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" + ["$DOTFILES/tools/zed"]="$HOME/.config/zed" + ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" + ) else - echo "[INFO] Running on Linux" + echo "[INFO] Running on Linux" + linkDots+=( + ["$DOTFILES/common/inputrc"]="$HOME/.inputrc" + ) + # WSL1 : Microsoft + # WSL2 : microsoft + # if [ "$(uname -r)" = *icrosoft* ]; then + # echo "[INFO] Running on WSL" + # : # NOP + if [ "$GUI_SETUP" -eq 1 ]; then + echo "[INFO] Setting up Linux GUI Applications" linkDots+=( - ["$DOTFILES/common/inputrc"]="$HOME/.inputrc" + ["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome" + ["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr" + ["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar" + ["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout" + ["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config" + ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" + ["$DOTFILES/tools/zed"]="$HOME/.config/zed" + ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" ) - # WSL1 : Microsoft - # WSL2 : microsoft - # if [ "$(uname -r)" = *icrosoft* ]; then - # echo "[INFO] Running on WSL" - # : # NOP - if [ "$GUI_SETUP" -eq 1 ]; then - echo "[INFO] Setting up Linux GUI Applications" - linkDots+=( - ["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome" - ["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr" - ["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar" - ["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout" - ["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config" - ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" - ["$DOTFILES/tools/zed"]="$HOME/.config/zed" - ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" - ) - for kde in "$DOTFILES/platforms/linux/kde/"*; do - linkDots+=["$kde"]="$HOME/.config/kde/$(basename "$kde")" - # echo "Linking $kde to $HOME/.config/kde/$(basename $kde)" - done - if [ "$WHEEL" -eq 1 ]; then - echo "[INFO] Setting up system environment variables" - echo "[ACTION] Elevation required!" - sudo cp "$DOTFILES/platforms/linux/etc/environment" "/etc/environment" - fi + for kde in "$DOTFILES/platforms/linux/kde/"*; do + linkDots+=["$kde"]="$HOME/.config/kde/$(basename "$kde")" + # echo "Linking $kde to $HOME/.config/kde/$(basename $kde)" + done + if [ "$WHEEL" -eq 1 ]; then + echo "[INFO] Setting up system environment variables" + echo "[ACTION] Elevation required!" + sudo cp "$DOTFILES/platforms/linux/etc/environment" "/etc/environment" fi + fi fi echo "[INFO] Copying example files" diff --git a/bootstrap/components/zsh.sh b/bootstrap/components/zsh.sh index 8f1871a..485ac1d 100644 --- a/bootstrap/components/zsh.sh +++ b/bootstrap/components/zsh.sh @@ -8,17 +8,17 @@ echo "[ACTION] Press any key to proceed" read -n 1 if [ "$WHEEL" -eq 1 ]; then - echo "[INFO] Setting up system-wide zsh configuration" - echo "[ACTION] Elevation required" - test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zsh/zshenv" - test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv" - if [ "$(uname)" = "Darwin" ]; then - sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv" - fi + echo "[INFO] Setting up system-wide zsh configuration" + echo "[ACTION] Elevation required" + test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zsh/zshenv" + test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv" + if [ "$(uname)" = "Darwin" ]; then + sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv" + fi else - echo "[INFO] Setting up user zsh configuration" - # A fallback case to set $ZDOTDIR in ~/.zshenv if the user cannot access global zshenv - ln -sf "$DOTFILES/tools/zsh/zshenv" "$HOME/.zshenv" + echo "[INFO] Setting up user zsh configuration" + # A fallback case to set $ZDOTDIR in ~/.zshenv if the user cannot access global zshenv + ln -sf "$DOTFILES/tools/zsh/zshenv" "$HOME/.zshenv" fi echo "[INFO] Installing zsh plugins" diff --git a/bootstrap/linux/appman.bash b/bootstrap/linux/appman.bash index 09a74f9..dad1f09 100644 --- a/bootstrap/linux/appman.bash +++ b/bootstrap/linux/appman.bash @@ -7,6 +7,6 @@ wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod APPMAN_PATH="$HOME/.local/bin/appman" if command -v "$APPMAN_PATH" >/dev/null 2>&1; then - $APPMAN_PATH install wezterm - $APPMAN_PATH install nvim + $APPMAN_PATH install wezterm + $APPMAN_PATH install nvim fi diff --git a/bootstrap/linux/chromium-flags.bash b/bootstrap/linux/chromium-flags.bash index 41ace0d..c3a9ae9 100755 --- a/bootstrap/linux/chromium-flags.bash +++ b/bootstrap/linux/chromium-flags.bash @@ -13,34 +13,34 @@ ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.conf # Browser Flags browser_flags_path=( - "$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium - "$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome - "$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium - "$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi - "$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi + "$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium + "$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome + "$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium + "$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi + "$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi ) electron_flags_path=( - "$XDG_CONFIG_HOME/electron-flags.conf" # General - "$XDG_CONFIG_HOME/code-flags.conf" # VSCode - "$XDG_CONFIG_HOME/qq-electron-flags.conf" # Slack + "$XDG_CONFIG_HOME/electron-flags.conf" # General + "$XDG_CONFIG_HOME/code-flags.conf" # VSCode + "$XDG_CONFIG_HOME/qq-electron-flags.conf" # Slack ) for path in "${browser_flags_path[@]}"; do - if [ -f "$path" ]; then - echo "[INFO] Found Browser Flags: $path" - else - echo "[INFO] Creating Browser Flags: $path" - ln -s "$BROWSER_FLAG" "$path" - fi + if [ -f "$path" ]; then + echo "[INFO] Found Browser Flags: $path" + else + echo "[INFO] Creating Browser Flags: $path" + ln -s "$BROWSER_FLAG" "$path" + fi done for path in "${electron_flags_path[@]}"; do - if [ -f "$path" ]; then - echo "[INFO] Found Electron Flags: $path" - else - echo "[INFO] Creating Electron Flags: $path" - ln -s "$ELECTRON_FLAG" "$path" - fi + if [ -f "$path" ]; then + echo "[INFO] Found Electron Flags: $path" + else + echo "[INFO] Creating Electron Flags: $path" + ln -s "$ELECTRON_FLAG" "$path" + fi done diff --git a/bootstrap/linux/main.bash b/bootstrap/linux/main.bash index faca32c..98c09ee 100644 --- a/bootstrap/linux/main.bash +++ b/bootstrap/linux/main.bash @@ -14,9 +14,9 @@ WHEEL=0 groups "$(whoami)" | grep -E -q '\b(sudo|wheel)\b' && WHEEL=1 if [ "$WHEEL" -eq 1 ]; then - echo "[INFO] Running as sudo or wheel group" + echo "[INFO] Running as sudo or wheel group" else - echo "[INFO] Not running as sudo or wheel group" + echo "[INFO] Not running as sudo or wheel group" fi export WHEEL @@ -29,19 +29,19 @@ PACKAGE_MANAGER="" # NOTE: This is NOT a POSIX-compliant way, for POSIX-compliant way, use case/esac if [[ "$(uname -r)" = *Microsoft* ]]; then - echo "[INFO] Running on WSL1 Skipping GUI setup" - IS_WSL=1 - WINDOWS_USER="$(cmd.exe /c "echo %USERNAME%" | tr -d '\r')" + echo "[INFO] Running on WSL1 Skipping GUI setup" + IS_WSL=1 + WINDOWS_USER="$(cmd.exe /c "echo %USERNAME%" | tr -d '\r')" else - read -p "[ACTION] Do you want to setup Linux GUI? (y/N) " -r choice - case "$choice" in + read -p "[ACTION] Do you want to setup Linux GUI? (y/N) " -r choice + case "$choice" in y | Y) - GUI_SETUP=1 - ;; + GUI_SETUP=1 + ;; *) - echo "[INFO] Skipping GUI setup" - ;; - esac + echo "[INFO] Skipping GUI setup" + ;; + esac fi export GUI_SETUP @@ -49,45 +49,45 @@ export GUI_SETUP # base-devel if [ "$WHEEL" -eq 1 ]; then - echo "[INFO] Installing basic build tools" - if command -v apt >/dev/null 2>&1; then - sudo apt update - sudo apt install -y build-essential - PACKAGE_MANAGER="apt" - elif command -v pacman >/dev/null 2>&1; then - sudo pacman -Syu --noconfirm - sudo pacman -S --noconfirm base-devel - PACKAGE_MANAGER="pacman" - else - echo "[ERROR] Unsupported package manager" - exit 1 - fi + echo "[INFO] Installing basic build tools" + if command -v apt >/dev/null 2>&1; then + sudo apt update + sudo apt install -y build-essential + PACKAGE_MANAGER="apt" + elif command -v pacman >/dev/null 2>&1; then + sudo pacman -Syu --noconfirm + sudo pacman -S --noconfirm base-devel + PACKAGE_MANAGER="pacman" + else + echo "[ERROR] Unsupported package manager" + exit 1 + fi fi echo "[INFO] Cloning Dotfiles" if [ -d "$DOTFILES" ]; then - echo "[INFO] Dotfiles already cloned" + echo "[INFO] Dotfiles already cloned" elif [ "$IS_WSL" -eq 1 ]; then - ln -sf "/mnt/c/Users/$WINDOWS_USER/.dotfiles" "$DOTFILES" + ln -sf "/mnt/c/Users/$WINDOWS_USER/.dotfiles" "$DOTFILES" elif command -v git >/dev/null 2>&1; then - git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1 + git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1 else - echo "[ERROR] Git is not installed" - exit 1 + echo "[ERROR] Git is not installed" + exit 1 fi if [ "$WHEEL" -eq 0 ]; then - read -p "[ACTION] Do you want to install some AppImages (by AppMan)? (y/N) " -r choice - case "$choice" in + read -p "[ACTION] Do you want to install some AppImages (by AppMan)? (y/N) " -r choice + case "$choice" in y | Y) - source "$DOTFILES/bootstrap/linux/appman.bash" - ;; + source "$DOTFILES/bootstrap/linux/appman.bash" + ;; *) - echo "[INFO] Skipping AppMan installation" - : - ;; - esac + echo "[INFO] Skipping AppMan installation" + : + ;; + esac fi echo "[INFO] Setting up symbolic links" @@ -95,8 +95,8 @@ echo "[INFO] Setting up symbolic links" source "$DOTFILES"/bootstrap/linux/symlinks.bash if [ "$WHEEL" -eq 1 ]; then - source "$DOTFILES"/tools/bash/xdg-compact.sh - source "$DOTFILES"/tools/bash/global.bashrc + source "$DOTFILES"/tools/bash/xdg-compact.sh + source "$DOTFILES"/tools/bash/global.bashrc fi source "$DOTFILES"/tools/bash/profile source "$DOTFILES"/tools/bash/bashrc @@ -104,29 +104,29 @@ source "$DOTFILES"/tools/bash/bash_aliases if command -v zsh >/dev/null 2>&1; then - read -p "[ACTION] Do you want to setup zsh? (Y/n) " -r choice - case "$choice" in + read -p "[ACTION] Do you want to setup zsh? (Y/n) " -r choice + case "$choice" in n | N) - : - ;; + : + ;; *) - source "$DOTFILES"/bootstrap/components/zsh.sh - ;; - esac + source "$DOTFILES"/bootstrap/components/zsh.sh + ;; + esac fi if [ "$WHEEL" -eq 0 ]; then - echo "Done!" - exit 0 + echo "Done!" + exit 0 fi # TODO: Add this part read -p "[ACTION] Do you want to use other package managers? (y/N) " -r choice case "$choice" in -y | Y) + y | Y) : ;; -*) + *) : ;; esac @@ -137,18 +137,18 @@ source "$DOTFILES"/bootstrap/components/emacs.sh # TODO: Untestest if [ "$IS_WSL" -eq 1 ]; then - ln -sf "/mnt/c/Users/$WINDOWS_USER" "$HOME/winhome" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Downloads" "$HOME/Downloads" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Documents" "$HOME/Documents" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Desktop" "$HOME/Desktop" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Pictures" "$HOME/Pictures" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Music" "$HOME/Music" - ln -sf "/mnt/c/Users/$WINDOWS_USER/Videos" "$HOME/Videos" + ln -sf "/mnt/c/Users/$WINDOWS_USER" "$HOME/winhome" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Downloads" "$HOME/Downloads" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Documents" "$HOME/Documents" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Desktop" "$HOME/Desktop" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Pictures" "$HOME/Pictures" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Music" "$HOME/Music" + ln -sf "/mnt/c/Users/$WINDOWS_USER/Videos" "$HOME/Videos" fi if [ "$GUI_SETUP" -eq 0 ]; then - echo "Done!" - exit 0 + echo "Done!" + exit 0 fi # Wayland diff --git a/bootstrap/linux/symlinks.bash b/bootstrap/linux/symlinks.bash index ca0fdc1..6842444 100644 --- a/bootstrap/linux/symlinks.bash +++ b/bootstrap/linux/symlinks.bash @@ -14,16 +14,16 @@ read -r -n1 -s echo "[INFO] Setting up symbolic links" for src in "${!linkDots[@]}"; do - dest="${linkDots[$src]}" - echo "Linking $src to $dest" - if [ -d "$src" ]; then - test -d "$dest" && mv "$dest" "$dest.bak" - ln -sf "$src" "$dest" - elif [ -f "$src" ]; then - dest_parent=$(dirname "$dest") - test -d "$dest_parent" || mkdir -p "$dest_parent" - ln -sf "$src" "$dest" - else - echo "[ERROR] $src does not exist" - fi + dest="${linkDots[$src]}" + echo "Linking $src to $dest" + if [ -d "$src" ]; then + test -d "$dest" && mv "$dest" "$dest.bak" + ln -sf "$src" "$dest" + elif [ -f "$src" ]; then + dest_parent=$(dirname "$dest") + test -d "$dest_parent" || mkdir -p "$dest_parent" + ln -sf "$src" "$dest" + else + echo "[ERROR] $src does not exist" + fi done diff --git a/bootstrap/linux/wsl.bash b/bootstrap/linux/wsl.bash index e69de29..8b13789 100644 --- a/bootstrap/linux/wsl.bash +++ b/bootstrap/linux/wsl.bash @@ -0,0 +1 @@ + diff --git a/tools/zsh/mod/navi.zsh b/tools/zsh/mod/navi.zsh index 48573fa..703b07b 100644 --- a/tools/zsh/mod/navi.zsh +++ b/tools/zsh/mod/navi.zsh @@ -3,14 +3,13 @@ # Author: js0ny # Sourced by user's zshrc 在用户的 zshrc 中被引用 - # Define __CD_CMD as "cd" by default __CD_CMD="cd" # If zoxide is available, use it if command -v zoxide >/dev/null; then - __CD_CMD="z" - eval "$(zoxide init zsh)" + __CD_CMD="z" + eval "$(zoxide init zsh)" fi # Define aliases for quick navigation @@ -25,7 +24,7 @@ alias - "$__CD_CMD -" # Define zls function for cd + ls zls() { - "$__CD_CMD" "$1" && ls + "$__CD_CMD" "$1" && ls } alias cdls=zls