chezmoi: bash, ipython, sioyek, zed

This commit is contained in:
js0ny 2025-09-27 12:51:25 +01:00
parent 295f94ddb9
commit 81da252906
32 changed files with 51 additions and 644 deletions

View file

@ -0,0 +1,134 @@
# vim:ft=bash
# This should be in
# ~/.bash_aliases
# or in if antidots and wheel
# ~/.config/bash/bash_aliases
if command -v zoxide >/dev/null; then
eval "$(zoxide init bash)"
# Relative navigation #
alias ..="z .."
alias ...="z ../.."
alias ....="z ../../.."
alias .....="z ../../../.."
alias ......="z ../../../../.."
# Use `-` to jump to the previous directory
# Oh-My-Zsh defines a similar one
-() {
z -
}
zls() {
cd $1 && ls
}
else
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ......="cd ../../../../.."
-() {
cd -
}
fi
alias ni=touch
alias cls=clear
alias ii=open
# Editors #
alias v=nvim
alias c=code
# Use neovide as gVim
alias gvi="neovide"
alias svi="sudo vim -u ~/.dotfiles/common/vim.noxdg.vimrc" # Prevent conflicts with svelte-cli
alias sn="sudo nvim -u ~/.config/nvim/init.lua"
# Dev #
alias gpp='g++ -std=c++2b' # Set the default C++ standard to C++20
alias gcc='gcc -std=c99' # Set the default C standard to C99
alias cl='clang -std=c99'
alias clpp='clang++ -std=c++2b'
alias python=python3 # Set the default Python version to Python 3
alias py=python
alias ipy=ipython
alias g=lazygit
alias doomd="emacsclient -t ~/.config/doom/"
# lsd - modern ls
if command -v lsd >/dev/null; then
alias ls='lsd'
alias l='lsd -lah'
alias ll='lsd -l'
alias la='lsd -A'
alias l.='lsd -d .*'
alias tree='lsd --tree -A'
else
alias l='ls -lah'
alias ll='ls -l'
fi
# Functions #
mkcd() {
mkdir -p $1 && cd $1
}
cdls() {
cd $1 && ls
}
tc() {
touch $1 && code $1
}
tv() {
touch $1 && nvim $1
}
mt() {
mkdir -p $(dirname $1) && touch $1
}
mtv() {
mkdir -p $(dirname $1) && touch $1 && nvim $1
}
alias update="source $DOTFILES/scripts/update.zsh"
if command -v pacman >/dev/null; then
alias pac="sudo pacman"
alias paci="sudo pacman -S"
alias pacr="sudo pacman -R"
alias pacu="sudo pacman -Syu"
alias pacl="pacman -Q"
if command -v paru >/dev/null; then
alias pacs="paru -Ss"
elif command -v yay >/dev/null; then
alias pacs="yay -Ss"
else
alias pacs="pacman -Ss"
fi
fi
if command -v apt >/dev/null; then
alias apt="sudo apt"
alias apti="sudo apt install"
alias aptr="sudo apt remove"
alias aptu="sudo apt update && sudo apt upgrade"
alias apts="apt search"
alias aptl="apt list --installed"
fi
if command -v brew >/dev/null; then
alias brewi="brew install"
alias brewr="brew uninstall"
alias brewu="brew update && brew upgrade"
alias brews="brew search"
alias brewl="brew list"
fi
# TODO: Does not work
if [ "$TERM" = "xterm-ghostty" ] || [ "$TERM" = "xterm-kitty" ]; then
alias icat="kitten icat"
elif [ "$TERM_PROGRAM" = "WezTerm" ]; then
if [ -n "$WSL_DISTRO_NAME" ]; then
alias icat="wezterm.exe imgcat"
else
alias icat="wezterm imgcat"
fi
fi

33
dot_config/bash/bashrc Normal file
View file

@ -0,0 +1,33 @@
# vim:ft=bash
# If wheel and antidots:
# ln -sf $DOTFILES/tools/bash/profile ~/.config/bash/bashrc
# If not wheel or antidots:
# ln -sf $DOTFILES/tools/bash/bashrc ~/.bashrc
export DOTFILES=$HOME/.dotfiles
# Force to choose English font name
export LC_CTYPE=en_GB.UTF-8
if [ -n "$WSL_DISTRO_NAME" ]; then
alias clip="clip.exe"
alias paste="pwsh.exe -NoProfile -Command 'Get-Clipboard'"
elif [ -n "$WAYLAND_DISPLAY" ]; then
alias clip="wl-copy"
alias paste="wl-paste"
elif [ -n "$DISPLAY" ]; then
alias clip="xclip"
fi
source "$DOTFILES"/tools/bash/bash_aliases # For compatibility
export IPYTHONDIR="$XDG_CONFIG_HOME"/ipython
if command -v fzf >/dev/null; then
eval "$(fzf --bash)"
fi
if command -v starship >/dev/null; then
eval "$(starship init bash)"
fi
#
# bind 'set show-mode-in-prompt off'

View file

@ -0,0 +1,3 @@
#:vim: set ft=bash:
test -f $HOME/.config/bash/bashrc && source $HOME/.config/bash/bashrc
test -f $HOME/.bashrc && source $HOME/.bashrc

176
dot_config/bash/profile Normal file
View file

@ -0,0 +1,176 @@
# vim:ft=bash
# Put this file in $XDG_CONFIG_HOME/bash/profile
# This file is sourced by /etc/profile.d/xdg-compat.sh
# and will source user's XDG-compliant Bash Run Commands
# If no admin rights, just
# ln -sf $DOTFILES/tools/bash/profile ~/.bash_profile
# Before antidots
if [ -n "$BASH_VERSION" ] && [ -f "$HOME/.bash_profile" ]; then
. "$HOME/.bash_profile"
fi
if [ -n "$BASH_VERSION" ] && [ -f "$XDG_CONFIG_HOME/bash/bashrc" ]; then
. "$XDG_CONFIG_HOME/bash/bashrc"
fi
pathadd() {
# 检查是否存在且不在 PATH 中
if [[ -d "$1" && ":$PATH:" != *":$1:"* ]]; then
# 检查是否是符号链接
if [[ -L "$1" ]]; then
# 检查符号链接指向的目标是否存在
if [[ -e "$1" ]]; then
PATH="$1:$PATH"
fi
else
# 普通目录直接添加
PATH="$1:$PATH"
fi
fi
}
# Dynamically Add Path
minimal_path=(
"/bin"
"/sbin"
"/usr/bin"
"/usr/sbin"
"/usr/local/bin"
"/usr/local/sbin"
"$HOME/.local/bin"
"$HOME/.local/sbin"
"$HOME/.local/scripts"
)
export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
for p in "${minimal_path[@]}"; do
pathadd "$p"
done
if [ -d "/opt/homebrew/bin" ]; then # macOS
export PATH="/opt/homebrew/bin:$PATH"
elif [ -d "/home/linuxbrew/.linuxbrew/bin" ]; then # Linux
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
fi
# macOS Specific
# This syntax is POSIX standard, for portability
if [ "$(uname)" = "Darwin" ]; then
: # Do nothing
fi
# Linux Specific
if [ "$(uname)" = "Linux" ]; then
# CUDA
export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
fi
# Azure CLI
if command -v az > /dev/null; then
export AZURE_CONFIG_DIR="$XDG_DATA_HOME"/azure
fi
# Bun JS
# mv ~/.bun $XDG_DATA_HOME/bun
# ln -sf $XDG_DATA_HOME/bun/bin/bun ~/.local/bin/bun
if command -v bun > /dev/null; then
export BUN_INSTALL="$XDG_DATA_HOME"/bun
export PATH="$BUN_INSTALL/bin:$PATH"
[ -s "$BUN_INSTALL/_bun" ] && source "$BUN_INSTALL/_bun"
fi
# Cargo
if command -v cargo > /dev/null; then
export CARGO_HOME="$XDG_DATA_HOME"/cargo
export PATH="$CARGO_HOME/bin:$PATH"
fi
# CGDB
if command -v cgdb > /dev/null; then
export CGDB_DIR="$XDG_CONFIG_HOME"/cgdb
fi
# .NET
if command -v dotnet > /dev/null; then
export DOTNET_CLI_HOME="$XDG_DATA_HOME"/dotnet
export PATH="$DOTNET_CLI_HOME/.dotnet/tools:$PATH"
fi
# Docker
if command -v docker > /dev/null; then
export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
fi
# GnuPG
if command -v gpg > /dev/null; then
export GNUPGHOME="$XDG_DATA_HOME"/gnupg
fi
# Go
export GOPATH="$XDG_DATA_HOME"/go
export PATH="$GOPATH/bin:$PATH"
# Julia
if command -v julia > /dev/null; then
export JULIA_DEPOT_PATH="$XDG_DATA_HOME/julia:$JULIA_DEPOT_PATH"
fi
# Node.js
if command -v node > /dev/null; then
export NODE_REPL_HISTORY="$XDG_STATE_HOME"/node/repl_history
export TS_NODE_REPL_HISTORY="$XDG_STATE_HOME"/node/ts_node_repl_history
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
export NPM_CONFIG_INIT_MODULE="$XDG_CONFIG_HOME"/npm/config/npm-init.js
export NPM_CONFIG_CACHE="$XDG_CACHE_HOME"/npm
export NPM_CONFIG_TMP="$XDG_RUNTIME_DIR"/npm
fi
# Parallel
if command -v parallel > /dev/null; then
export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
fi
# Python
# Works only with Python 3.13.0a3 and later
if command -v python3 > /dev/null; then
export PYTHON_HISTORY="$XDG_DATA_HOME"/python/history
fi
# GNU Screen
if command -v screen > /dev/null; then
export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc
export SCREENDIR="${XDG_RUNTIME_DIR}/screen"
fi
# Ruby Gem
# Ruby Gem
if command -v gem > /dev/null; then
for dir in "$HOME/.local/share/gem/ruby/"*/bin; do
if [ -d "$dir" ]; then
export PATH="$dir:$PATH"
fi
done
fi
# Spacemacs
if command -v emacs > /dev/null; then
export SPACEMACSDIR="$XDG_CONFIG_HOME"/spacemacs
fi
# tldr
# Works only with C client (did not verify)
if command -v tldr > /dev/null; then
export TLDR_CACHE_DIR="$XDG_CACHE_HOME"/tldr
fi
# W3M
if command -v w3m > /dev/null; then
export W3M_DIR="$XDG_DATA_HOME"/w3m
fi
# Wakatime
if command -v wakatime > /dev/null; then
export WAKATIME_HOME="$XDG_CONFIG_HOME/wakatime"
fi
# Wget
if command -v wget > /dev/null; then
alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
fi
# zsh .zcompdump
# compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
# Vcpkg
if command -v vcpkg > /dev/null; then
export VCPKG_ROOT="$XDG_DATA_HOME"/vcpkg
fi
export PADER="less -R"
export EDITOR="nvim"
export VISUAL="nvim"

View file

@ -0,0 +1,19 @@
# $DOTFILES/tools/bash/xdg-compat.sh
# Author: js0ny
# Date: 2025-01-28
# Sourced by /etc/profile
# Location: /etc/profile.d/xdg-compat.sh
# cp $DOTFILES/tools/bash/xdg-compat.sh /etc/profile.d/xdg-compat.sh
# Set XDG Base Directory Path
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
# Source user's XDG-compliant Bash configs
if [ -f "$XDG_CONFIG_HOME/bash/profile" ]; then
. "$XDG_CONFIG_HOME/bash/profile"
fi