Updated dotfiles
This commit is contained in:
parent
b13376dc1b
commit
322358755f
7 changed files with 298 additions and 225 deletions
60
.gitignore
vendored
Normal file
60
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
# API Keys and Secrets (MOST IMPORTANT)
|
||||||
|
opencode/.config/opencode/.mcp.json
|
||||||
|
opencode/*
|
||||||
|
**/REDACTED*
|
||||||
|
**/*secret*
|
||||||
|
**/*key*
|
||||||
|
**/*token*
|
||||||
|
**/*auth*
|
||||||
|
**/*password*
|
||||||
|
|
||||||
|
# Personal/Machine-specific Files
|
||||||
|
ulauncher/.config/ulauncher/ext_preferences/*.db
|
||||||
|
**/*.bak
|
||||||
|
**/*.backup
|
||||||
|
|
||||||
|
# Cache and Temporary Files
|
||||||
|
**/.cache/
|
||||||
|
**/cache/
|
||||||
|
**/*.log
|
||||||
|
**/*.tmp
|
||||||
|
**/*.temp
|
||||||
|
|
||||||
|
# Git hooks (contain samples)
|
||||||
|
.git/hooks/
|
||||||
|
|
||||||
|
# OS and Editor Files
|
||||||
|
.DS_Store
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
**/*~
|
||||||
|
**/*.swp
|
||||||
|
**/*.swo
|
||||||
|
|
||||||
|
# Personal History Files
|
||||||
|
**/*history*
|
||||||
|
|
||||||
|
# Email privacy (git config)
|
||||||
|
**/user.email*
|
||||||
|
**/*@*
|
||||||
|
|
||||||
|
# Runtime and state files
|
||||||
|
**/*.pid
|
||||||
|
**/*.state
|
||||||
|
**/node_modules/
|
||||||
|
**/.env*
|
||||||
|
|
||||||
|
# Espanso - text expansion (may contain passwords, API keys, personal snippets)
|
||||||
|
espanso/
|
||||||
|
.config/espanso/
|
||||||
|
|
||||||
|
# OpenCode - personal AI setup (may contain sensitive prompts/configs)
|
||||||
|
opencode/
|
||||||
|
.config/opencode/
|
||||||
|
|
||||||
|
# Prismus
|
||||||
|
prismis/
|
||||||
|
.config/prismis/
|
||||||
|
|
||||||
|
# Git config (contains personal email/name)
|
||||||
|
git/
|
||||||
49
README.md
Normal file
49
README.md
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Dotfiles Repository
|
||||||
|
|
||||||
|
This repository contains a collection of
|
||||||
|
configuration files for various tools and
|
||||||
|
applications. These dotfiles can be easily deployed
|
||||||
|
using GNU Stow for managing symbolic links to the
|
||||||
|
configuration files.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Deploying Dotfiles with GNU Stow
|
||||||
|
|
||||||
|
1. Clone the repository to your local machine:
|
||||||
|
```bash
|
||||||
|
git clone <repository_url>
|
||||||
|
|
||||||
|
2. Navigate to the cloned repository:
|
||||||
|
cd dotfiles
|
||||||
|
|
||||||
|
3. Use GNU Stow to deploy specific configuration
|
||||||
|
files. For example, to deploy the Bash configuration:
|
||||||
|
stow bash
|
||||||
|
|
||||||
|
4. Repeat the stow command for each tool or
|
||||||
|
application you want to deploy configurations for.
|
||||||
|
|
||||||
|
### Additional Instructions
|
||||||
|
|
||||||
|
• Ensure that GNU Stow is installed on your system
|
||||||
|
before deploying the dotfiles.
|
||||||
|
• Customize the configurations as needed before
|
||||||
|
deploying them.
|
||||||
|
• Make sure to back up any existing configuration
|
||||||
|
files that might be overwritten during deployment.
|
||||||
|
|
||||||
|
## Tools Included
|
||||||
|
|
||||||
|
• Alacritty
|
||||||
|
• Bash
|
||||||
|
• Bat
|
||||||
|
• Espanso
|
||||||
|
• Git
|
||||||
|
• Helix
|
||||||
|
• Omp
|
||||||
|
• Procs
|
||||||
|
• Tmux
|
||||||
|
• Ulauncher
|
||||||
|
• Yazi
|
||||||
|
• Zsh
|
||||||
|
|
@ -1,175 +0,0 @@
|
||||||
# espanso match file
|
|
||||||
|
|
||||||
# For a complete introduction, visit the official docs at: https://espanso.org/docs/
|
|
||||||
|
|
||||||
# You can use this file to define the base matches (aka snippets)
|
|
||||||
# that will be available in every application when using espanso.
|
|
||||||
|
|
||||||
# Matches are substitution rules: when you type the "trigger" string
|
|
||||||
# it gets replaced by the "replace" string.
|
|
||||||
|
|
||||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/espanso/espanso/dev/schemas/match.schema.json
|
|
||||||
|
|
||||||
matches:
|
|
||||||
# Simple text replacement
|
|
||||||
- trigger: ":espanso"
|
|
||||||
replace: "Hi there!"
|
|
||||||
|
|
||||||
# NOTE: espanso uses YAML to define matches, so pay attention to the indentation!
|
|
||||||
|
|
||||||
# But matches can also be dynamic:
|
|
||||||
|
|
||||||
# Print the current date
|
|
||||||
- trigger: ":date"
|
|
||||||
replace: "{{mydate}}"
|
|
||||||
vars:
|
|
||||||
- name: mydate
|
|
||||||
type: date
|
|
||||||
params:
|
|
||||||
format: "%m/%d/%Y"
|
|
||||||
|
|
||||||
- trigger: ":dt"
|
|
||||||
replace: "{{date}} {{time}}"
|
|
||||||
vars:
|
|
||||||
- name: date
|
|
||||||
type: date
|
|
||||||
params:
|
|
||||||
format: "%m/%d/%Y"
|
|
||||||
- name: time
|
|
||||||
type: time
|
|
||||||
params:
|
|
||||||
format: "%H:%M:%S"
|
|
||||||
|
|
||||||
# Print the output of a shell command
|
|
||||||
- trigger: ":shell"
|
|
||||||
replace: "{{output}}"
|
|
||||||
vars:
|
|
||||||
- name: output
|
|
||||||
type: shell
|
|
||||||
params:
|
|
||||||
cmd: "echo 'Hello from your shell'"
|
|
||||||
|
|
||||||
- trigger: :trigger
|
|
||||||
replace: |
|
|
||||||
- trigger: test
|
|
||||||
replace: test
|
|
||||||
|
|
||||||
- trigger: :test
|
|
||||||
replace: >
|
|
||||||
This is an example
|
|
||||||
of how to use a multi-
|
|
||||||
line example of :test
|
|
||||||
|
|
||||||
- trigger: ":easy"
|
|
||||||
replace: "This is easy!"
|
|
||||||
|
|
||||||
- trigger: :sno
|
|
||||||
replace: |
|
|
||||||
# Title
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
/code
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
/code
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
- trigger: :tfi
|
|
||||||
replace: |
|
|
||||||
---
|
|
||||||
solved:
|
|
||||||
bonus_flag:
|
|
||||||
flag:
|
|
||||||
link:
|
|
||||||
---
|
|
||||||
|
|
||||||
We find the link in Chapter 4 of the comic:
|
|
||||||
|
|
||||||
https://tficomic.io/
|
|
||||||
|
|
||||||
We visit the link (which expands to: ) and we get the bonus flag:
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
And the real challenge is:
|
|
||||||
|
|
||||||
"
|
|
||||||
|
|
||||||
"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
And we get the flag:
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
- trigger: :meat
|
|
||||||
replace: 🥩
|
|
||||||
search_terms:
|
|
||||||
- steak
|
|
||||||
- t-bone
|
|
||||||
|
|
||||||
- regex: ";no.spons\\((?P<product>.*)\\)"
|
|
||||||
replace: |
|
|
||||||
Hi there,
|
|
||||||
Thanks for reaching out! However, I don't believe {{product}} is a good fit for my audience at this point, and my ethics statement (https://nicolevanderhoeven.com/ethics/), as well as my limited time, prohibits me from accpting most opportunities. I hope you understand!
|
|
||||||
|
|
||||||
I wish you the best of luck in finding someone who is a better fit.
|
|
||||||
|
|
||||||
Thank you,
|
|
||||||
Nicole
|
|
||||||
|
|
||||||
- trigger: ":uuid"
|
|
||||||
replace: "{{uuid}}"
|
|
||||||
vars:
|
|
||||||
- name: uuid
|
|
||||||
type: shell
|
|
||||||
params:
|
|
||||||
cmd: "uuidgen"
|
|
||||||
|
|
||||||
- trigger: ":now"
|
|
||||||
replace: "{{now}}"
|
|
||||||
vars:
|
|
||||||
- name: now
|
|
||||||
type: date
|
|
||||||
params:
|
|
||||||
format: "%Y-%m-%d %H:%M"
|
|
||||||
|
|
||||||
- trigger: ":clip-clean"
|
|
||||||
replace: "{{clip | replace('\n', ' ')}}"
|
|
||||||
vars:
|
|
||||||
- name: clip
|
|
||||||
type: shell
|
|
||||||
params:
|
|
||||||
cmd: "xclip -o -selection clipboard"
|
|
||||||
|
|
||||||
- trigger: ":randnum"
|
|
||||||
replace: "{{rand}}"
|
|
||||||
vars:
|
|
||||||
- name: rand
|
|
||||||
type: shell
|
|
||||||
params:
|
|
||||||
cmd: "shuf -i 1000-9999 -n 1"
|
|
||||||
|
|
||||||
- trigger: ":logentry"
|
|
||||||
replace: |
|
|
||||||
## Log - :now
|
|
||||||
**What happened:**
|
|
||||||
-
|
|
||||||
**Next actions:**
|
|
||||||
-
|
|
||||||
|
|
||||||
vars:
|
|
||||||
- name: now
|
|
||||||
type: date
|
|
||||||
params:
|
|
||||||
format: "%Y-%m-%d %H:%M"
|
|
||||||
|
|
||||||
|
|
||||||
# And much more! For more information, visit the docs: https://espanso.org/docs/
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[user]
|
|
||||||
name = rpriven
|
|
||||||
email = rob.pratt@tutanota.com
|
|
||||||
[init]
|
|
||||||
defaultBranch = main
|
|
||||||
|
|
||||||
[core]
|
|
||||||
editor = nvim
|
|
||||||
[alias]
|
|
||||||
co = checkout
|
|
||||||
lg = log --all --graph --format=oneline
|
|
||||||
161
zsh/.aliases
161
zsh/.aliases
|
|
@ -1,16 +1,19 @@
|
||||||
# ~/dotfiles/aliases.sh
|
# ~/dotfiles/aliases.sh
|
||||||
|
|
||||||
|
# ---- PAI Commands -----
|
||||||
|
alias cmd='bun ~/.claude/commands/cmd.ts'
|
||||||
|
|
||||||
# ---- Fabric -----
|
# ---- Fabric -----
|
||||||
|
|
||||||
yt() {
|
yt() {
|
||||||
if [ "$#" -eq 0 ] || [ "$#" -gt 2 ]; then
|
if [[ "$#" -eq 0 ]] || [[ "$#" -gt 2 ]]; then
|
||||||
echo "Usage: yt [-t | --timestamps] youtube-link"
|
echo "Usage: yt [[-t | --timestamps]] youtube-link"
|
||||||
echo "Use the '-t' flag to get the transcript with timestamps."
|
echo "Use the '-t' flag to get the transcript with timestamps."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
transcript_flag="--transcript"
|
transcript_flag="--transcript"
|
||||||
if [ "$1" = "-t" ] || [ "$1" = "--timestamps" ]; then
|
if [[ "$1" = "-t" ]] || [[ "$1" = "--timestamps" ]]; then
|
||||||
transcript_flag="--transcript-with-timestamps"
|
transcript_flag="--transcript-with-timestamps"
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
@ -18,7 +21,7 @@ yt() {
|
||||||
fabric -y "$video_link" $transcript_flag
|
fabric -y "$video_link" $transcript_flag
|
||||||
}
|
}
|
||||||
|
|
||||||
for pattern_file in $HOME/.config/fabric/patterns/*; do
|
for pattern_file in "$HOME"/.config/fabric/patterns/*; do
|
||||||
# Get the base name of the file (i.e., remove the directory path)
|
# Get the base name of the file (i.e., remove the directory path)
|
||||||
pattern_name=$(basename "$pattern_file")
|
pattern_name=$(basename "$pattern_file")
|
||||||
# Create an alias in the form: alias pattern_name="fabric --pattern pattern_name"
|
# Create an alias in the form: alias pattern_name="fabric --pattern pattern_name"
|
||||||
|
|
@ -27,6 +30,48 @@ for pattern_file in $HOME/.config/fabric/patterns/*; do
|
||||||
eval "$alias_command"
|
eval "$alias_command"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# --- OpenCode ---
|
||||||
|
|
||||||
|
ide() {
|
||||||
|
local project="${1:-$(pwd)}" # directory to open, pwd if not specified
|
||||||
|
local editor="${2:-hx}" # default helix
|
||||||
|
local win_name="ide"
|
||||||
|
|
||||||
|
if [[ -n "$TMUX" ]]; then
|
||||||
|
tmux new-window -n "$win_name" -c "$project"
|
||||||
|
|
||||||
|
# Left pane: opencode
|
||||||
|
tmux select-pane -t 0
|
||||||
|
tmux send-keys "opencode" C-m
|
||||||
|
|
||||||
|
# Split right: right side gets 75%, left remains 25%
|
||||||
|
tmux split-window -h -p 75 -c "$project" # pane 1 (right)
|
||||||
|
tmux send-keys "$editor \"$project\"" C-m
|
||||||
|
|
||||||
|
# Now on right side, split horizontally for bottom editor (~25%)
|
||||||
|
tmux select-pane -t 1
|
||||||
|
|
||||||
|
# Bottom-right: editor
|
||||||
|
tmux select-pane -t 2
|
||||||
|
tmux split-window -v -p 25 -c "$project" # pane 2 (bottom-right)
|
||||||
|
|
||||||
|
# Focus back on top-right (main terminal)
|
||||||
|
tmux select-pane -t 1
|
||||||
|
else
|
||||||
|
tmux new-session -s "$win_name" -n main -d -c "$project"
|
||||||
|
tmux split-window -h -p 75 -c "$project"
|
||||||
|
tmux select-pane -t 0
|
||||||
|
tmux send-keys "opencode" C-m
|
||||||
|
tmux select-pane -t 1
|
||||||
|
tmux split-window -v -p 25 -c "$project"
|
||||||
|
tmux select-pane -t 2
|
||||||
|
tmux send-keys "$editor \"$project\"" C-m
|
||||||
|
tmux select-pane -t 1
|
||||||
|
tmux attach -t "$win_name"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# TMUX-RECON Aliases
|
# TMUX-RECON Aliases
|
||||||
|
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
|
|
@ -49,12 +94,16 @@ fi
|
||||||
alias a='~/arsenal/run -t'
|
alias a='~/arsenal/run -t'
|
||||||
alias any='~/AnythingLLMDesktop/start'
|
alias any='~/AnythingLLMDesktop/start'
|
||||||
alias c='clear'
|
alias c='clear'
|
||||||
|
cpy() {
|
||||||
|
cat "$1" | pbcopy
|
||||||
|
}
|
||||||
alias d='docker'
|
alias d='docker'
|
||||||
alias dc='docker-compose'
|
alias dc='docker-compose'
|
||||||
# alias h='history'
|
# alias h='history'
|
||||||
f() {
|
alias f='fabric'
|
||||||
fd $1 -exec bat {} +
|
#f() {
|
||||||
}
|
# fd "$1" -exec bat {} +
|
||||||
|
#}
|
||||||
alias i='sudo apt install'
|
alias i='sudo apt install'
|
||||||
alias j='journalctl -f'
|
alias j='journalctl -f'
|
||||||
alias jj='pbpaste | jsonpp | pbcopy'
|
alias jj='pbpaste | jsonpp | pbcopy'
|
||||||
|
|
@ -62,7 +111,11 @@ alias jjj='pbpaste | jsonpp'
|
||||||
alias k='kill $(ps aux | fzf | awk '\''{print $2}'\'')'
|
alias k='kill $(ps aux | fzf | awk '\''{print $2}'\'')'
|
||||||
# alias k9='kill -9 **'
|
# alias k9='kill -9 **'
|
||||||
alias nf='fzf -m --preview="bat --color=always --style=numbers --line-range:300 {}" --bind "enter:become(hx {+})"'
|
alias nf='fzf -m --preview="bat --color=always --style=numbers --line-range:300 {}" --bind "enter:become(hx {+})"'
|
||||||
|
alias oc='opencode'
|
||||||
alias p='parallel'
|
alias p='parallel'
|
||||||
|
|
||||||
|
alias rec='parecord --device=alsa_output.pci-0000_00_1f.3.analog-stereo.monitor \
|
||||||
|
--file-format=wav ~/recordings/meeting-$(date +%Y%m%d-%H%M%S).wav'
|
||||||
alias rm='rm -I'
|
alias rm='rm -I'
|
||||||
|
|
||||||
if [[ -n "$ZSH_VERSION" ]]; then
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
|
|
@ -75,7 +128,7 @@ alias ta='tmux attach -t'
|
||||||
alias trim="awk '{\$1=\$1;print}'"
|
alias trim="awk '{\$1=\$1;print}'"
|
||||||
alias up='sudo apt update && sudo apt upgrade -y'
|
alias up='sudo apt update && sudo apt upgrade -y'
|
||||||
alias v='fd --type f --hidden --exclude .git | fzf-tmux -p --reverse | xargs hx'
|
alias v='fd --type f --hidden --exclude .git | fzf-tmux -p --reverse | xargs hx'
|
||||||
alias vp='fd --type f --hidden --exclude .git | fzf --preview "bat {1} --color=always --style=numbers" | xargs hx'
|
alias vp='fd --type f --hidden --exclude .git | fzf --preview "bat {} --color=always --style=numbers" | xargs hx'
|
||||||
alias vv='hx $(fzf --preview="bat {} --color=always")'
|
alias vv='hx $(fzf --preview="bat {} --color=always")'
|
||||||
alias gr='glow $(fzf --preview="bat {} --color=always")'
|
alias gr='glow $(fzf --preview="bat {} --color=always")'
|
||||||
alias xx='exit'
|
alias xx='exit'
|
||||||
|
|
@ -93,18 +146,26 @@ alias yy='yazi'
|
||||||
# alias cdi='zoxide query -i'
|
# alias cdi='zoxide query -i'
|
||||||
|
|
||||||
function take {
|
function take {
|
||||||
mkdir -p $1
|
mkdir -p "$1"
|
||||||
cd $1
|
cd "$1" || exit
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
# File & Disk Utilities
|
# File & Disk Utilities
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
|
|
||||||
alias batclip='bat $1 | xclip'
|
# Unalias potential conflicts
|
||||||
|
unalias batclip 2>/dev/null
|
||||||
|
unalias dl 2>/dev/null
|
||||||
|
|
||||||
|
batclip() {
|
||||||
|
bat "$1" | xclip
|
||||||
|
}
|
||||||
alias du='dust'
|
alias du='dust'
|
||||||
alias dfh='gdu -dn'
|
alias dfh='gdu -dn'
|
||||||
alias dl='yt-dlp -f best $1'
|
dl() {
|
||||||
|
yt-dlp -f best "$1"
|
||||||
|
}
|
||||||
|
|
||||||
if [[ -n "$ZSH_VERSION" ]]; then
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
alias reload='source ~/.zshrc'
|
alias reload='source ~/.zshrc'
|
||||||
|
|
@ -114,7 +175,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
tailb() {
|
tailb() {
|
||||||
tail -f $1 | bat --paging=never -l log
|
tail -f "$1" | bat --paging=never -l log
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -126,7 +187,7 @@ tailb() {
|
||||||
# f() { cd "$(find . -type d | fzf)" }
|
# f() { cd "$(find . -type d | fzf)" }
|
||||||
alias fzf="fzf --preview 'bat --color=always {}'"
|
alias fzf="fzf --preview 'bat --color=always {}'"
|
||||||
# alias fzf="fzf --height 40% --layout reverse --border --preview 'bat --color=always {}' --preview-window '~3'"
|
# alias fzf="fzf --height 40% --layout reverse --border --preview 'bat --color=always {}' --preview-window '~3'"
|
||||||
alias ff='find * -type f | fzf'
|
alias ff='find * -type f | fzf --preview "bat --color=always {}"'
|
||||||
# alias fd='fdfind' # Debian compatibility
|
# alias fd='fdfind' # Debian compatibility
|
||||||
|
|
||||||
# Press F1 to open the file with less without leaving fzf
|
# Press F1 to open the file with less without leaving fzf
|
||||||
|
|
@ -139,9 +200,9 @@ alias psf="ps -ef |
|
||||||
--height=50% --layout=reverse"
|
--height=50% --layout=reverse"
|
||||||
|
|
||||||
# List all commands or search through them
|
# List all commands or search through them
|
||||||
if [ -n "$ZSH_VERSION" ]; then
|
if [[ -n "$ZSH_VERSION" ]]; then
|
||||||
alias findcmd='command -v | fzf --prompt="Search command: "'
|
alias findcmd='print -l ${(k)commands} | fzf --prompt="Search command: "'
|
||||||
elif [ -n "$BASH_VERSION" ]; then
|
elif [[ -n "$BASH_VERSION" ]]; then
|
||||||
alias findcmd='compgen -c | sort -u | fzf --prompt="Search command: "'
|
alias findcmd='compgen -c | sort -u | fzf --prompt="Search command: "'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -166,9 +227,9 @@ alias tb='task burndown.daily'
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
|
|
||||||
note() {
|
note() {
|
||||||
echo "date: $(date)" >> $HOME/drafts.txt
|
echo "date: $(date)" >> "$HOME"/drafts.txt
|
||||||
echo "$@" >> $HOME/drafts.txt
|
echo "$@" >> "$HOME"/drafts.txt
|
||||||
echo "" >> $HOME/drafts.txt
|
echo "" >> "$HOME"/drafts.txt
|
||||||
}
|
}
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
|
|
@ -179,6 +240,11 @@ help() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mdstrip() {
|
||||||
|
sed -i 's/\\n/\n/g' "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# help() {
|
# help() {
|
||||||
# "$@" --help 2>&1 | bat --plain --language=txt
|
# "$@" --help 2>&1 | bat --plain --language=txt
|
||||||
# }
|
# }
|
||||||
|
|
@ -228,18 +294,19 @@ fi
|
||||||
|
|
||||||
if command -v rg &> /dev/null; then
|
if command -v rg &> /dev/null; then
|
||||||
alias rg='rg --smart-case'
|
alias rg='rg --smart-case'
|
||||||
alias rgl='rg --files | fzf'
|
alias rgl='rg --files | fzf --preview "bat --color=always {}"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v ag &> /dev/null; then
|
if command -v ag &> /dev/null; then
|
||||||
alias ags='ag --smart-case'
|
alias ags='ag --smart-case'
|
||||||
alias agf='ag -l | fzf'
|
alias agf='ag -l | fzf --preview "bat --color=always {}"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Smart history with atuin (fallback to fzf if not available)
|
||||||
if command -v atuin &> /dev/null; then
|
if command -v atuin &> /dev/null; then
|
||||||
alias h='atuin'
|
alias h='atuin search --interactive'
|
||||||
else
|
else
|
||||||
alias h='history | fzf'
|
alias h='history | fzf --preview "echo {}" --preview-window="up:3:wrap"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Python as 'py' and pip
|
# Python as 'py' and pip
|
||||||
|
|
@ -285,3 +352,49 @@ copy-line() {
|
||||||
open-at-line() {
|
open-at-line() {
|
||||||
hx $(rg --line-number . | fzf --delimiter ':' --preview 'bat --color=always --highlight-line {2} {1}' | awk -F ':' '{print "+"$2" "$1}')
|
hx $(rg --line-number . | fzf --delimiter ':' --preview 'bat --color=always --highlight-line {2} {1}' | awk -F ':' '{print "+"$2" "$1}')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# PAI Context Manager
|
||||||
|
alias cm="~/.claude/commands/context-manager.sh"
|
||||||
|
alias cms="~/.claude/commands/context-manager.sh search"
|
||||||
|
alias cmr="~/.claude/commands/context-manager.sh recent"
|
||||||
|
alias cmn="~/.claude/commands/context-manager.sh new"
|
||||||
|
alias cmt="~/.claude/commands/context-manager.sh tree"
|
||||||
|
|
||||||
|
# Enhanced fzf file operations with better previews
|
||||||
|
alias fzfg='rg --line-number --color=always . | fzf --ansi --delimiter ":" --preview "bat --color=always --highlight-line {2} {1}" --bind "enter:execute(hx +{2} {1})"'
|
||||||
|
alias fzfd='fd --type d | fzf --preview "eza --tree --level=2 --color=always {} 2>/dev/null || tree -L 2 -C {}"'
|
||||||
|
|
||||||
|
# Better process management
|
||||||
|
alias psg='ps aux | fzf --header-lines=1 --preview "echo {}" --preview-window=up:1'
|
||||||
|
|
||||||
|
# Enhanced git fzf integration
|
||||||
|
alias gfzf='git log --oneline --color=always | fzf --ansi --preview "git show --color=always {1}" --bind "enter:execute(git show {1} | less -R)"'
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# N8N API Helper
|
||||||
|
# --------------------------------------
|
||||||
|
# Requires N8N_API_KEY and N8N_BASE_URL in ~/.env
|
||||||
|
n8n_api() {
|
||||||
|
source ~/.env
|
||||||
|
local endpoint="${1:-/workflows}"
|
||||||
|
shift
|
||||||
|
curl -s -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
|
||||||
|
"${N8N_BASE_URL}/api/v1${endpoint}" \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# Baserow API Helper
|
||||||
|
# --------------------------------------
|
||||||
|
# Requires BASEROW_API_KEY and BASEROW_TABLE_ID in ~/.env
|
||||||
|
# Baserow is on localhost:3000 via SSH tunnel
|
||||||
|
baserow_api() {
|
||||||
|
source ~/.env
|
||||||
|
local endpoint="${1:-database/rows/table/${BASEROW_CONTACTS_TABLE_ID}/}"
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
curl -s -H "Authorization: Token ${BASEROW_API_KEY}" \
|
||||||
|
"http://baserow:3000/api/${endpoint}" \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
|
||||||
30
zsh/.exports
30
zsh/.exports
|
|
@ -1,28 +1,36 @@
|
||||||
# .exports dotfile
|
# .exports dotfile
|
||||||
export EDITOR="${EDITOR:-hx}"
|
export EDITOR="${EDITOR:-hx}"
|
||||||
export PAGER="${PAGER:-most}"
|
export PAGER="${PAGER:-most}"
|
||||||
|
|
||||||
|
# PAI3 Personal AI Infrastructure
|
||||||
|
export PAI_HOME="/home/e"
|
||||||
|
export PATH=$PATH:"$HOME/.claude"
|
||||||
|
export PATH=$PATH:"$HOME/.claude/commands"
|
||||||
|
# export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -lman'"\nman 2 select
|
||||||
export BROWSER="${BROWSER:-brave}"
|
export BROWSER="${BROWSER:-brave}"
|
||||||
export LANG=en_US.UTF-8 # avoid locale issues
|
export LANG=en_US.UTF-8 # avoid locale issues
|
||||||
export LC_ALL=en_US.UTF-8
|
export LC_ALL=en_US.UTF-8
|
||||||
export GOROOT="/usr/local/go"
|
export GOROOT="/usr/local/go"
|
||||||
export GOPATH="$HOME/go"
|
export GOPATH="$HOME/go"
|
||||||
export PATH=$PATH:$GOROOT/bin
|
export PATH=$PATH:$GOROOT/bin
|
||||||
|
# export STOW_DIR="$HOME/.config"
|
||||||
|
|
||||||
# --- fzf ---
|
# --- fzf ---
|
||||||
# export FZF_DEFAULT_COMMAND='find . -type f' \
|
# Optimized fzf settings
|
||||||
# fzf --bind 'ctrl-d:reload(find . -type d),ctrl-f:reload(eval "$FZF_DEFAULT_COMMAND")' \
|
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
||||||
# --height=50% --layout=reverse
|
export FZF_DEFAULT_OPTS='--height 60% --layout=reverse --border --inline-info --preview-window=right:60%'
|
||||||
|
|
||||||
# Preview file content using bat (https://github.com/sharkdp/bat)
|
# Better file search with bat preview
|
||||||
# export FZF_CTRL_T_OPTS="
|
export FZF_CTRL_T_OPTS="
|
||||||
# --walker-skip .git,node_modules,target
|
--walker-skip .git,node_modules,target
|
||||||
# --preview 'bat -n --color=always {}'
|
--preview 'bat -n --color=always {}'
|
||||||
# --bind 'ctrl-/:change-preview-window(down|hidden|)'"
|
--bind 'ctrl-/:change-preview-window(down|hidden|)'"
|
||||||
|
|
||||||
# CTRL-Y to copy the command into clipboard using pbcopy
|
# CTRL-Y to copy the command into clipboard using pbcopy
|
||||||
# export FZF_CTRL_R_OPTS="
|
export FZF_CTRL_R_OPTS="
|
||||||
# --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort'
|
--bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort'
|
||||||
# --color header:italic
|
--color header:italic
|
||||||
|
--header 'Press CTRL-Y to copy command to clipboard'"
|
||||||
# --header 'Press CTRL-Y to copy command into clipboard'"
|
# --header 'Press CTRL-Y to copy command into clipboard'"
|
||||||
|
|
||||||
# Print tree structure in the preview window
|
# Print tree structure in the preview window
|
||||||
|
|
|
||||||
37
zsh/.zshrc
37
zsh/.zshrc
|
|
@ -4,6 +4,10 @@
|
||||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||||
fi
|
fi
|
||||||
|
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||||
|
# source ~/powerlevel10k/powerlevel10k.zsh-theme
|
||||||
|
# Instant prompt = Quiet
|
||||||
|
POWERLEVEL9K_INSTANT_PROMPT=quiet
|
||||||
|
|
||||||
if [[ -f "/opt/homebrew/bin/brew" ]]; then
|
if [[ -f "/opt/homebrew/bin/brew" ]]; then
|
||||||
# If you're using macOS, you'll want this enabled
|
# If you're using macOS, you'll want this enabled
|
||||||
|
|
@ -78,20 +82,30 @@ setopt hist_find_no_dups
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
||||||
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
||||||
zstyle ':completion:*' menu no
|
zstyle ':completion:*' menu no
|
||||||
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
|
# Enhanced fzf-tab completions with better previews
|
||||||
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -la --color=always $realpath 2>/dev/null || ls --color=always $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'eza -la --color=always $realpath 2>/dev/null || ls --color=always $realpath'
|
||||||
|
|
||||||
|
# Preview for other common commands
|
||||||
|
zstyle ':fzf-tab:complete:cat:*' fzf-preview 'bat --color=always $realpath 2>/dev/null || cat $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:bat:*' fzf-preview 'bat --color=always $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:less:*' fzf-preview 'bat --color=always $realpath 2>/dev/null || cat $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:more:*' fzf-preview 'bat --color=always $realpath 2>/dev/null || cat $realpath'
|
||||||
|
|
||||||
# Shell integrations
|
# Shell integrations
|
||||||
# eval "$(fzf --zsh)"
|
# eval "$(fzf --zsh)"
|
||||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||||
eval "$(zoxide init zsh)"
|
eval "$(zoxide init zsh)"
|
||||||
|
|
||||||
|
# Atuin setup - smart history search
|
||||||
|
eval "$(atuin init zsh)"
|
||||||
|
|
||||||
# Sourcing
|
# Sourcing
|
||||||
source $HOME/.cargo/env
|
source $HOME/.cargo/env
|
||||||
[ -f ~/.aliases ] && source ~/.aliases
|
[ -f ~/.aliases ] && source ~/.aliases
|
||||||
[ -f ~/.exports ] && source ~/.exports
|
[ -f ~/.exports ] && source ~/.exports
|
||||||
[ -f ~/.p10k.zsh ] && source ~/.p10k.zsh
|
# source /usr/share/doc/pkgfile/command-not-found.zsh
|
||||||
source /usr/share/doc/pkgfile/command-not-found.zsh
|
# source /usr/lib/command-not-found
|
||||||
|
|
||||||
# >>> conda initialize >>>
|
# >>> conda initialize >>>
|
||||||
# !! Contents within this block are managed by 'conda init' !!
|
# !! Contents within this block are managed by 'conda init' !!
|
||||||
|
|
@ -112,3 +126,18 @@ source /usr/share/doc/pkgfile/command-not-found.zsh
|
||||||
export NVM_DIR="$HOME/.nvm"
|
export NVM_DIR="$HOME/.nvm"
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
|
|
||||||
|
# Generated for pdtm. Do not edit.
|
||||||
|
export PATH=$PATH:/home/e/.pdtm/go/bin
|
||||||
|
|
||||||
|
|
||||||
|
# opencode
|
||||||
|
export PATH=/home/e/.opencode/bin:$PATH
|
||||||
|
|
||||||
|
# bun completions
|
||||||
|
[ -s "/home/e/.bun/_bun" ] && source "/home/e/.bun/_bun"
|
||||||
|
|
||||||
|
# bun
|
||||||
|
export BUN_INSTALL="$HOME/.bun"
|
||||||
|
export PATH="$BUN_INSTALL/bin:$PATH"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue