Shell: Update aliases, improve configuration editing, separate music functions

This commit is contained in:
xerus2000 2020-06-08 11:41:03 +02:00
parent 498978ddbc
commit a98234a870
3 changed files with 112 additions and 111 deletions

View File

@ -1,4 +1,3 @@
#! /usr/bin/make
# Shell configuration for Zsh, works almost completely for Bash as well
export LESS=-R
@ -6,22 +5,29 @@ alias info='info --vi-keys'
export DIST=$(lsb_release --id | cut -d' ' -f2)
# Some aliases
alias println='printf "\n"'
# find pruning avoids permission denied errors - see https://unix.stackexchange.com/a/121020/272449
alias conf='find ~/.config/nvim ~/.config ~/.gradle/gradle.properties /etc -type d ! \( -readable \) -prune -o -type f -print | fzf --tiebreak=end,index --preview "bat --color=always --style=numbers --line-range :500 {}" --bind "enter:execute(test -O {} && $EDITOR {} || sudoedit {}),del:execute(gio trash {})"'
alias conf='{ fd -t f . --full-path $(xdg-user-dir CONFIG) /etc; echo ~/.gradle/gradle.properties } | fzf --tiebreak=end,length --preview "bat --color=always --style=numbers --line-range :500 {}" --bind "enter:execute(test -O {} && $EDITOR {} || sudoedit {}),del:execute(gio trash {}),change:top"'
alias editgrub='sudoedit /etc/default/grub && sudo update-grub'
alias editenv='sudoedit /etc/environment'
CONFIG_SHELL_FUNCTIONS="${BASH_SOURCE[0]:-${(%):-%x}}"
alias r="reset && exec zsh"
editshell() {
nvim $(test $# -lt 1 && echo "$SHELL_FUNCTIONS" || (results=$(find "$dropbox_path/tools/setup" -maxdepth 1 -name "$1.sh") && test "$results" && echo "$results") || echo "$(dirname $SHELL_FUNCTIONS)/$1") && r
file=$((test $# -lt 1 && echo "$CONFIG_SHELL_FUNCTIONS") || (test "$1" = "zsh" && echo "$CONFIG_ZSH/.zshrc") || echo "$CONFIG_SHELLS/$1")
checksum="$(md5sum $file)"
$EDITOR $file
test "$checksum" != "$(md5sum $file)" && exec $SHELL
}
alias graphics='lspci -vnn | grep VGA --color=never'
alias -g ___='"$(eval "$(fc -ln -1)" | tail -n 1)"'
alias -g G="| grp"
alias println='printf "\n"'
alias graphics='lspci -vnn | grep VGA --color=never'
alias startMinecraftServer='curl https://ipinfo.io/ip | xclip -sel clip && cd ~/daten/games/sharedgames/minecraft/server && java -jar forge-1.12.2-14.23.5.2768-universal.jar -mx 8G'
# Fast shortcuts
alias t='task'
alias tw='timew'
alias c='clear'
alias q='exit'
alias v='nvim'
@ -30,9 +36,8 @@ alias grpr='grp -r'
b() { bat "$@" 2>/dev/null || ls -lah "$@" }
cdd() { cd "$@" 2>/dev/null || cd "$(dirname "$1")" "${@:2}" }
tr() { tree -C -a -L 2 "$@" | less }
alias sc='sudo systemctl'
SHELL_FUNCTIONS="${BASH_SOURCE[0]:-${(%):-%x}}"
alias r="reset && source $SHELL_FUNCTIONS"
dropbox_path="$(cat ~/.dropbox/info.json | grep -Po '"'"path"'"\s*:\s*"\K([^"]*)')"
@ -227,86 +232,6 @@ resetdocker() {
}
# MUSIC
music_folder="/home/janek/daten/musik"
audio_folder="/home/janek/daten/audio"
music_original_folder="$audio_folder/songs/_raw"
makePl() { echo ${2:-empty} >$1.m3u8 }
makePls() {
i=1; while test $i -le ${1:-9}; do makePl "${2:-Ω}$i" "empty$i"; ((i++)); done
}
findsongs() {
find -regextype posix-extended -maxdepth 1 -type f -regex "${1:-.*\.(mp3|flac|wav|m4a)}" -printf "%P\n"
}
addmix() {
mv -v "$1.cue" "$audio_folder/recordings/cues"
addsong "$1.flac" Mixes
}
addsong() {
test "$1" = "-q" && shift && quick="true"
local raw="${1%.*}"
local isflac=$(case "$1" in *.flac) echo "true";; esac)
test "$isflac" || (echo "Converting to flac..." && flac "$1" --totally-silent)
test "$quick" || (echo "Press ENTER when the metadata of the flac file is correct..." && read)
echo "Converting to mp3..."
lame -V0 "$1" --silent
mkdir -p "$music_folder/$2"
mkdir -p "$music_original_folder/$2"
local destination="$music_folder/$2/$raw.mp3"
echo "Moving mp3 with metadata to $destination"
ffmpeg -i "$raw.mp3" -i "$raw.flac" -c copy -map_metadata 1 "$destination" -v warning "${@:3}" && rm "$raw.mp3"
test ! "$PWD" -ef "$music_original_folder/$2" && mv -v "$raw.flac" "$music_original_folder/$2" && (test "$isflac" || rm -v "$1")
}
addalbum() {
mkdir -p "$music_folder/$1"
mkdir -p "$music_original_folder/$1"
f1 -regextype posix-extended -type f -regex "\./(cover|folder)\.(png|jpg|jpeg)" | while read cover; do
foundcover="true"
cp -v "$cover" "$music_folder/$1" &&
mv -v "$cover" "$music_original_folder/$1"
done
test "$foundcover" || f1 -regextype posix-extended -type f -regex ".*\.(png|jpg|jpeg)" | while read cover; do
cp -v "$cover" "$music_folder/$1" &&
mv -v "$cover" "$music_original_folder/$1"
done
IFS=$'\n'
for s in $(findsongs ".*\.(flac|wav)"); do
highlight "$s"
addsong -q "$s" "$1" "${@:2}"
done
unset IFS
}
formatsongs() {
_pwd="$PWD"
find "$PWD" "$@" -type d | while read d; do cd $d; findsongs | while read song; do
new="$(formatsong "$song")"
test "$new" != "$song" && mv -v "$song" "$new"
done; done
cd "$_pwd"
IFS=$'\n'
for f in $(find "$@" -name "*.wav"); do
echo "Converting $f to ${f%.*}.flac"
ffmpeg -i "$f" "${f%.*}.flac" -v warning && rm -v $f
done
unset IFS
}
formatsong() {
echo "$1" | sed -e 's/\([ ([]\)\(ft\|Ft\|Feat\)\([ .]\)/\1feat\3/;s/\([ ([]\)feat /\1feat. /;s/ \((Original Mix)\|(Original)\|(Full Stream)\|.NCS Release.\)//i;s/ \(\..\{2,4\}\)$/\1/;s/---/ - /;s/^[0-9]\{6\}_//;s/ / /g;s/\(\w\)+\(\w\)/\1 \2/g' -
}
# INSTALL
snapinstall() {
@ -432,9 +357,6 @@ function zipdiff() {
# PROJECTS
source "$(dirname $SHELL_FUNCTIONS)/git"
source "$(dirname $SHELL_FUNCTIONS)/projects"
pdiff() {
diff -r $1 $2 -x .git -x .idea -x .gradle
}

80
.config/shell/music Normal file
View File

@ -0,0 +1,80 @@
MUSIC="/home/janek/daten/musik"
AUDIO="/home/janek/daten/audio"
MUSIC_RAW="$audio_folder/songs/_raw"
makePl() { echo ${2:-empty} >$1.m3u8 }
makePls() {
i=1; while test $i -le ${1:-9}; do makePl "${2:-Ω}$i" "empty$i"; ((i++)); done
}
findsongs() {
find -regextype posix-extended -maxdepth 1 -type f -regex "${1:-.*\.(mp3|flac|wav|m4a)}" -printf "%P\n"
}
addmix() {
mv -v "$1.cue" "$audio_folder/recordings/cues"
addsong "$1.flac" Mixes
}
addsong() {
test "$1" = "-q" && shift && quick="true"
local raw="${1%.*}"
local isflac=$(case "$1" in *.flac) echo "true";; esac)
test "$isflac" || (echo "Converting to flac..." && flac "$1" --totally-silent)
test "$quick" || (echo "Press ENTER when the metadata of the flac file is correct..." && read)
echo "Converting to mp3..."
lame -V0 "$1" --silent
mkdir -p "$MUSIC/$2"
mkdir -p "$MUSIC_RAW/$2"
local destination="$MUSIC/$2/$raw.mp3"
echo "Moving mp3 with metadata to $destination"
ffmpeg -i "$raw.mp3" -i "$raw.flac" -c copy -map_metadata 1 "$destination" -v warning "${@:3}" && rm "$raw.mp3"
test ! "$PWD" -ef "$MUSIC_RAW/$2" && mv -v "$raw.flac" "$MUSIC_RAW/$2" && (test "$isflac" || rm -v "$1")
}
addalbum() {
mkdir -p "$MUSIC/$1"
mkdir -p "$MUSIC_RAW/$1"
f1 -regextype posix-extended -type f -regex "\./(cover|folder)\.(png|jpg|jpeg)" | while read cover; do
foundcover="true"
cp -v "$cover" "$MUSIC/$1" &&
mv -v "$cover" "$MUSIC_RAW
/$1"
done
test "$foundcover" || f1 -regextype posix-extended -type f -regex ".*\.(png|jpg|jpeg)" | while read cover; do
cp -v "$cover" "$MUSIC/$1" &&
mv -v "$cover" "$MUSIC_RAW
/$1"
done
IFS=$'\n'
for s in $(findsongs ".*\.(flac|wav)"); do
highlight "$s"
addsong -q "$s" "$1" "${@:2}"
done
unset IFS
}
formatsongs() {
_pwd="$PWD"
find "$PWD" "$@" -type d | while read d; do cd $d; findsongs | while read song; do
new="$(formatsong "$song")"
test "$new" != "$song" && mv -v "$song" "$new"
done; done
cd "$_pwd"
IFS=$'\n'
for f in $(find "$@" -name "*.wav"); do
echo "Converting $f to ${f%.*}.flac"
ffmpeg -i "$f" "${f%.*}.flac" -v warning && rm -v $f
done
unset IFS
}
formatsong() {
echo "$1" | sed -e 's/\([ ([]\)\(ft\|Ft\|Feat\)\([ .]\)/\1feat\3/;s/\([ ([]\)feat /\1feat. /;s/ \((Original Mix)\|(Original)\|(Full Stream)\|.NCS Release.\)//i;s/ \(\..\{2,4\}\)$/\1/;s/---/ - /;s/^[0-9]\{6\}_//;s/ / /g;s/\(\w\)+\(\w\)/\1 \2/g' -
}

View File

@ -1,8 +1,9 @@
# Commands
neofetch
task next limit:3
timew
if test "$PWD" = ~ && test "$0" != "$SHELL"; then
neofetch --config $(xdg-user-dir CONFIG)/neofetch/config-short.conf
task next limit:3
timew | head -3
fi
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
@ -11,11 +12,11 @@ if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:$HOME/.local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=~/.local/share/oh-my-zsh
export CONFIG_ZSH="$HOME/.config/zsh"
export CONFIG_SHELLS="$HOME/.config/shell"
export ZSH="$HOME/.local/share/oh-my-zsh"
DEFAULT_USER=$USER
ZSH_THEME="powerlevel10k/powerlevel10k"
@ -36,17 +37,15 @@ DISABLE_UNTRACKED_FILES_DIRTY="true" # DOn't mark untracked files as dirty - spe
plugins=(
git
git-extras
git-auto-fetch
z
fast-syntax-highlighting
zsh-autosuggestions
#zsh-vim-mode
zsh-vim-mode
)
SHELL_CONFIG="$HOME/.config/shell"
ZSH_CONFIG="$HOME/.config/zsh"
_comp_options+=(globdots) # Show files starting with dot in autocomplete
fpath=($fpath "$ZSH_CONFIG/zsh_completion") # Custom completions
fpath=($fpath "$CONFIG_ZSH/zsh_completion") # Custom completions
ZSH_COMPDUMP="$(xdg-user-dir CACHE)/zsh/zcompdump-$ZSH_VERSION" # Cache completions
source $ZSH/oh-my-zsh.sh
@ -98,7 +97,7 @@ bindkey '^q' push-line-or-edit
export KEYTIMEOUT=1
# Manual VIM bindings - disabled, replaced by plugin {{{
# Obsolete: zsh-vim-mode plugin - Custom VIM bindings {{{
#bindkey -v
#autoload -Uz history-search-end
#
@ -115,7 +114,7 @@ export KEYTIMEOUT=1
# '^[OB' history-beginning-search-forward-end
# }}}
# Show time on the right after executing command - obsolete through powerlevel10k {{{
# Obsolete: powerlevel10k - Show time on the right after executing command {{{
# strlen() {
# FOO=$1
# local zero='%([BSUbfksu]|([FB]|){*})'
@ -145,8 +144,6 @@ export KEYTIMEOUT=1
## User configuration
source "$SHELL_CONFIG/functions"
# turn on spelling correction
setopt correct
# don't save duplicates in command history
@ -154,7 +151,9 @@ setopt histignoredups
setopt extended_glob
# Enable zmv
setopt pipefail
# Enable zmv (see ZSHCONTRIB(1))
autoload zmv
alias zmv='noglob zmv'
alias zmw='zmv -W'
@ -162,7 +161,6 @@ alias zcp='noglob zmv -C'
alias zln='noglob zmv -L'
alias zsy='noglob zmv -Ls'
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
@ -170,6 +168,7 @@ else
export EDITOR='nvim'
fi
for file in $CONFIG_SHELLS/*; do source $file; done
# AUTOMATICALLY ADDED SHIT
@ -186,6 +185,6 @@ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# To customize prompt, run `p10k configure` or edit .p10k.zsh.
[[ ! -f $ZSH_CONFIG/.p10k.zsh ]] || source $ZSH_CONFIG/.p10k.zsh
[[ ! -f $CONFIG_ZSH/.p10k.zsh ]] || source $CONFIG_ZSH/.p10k.zsh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh