Compare commits
9 Commits
cfce67e2e4
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c0bb8b5f9a | |||
| a7246fe879 | |||
| e53b81fe55 | |||
| dd47827e13 | |||
| 1ec7aff593 | |||
| 04b03d85cd | |||
| f96891b6ec | |||
| 52cd32ab95 | |||
| de44196750 |
+13
@@ -1,2 +1,15 @@
|
|||||||
|
# ── Neovim lock file ──────────────────────────────────────────────────────────
|
||||||
*nvim/.config/nvim/lazy-lock.json*
|
*nvim/.config/nvim/lazy-lock.json*
|
||||||
|
|
||||||
|
# ── OS clutter ────────────────────────────────────────────────────────────────
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# ── Per-machine local overrides (Strategy 1: Dynamic Runtime Sourcing) ────────
|
||||||
|
# These files are stowed/created on each machine but never committed.
|
||||||
|
# They contain secrets, host-specific paths, work credentials, etc.
|
||||||
|
**/*.local
|
||||||
|
**/.zshrc.local
|
||||||
|
**/.tmux.conf.local
|
||||||
|
**/.gitconfig.local
|
||||||
|
**/.env.local
|
||||||
|
|||||||
+34
-4
@@ -7,7 +7,37 @@ case $- in
|
|||||||
*) return;;
|
*) return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Example command:
|
# ── Shared shell config ────────────────────────────────────────────────────────
|
||||||
source ~/.config/shell/common
|
[[ -f ~/.config/shell/common ]] && source ~/.config/shell/common
|
||||||
source ~/.config/shell/personal #added by 6500gitsetup
|
[[ -f ~/.config/shell/aliases ]] && source ~/.config/shell/aliases
|
||||||
source ~/.config/shell/aliases
|
|
||||||
|
# ── OS detection — source the right platform overlay ──────────────────────────
|
||||||
|
case "$(uname -s)" in
|
||||||
|
Darwin) [[ -f ~/.config/shell/macos ]] && source ~/.config/shell/macos ;;
|
||||||
|
Linux) [[ -f ~/.config/shell/linux ]] && source ~/.config/shell/linux ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# ── Bash-specific init (starship, zoxide, fzf) ────────────────────────────────
|
||||||
|
if [[ -n "$BASH_VERSION" ]]; then
|
||||||
|
# History settings
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
HISTSIZE=10000
|
||||||
|
HISTFILESIZE=20000
|
||||||
|
shopt -s histappend checkwinsize
|
||||||
|
|
||||||
|
# Starship prompt
|
||||||
|
command -v starship >/dev/null && eval "$(starship init bash)"
|
||||||
|
|
||||||
|
# Zoxide (smarter cd)
|
||||||
|
command -v zoxide >/dev/null && eval "$(zoxide init bash)"
|
||||||
|
|
||||||
|
# fzf
|
||||||
|
[[ -f ~/.fzf.bash ]] && source ~/.fzf.bash
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EDITOR='nvim'
|
||||||
|
export MANROFFOPT="-c"
|
||||||
|
|
||||||
|
# ── Per-machine local override (untracked) ────────────────────────────────────
|
||||||
|
# Create ~/.bashrc.local on each machine for secrets / host-specific tweaks.
|
||||||
|
[[ -f ~/.bashrc.local ]] && source ~/.bashrc.local
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# bootstrap.sh — Set up dotfiles on a new machine
|
||||||
|
# Usage: bash bootstrap.sh [--profile personal|work]
|
||||||
|
#
|
||||||
|
# This script stows all dotfile packages, copies shell config files,
|
||||||
|
# and creates untracked .local stub files for per-machine overrides.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROFILE="${1:-personal}"
|
||||||
|
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo " Dotfiles Bootstrap"
|
||||||
|
echo " Profile : $PROFILE"
|
||||||
|
echo " OS : $(uname -s)"
|
||||||
|
echo " Host : $(hostname)"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
|
||||||
|
# ── 1. Stow all packages ───────────────────────────────────────────────────────
|
||||||
|
# shell is excluded from global .stow-local-ignore, handled separately below
|
||||||
|
PACKAGES="zsh bash tmux nvim starship alacritty kitty ghostty wezterm zed btop vim"
|
||||||
|
|
||||||
|
for pkg in $PACKAGES; do
|
||||||
|
if [[ -d "$DOTFILES_DIR/$pkg" ]]; then
|
||||||
|
echo " stow → $pkg"
|
||||||
|
stow --adopt --dir="$DOTFILES_DIR" --target="$HOME" "$pkg" 2>/dev/null || \
|
||||||
|
echo " ⚠ stow $pkg skipped (already linked or conflict)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# ── 2. Copy shell config files manually (stow-local-ignore excludes `shell`) ──
|
||||||
|
SHELL_SRC="$DOTFILES_DIR/shell/.config/shell"
|
||||||
|
SHELL_DST="$HOME/.config/shell"
|
||||||
|
mkdir -p "$SHELL_DST"
|
||||||
|
|
||||||
|
for f in common aliases personal work macos linux; do
|
||||||
|
if [[ -f "$SHELL_SRC/$f" ]]; then
|
||||||
|
echo " copy shell/$f → $SHELL_DST/$f"
|
||||||
|
cp -n "$SHELL_SRC/$f" "$SHELL_DST/$f" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# ── 3. Create untracked .local stub files ─────────────────────────────────────
|
||||||
|
create_stub() {
|
||||||
|
local file="$1" comment="$2"
|
||||||
|
if [[ ! -f "$file" ]]; then
|
||||||
|
echo "# $comment" > "$file"
|
||||||
|
echo " created stub → $file"
|
||||||
|
else
|
||||||
|
echo " exists (skipped) → $file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_stub "$HOME/.zshrc.local" "Per-machine zsh overrides — never committed"
|
||||||
|
create_stub "$HOME/.bashrc.local" "Per-machine bash overrides — never committed"
|
||||||
|
create_stub "$HOME/.tmux.conf.machine.local" "Per-machine tmux overrides — never committed"
|
||||||
|
create_stub "$HOME/.gitconfig.local" "Per-machine git identity — never committed"
|
||||||
|
|
||||||
|
# ── 4. Inject profile into .zshrc.local if requested ──────────────────────────
|
||||||
|
if [[ "$PROFILE" == "work" ]]; then
|
||||||
|
if ! grep -q "DOTFILES_PROFILE" "$HOME/.zshrc.local" 2>/dev/null; then
|
||||||
|
echo "" >> "$HOME/.zshrc.local"
|
||||||
|
echo "# Work profile — load work-specific shell config and nvim plugins" >> "$HOME/.zshrc.local"
|
||||||
|
echo "export DOTFILES_PROFILE=work" >> "$HOME/.zshrc.local"
|
||||||
|
echo "source ~/.config/shell/work" >> "$HOME/.zshrc.local"
|
||||||
|
echo " → injected DOTFILES_PROFILE=work into ~/.zshrc.local"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── 5. macOS-specific setup ───────────────────────────────────────────────────
|
||||||
|
if [[ "$(uname -s)" == "Darwin" ]]; then
|
||||||
|
# Install Homebrew if missing
|
||||||
|
if ! command -v brew >/dev/null 2>&1; then
|
||||||
|
echo " Installing Homebrew…"
|
||||||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
|
echo " Done! Next steps:"
|
||||||
|
echo " 1. Edit ~/.zshrc.local — add secrets / tokens"
|
||||||
|
echo " 2. Edit ~/.gitconfig.local — add your git identity for this machine"
|
||||||
|
echo " 3. Run: exec zsh (or source ~/.bashrc for bash)"
|
||||||
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
@@ -75,7 +75,11 @@ require("lazy").setup({
|
|||||||
"junegunn/seoul256.vim"
|
"junegunn/seoul256.vim"
|
||||||
},
|
},
|
||||||
|
|
||||||
-- NOTE: Plugins can also be added by using a table,
|
-- ── Work-profile plugins (Copilot) ──────────────────────────────────────
|
||||||
|
-- Loaded only when DOTFILES_PROFILE=work is set (via ~/.zshrc.local).
|
||||||
|
-- On work machines add: export DOTFILES_PROFILE=work
|
||||||
|
(os.getenv("DOTFILES_PROFILE") == "work" and require("kickstart.plugins.work") or {}),
|
||||||
|
|
||||||
-- with the first argument being the link and the following
|
-- with the first argument being the link and the following
|
||||||
-- keys can be used to configure plugin behavior/loading/etc.
|
-- keys can be used to configure plugin behavior/loading/etc.
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- Work-machine plugins (Copilot + CopilotChat)
|
||||||
|
-- Loaded only when DOTFILES_PROFILE=work is set in the environment.
|
||||||
|
-- Add this to your ~/.zshrc.local on work machines:
|
||||||
|
-- export DOTFILES_PROFILE=work
|
||||||
|
return {
|
||||||
|
"github/copilot.vim",
|
||||||
|
require("kickstart.plugins.copilot_chat"),
|
||||||
|
}
|
||||||
Executable
+54
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# tmux-session-name.sh — Auto-name new tmux sessions with emoji + codename
|
||||||
|
#
|
||||||
|
# Called by the session-created hook in .tmux.conf
|
||||||
|
# Usage: tmux-session-name.sh <current_session_name> <session_id>
|
||||||
|
|
||||||
|
CURRENT_NAME="${1:-}"
|
||||||
|
SESSION_ID="${2:-}"
|
||||||
|
|
||||||
|
# Skip if name is empty or not a plain number (user explicitly named it)
|
||||||
|
if [[ -z "$CURRENT_NAME" || ! "$CURRENT_NAME" =~ ^[0-9]+$ ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── Name pool ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
EMOJIS=(
|
||||||
|
"⚡" "🔥" "🌙" "🚀" "🎯" "💎" "🌊" "🎸" "🦊" "🐉"
|
||||||
|
"🌟" "🎭" "🔮" "🦋" "🌸" "🏔️" "🎪" "🦁" "🐺" "🦅"
|
||||||
|
"🐬" "🌋" "⚗️" "🧠" "🔭" "🎲" "🏹" "🌀" "🦄" "🐙"
|
||||||
|
"🎮" "🛸" "🌈" "🔱" "⚜️" "🧬" "🦾" "💫" "🎆" "🌌"
|
||||||
|
)
|
||||||
|
|
||||||
|
ADJECTIVES=(
|
||||||
|
swift blazing cosmic silent wild golden dark frozen epic neon
|
||||||
|
cyber ghost storm iron crystal hyper zen rogue nova apex
|
||||||
|
void shadow turbo lunar sonic electric primal ancient savage brave
|
||||||
|
mystic toxic ultra prime omega alpha delta sigma raging burning
|
||||||
|
)
|
||||||
|
|
||||||
|
NOUNS=(
|
||||||
|
wolf phoenix raven otter falcon dragon viper lynx shark cobra
|
||||||
|
titan spectre nexus cipher forge matrix pulse blade hawk panther
|
||||||
|
manta kraken hydra mantis raptor condor jaguar orca wraith banshee
|
||||||
|
golem oracle anvil tempest quasar nebula comet prism zenith apex
|
||||||
|
)
|
||||||
|
|
||||||
|
# ── Pick random combination ───────────────────────────────────────────────────
|
||||||
|
|
||||||
|
# We use absolute arithmetic expansion to avoid negative index quirks
|
||||||
|
EMOJI="${EMOJIS[$((RANDOM % ${#EMOJIS[@]}))]}"
|
||||||
|
ADJ="${ADJECTIVES[$((RANDOM % ${#ADJECTIVES[@]}))]}"
|
||||||
|
NOUN="${NOUNS[$((RANDOM % ${#NOUNS[@]}))]}"
|
||||||
|
NEW_NAME="${EMOJI} ${ADJ}-${NOUN}"
|
||||||
|
|
||||||
|
# ── Rename ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
if [[ -n "$SESSION_ID" ]]; then
|
||||||
|
# Use -t with the specific session ID to avoid targeting the wrong session
|
||||||
|
tmux rename-session -t "$SESSION_ID" "$NEW_NAME" 2>/dev/null
|
||||||
|
else
|
||||||
|
# Called standalone — just print the name
|
||||||
|
echo "$NEW_NAME"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# ── Truly shared exports / env vars ───────────────────────────────────────────
|
||||||
|
# Sourced by both .zshrc and .bashrc on ALL machines (all OSes, all profiles).
|
||||||
|
# Keep this minimal — only things that apply 100% universally.
|
||||||
|
|
||||||
|
export EDITOR='nvim'
|
||||||
|
export VISUAL='nvim'
|
||||||
|
|
||||||
|
# Dotfiles root — used by scripts and tmux hooks
|
||||||
|
export DOTFILES="$HOME/dotfiles"
|
||||||
|
|
||||||
|
# Man page rendering
|
||||||
|
export MANROFFOPT="-c"
|
||||||
|
|
||||||
|
# Better history defaults (bash and zsh honour these)
|
||||||
|
export HISTSIZE=10000
|
||||||
|
export HISTFILESIZE=20000
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# ── Linux-specific shell config ───────────────────────────────────────────────
|
||||||
|
# Sourced automatically from .zshrc / .bashrc on Linux hosts only.
|
||||||
|
|
||||||
|
# xdg-open alias (Linux equivalent of macOS `open`)
|
||||||
|
alias open="xdg-open"
|
||||||
|
|
||||||
|
# Clipboard helpers (if xclip is present)
|
||||||
|
if command -v xclip >/dev/null 2>&1; then
|
||||||
|
alias pbcopy="xclip -selection clipboard"
|
||||||
|
alias pbpaste="xclip -selection clipboard -o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# fzf shell integration (Linux path)
|
||||||
|
# Set up fzf key bindings and fuzzy completion
|
||||||
|
eval "$(fzf --bash)"
|
||||||
|
[[ -f ~/.fzf.zsh ]] && source ~/.fzf.zsh
|
||||||
|
|
||||||
|
# Zoxide (smarter cd) — in case not already initialized by bashrc
|
||||||
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
command -v zoxide >/dev/null && eval "$(zoxide init zsh)"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# ── macOS-specific shell config ───────────────────────────────────────────────
|
||||||
|
# Sourced automatically from .zshrc / .bashrc on Darwin hosts only.
|
||||||
|
|
||||||
|
# Homebrew
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)" 2>/dev/null
|
||||||
|
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
|
||||||
|
|
||||||
|
# Antigravity
|
||||||
|
export PATH="/Users/jsarthak/.antigravity/antigravity/bin:$PATH"
|
||||||
|
|
||||||
|
# Flutter SDK
|
||||||
|
export PATH="/Users/jsarthak/flutter-sdk/flutter/bin:$PATH"
|
||||||
|
export PATH="/Users/jsarthak/.local/bin:$PATH"
|
||||||
|
|
||||||
|
# fzf shell integration (macOS path)
|
||||||
|
source <(fzf --zsh) 2>/dev/null || true
|
||||||
|
|
||||||
|
# macOS convenience aliases
|
||||||
|
alias finder="open -a Finder ."
|
||||||
|
alias brewup="brew update && brew upgrade && brew cleanup"
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# starship.toml - Fully riced modern prompt config aligned with Carbonfox theme
|
# starship.toml - Fully riced modern prompt config aligned with Carbonfox theme
|
||||||
|
|
||||||
format = """
|
format = """
|
||||||
$os$username$hostname$directory$git_branch$git_state$git_status$python$nodejs$rust$golang$cmd_duration$line_break\
|
$os$username$hostname$directory$git_branch$git_state$git_status$cmd_duration$line_break\
|
||||||
$character"""
|
$character"""
|
||||||
|
|
||||||
# Wait 10 milliseconds for starship to check files under the current directory.
|
# Wait 10 milliseconds for starship to check files under the current directory.
|
||||||
@@ -15,7 +15,7 @@ disabled = false
|
|||||||
style = "bold white"
|
style = "bold white"
|
||||||
|
|
||||||
[username]
|
[username]
|
||||||
style_user = "bold #be95ff" # Carbonfox purple
|
style_user = "bold purple" # Use terminal purple
|
||||||
style_root = "bold red"
|
style_root = "bold red"
|
||||||
format = "[$user]($style)"
|
format = "[$user]($style)"
|
||||||
disabled = false
|
disabled = false
|
||||||
@@ -23,12 +23,12 @@ show_always = true
|
|||||||
|
|
||||||
[hostname]
|
[hostname]
|
||||||
ssh_only = false
|
ssh_only = false
|
||||||
style = "bold #33b1ff" # Carbonfox blue/cyan
|
style = "bold cyan" # Use terminal cyan
|
||||||
format = "@[$hostname]($style) "
|
format = "@[$hostname]($style) "
|
||||||
disabled = false
|
disabled = false
|
||||||
|
|
||||||
[directory]
|
[directory]
|
||||||
style = "bold #08bdba" # Carbonfox teal
|
style = "bold blue" # Use terminal blue
|
||||||
format = "in [ $path]($style)[$read_only]($read_only_style) "
|
format = "in [ $path]($style)[$read_only]($read_only_style) "
|
||||||
truncation_length = 3
|
truncation_length = 3
|
||||||
truncation_symbol = "…/"
|
truncation_symbol = "…/"
|
||||||
@@ -37,18 +37,18 @@ read_only = " "
|
|||||||
read_only_style = "bold red"
|
read_only_style = "bold red"
|
||||||
|
|
||||||
[character]
|
[character]
|
||||||
success_symbol = "[❯](bold #25be6a)" # Carbonfox green
|
success_symbol = "[❯](bold green)" # Use terminal green
|
||||||
error_symbol = "[❯](bold #ee5396)" # Carbonfox pink/red
|
error_symbol = "[❯](bold red)" # Use terminal red
|
||||||
vimcmd_symbol = "[❮](bold #08bdba)" # Carbonfox teal
|
vimcmd_symbol = "[❮](bold cyan)" # Use terminal cyan
|
||||||
|
|
||||||
[git_branch]
|
[git_branch]
|
||||||
symbol = "🌱 "
|
symbol = "🌱 "
|
||||||
style = "bold #ee5396" # Carbonfox pink
|
style = "bold red" # Use terminal red
|
||||||
format = "on [$symbol $branch]($style) "
|
format = "on [$symbol $branch]($style) "
|
||||||
truncation_symbol = ""
|
truncation_symbol = ""
|
||||||
|
|
||||||
[git_status]
|
[git_status]
|
||||||
style = "bold #ee5396"
|
style = "bold red"
|
||||||
format = "([$all_status $ahead_behind]($style) )"
|
format = "([$all_status $ahead_behind]($style) )"
|
||||||
conflicted = "🏳"
|
conflicted = "🏳"
|
||||||
ahead = "🏎💨"
|
ahead = "🏎💨"
|
||||||
@@ -67,28 +67,28 @@ cherry_pick = "[🍒 PICKING](bold red)"
|
|||||||
|
|
||||||
[python]
|
[python]
|
||||||
symbol = "🐍 "
|
symbol = "🐍 "
|
||||||
style = "bold #3ddbd9"
|
style = "bold green"
|
||||||
format = "via [$symbol$version]($style) "
|
format = "via [$symbol$version]($style) "
|
||||||
|
|
||||||
[nodejs]
|
[nodejs]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
style = "bold #25be6a"
|
style = "bold green"
|
||||||
format = "via [$symbol$version]($style) "
|
format = "via [$symbol$version]($style) "
|
||||||
|
|
||||||
[rust]
|
[rust]
|
||||||
symbol = "🦀 "
|
symbol = "🦀 "
|
||||||
style = "bold #ff9e64"
|
style = "bold yellow"
|
||||||
format = "via [$symbol$version]($style) "
|
format = "via [$symbol$version]($style) "
|
||||||
|
|
||||||
[golang]
|
[golang]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
style = "bold #78a9ff"
|
style = "bold blue"
|
||||||
format = "via [$symbol$version]($style) "
|
format = "via [$symbol$version]($style) "
|
||||||
|
|
||||||
[cmd_duration]
|
[cmd_duration]
|
||||||
min_time = 100
|
min_time = 100
|
||||||
style = "bold #e0af68" # Carbonfox yellow/orange
|
style = "bold yellow"
|
||||||
format = "underwent [$duration]($style) "
|
format = "took [$duration]($style) "
|
||||||
|
|
||||||
[status]
|
[status]
|
||||||
style = "bg:blue"
|
style = "bg:blue"
|
||||||
|
|||||||
+62
-73
@@ -71,42 +71,49 @@ tmux_conf_24b_colour=auto
|
|||||||
# - tmux_conf_theme_synchronized
|
# - tmux_conf_theme_synchronized
|
||||||
tmux_conf_theme=enabled
|
tmux_conf_theme=enabled
|
||||||
|
|
||||||
# Carbonfox Color Palette
|
# Classic Monokai Color Palette
|
||||||
color_bg="#161616"
|
color_bg="#272822"
|
||||||
color_fg="#f2f4f8"
|
color_fg="#f8f8f2"
|
||||||
color_black="#282828"
|
color_black="#1e1f1c"
|
||||||
color_gray="#353535"
|
color_gray="#3e3d32"
|
||||||
color_light_gray="#484848"
|
color_light_gray="#75715e"
|
||||||
color_red="#ee5396"
|
color_red="#f92672"
|
||||||
color_green="#25be6a"
|
color_green="#a6e22e" # Monokai Green (Session & Normal)
|
||||||
color_teal="#3ddbd9"
|
color_teal="#a6e22e" # Monokai Green
|
||||||
color_blue="#78a9ff"
|
color_blue="#66d9ef" # Monokai Cyan/Blue
|
||||||
color_purple="#be95ff"
|
color_purple="#ae81ff" # Monokai Purple (Host & Visual)
|
||||||
color_cyan="#33b1ff"
|
color_cyan="#66d9ef" # Monokai Cyan (Active Window)
|
||||||
color_white="#dfdfe0"
|
color_yellow="#e6db74" # Monokai Yellow (Date/Time)
|
||||||
|
color_white="#f8f8f2"
|
||||||
|
|
||||||
color_accent="$color_blue"
|
color_accent="$color_cyan" # Active window is Monokai Cyan
|
||||||
color_primary="default"
|
color_primary="default"
|
||||||
color_secondary="$color_gray"
|
color_secondary="$color_gray"
|
||||||
color_fg_primary="$color_fg"
|
color_fg_primary="$color_fg"
|
||||||
color_fg_secondary="$color_white"
|
color_fg_secondary="$color_white"
|
||||||
|
|
||||||
|
# Curve variables bound to palette colors
|
||||||
|
color_blue_curve="$color_purple"
|
||||||
|
color_cyan_curve="$color_yellow"
|
||||||
|
color_purple_curve="$color_purple"
|
||||||
|
|
||||||
window_status_current_bg="default"
|
window_status_current_bg="default"
|
||||||
window_status_current_fg="$color_accent"
|
window_status_current_fg="$color_accent"
|
||||||
|
|
||||||
theme_mode_bg="$color_accent"
|
theme_mode_bg="$color_accent"
|
||||||
theme_mode_fg="$color_bg"
|
theme_mode_fg="$color_bg"
|
||||||
|
|
||||||
tmux_conf_theme_window_fg="$color_fg_primary"
|
tmux_conf_theme_window_fg="#a5afc2"
|
||||||
# window style
|
# window style
|
||||||
tmux_conf_theme_window_bg="default"
|
tmux_conf_theme_window_bg="default"
|
||||||
|
|
||||||
# highlight focused pane, possible values are:
|
# highlight focused pane, possible values are:
|
||||||
# - true
|
# - true
|
||||||
# - false (default)
|
# - false (default)
|
||||||
tmux_conf_theme_highlight_focused_pane=false
|
tmux_conf_theme_highlight_focused_pane=true
|
||||||
|
|
||||||
# focused pane colours:
|
# focused pane colours:
|
||||||
|
tmux_conf_theme_focused_pane_fg="#f2f4f8"
|
||||||
tmux_conf_theme_focused_pane_bg="default"
|
tmux_conf_theme_focused_pane_bg="default"
|
||||||
|
|
||||||
# pane border style, possible values are:
|
# pane border style, possible values are:
|
||||||
@@ -174,7 +181,7 @@ tmux_conf_theme_window_status_attr="none"
|
|||||||
# tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
# tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
# tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
# tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
tmux_conf_theme_window_status_format="#[fg=$color_gray,bg=default]#[fg=$color_fg,bg=$color_gray]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}#[fg=$color_gray,bg=default]"
|
tmux_conf_theme_window_status_format="#[fg=$color_light_gray,bg=default]#I: #(bash $HOME/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
|
|
||||||
# window current status style
|
# window current status style
|
||||||
# - built-in variables are:
|
# - built-in variables are:
|
||||||
@@ -189,7 +196,7 @@ tmux_conf_theme_window_status_format="#[fg=$color_gray,bg=default]#[fg=$color
|
|||||||
# tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
# tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
# tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
# tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
tmux_conf_theme_window_status_current_format="#[fg=$color_accent,bg=default]#[fg=$color_bg,bg=$color_accent,bold]#I: #(bash /Users/jsarthak/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}#[fg=$color_accent,bg=default]"
|
tmux_conf_theme_window_status_current_format="#[fg=$color_accent,bg=default,bold]#I: #(bash $HOME/dotfiles/tmux/tmux-window-name.sh '#W' '#{pane_current_path}')#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
|
|
||||||
tmux_conf_theme_window_status_current_fg="$window_status_current_fg"
|
tmux_conf_theme_window_status_current_fg="$window_status_current_fg"
|
||||||
tmux_conf_theme_window_status_current_bg="$window_status_current_bg"
|
tmux_conf_theme_window_status_current_bg="$window_status_current_bg"
|
||||||
@@ -249,18 +256,19 @@ tmux_conf_theme_right_separator_sub=""
|
|||||||
# - #{username}
|
# - #{username}
|
||||||
# - #{username_ssh}
|
# - #{username_ssh}
|
||||||
|
|
||||||
tmux_conf_theme_status_left=" ❐ #S #[fg=$color_accent,bg=default,none]"
|
tmux_conf_theme_status_left=" #[fg=$color_teal,bg=default,bold]❐ #S #[fg=$color_gray,bg=default,none]│"
|
||||||
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized} |#[fg=default,bg=default] #[fg=$color_secondary,bg=default,none]#[fg=$color_fg,bg=$color_secondary,none] #{?uptime_d,#{uptime_d}d,}#{?uptime_h,#{uptime_h}h,}#{?uptime_m,#{uptime_m}m,}#[fg=$color_secondary,bg=default,none] |#[fg=default,bg=default] #[fg=$color_purple,bg=default,none]#[fg=$color_bg,bg=$color_purple,bold] #{username}#{root}@#{hostname}#[fg=$color_purple,bg=default,none] "
|
|
||||||
|
|
||||||
# status left style
|
# status left style
|
||||||
tmux_conf_theme_status_left_fg="$color_bg"
|
tmux_conf_theme_status_left_fg="default"
|
||||||
tmux_conf_theme_status_left_bg="$color_accent"
|
tmux_conf_theme_status_left_bg="default"
|
||||||
tmux_conf_theme_status_left_attr="bold"
|
tmux_conf_theme_status_left_attr="none"
|
||||||
|
|
||||||
|
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized}#{@mode_indicator} | #[fg=$color_fg,bg=default,none] #{?uptime_d,#{uptime_d}d,}#{?uptime_h,#{uptime_h}h,}#{?uptime_m,#{uptime_m}m,} #[fg=$color_gray]│ #[fg=$color_cyan,bg=default,bold] %d %b %H:%M #[fg=$color_gray]│ #[fg=$color_purple,bg=default,bold] #{username}#{root}@#{hostname}"
|
||||||
|
|
||||||
# status right style
|
# status right style
|
||||||
tmux_conf_theme_status_right_fg="$color_red,$color_fg,$color_bg"
|
tmux_conf_theme_status_right_fg="$color_red,$color_fg"
|
||||||
tmux_conf_theme_status_right_bg="default,$color_secondary,$color_purple"
|
tmux_conf_theme_status_right_bg="default,default"
|
||||||
tmux_conf_theme_status_right_attr="bold,none,bold"
|
tmux_conf_theme_status_right_attr="bold,none"
|
||||||
|
|
||||||
# pairing indicator
|
# pairing indicator
|
||||||
tmux_conf_theme_pairing="⚇" # U+2687
|
tmux_conf_theme_pairing="⚇" # U+2687
|
||||||
@@ -352,38 +360,41 @@ tmux_conf_urlscan_options="--compact --dedupe"
|
|||||||
|
|
||||||
# -- user customizations -------------------------------------------------------
|
# -- user customizations -------------------------------------------------------
|
||||||
|
|
||||||
# this is the place to override or undo settings
|
# Source modular configurations
|
||||||
set-option -g detach-on-destroy off
|
source-file "$HOME/dotfiles/tmux/config/settings.conf"
|
||||||
|
source-file "$HOME/dotfiles/tmux/config/keybindings.conf"
|
||||||
|
|
||||||
# increase history size
|
setw -g window-status-separator " #[fg=#484848]• " #!important
|
||||||
set -g history-limit 99999999
|
|
||||||
set status-bg default
|
|
||||||
|
|
||||||
# start with mouse mode enabled
|
# ── Auto-name sessions (emoji + codename) ─────────────────────────────────────
|
||||||
set -g mouse on
|
# Fires on every new session. Skips sessions the user explicitly named.
|
||||||
|
# Script lives in ~/dotfiles/scripts/tmux-session-name.sh
|
||||||
|
# set-hook -g session-created \
|
||||||
|
# 'run-shell "bash $HOME/dotfiles/scripts/tmux-session-name.sh \"#{session_name}\" \"#{session_id}\""'
|
||||||
|
|
||||||
# Allow tmux to understand and pass through color queries
|
# ── Mode indicator (always-on, Neovim-style) ──────────────────────────────────
|
||||||
set -as terminal-overrides ",xterm*:Tc"
|
# NORMAL = working in tmux (default, always visible)
|
||||||
set -as terminal-overrides ",xterm*:RGB"
|
# VISUAL = in copy-mode (prefix + Enter)
|
||||||
|
#
|
||||||
|
# #{@mode_indicator} is a window user-option set via pane-mode-changed hook.
|
||||||
|
# We use -F flag so #{pane_in_mode} is evaluated as a tmux format (1=in mode).
|
||||||
|
# This bypasses oh-my-tmux's awk pipeline which mangles inline #{?...} conditionals.
|
||||||
|
|
||||||
# force Vi mode
|
# Set NORMAL as the default on startup
|
||||||
# really you should export VISUAL or EDITOR environment variable, see manual
|
set-window-option -g @mode_indicator "#[fg=#25be6a,bold] NORMAL "
|
||||||
set -g status-keys vi
|
|
||||||
set -g mode-keys vi
|
|
||||||
|
|
||||||
# replace C-b by C-a instead of using both prefixes
|
# Switch between NORMAL and VISUAL whenever the pane mode changes
|
||||||
set -gu prefix2
|
set-hook -g pane-mode-changed \
|
||||||
unbind C-a
|
'if-shell -F "#{pane_in_mode}" \
|
||||||
unbind C-b
|
"set-window-option -g @mode_indicator \"#[fg=#78a9ff,bold] VISUAL \"" \
|
||||||
set -g prefix C-a
|
"set-window-option -g @mode_indicator \"#[fg=#25be6a,bold] NORMAL \""'
|
||||||
bind C-a send-prefix
|
|
||||||
|
|
||||||
unbind -T copy-mode-vi MouseDragEnd1Pane
|
# ── Per-machine local override (untracked) ────────────────────────────────────
|
||||||
# if you don't want Oh my tmux! to alter a binding, use #!important
|
# Create ~/.tmux.conf.machine.local on each machine for host-specific tweaks
|
||||||
# bind c new-window -c '#{pane_current_path}' #!important
|
# (e.g. different color scheme, right-side content, etc.)
|
||||||
|
if-shell 'test -f ~/.tmux.conf.machine.local' \
|
||||||
|
'source-file ~/.tmux.conf.machine.local'
|
||||||
|
|
||||||
# move status line to top
|
|
||||||
set -g status-position bottom
|
|
||||||
|
|
||||||
# -- tpm -----------------------------------------------------------------------
|
# -- tpm -----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -427,28 +438,6 @@ set -g @plugin 'tmux-plugins/tmux-resurrect'
|
|||||||
#set -g @continuum-restore 'on'
|
#set -g @continuum-restore 'on'
|
||||||
set -g @plugin 'tmux-plugins/tmux-logging'
|
set -g @plugin 'tmux-plugins/tmux-logging'
|
||||||
|
|
||||||
# switch windows alt+number
|
|
||||||
bind-key -n M-1 select-window -t 1
|
|
||||||
bind-key -n M-2 select-window -t 2
|
|
||||||
bind-key -n M-3 select-window -t 3
|
|
||||||
bind-key -n M-4 select-window -t 4
|
|
||||||
bind-key -n M-5 select-window -t 5
|
|
||||||
bind-key -n M-6 select-window -t 6
|
|
||||||
bind-key -n M-7 select-window -t 7
|
|
||||||
bind-key -n M-8 select-window -t 8
|
|
||||||
bind-key -n M-9 select-window -t 9
|
|
||||||
# Toggle popup window with Ctrl+
|
|
||||||
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
|
|
||||||
detach-client
|
|
||||||
} {
|
|
||||||
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
|
|
||||||
}
|
|
||||||
bind-key -n M-f "tmux-sessionizer\n"
|
|
||||||
|
|
||||||
# Set alignment
|
|
||||||
set -g status-justify left
|
|
||||||
# set -g status-style fg=default,bg=default
|
|
||||||
# set mode-style "fg=black,bg=default"
|
|
||||||
# -- custom variables ----------------------------------------------------------
|
# -- custom variables ----------------------------------------------------------
|
||||||
|
|
||||||
# to define a custom #{foo} variable, define a POSIX shell function between the
|
# to define a custom #{foo} variable, define a POSIX shell function between the
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# TMUX KEYBINDINGS
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Prefix key override: change from C-b to C-a
|
||||||
|
set -gu prefix2
|
||||||
|
unbind C-a
|
||||||
|
unbind C-b
|
||||||
|
set -g prefix C-a
|
||||||
|
bind C-a send-prefix
|
||||||
|
|
||||||
|
# Fast window switching with Alt + Number
|
||||||
|
bind-key -n M-1 select-window -t 1
|
||||||
|
bind-key -n M-2 select-window -t 2
|
||||||
|
bind-key -n M-3 select-window -t 3
|
||||||
|
bind-key -n M-4 select-window -t 4
|
||||||
|
bind-key -n M-5 select-window -t 5
|
||||||
|
bind-key -n M-6 select-window -t 6
|
||||||
|
bind-key -n M-7 select-window -t 7
|
||||||
|
bind-key -n M-8 select-window -t 8
|
||||||
|
bind-key -n M-9 select-window -t 9
|
||||||
|
|
||||||
|
# Toggle centered popup scratch terminal with Alt + p
|
||||||
|
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
|
||||||
|
detach-client
|
||||||
|
} {
|
||||||
|
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run tmux-sessionizer with Alt + f
|
||||||
|
bind-key -n M-f send-keys "tmux-sessionizer\n"
|
||||||
|
|
||||||
|
# Sleek centered FZF popup search overlays (requires fzf)
|
||||||
|
# Alt-s: Fuzzy search and switch sessions in popup
|
||||||
|
bind-key -n M-s display-popup -w 65% -h 50% -E "tmux list-sessions | fzf --reverse --header='Jump to Session' | cut -d: -f1 | xargs tmux switch-client -t"
|
||||||
|
|
||||||
|
# Alt-w: Fuzzy search and switch windows in popup
|
||||||
|
bind-key -n M-w display-popup -w 75% -h 60% -E "tmux list-windows -a -F '#{session_name}:#{window_index} - #{window_name}' | fzf --reverse --header='Jump to Window' | cut -d' ' -f1 | xargs tmux select-window -t"
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# COPY MODE (VI MODE) & INSTANT STATUS REDRAW
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Force immediate status redraw when entering copy mode
|
||||||
|
bind-key [ copy-mode \; refresh-client -S
|
||||||
|
|
||||||
|
# vi-copy navigation and selection bindings with instant status bar update
|
||||||
|
bind-key -T copy-mode-vi v send-keys -X begin-selection \; refresh-client -S
|
||||||
|
bind-key -T copy-mode-vi V send-keys -X select-line \; refresh-client -S
|
||||||
|
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle \; refresh-client -S
|
||||||
|
bind-key -T copy-mode-vi q send-keys -X cancel \; refresh-client -S
|
||||||
|
bind-key -T copy-mode-vi Escape send-keys -X cancel \; refresh-client -S
|
||||||
|
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel \; refresh-client -S
|
||||||
|
|
||||||
|
# Mouse Drag Selection: copy to clipboard and redraw instantly without leaving copy-mode
|
||||||
|
unbind -T copy-mode-vi MouseDragEnd1Pane
|
||||||
|
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection-and-cancel \; refresh-client -S
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# PANE NAVIGATION & RESIZING OVERRIDES (NO PREFIX)
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Resize panes using Shift + Arrow keys
|
||||||
|
bind -n S-Left resize-pane -L 2
|
||||||
|
bind -n S-Right resize-pane -R 2
|
||||||
|
bind -n S-Up resize-pane -U 2
|
||||||
|
bind -n S-Down resize-pane -D 2
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# TMUX GENERAL SETTINGS
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Detach behavior: keep tmux alive when closing the last window/pane in a session
|
||||||
|
set-option -g detach-on-destroy off
|
||||||
|
|
||||||
|
# Increase scrollback history limit
|
||||||
|
set -g history-limit 99999999
|
||||||
|
|
||||||
|
# Enable mouse mode (scrolling, selecting, pane resizing)
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
# Terminal colors and overrides: pass through truecolor support
|
||||||
|
set -as terminal-overrides ",xterm*:Tc"
|
||||||
|
set -as terminal-overrides ",xterm*:RGB"
|
||||||
|
set -as terminal-overrides ",alacritty:Tc"
|
||||||
|
set -as terminal-overrides ",kitty:Tc"
|
||||||
|
set -as terminal-overrides ",wezterm:Tc"
|
||||||
|
|
||||||
|
# Force VI mode for command status line and pane navigation/copy mode
|
||||||
|
set -g status-keys vi
|
||||||
|
set -g mode-keys vi
|
||||||
|
|
||||||
|
# Keep the status line positioned at the bottom
|
||||||
|
set -g status-position bottom
|
||||||
|
|
||||||
|
# Left-justify the window list and set a subtle dot separator between windows
|
||||||
|
set -g status-justify left
|
||||||
|
setw -g window-status-separator " #[fg=#484848]• "
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# PANE STYLING & BORDER STATUS LINE
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Custom pane border colors
|
||||||
|
set -g pane-border-style "fg=#353535,bg=default"
|
||||||
|
set -g pane-active-border-style "fg=#78a9ff,bg=default"
|
||||||
|
|
||||||
|
# Disable status line on the pane borders
|
||||||
|
set -g pane-border-status off
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# POPUP WINDOW STYLING
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Make popups transparent
|
||||||
|
set -g popup-style "bg=default"
|
||||||
|
set -g popup-border-style "fg=#353535,bg=default"
|
||||||
+18
-10
@@ -103,18 +103,26 @@ fi
|
|||||||
# alias zshconfig="mate ~/.zshrc"
|
# alias zshconfig="mate ~/.zshrc"
|
||||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||||
|
|
||||||
export PATH="/Users/jsarthak/flutter-sdk/flutter/bin:$PATH"
|
|
||||||
|
|
||||||
source <(fzf --zsh)
|
# ── Shared shell config ────────────────────────────────────────────────────────────────
|
||||||
|
[[ -f ~/.config/shell/common ]] && source ~/.config/shell/common
|
||||||
# Added by Antigravity
|
[[ -f ~/.config/shell/personal ]] && source ~/.config/shell/personal
|
||||||
export PATH="/Users/jsarthak/.antigravity/antigravity/bin:$PATH"
|
[[ -f ~/.config/shell/aliases ]] && source ~/.config/shell/aliases
|
||||||
export PATH="/Users/jsarthak/flutter-sdk/flutter/bin:$PATH"
|
|
||||||
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
|
|
||||||
source ~/.config/shell/common
|
|
||||||
source ~/.config/shell/personal
|
|
||||||
source ~/.config/shell/aliases
|
|
||||||
|
|
||||||
MANPAGER="col -b | cat"
|
MANPAGER="col -b | cat"
|
||||||
MANROFFOPT="-P-c"
|
MANROFFOPT="-P-c"
|
||||||
eval "$(zoxide init zsh)"
|
eval "$(zoxide init zsh)"
|
||||||
|
|
||||||
|
# ── Strategy 1: Dynamic Runtime Sourcing ─────────────────────────────────────────
|
||||||
|
# Detect OS and source the matching platform overlay.
|
||||||
|
# macos → shell/.config/shell/macos (Homebrew, Flutter, fzf, Antigravity)
|
||||||
|
# linux → shell/.config/shell/linux (xdg-open, xclip, fzf)
|
||||||
|
case "$(uname -s)" in
|
||||||
|
Darwin) [[ -f ~/.config/shell/macos ]] && source ~/.config/shell/macos ;;
|
||||||
|
Linux) [[ -f ~/.config/shell/linux ]] && source ~/.config/shell/linux ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# ── Per-machine local override (untracked) ──────────────────────────────────
|
||||||
|
# Create ~/.zshrc.local on each machine for secrets / profile sourcing.
|
||||||
|
# On work machines: export DOTFILES_PROFILE=work && source ~/.config/shell/work
|
||||||
|
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
|
||||||
|
|||||||
Reference in New Issue
Block a user