mirror of
https://github.com/tiyn/dotfiles.git
synced 2026-07-02 12:51:34 +02:00
Compare commits
21 Commits
fba1aecfd4
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 04f9ac187a | |||
| 803472b1c9 | |||
| 6e00342044 | |||
| d06a7bddf4 | |||
| e32eb6eebd | |||
| 29ac82a412 | |||
| 641a124fe3 | |||
| 71d23fa096 | |||
| 8dde717180 | |||
| a148a5a7a4 | |||
| 3118f9d40f | |||
| f11f68c751 | |||
| ec77543d6b | |||
| b82bfff551 | |||
| d579220afd | |||
| 0aab087f11 | |||
| b2fd0f3b25 | |||
| 1bc5e80e40 | |||
| ac9f4465f6 | |||
| 37e4d7faa6 | |||
| a8daed6c20 |
@@ -74,11 +74,11 @@ alias contacts="khard"
|
||||
# kolourpaint
|
||||
alias paint="kolourpaint"
|
||||
|
||||
# ls(d)
|
||||
alias l="exa --group-directories-first --icons"
|
||||
alias la="exa -la --group-directories-first --icons --git"
|
||||
alias ll="exa -l --group-directories-first --icons --git"
|
||||
alias tree="exa --tree --group-directories-first --icons"
|
||||
# ls
|
||||
alias l="eza --group-directories-first --icons"
|
||||
alias la="eza -la --group-directories-first --icons --git"
|
||||
alias ll="eza -l --group-directories-first --icons --git"
|
||||
alias tree="eza --tree --group-directories-first --icons"
|
||||
|
||||
# mkdir
|
||||
alias mkdir="mkdir -p"
|
||||
@@ -99,9 +99,6 @@ alias octave="octave --persist"
|
||||
# pacman
|
||||
alias pac="sudo pacman"
|
||||
|
||||
# papis
|
||||
alias papis='PYTHONWARNINGS=ignore::DeprecationWarning python -m papis'
|
||||
|
||||
# ping
|
||||
alias ping="ping -c 5"
|
||||
|
||||
|
||||
161
.config/gitignore/python
Normal file
161
.config/gitignore/python
Normal file
@@ -0,0 +1,161 @@
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/venv,python
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
#Pipfile.lock
|
||||
|
||||
# poetry
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
#pdm.lock
|
||||
.pdm.toml
|
||||
|
||||
# PEP 582
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
#.idea/
|
||||
|
||||
### Python Patch ###
|
||||
poetry.toml
|
||||
|
||||
# ruff
|
||||
.ruff_cache/
|
||||
|
||||
# LSP config files
|
||||
pyrightconfig.json
|
||||
|
||||
### venv ###
|
||||
[Bb]in
|
||||
[Ii]nclude
|
||||
[Ll]ib
|
||||
[Ll]ib64
|
||||
[Ll]ocal
|
||||
[Ss]cripts
|
||||
pyvenv.cfg
|
||||
pip-selfcheck.json
|
||||
@@ -17,6 +17,7 @@ Dom
|
||||
Dreams
|
||||
Embedding
|
||||
Entlebucher
|
||||
Eskortflug
|
||||
Extraction
|
||||
For
|
||||
Formatter
|
||||
@@ -26,7 +27,10 @@ Genervtheit
|
||||
Gestresstheit
|
||||
Gym
|
||||
Handwerksunternehmen
|
||||
Higher-Up
|
||||
Higher-Ups
|
||||
Homeserver
|
||||
Hot
|
||||
Immigrationsgeschichte
|
||||
Impro
|
||||
Improtheater
|
||||
@@ -38,6 +42,7 @@ Ira
|
||||
Jahreszeitenunterschied
|
||||
Jahreszeitenunterschiede
|
||||
Kardinälin
|
||||
Keycap
|
||||
Kreatindosis
|
||||
Königinnensubstanz
|
||||
Loop
|
||||
@@ -49,6 +54,7 @@ Meta
|
||||
Mods
|
||||
Mono
|
||||
Ne
|
||||
Nights
|
||||
Orgas
|
||||
Paper
|
||||
Platformer
|
||||
@@ -92,6 +98,7 @@ be
|
||||
bürgerlicher
|
||||
bürgerlichere
|
||||
bürgerlicheren
|
||||
cosplayt
|
||||
cyber
|
||||
egozentristisch
|
||||
en
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
AI
|
||||
APV
|
||||
Abdulkarim
|
||||
Accuracy
|
||||
Agentic
|
||||
Akallabêth
|
||||
@@ -13,6 +14,8 @@ Arrabbiata
|
||||
Asiahung
|
||||
Aule
|
||||
Aules
|
||||
Autoencoder
|
||||
Babybel
|
||||
Baez
|
||||
Barros
|
||||
Beater
|
||||
@@ -29,6 +32,7 @@ Brusch
|
||||
CAR
|
||||
CATS
|
||||
CDSS
|
||||
CORE
|
||||
CUDA
|
||||
Carré
|
||||
Casper
|
||||
@@ -36,6 +40,7 @@ Caspers
|
||||
Cato
|
||||
CdE
|
||||
CdEs
|
||||
Cewe
|
||||
Chrysalis
|
||||
Color
|
||||
Combi
|
||||
@@ -49,13 +54,15 @@ Darth
|
||||
DeepSeek
|
||||
Dekarldent
|
||||
Delivery
|
||||
Destiny 2
|
||||
Destiny
|
||||
Distrobox
|
||||
Doom
|
||||
Doyma
|
||||
Dressler
|
||||
EasyEffects
|
||||
Eckhoff
|
||||
Edain
|
||||
Edibles
|
||||
Elodie
|
||||
Ernsting's
|
||||
Euphoria
|
||||
@@ -108,12 +115,16 @@ JT
|
||||
Jacobin
|
||||
Jeanine
|
||||
Jojen
|
||||
Jungjohann
|
||||
Karamasov
|
||||
Keep
|
||||
Keycap
|
||||
Kingdoms
|
||||
Kluge
|
||||
KohakuHub
|
||||
Kratom
|
||||
KreativAkademie
|
||||
Kreyenbrück
|
||||
Kreyenhop
|
||||
Kubitschek
|
||||
Käte
|
||||
@@ -124,11 +135,13 @@ Lanz
|
||||
Later
|
||||
Lemmie
|
||||
Lemmies
|
||||
Letterboxd
|
||||
LightDM
|
||||
LightDM-GTK-Greeter
|
||||
LightDM-Mini-Greeter
|
||||
LilyPond
|
||||
Line Dance
|
||||
Loafer
|
||||
Lounge
|
||||
MEVIS
|
||||
MTG
|
||||
@@ -146,6 +159,7 @@ Meshtastic
|
||||
Metzener
|
||||
MiiMii
|
||||
Mint
|
||||
Mukluk
|
||||
MusikAka
|
||||
MusikAkademie
|
||||
NVIM
|
||||
@@ -156,6 +170,7 @@ Neovim
|
||||
NetworkManager
|
||||
NextCloud
|
||||
Nim
|
||||
Njinmah
|
||||
Nobody
|
||||
Noel
|
||||
North
|
||||
@@ -182,6 +197,7 @@ Pluribus
|
||||
PopOS
|
||||
Portainer
|
||||
Power
|
||||
Pratik
|
||||
Precision
|
||||
Precon
|
||||
Precons
|
||||
@@ -191,6 +207,7 @@ Rebowl
|
||||
Reed
|
||||
Reeves
|
||||
Reichenecker
|
||||
Rida
|
||||
Rocq
|
||||
Ruschenbaum
|
||||
SDS
|
||||
@@ -228,6 +245,7 @@ Tornow
|
||||
TrackPoint
|
||||
Traefik
|
||||
UDEV
|
||||
UMAP
|
||||
Umbar
|
||||
V1del
|
||||
VIM
|
||||
@@ -243,6 +261,7 @@ WinterAkademie
|
||||
Writhing
|
||||
X.Org
|
||||
Years
|
||||
Yorma
|
||||
Ziegeleiweg
|
||||
Zimin
|
||||
and
|
||||
|
||||
@@ -22,13 +22,24 @@ return {
|
||||
vim.schedule(function()
|
||||
local kernels = vim.fn.MoltenAvailableKernels()
|
||||
local try_kernel_name = function()
|
||||
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
||||
return metadata.kernelspec.name
|
||||
local f = io.open(e.file, "r")
|
||||
if not f then
|
||||
return nil
|
||||
end
|
||||
local content = f:read("*a")
|
||||
f:close()
|
||||
local ok, decoded = pcall(vim.json.decode, content)
|
||||
if not ok then
|
||||
return nil
|
||||
end
|
||||
return decoded.metadata
|
||||
and decoded.metadata.kernelspec
|
||||
and decoded.metadata.kernelspec.name
|
||||
end
|
||||
local ok, kernel_name = pcall(try_kernel_name)
|
||||
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
||||
kernel_name = nil
|
||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX") or ".venv"
|
||||
if venv ~= nil then
|
||||
kernel_name = string.match(venv, "/.+/(.+)")
|
||||
end
|
||||
|
||||
@@ -29,11 +29,7 @@ return {
|
||||
|
||||
require("symbol-usage").setup({
|
||||
text_format = text_format,
|
||||
<<<<<<< HEAD
|
||||
vt_position = "end_of_line",
|
||||
||||||| 6714ddc
|
||||
=======
|
||||
>>>>>>> f01c70951e053d56cbfed781149becf3f9299a3f
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
# HELPER FUNCTIONS #
|
||||
####################
|
||||
|
||||
precmd_vcs_info() { vcs_info }
|
||||
precmd_vcs_info() { vcs_info; }
|
||||
|
||||
precmd_functions+=( precmd_vcs_info )
|
||||
precmd_functions+=(precmd_vcs_info)
|
||||
|
||||
zle-line-init() {
|
||||
zle -K viins
|
||||
echo -ne "\e[5 q"
|
||||
zle -K viins
|
||||
echo -ne "\e[5 q"
|
||||
}
|
||||
|
||||
preexec() { echo -ne '\e[5 q' ;}
|
||||
preexec() { echo -ne '\e[5 q'; }
|
||||
|
||||
local copy_widgets=(
|
||||
vi-yank vi-yank-eol vi-delete vi-backward-kill-word vi-change-whole-line
|
||||
@@ -22,14 +22,14 @@ local paste_widgets=(
|
||||
)
|
||||
|
||||
function zle-keymap-select {
|
||||
if [[ ${KEYMAP} == vicmd ]] ||
|
||||
[[ $1 = 'block' ]]; then
|
||||
echo -ne '\e[1 q'
|
||||
elif [[ ${KEYMAP} == main ]] ||
|
||||
[[ ${KEYMAP} == viins ]] ||
|
||||
[[ ${KEYMAP} == '' ]]; then
|
||||
echo -ne '\e[5 q'
|
||||
fi
|
||||
if [[ ${KEYMAP} == vicmd ]] ||
|
||||
[[ $1 = 'block' ]]; then
|
||||
echo -ne '\e[1 q'
|
||||
elif [[ ${KEYMAP} == main ]] ||
|
||||
[[ ${KEYMAP} == viins ]] ||
|
||||
[[ ${KEYMAP} == '' ]]; then
|
||||
echo -ne '\e[5 q'
|
||||
fi
|
||||
}
|
||||
|
||||
function x11-clip-wrap-widgets() {
|
||||
@@ -59,23 +59,23 @@ function +vi-git-st() {
|
||||
local ahead behind remote
|
||||
local -a gitstatus
|
||||
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} \
|
||||
--symbolic-full-name 2>/dev/null)/refs\/remotes\/}
|
||||
if [[ -n ${remote} ]] ; then
|
||||
--symbolic-full-name 2>/dev/null)/refs\/remotes\//}
|
||||
if [[ -n ${remote} ]]; then
|
||||
# for git prior to 1.7
|
||||
# ahead=$(git rev-list origin/${hook_com[branch]}..HEAD | wc -l)
|
||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||
(( $ahead )) && gitstatus+=( " ${c3}+${ahead}${c2}" )
|
||||
(($ahead)) && gitstatus+=(" ${c3}+${ahead}${c2}")
|
||||
# for git prior to 1.7
|
||||
# behind=$(git rev-list HEAD..origin/${hook_com[branch]} | wc -l)
|
||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||
(( $behind )) && gitstatus+=( "${c4}-${behind}${c2}" )
|
||||
(($behind)) && gitstatus+=("${c4}-${behind}${c2}")
|
||||
hook_com[branch]="${hook_com[branch]} [${remote}${(j:/:)gitstatus}]"
|
||||
fi
|
||||
}
|
||||
|
||||
function +vi-git-stash() {
|
||||
local -a stashes
|
||||
if [[ -s ${hook_com[base]}/.git/refs/stash ]] ; then
|
||||
if [[ -s ${hook_com[base]}/.git/refs/stash ]]; then
|
||||
stashes=$(git stash list 2>/dev/null | wc -l)
|
||||
hook_com[misc]+=" (${stashes} stashed)"
|
||||
fi
|
||||
@@ -85,29 +85,116 @@ function +vi-git-stash() {
|
||||
# CUSTOM WIDGETS #
|
||||
##################
|
||||
|
||||
_find_venv_upwards() {
|
||||
local dir="$PWD"
|
||||
mkcd() {
|
||||
mkdir -p -- "$1" &&
|
||||
cd -- "$1"
|
||||
}
|
||||
|
||||
while [[ "$dir" != "/" ]]; do
|
||||
if [[ -f "$dir/pyvenv.cfg" ]]; then
|
||||
echo "$dir"
|
||||
return
|
||||
uv() {
|
||||
if [[ "$1" == "init" ]]; then
|
||||
shift
|
||||
|
||||
if [[ "$1" == "--normal" ]]; then
|
||||
shift
|
||||
command uv init "$@"
|
||||
else
|
||||
command uv init --bare "$@" || return
|
||||
|
||||
if [[ $# -eq 0 ]]; then
|
||||
command uv venv || return
|
||||
_auto_venv
|
||||
fi
|
||||
fi
|
||||
elif [[ "$1" == "sync" ]]; then
|
||||
shift
|
||||
command uv sync "$@" || return
|
||||
_auto_venv
|
||||
else
|
||||
command uv "$@"
|
||||
fi
|
||||
dir=$(dirname "$dir")
|
||||
done
|
||||
}
|
||||
|
||||
find_python_root() {
|
||||
local target="$1"
|
||||
local dir
|
||||
|
||||
if [[ -n "$target" && -e "$target" ]]; then
|
||||
dir="$(cd "$(dirname "$target")" && pwd)"
|
||||
else
|
||||
dir="$PWD"
|
||||
fi
|
||||
|
||||
while [[ "$dir" != "/" ]]; do
|
||||
if [[ -f "$dir/.python-version" ]] || [[ -f "$dir/pyproject.toml" ]]; then
|
||||
echo "$dir"
|
||||
return 0
|
||||
fi
|
||||
|
||||
dir="$(dirname "$dir")"
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
uvshim() {
|
||||
local cmd="$1"
|
||||
shift
|
||||
|
||||
local uv_root=""
|
||||
local first_arg="$1"
|
||||
|
||||
uv_root="$(find_python_root "$first_arg")"
|
||||
|
||||
if [[ -n "$uv_root" ]]; then
|
||||
uv run --project "$uv_root" "$cmd" "$@"
|
||||
else
|
||||
command -- "$cmd" "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
python() { uvshim python "$@"; }
|
||||
|
||||
python3() { uvshim python3 "$@"; }
|
||||
|
||||
pip() {
|
||||
local uv_root
|
||||
uv_root="$(find_python_root)"
|
||||
|
||||
if [[ -n "$uv_root" ]]; then
|
||||
if [[ "$1" == "install" ]]; then
|
||||
shift
|
||||
uv add "$@"
|
||||
else
|
||||
uv pip "$@"
|
||||
fi
|
||||
else
|
||||
command pip "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
_find_venv_upwards() {
|
||||
local dir="$PWD"
|
||||
|
||||
while [[ "$dir" != "/" ]]; do
|
||||
if [[ -f "$dir/.venv/pyvenv.cfg" ]]; then
|
||||
echo "$dir/.venv"
|
||||
return
|
||||
fi
|
||||
dir=$(dirname "$dir")
|
||||
done
|
||||
}
|
||||
|
||||
_auto_venv() {
|
||||
local venv_dir
|
||||
venv_dir=$(_find_venv_upwards)
|
||||
local venv_dir
|
||||
venv_dir=$(_find_venv_upwards)
|
||||
|
||||
if [[ -n "$VIRTUAL_ENV" && "$VIRTUAL_ENV" != "$venv_dir" ]]; then
|
||||
deactivate 2>/dev/null
|
||||
fi
|
||||
if [[ -n "$VIRTUAL_ENV" && "$VIRTUAL_ENV" != "$venv_dir" ]]; then
|
||||
deactivate 2>/dev/null
|
||||
fi
|
||||
|
||||
if [[ -n "$venv_dir" && "$VIRTUAL_ENV" != "$venv_dir" ]]; then
|
||||
source "$venv_dir/bin/activate"
|
||||
fi
|
||||
if [[ -n "$venv_dir" && "$VIRTUAL_ENV" != "$venv_dir" ]]; then
|
||||
source "$venv_dir/bin/activate"
|
||||
fi
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
@@ -116,89 +203,89 @@ _auto_venv
|
||||
|
||||
_accept_line() {
|
||||
|
||||
# automatically push to remote
|
||||
if [[ "$BUFFER" == "git push" ]]; then
|
||||
local branch
|
||||
branch=$(git symbolic-ref --short HEAD 2>/dev/null)
|
||||
# automatically push to remote
|
||||
if [[ "$BUFFER" == "git push" ]]; then
|
||||
local branch
|
||||
branch=$(git symbolic-ref --short HEAD 2>/dev/null)
|
||||
|
||||
if [[ -n "$branch" ]]; then
|
||||
git rev-parse --abbrev-ref --symbolic-full-name @{u} &>/dev/null
|
||||
if [[ $? -ne 0 ]]; then
|
||||
BUFFER="git push -u origin $branch"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# use keifu instead of git log --graph
|
||||
if [[ "$BUFFER" =~ ^([a-zA-Z0-9_-]+)[[:space:]]+([a-zA-Z0-9_-]+)(.*)$ ]]; then
|
||||
|
||||
local cmd=${match[1]}
|
||||
local subcmd=${match[2]}
|
||||
local rest=${match[3]}
|
||||
|
||||
# directly via git log --graph
|
||||
if [[ "$cmd" == "git" && "$subcmd" == "log" && "$rest" == *"--graph"* ]]; then
|
||||
BUFFER="keifu"
|
||||
zle accept-line
|
||||
return
|
||||
if [[ -n "$branch" ]]; then
|
||||
git rev-parse --abbrev-ref --symbolic-full-name @{u} &>/dev/null
|
||||
if [[ $? -ne 0 ]]; then
|
||||
BUFFER="git push -u origin $branch"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# check for git-alias
|
||||
if [[ "$cmd" == "git" ]]; then
|
||||
local alias_expansion
|
||||
alias_expansion=$(git config --get "alias.$subcmd" 2>/dev/null)
|
||||
# use keifu instead of git log --graph
|
||||
if [[ "$BUFFER" =~ ^([a-zA-Z0-9_-]+)[[:space:]]+([a-zA-Z0-9_-]+)(.*)$ ]]; then
|
||||
|
||||
if [[ -n "$alias_expansion" && "$alias_expansion" == log*--graph* ]]; then
|
||||
BUFFER="keifu"
|
||||
zle accept-line
|
||||
return
|
||||
fi
|
||||
fi
|
||||
local cmd=${match[1]}
|
||||
local subcmd=${match[2]}
|
||||
local rest=${match[3]}
|
||||
|
||||
# shell-alias
|
||||
if alias "$cmd" &>/dev/null; then
|
||||
local expansion=$(alias "$cmd")
|
||||
expansion=${expansion#*=}
|
||||
expansion=${expansion#\'}
|
||||
expansion=${expansion%\'}
|
||||
|
||||
if [[ "$expansion" =~ --git-dir=([^[:space:]]+) ]]; then
|
||||
local gitdir=${match[1]}
|
||||
|
||||
if [[ "$subcmd" == "log" && "$rest" == *"--graph"* ]]; then
|
||||
BUFFER="(cd $gitdir && keifu)"
|
||||
zle accept-line
|
||||
return
|
||||
# directly via git log --graph
|
||||
if [[ "$cmd" == "git" && "$subcmd" == "log" && "$rest" == *"--graph"* ]]; then
|
||||
BUFFER="keifu"
|
||||
zle accept-line
|
||||
return
|
||||
fi
|
||||
|
||||
# git-alias within shell-alias
|
||||
local alias_expansion
|
||||
alias_expansion=$(git --git-dir="$gitdir" config --get "alias.$subcmd" 2>/dev/null)
|
||||
# check for git-alias
|
||||
if [[ "$cmd" == "git" ]]; then
|
||||
local alias_expansion
|
||||
alias_expansion=$(git config --get "alias.$subcmd" 2>/dev/null)
|
||||
|
||||
if [[ -n "$alias_expansion" && "$alias_expansion" == log*--graph* ]]; then
|
||||
BUFFER="(cd $gitdir && keifu)"
|
||||
zle accept-line
|
||||
return
|
||||
if [[ -n "$alias_expansion" && "$alias_expansion" == log*--graph* ]]; then
|
||||
BUFFER="keifu"
|
||||
zle accept-line
|
||||
return
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# swap main and master Fix
|
||||
if [[ $BUFFER == git\ * ]]; then
|
||||
local has_main=0
|
||||
local has_master=0
|
||||
git rev-parse --verify main >/dev/null 2>&1 && has_main=1
|
||||
git rev-parse --verify master >/dev/null 2>&1 && has_master=1
|
||||
if [[ $has_main -eq 1 && $has_master -eq 0 ]]; then
|
||||
BUFFER=${BUFFER//" master"/" main"}
|
||||
fi
|
||||
if [[ $has_master -eq 1 && $has_main -eq 0 ]]; then
|
||||
BUFFER=${BUFFER//" main"/" master"}
|
||||
fi
|
||||
fi
|
||||
# shell-alias
|
||||
if alias "$cmd" &>/dev/null; then
|
||||
local expansion=$(alias "$cmd")
|
||||
expansion=${expansion#*=}
|
||||
expansion=${expansion#\'}
|
||||
expansion=${expansion%\'}
|
||||
|
||||
zle accept-line
|
||||
if [[ "$expansion" =~ --git-dir=([^[:space:]]+) ]]; then
|
||||
local gitdir=${match[1]}
|
||||
|
||||
if [[ "$subcmd" == "log" && "$rest" == *"--graph"* ]]; then
|
||||
BUFFER="(cd $gitdir && keifu)"
|
||||
zle accept-line
|
||||
return
|
||||
fi
|
||||
|
||||
# git-alias within shell-alias
|
||||
local alias_expansion
|
||||
alias_expansion=$(git --git-dir="$gitdir" config --get "alias.$subcmd" 2>/dev/null)
|
||||
|
||||
if [[ -n "$alias_expansion" && "$alias_expansion" == log*--graph* ]]; then
|
||||
BUFFER="(cd $gitdir && keifu)"
|
||||
zle accept-line
|
||||
return
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# swap main and master Fix
|
||||
if [[ $BUFFER == git\ * ]]; then
|
||||
local has_main=0
|
||||
local has_master=0
|
||||
git rev-parse --verify main >/dev/null 2>&1 && has_main=1
|
||||
git rev-parse --verify master >/dev/null 2>&1 && has_master=1
|
||||
if [[ $has_main -eq 1 && $has_master -eq 0 ]]; then
|
||||
BUFFER=${BUFFER//" master"/" main"}
|
||||
fi
|
||||
if [[ $has_master -eq 1 && $has_main -eq 0 ]]; then
|
||||
BUFFER=${BUFFER//" main"/" master"}
|
||||
fi
|
||||
fi
|
||||
|
||||
zle accept-line
|
||||
}
|
||||
|
||||
zle -N _accept_line
|
||||
@@ -247,7 +334,7 @@ setopt prompt_subst
|
||||
|
||||
# copy to x11 clipboard
|
||||
x11-clip-wrap-widgets copy $copy_widgets
|
||||
x11-clip-wrap-widgets paste $paste_widgets
|
||||
x11-clip-wrap-widgets paste $paste_widgets
|
||||
|
||||
# enable colors
|
||||
autoload -U colors && colors
|
||||
@@ -308,17 +395,14 @@ autoload -Uz compinit && compinit
|
||||
|
||||
# open shell with tmux always
|
||||
if [[ -n "$PS1" ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
|
||||
tmux attack-session -t $USER || tmux new-session -s $USER
|
||||
tmux attach-session -t $USER || tmux new-session -s $USER
|
||||
fi
|
||||
|
||||
# thefuck
|
||||
eval $(thefuck --alias)
|
||||
|
||||
# python
|
||||
eval "$(pyenv init -)"
|
||||
|
||||
# opam
|
||||
[[ ! -r "$HOME/.opam/opam-init/init.zsh" ]] || source "$HOME/.opam/opam-init/init.zsh" > /dev/null 2> /dev/null
|
||||
[[ ! -r "$HOME/.opam/opam-init/init.zsh" ]] || source "$HOME/.opam/opam-init/init.zsh" >/dev/null 2>/dev/null
|
||||
|
||||
##########################
|
||||
# COMMANDS BEFORE PROMPT #
|
||||
|
||||
136
.local/bin/etc/gitignore
Executable file
136
.local/bin/etc/gitignore
Executable file
@@ -0,0 +1,136 @@
|
||||
#!/bin/sh
|
||||
|
||||
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/gitignore"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage:
|
||||
gitignore TEMPLATE...
|
||||
Create a new .gitignore from templates.
|
||||
|
||||
gitignore -f TEMPLATE...
|
||||
Overwrite existing .gitignore.
|
||||
|
||||
gitignore --add TEMPLATE...
|
||||
Append templates to existing .gitignore.
|
||||
|
||||
gitignore --list
|
||||
List available templates.
|
||||
|
||||
gitignore --show TEMPLATE
|
||||
Show a template.
|
||||
|
||||
Templates are searched in:
|
||||
$CONFIG_DIR
|
||||
EOF
|
||||
}
|
||||
|
||||
list_templates() {
|
||||
[ -d "$CONFIG_DIR" ] || exit 0
|
||||
|
||||
find "$CONFIG_DIR" -type f -exec basename {} \; | sort
|
||||
}
|
||||
|
||||
show_template() {
|
||||
file="$CONFIG_DIR/$1"
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "Unknown template: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat "$file"
|
||||
}
|
||||
|
||||
append_template() {
|
||||
template="$1"
|
||||
file="$CONFIG_DIR/$template"
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "Unknown template: $template" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
{
|
||||
echo
|
||||
echo "# --- $template ---"
|
||||
cat "$file"
|
||||
} >> .gitignore
|
||||
}
|
||||
|
||||
create_gitignore() {
|
||||
mode="$1"
|
||||
shift
|
||||
|
||||
if [ -f .gitignore ] && [ "$mode" != "force" ]; then
|
||||
echo ".gitignore already exists." >&2
|
||||
echo "Use -f to overwrite or --add to append." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
: > .gitignore
|
||||
|
||||
for template in "$@"; do
|
||||
append_template "$template"
|
||||
done
|
||||
}
|
||||
|
||||
add_templates() {
|
||||
[ -f .gitignore ] || touch .gitignore
|
||||
|
||||
for template in "$@"; do
|
||||
append_template "$template"
|
||||
done
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
--help|-h)
|
||||
usage
|
||||
;;
|
||||
|
||||
--list)
|
||||
list_templates
|
||||
;;
|
||||
|
||||
--show)
|
||||
shift
|
||||
|
||||
[ $# -eq 1 ] || {
|
||||
echo "--show requires exactly one template" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
show_template "$1"
|
||||
;;
|
||||
|
||||
--add)
|
||||
shift
|
||||
|
||||
[ $# -gt 0 ] || {
|
||||
echo "No templates specified" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
add_templates "$@"
|
||||
;;
|
||||
|
||||
-f)
|
||||
shift
|
||||
|
||||
[ $# -gt 0 ] || {
|
||||
echo "No templates specified" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
create_gitignore force "$@"
|
||||
;;
|
||||
|
||||
"")
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
create_gitignore normal "$@"
|
||||
;;
|
||||
esac
|
||||
@@ -14,43 +14,60 @@ vipercmd="carbon" #"silicon"
|
||||
|
||||
cd "$dir" || exit
|
||||
|
||||
textype() { \
|
||||
command="pdflatex --shell-escape"
|
||||
( sed 5q "$file" | grep -i -q 'xelatex' ) && command="xelatex"
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
grep -i addbibresource "$file" >/dev/null &&
|
||||
biber --input-directory "$dir" "$base" &&
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
has_python_version() {
|
||||
dir="$PWD"
|
||||
while [ "$dir" != "/" ]; do
|
||||
if [ -f "$dir/.python-version" ] || [ -f "$dir/pyproject.toml" ]; then
|
||||
return 0
|
||||
fi
|
||||
dir=$(dirname "$dir")
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
textype() {
|
||||
command="pdflatex --shell-escape"
|
||||
(sed 5q "$file" | grep -i -q 'xelatex') && command="xelatex"
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
grep -i addbibresource "$file" >/dev/null &&
|
||||
biber --input-directory "$dir" "$base" &&
|
||||
$command --output-directory="$dir" "$base" &&
|
||||
makeglossaries "$basenodir" &&
|
||||
$command --output-directory="$dir" "$base"
|
||||
}
|
||||
$command --output-directory="$dir" "$base"
|
||||
}
|
||||
|
||||
case "$file" in
|
||||
*\.[0-9]) refer -PS -e "$file" | groff -mandoc -T pdf > "$base".pdf ;;
|
||||
*\.bash) bash "$file" ;;
|
||||
*\.go) go run "$file" ;;
|
||||
*\.lua) lua "$file" ;;
|
||||
*\.md) pandoc "$file" --pdf-engine=xelatex -o "$base".pdf ;;
|
||||
*\.mom) refer -PS -e "$file" | groff -mom -kept -T pdf > "$base".pdf ;;
|
||||
*\.ms) refer -PS -e "$file" | groff -me -ms -kept -T pdf > "$base".pdf ;;
|
||||
*\.py) python3 "$file" ;;
|
||||
*\.rmd) echo "require(rmarkdown); render('$file')" | R -q --vanilla ;;
|
||||
*\.sent) setsid sent "$file" 2>/dev/null & ;;
|
||||
*config.h) sudo make install ;;
|
||||
*\.c) if [ -f Makefile ]; then make run; else cc "$file" -o "$base" && "$base"; fi ;;
|
||||
*\.java) java "$file" ;;
|
||||
*\.js) node "$file" ;;
|
||||
*\.m) octave -qW "$file" ;;
|
||||
*\.nim) nim c -r -d:noColors "$file" ;;
|
||||
*\.r|*\.R) Rscript "$file" ;;
|
||||
*\.rs) (cd "$dir" && cargo locate-project >/dev/null 2>&1) \
|
||||
&& (cd "$(dirname "$(cd "$dir" && cargo locate-project --message-format plain)")" && cargo run) \
|
||||
|| (rustc "$file" && "./$(basename "${file%.rs}")") ;;
|
||||
*\.sh) dash "$file" ;;
|
||||
*\.smt2) z3 "$file" ;;
|
||||
*\.tex) textype "$file" ;;
|
||||
*\.vpr) $vipercmd "$file" ;;
|
||||
*\.zsh) zsh "$file" ;;
|
||||
*\.ly) lilypond "$file" ;;
|
||||
*) sed 1q "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
|
||||
*\.[0-9]) refer -PS -e "$file" | groff -mandoc -T pdf >"$base".pdf ;;
|
||||
*\.bash) bash "$file" ;;
|
||||
*\.go) go run "$file" ;;
|
||||
*\.lua) lua "$file" ;;
|
||||
*\.md) pandoc "$file" --pdf-engine=xelatex -o "$base".pdf ;;
|
||||
*\.mom) refer -PS -e "$file" | groff -mom -kept -T pdf >"$base".pdf ;;
|
||||
*\.ms) refer -PS -e "$file" | groff -me -ms -kept -T pdf >"$base".pdf ;;
|
||||
*\.py)
|
||||
if has_python_version; then
|
||||
uv run python "$file"
|
||||
else
|
||||
python3 "$file"
|
||||
fi
|
||||
;;
|
||||
*\.rmd) echo "require(rmarkdown); render('$file')" | R -q --vanilla ;;
|
||||
*\.sent) setsid sent "$file" 2>/dev/null & ;;
|
||||
*config.h) sudo make install ;;
|
||||
*\.c) if [ -f Makefile ]; then make run; else cc "$file" -o "$base" && "$base"; fi ;;
|
||||
*\.java) java "$file" ;;
|
||||
*\.js) node "$file" ;;
|
||||
*\.m) octave -qW "$file" ;;
|
||||
*\.nim) nim c -r -d:noColors "$file" ;;
|
||||
*\.r | *\.R) Rscript "$file" ;;
|
||||
*\.rs) (cd "$dir" && cargo locate-project >/dev/null 2>&1) &&
|
||||
(cd "$(dirname "$(cd "$dir" && cargo locate-project --message-format plain)")" && cargo run) ||
|
||||
(rustc "$file" && "./$(basename "${file%.rs}")") ;;
|
||||
*\.sh) dash "$file" ;;
|
||||
*\.smt2) z3 "$file" ;;
|
||||
*\.tex) textype "$file" ;;
|
||||
*\.vpr) $vipercmd "$file" ;;
|
||||
*\.zsh) zsh "$file" ;;
|
||||
*\.ly) lilypond "$file" ;;
|
||||
*) sed 1q "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
|
||||
esac
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
device=${LOOPBACK_DEVICE:-Easy Effects Source}
|
||||
|
||||
name=$(wpctl status | sed -n '/Sources/,$p' | sed -n '/Filter/q;p' | grep "$device" | sed -e "s/*/\ /g")
|
||||
id=$( echo $name | cut -d '.' -f 1 | cut -c 5-)
|
||||
node=$(wpctl inspect $id | grep node.name | cut -d '=' -f 2)
|
||||
ident=$(wpctl status | sed -n '/Sources/,$p' | sed -n '/Filter/q;p' | grep "$device" | grep -oE '[0-9]+\.' | tr -d '.')
|
||||
node=$(wpctl inspect $ident | grep node.name | cut -d '=' -f 2)
|
||||
|
||||
[ -z "$2" ] && num="5" || num="$2"
|
||||
|
||||
@@ -61,7 +61,7 @@ case "$1" in
|
||||
loop) playerctl loop none
|
||||
sleep 1
|
||||
pkill -RTMIN+9 $STATUSBAR ;;
|
||||
tap) wpctl set-volume $id 1.0
|
||||
tap) wpctl set-volume $ident 1.0
|
||||
touch ~/.local/state/loopback.lock
|
||||
pw-loopback -C $node &
|
||||
notify-send -u low 'sxhkd' "Started loopback of $device" ;;
|
||||
|
||||
12
.profile
12
.profile
@@ -72,18 +72,6 @@ export VIPER_CARBON=""
|
||||
export VIPER_Z3="/bin/z3"
|
||||
export VIPER_BOOGIE="$HOME/.dotnet/tools/boogie"
|
||||
|
||||
# python
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
|
||||
if [ -d "$PYENV_ROOT" ] && [ -x "PYENV_ROOT/bin/pyenv" ]; then
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
if command -v timeout >/DEV/NULL 2>&1; then
|
||||
timeout 2s -c sh -c 'eval "$($PYENV_ROOT/bin/pyenv init --path)"' 2>/dev/null
|
||||
else
|
||||
eval "$($PYENV_ROOT/bin/pyenv init --path 2>/dev/null)" || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# less/man colors
|
||||
export LESS=-R
|
||||
export LESS_TERMCAP_mb="$(printf '%b' '[1;31m')"; a="${a%_}"
|
||||
|
||||
Reference in New Issue
Block a user