From d781bb476894ed22562edd5c69a795e4bcd6fc3f Mon Sep 17 00:00:00 2001 From: tavo Date: Tue, 24 Dec 2024 17:14:19 -0600 Subject: [PATCH] pyv --- .gitignore | 2 + cvim/vimrc | 9 +-- scripts/menu/menu | 8 +-- shell/bashrc | 30 ++++------ shell/env | 18 ++++-- shell/functions/pyv | 139 ++++++++++++++++++++++++++++++++++++++++++++ ssh/config | 20 +++++++ wrappers/cvim | 3 + 8 files changed, 198 insertions(+), 31 deletions(-) create mode 100644 shell/functions/pyv create mode 100644 ssh/config create mode 100755 wrappers/cvim diff --git a/.gitignore b/.gitignore index b3c3cde..650091e 100644 --- a/.gitignore +++ b/.gitignore @@ -253,3 +253,5 @@ VirtualBox/ knfsshare lazygit/ glow/ +heroic/ +kwinoutputconfig.json diff --git a/cvim/vimrc b/cvim/vimrc index 92f792a..8edbbdf 100644 --- a/cvim/vimrc +++ b/cvim/vimrc @@ -160,15 +160,16 @@ Plug 'Gavinok/vim-troff' Plug 'ibhagwan/fzf-lua' Plug 'preservim/tagbar' " Plug 'morhetz/gruvbox' -Plug 'sainnhe/gruvbox-material' +" Plug 'sainnhe/gruvbox-material' +Plug 'sainnhe/everforest' Plug 'jceb/vim-orgmode' Plug 'mikelue/vim-maven-plugin' call plug#end() -" gruvbox-material +" theme set background=dark -let g:gruvbox_material_background = 'hard' -colorscheme gruvbox-material +let g:everforest_background = 'hard' +colorscheme everforest " AutoComplPop inoremap pumvisible() ? "" : "" diff --git a/scripts/menu/menu b/scripts/menu/menu index d422067..607860c 100755 --- a/scripts/menu/menu +++ b/scripts/menu/menu @@ -10,10 +10,10 @@ menu="menu_dmenu" font="JetbrainsMono" font_size="10" col_white="#ebdbb2" # White -col_nb="#1d2021" # Normal background -col_nf="#606060" # Normal foreground -col_sb="#fabd2f" # Selected background -col_sf="#1d2021" # Selected foreground +col_nb="#1e2326" # Normal background +col_nf="#374145" # Normal foreground +col_sb="#7fbbb3" # Selected background +col_sf="#1e2326" # Selected foreground menu_bemenu() { bemenu$BRUN \ diff --git a/shell/bashrc b/shell/bashrc index 86c6d42..6a85a73 100644 --- a/shell/bashrc +++ b/shell/bashrc @@ -13,11 +13,6 @@ if ! shopt -oq posix; then . /etc/bash_completion fi -[ -f ~/.bash_aliases ] && . ~/.bash_aliases - -HISTCONTROL=ignoreboth -HISTSIZE= -HISTFILESIZE= bind "set completion-ignore-case on" shopt -s checkwinsize shopt -s histappend @@ -25,16 +20,9 @@ shopt -s cdspell shopt -s autocd set -o vi -PATH="$HOME/.config/scripts/status${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/menu${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/menu/xclipmenu${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/sway${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts/dwm${PATH:+:${PATH}}" -PATH="$HOME/.config/wrappers${PATH:+:${PATH}}" -PATH="$HOME/.config/scripts${PATH:+:${PATH}}" -PATH="$HOME/.local/bin${PATH:+:${PATH}}" -PATH="$HOME/.local/state/nix/profile/bin${PATH:+:${PATH}}" -PATH="$HOME/.config/emacs/bin${PATH:+:${PATH}}" +HISTCONTROL=ignoreboth +HISTIZE= +HISTFILESIZE= format_workdir() { CODE="$?" @@ -67,8 +55,6 @@ $(format_git_branch ${?})\ $(format_prompt ${?})\ ' -alias wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" - ! command -v sudo >/dev/null 2>&1 && alias sudo="doas" && complete -cf doas @@ -115,13 +101,21 @@ alias \ qr="qrencode -t ansiutf8" \ clip="xsel -ib" \ em="emacsclient -c -a 'emacs' $@" \ - venv=". ~/.local/share/venv/base/bin/activate" \ + wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" \ + ssh="ssh ${SSH_CONFIG} " \ [ -f ~/.config/shell/kit ] && . ~/.config/shell/kit +for func in ~/.config/shell/functions/* ; do + [ -f "$func" ] && . $func +done + if [ "$(tty)" = "/dev/tty1" ] ; then sleep 0.5 amixer & exec startx #exec sway +elif [ "$(tty)" = "/dev/tty2" ] ; then + sleep 0.5 + exec /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland fi diff --git a/shell/env b/shell/env index 67ad55f..50b3c7f 100644 --- a/shell/env +++ b/shell/env @@ -1,6 +1,17 @@ #!/bin/sh # $ printf '[ -f ~/.config/shell/env ] && . ~/.config/shell/env' | sudo tee -a /etc/profile +PATH="$HOME/.config/scripts/status${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/menu/xclipmenu${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/sway${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts/dwm${PATH:+:${PATH}}" +PATH="$HOME/.config/wrappers${PATH:+:${PATH}}" +PATH="$HOME/.config/scripts${PATH:+:${PATH}}" +PATH="$HOME/.local/bin${PATH:+:${PATH}}" +PATH="$HOME/.local/state/nix/profile/bin${PATH:+:${PATH}}" +PATH="$HOME/.config/emacs/bin${PATH:+:${PATH}}" + export \ XDG_STATE_HOME="$HOME/.local/state" \ XDG_CACHE_HOME="$HOME/.local/cache" \ @@ -30,17 +41,14 @@ export \ WGETRC="$HOME/.config/wget/wgetrc" \ GNUPGHOME="$XDG_DATA_HOME/gnupg" \ GOPATH="$XDG_DATA_HOME/go" \ + SSH_CONFIG="-F ${XDG_CONFIG_HOME}/ssh/config" \ + GIT_SSH_COMMAND="ssh -F ${XDG_CONFIG_HOME}/ssh/config" \ if [ -n "$HISTFILE" ] && ! [ -d "${HISTFILE%/*}" ] ; then mkdir -p "${HISTFILE%/*}" && touch "$HISTFILE" fi -alias wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" - export \ - HISTCONTROL=ignoreboth \ - HISTIZE= \ - HISTFILESIZE= \ DATE=$(date -I) \ WEEK=$(date '+%U') \ diff --git a/shell/functions/pyv b/shell/functions/pyv new file mode 100644 index 0000000..16490d8 --- /dev/null +++ b/shell/functions/pyv @@ -0,0 +1,139 @@ +#!/bin/sh + +_pyv_err() { + printf '\033[91mError:\033[0m \033[2m%s\033[0m\n' "$1" +} + +_pyv_warn() { + printf '\033[93mWarn:\033[0m \033[2m%s\033[0m\n' "$1" +} + +_pyv_log() { + printf '\033[94mpyv:\033[0m \033[2m%s\033[0m\n' "$1" +} + +_pyv_help() { + printf 'Usage:\n \033[92mpyv\033[0m \033[94m[ls|new|rm|go|exit]\033[0m \033[95mmyvenv\033[0m\n' +} + +_pyv_avail() { + venvs="$(for v in "$VENV_DIR"/* ; do + if [ -d "$v" ] ; then + if [ "$VIRTUAL_ENV" == "$v" ] ; then + printf '\033[95m%s\033[0m, ' "*${v##*/}" + else + printf '\033[95m%s\033[0m, ' "${v##*/}" + fi + fi + done)" + venvs="${venvs%,*}" + [ -n "$venvs" ] && printf 'Available venvs:\n %s\n' "$venvs" +} + +_pyv_prompt() { + printf '%s [y/N]: ' "$1" + read -r s + case "$(echo "$s" | tr '[:upper:]' '[:lower:]')" in + y|yes) return 0 ;; + *) return 1 ;; + esac +} + +pyv() { + VENV_OPT= + VENV_LIST= + + PYTHON="${PYTHON:=$(command -v python 2>&-)}" + PYTHON="${PYTHON:=$(command -v python3 2>&-)}" + [ -z "$PYTHON" ] && _pyv_err "Could not find python in PATH" && return 1 + + if ! $PYTHON -m venv -h >&- 2>&- ; then + _pyv_err "python-venv module not available" && return 1 + fi + + if [ -z "$VENV_DIR" ] ; then + if [ -n "$XDG_DATA_HOME" ] ; then + VENV_DIR="$XDG_DATA_HOME/venv" + else + [ -z "$HOME" ] && _pyv_err "No safe venv location" && return 1 + VENV_DIR="$HOME/.local/share/venv" + fi + fi + mkdir -p "$VENV_DIR" + + case "$1" in + new|go|rm) + VENV_OPT="$1" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;; + -d) + VENV_OPT="rm" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;; + exit|quit|q) + if command -v deactivate >&- 2>&- ; then + _pyv_log "Deactivating venv ${VIRTUAL_ENV##*/}..." + deactivate + else + _pyv_warn "No currently active venv" + fi + return 0 ;; + -l*|--l*|l|ls|list) + _pyv_avail + return 0 ;; + -*|help|h|"") + _pyv_help + avail="$(_pyv_avail)" + [ -n "$avail" ] && printf '\n%s\n' "$avail" + return 0 ;; + *) + VENV_OPT="go" ; VENV_LIST="$@" ;; + esac + + for v in $VENV_LIST ; do + if ! [ -d "$VENV_DIR/$v" ] && [ "$VENV_OPT" != "new" ] ; then + _pyv_err "venv $v not found" + VENV_LIST= + fi + done + + if [ -z "$VENV_LIST" ] ; then + _pyv_help + echo + _pyv_avail + return 0 + fi + + if [ "$VENV_OPT" == "new" ] ; then + for v in $VENV_LIST ; do + if [ -d "$VENV_DIR/$v" ] ; then + _pyv_warn "venv $v already exists, skipping..." + else + _pyv_log "Creating new venv $v..." + $PYTHON -m venv "$VENV_DIR/$v" + fi + done + fi + + if [ "$VENV_OPT" == "rm" ] ; then + for v in $VENV_LIST ; do + if _pyv_prompt "Remove venv at '$VENV_DIR/$v'?" ; then + _pyv_log "Removing venv $v..." + rm -rf "$VENV_DIR/$v" && _pyv_log "Done" + else + _pyv_log "Keeping venv $v" + fi + done + fi + + if [ "$VENV_OPT" == "go" ] ; then + command -v deactivate >&- 2>&- && deactivate + venv="${VENV_LIST%% *}" + _pyv_log "Activating $venv..." + + case "${0##*/}" in + bash|zsh|dash|ksh|sh) + . "$VENV_DIR/$venv/bin/activate" ;; + fish) + source "$VENV_DIR/$venv/bin/activate.fish" ;; + csh|tcsh) + source "$VENV_DIR/$venv/bin/activate.csh" ;; + esac + fi +} diff --git a/ssh/config b/ssh/config new file mode 100644 index 0000000..df518cc --- /dev/null +++ b/ssh/config @@ -0,0 +1,20 @@ +Host * + IdentityFile ${XDG_DATA_HOME}/ssh/id_ed25519 + UserKnownHostsFile ${XDG_DATA_HOME}/ssh/known_hosts + +Host home + AddressFamily inet + #HostName 192.168.100.83 + HostName tavo.one + port 22 + +Host tavo.one + AddressFamily inet + port 21 + +Host dev + AddressFamily inet + #HostName 192.168.100.83 + HostName tavo.one + Port 2222 + User dev diff --git a/wrappers/cvim b/wrappers/cvim new file mode 100755 index 0000000..0b31726 --- /dev/null +++ b/wrappers/cvim @@ -0,0 +1,3 @@ +#!/bin/sh + +VIMINIT="source $HOME/.config/cvim/vimrc" nvim $@