Update shell & dirs config

This commit is contained in:
xerus2000 2020-06-03 12:39:13 +02:00
parent 67c41eef73
commit 498978ddbc
4 changed files with 108 additions and 44 deletions

View File

@ -1,29 +1,40 @@
#! /usr/bin/make
# Shell configuration for Zsh, works almost completely for Bash as well # Shell configuration for Zsh, works almost completely for Bash as well
export LESS=-R export LESS=-R
export LC_MESSAGES=C alias info='info --vi-keys'
export DIST=$(lsb_release --id | cut -d' ' -f2) export DIST=$(lsb_release --id | cut -d' ' -f2)
# Some aliases # Some aliases
alias println='printf "\n"' 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 editgrub='sudoedit /etc/default/grub && sudo update-grub' alias editgrub='sudoedit /etc/default/grub && sudo update-grub'
alias editenv='sudoedit /etc/environment' alias editenv='sudoedit /etc/environment'
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
}
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' 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 # Fast shortcuts
alias t='tree -C | less' alias t='task'
alias c='clear' alias c='clear'
alias q='exit' alias q='exit'
alias v='nvim' alias v='nvim'
alias grp='grep -iIn'
alias grpr='grp -r'
b() { bat "$@" 2>/dev/null || ls -lah "$@" } b() { bat "$@" 2>/dev/null || ls -lah "$@" }
cdd() { cd "$@" 2>/dev/null || cd "$(dirname "$1")" "${@:2}" }
tr() { tree -C -a -L 2 "$@" | less }
_FUNCTIONS=${BASH_SOURCE[0]:-${(%):-%x}} SHELL_FUNCTIONS="${BASH_SOURCE[0]:-${(%):-%x}}"
alias r="reset && source $_FUNCTIONS" alias r="reset && source $SHELL_FUNCTIONS"
dropbox_path=$(cat ~/.dropbox/info.json | grep -Po '"'"path"'"\s*:\s*"\K([^"]*)') dropbox_path="$(cat ~/.dropbox/info.json | grep -Po '"'"path"'"\s*:\s*"\K([^"]*)')"
# Add an "alert" alias for long running commands. Use like so: sleep 10; alert # Add an "alert" alias for long running commands. Use like so: sleep 10; alert
#if [ command -v notify-send >/dev/null 2>&1 ]; then #if [ command -v notify-send >/dev/null 2>&1 ]; then
@ -38,6 +49,51 @@ man() {
(test "$1" = "zmv" && LESS="$LESS+/^ *zmv *\\[" /usr/bin/man zshcontrib) || /usr/bin/man "$@" (test "$1" = "zmv" && LESS="$LESS+/^ *zmv *\\[" /usr/bin/man zshcontrib) || /usr/bin/man "$@"
} }
sedcomment() { sed -i 's/$1/#\0/' "${@:2}" }
seduncomment() { sed -i 's/#\($1\)/\0/' "${@:2}" }
mozedit() (
set -eo pipefail
file="$1"
tmpfile="/tmp/$(basename $1).tmp"
unsetopt multios # https://stackoverflow.com/a/58261480
# ( [[ -t 0 ]] && echo 'STDIN is attached to TTY' ) || cat
{ echo -en '\x02\x21\x4C\x18TT\x0\x0' && dd if="$file" bs=1 skip=12 } 2>&1 >"$tmpfile" | head -1 | cut -d+ -f1 | xargs printf "%04x\n" | read len
tmpfile2="${tmpfile}2"
cat "$tmpfile" | sed "s/TT/\\x${len:2:2}\\x${len:0:2}/" | unlz4 >"$tmpfile2"
cat "$tmpfile2" | sed "$2" | lz4 -l | dd bs=1 skip=8 seek=12 of="$file" conv=notrunc
)
theme_save="$(xdg-user-dir CACHE)/theme"
theme_default="dark"
theme() {
theme="$1"
if test "$2" = "kde" || test "$theme" != "$THEME" -a "$2" != "q"
then kcmshell5 kcm_lookandfeel &
fi
export THEME="$theme"
echo "$theme">"$theme_save"
#mozfile=$(find $HOME/.mozilla/firefox/ -maxdepth 2 -name addonStartup.json.lz4 | grep ".test")
case "$theme" in
(light)
export BAT_THEME="OneHalfLight"
konsoleprofile colors="Light"
sed -i 's/#\(include.*\/light-256.theme\)/\1/' "$(xdg-user-dir CONFIG)/taskrc"
#mozedit $mozfile '/light@mozilla/,/"enabled"/ s/\("enabled":.*\)false/\1true/; /dark@mozilla/,/"enabled"/ s/\("enabled":.*\)true/\1false/'
;;
(dark)
export BAT_THEME="OneHalfDark"
konsoleprofile colors="Breeze"
sed -i 's/^include.*light-256.theme/#\0/' "$(xdg-user-dir CONFIG)/taskrc"
#mozedit $mozfile '/light@mozilla/,/"enabled"/ s/\("enabled":.*\)true/\1false/; /dark@mozilla/,/"enabled"/ s/\("enabled":.*\)false/\1true/'
;;
esac
}
export THEME=$(cat "$theme_save" 2> /dev/null)
export THEME=${THEME:-$theme_default}
theme $THEME
updateDeps() { updateDeps() {
name="$1" name="$1"
pattern="$2" pattern="$2"
@ -64,8 +120,11 @@ alias updateKotlin='updateDeps build.gradle.kts '\''kotlin(\"jvm\") version \"'\
alias updateGradle='updateDeps gradle-wrapper.properties "services.gradle.org\/distributions\/gradle-" --version' alias updateGradle='updateDeps gradle-wrapper.properties "services.gradle.org\/distributions\/gradle-" --version'
alias updateUtils='updateDeps build.gradle.kts '\''\"com.github.Xerus2000.util\", \".*\", \"'\'' --pattern '\''[^\"]\+'\'' --version' alias updateUtils='updateDeps build.gradle.kts '\''\"com.github.Xerus2000.util\", \".*\", \"'\'' --pattern '\''[^\"]\+'\'' --version'
# Kill all shell background processes
alias killbg='kill ${${(v)jobstates##*:*:}%=*}' alias killbg='kill ${${(v)jobstates##*:*:}%=*}'
# Kil all Java processes except IDEA
# Pass "-9" to force-kill and "-q" to not output what has been killed
killJava() { killJava() {
pgrep -f 'java' | while read id pgrep -f 'java' | while read id
do if [[ $(ps --no-headers -o cmd $id) != *"idea"* ]]; then do if [[ $(ps --no-headers -o cmd $id) != *"idea"* ]]; then
@ -129,7 +188,7 @@ mvk() {
mv "$1" "$2" mv "$1" "$2"
} }
# moves from $1 to $2 and creates a symlink instead # Moves from $1 to $2 and creates a symlink in place of $2
mvln() { mvln() {
file=$(test -f "$1" && echo 1 || echo 0) file=$(test -f "$1" && echo 1 || echo 0)
if test -d $1; then if test -d $1; then
@ -144,10 +203,6 @@ mvln() {
# OTHER # OTHER
editshell() {
nvim $(test $# -lt 1 && echo "$_FUNCTIONS" || (results=$(find "$dropbox_path/tools/setup" -maxdepth 1 -name "$1.sh") && test "$results" && echo "$results") || echo "$(dirname $_FUNCTIONS)/$1") && r
}
pathadd() { pathadd() {
local IFS=":" local IFS=":"
local result="$@" local result="$@"
@ -179,7 +234,7 @@ music_original_folder="$audio_folder/songs/_raw"
makePl() { echo ${2:-empty} >$1.m3u8 } makePl() { echo ${2:-empty} >$1.m3u8 }
makePls() { makePls() {
i=1; while test $i -le ${1:-9}; do makePl "${2:-Ω}$i" "empty$i"; ((i++)); done i=1; while test $i -le ${1:-9}; do makePl "${2:-Ω}$i" "empty$i"; ((i++)); done
} }
findsongs() { findsongs() {
@ -193,19 +248,19 @@ addmix() {
addsong() { addsong() {
test "$1" = "-q" && shift && quick="true" test "$1" = "-q" && shift && quick="true"
local raw="${1%.*}" local raw="${1%.*}"
local isflac=$(case "$1" in *.flac) echo "true";; esac) local isflac=$(case "$1" in *.flac) echo "true";; esac)
test "$isflac" || (echo "Converting to flac..." && flac "$1" --totally-silent) 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) test "$quick" || (echo "Press ENTER when the metadata of the flac file is correct..." && read)
echo "Converting to mp3..." echo "Converting to mp3..."
lame -V0 "$1" --silent lame -V0 "$1" --silent
mkdir -p "$music_folder/$2" mkdir -p "$music_folder/$2"
mkdir -p "$music_original_folder/$2" mkdir -p "$music_original_folder/$2"
local destination="$music_folder/$2/$raw.mp3" local destination="$music_folder/$2/$raw.mp3"
echo "Moving mp3 with metadata to $destination" 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" ffmpeg -i "$raw.mp3" -i "$raw.flac" -c copy -map_metadata 1 "$destination" -v warning "${@:3}" && rm "$raw.mp3"
@ -224,9 +279,9 @@ addalbum() {
cp -v "$cover" "$music_folder/$1" && cp -v "$cover" "$music_folder/$1" &&
mv -v "$cover" "$music_original_folder/$1" mv -v "$cover" "$music_original_folder/$1"
done done
IFS=$'\n' IFS=$'\n'
for s in $(findsongs ".*\.(flac|wav)"); do for s in $(findsongs ".*\.(flac|wav)"); do
highlight "$s" highlight "$s"
addsong -q "$s" "$1" "${@:2}" addsong -q "$s" "$1" "${@:2}"
done done
@ -241,7 +296,7 @@ formatsongs() {
done; done done; done
cd "$_pwd" cd "$_pwd"
IFS=$'\n' IFS=$'\n'
for f in $(find "$@" -name "*.wav"); do for f in $(find "$@" -name "*.wav"); do
echo "Converting $f to ${f%.*}.flac" echo "Converting $f to ${f%.*}.flac"
ffmpeg -i "$f" "${f%.*}.flac" -v warning && rm -v $f ffmpeg -i "$f" "${f%.*}.flac" -v warning && rm -v $f
done done
@ -306,14 +361,15 @@ aptrepoinstall() {
# Gets the download url for the latest release of a package provided via GitHub Releases # Gets the download url for the latest release of a package provided via GitHub Releases
# Usage: ghrelease USER REPO [PATTERN] # Usage: ghrelease USER REPO [PATTERN]
ghrelease() { ghrelease() {
curl -s "https://api.github.com/repos/$1/$2/releases/latest" | grep -o "http.*${3:-deb}" result=$(curl -s "https://api.github.com/repos/$1/$2/releases/latest" | grep -o "http.*${3:-deb}" | awk '{ print length(), $0}' | sort -n | cut -d' ' -f2-)
echo "$result" | grep amd64 || echo "$result"
} }
# Installs a local or remote(http/https) deb package and removes it after installation # Installs a local or remote(http/https) deb package and removes it after installation
installdeb() { installdeb() {
set -e set -e
loc="/tmp/install.deb" loc="/tmp/install.deb"
case $1 in case $1 in
http*) sudo wget -O "$loc" $1;; http*) sudo wget -O "$loc" $1;;
*) loc="$1" *) loc="$1"
esac esac
@ -338,19 +394,19 @@ if test "$BASH_VERSION"
then _clean_map=([m]=~/.mozilla [c]=~/.cache) then _clean_map=([m]=~/.mozilla [c]=~/.cache)
else _clean_map=(m ~/.mozilla c ~/.cache) else _clean_map=(m ~/.mozilla c ~/.cache)
fi fi
_clean_folders=(~/.oracle_jre_usage ~/.gradle-kotlin-dsl ~/.thumbnails $ZDOTDIR/.zcompdump*) _clean_folders=(~/.oracle_jre_usage ~/.gradle-kotlin-dsl ~/.thumbnails)
clean() { clean() {
for f in $_clean_folders for f in $_clean_folders
do test -d $f && rm -rv $f do test -d $f && rm -rv $f
done done
highlight "g to clean gradle" highlight "g to clean gradle"
if [[ $1 =~ "g" ]]; then if [[ $1 =~ "g" ]]; then
find ~/.gradle/* -maxdepth 0 -not -name "gradle.properties" -exec rm -r {} \; -print find ~/.gradle/* -maxdepth 0 -not -name "gradle.properties" -exec rm -r {} \; -print
find ~/daten/projects/ -name .gradle -print -exec rm -r {} \; find ~/daten/projects/ -name .gradle -print -exec rm -r {} \;
fi fi
if test "$BASH_VERSION"; then if test "$BASH_VERSION"; then
for k in "${!_clean_map[@]}"; do for k in "${!_clean_map[@]}"; do
highlight "$k to delete $_clean_map[$k] highlight "$k to delete $_clean_map[$k]
@ -370,38 +426,38 @@ clean() {
[[ $1 =~ "e" ]] && find -empty -type d -delete -print [[ $1 =~ "e" ]] && find -empty -type d -delete -print
} }
function zipdiff() { function zipdiff() {
diff -W200 -y <(unzip -vql $1 | sort -k8) <(unzip -vql $2 | sort -k8) #--suppress-common-lines diff -W200 -y <(unzip -vql $1 | sort -k8) <(unzip -vql $2 | sort -k8) #--suppress-common-lines
} }
# PROJECTS # PROJECTS
source "$(dirname $_FUNCTIONS)/git" source "$(dirname $SHELL_FUNCTIONS)/git"
source "$(dirname $_FUNCTIONS)/projects" source "$(dirname $SHELL_FUNCTIONS)/projects"
pdiff() {
diff -r $1 $2 -x .git -x .idea -x .gradle
}
genssh() { genssh() {
mkdir -p ~/.ssh mkdir -p ~/.ssh
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -q -N "" -C ${1:-$(hostname)} test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -q -N "" -C ${1:-$(hostname)}
if test "$OSTYPE" = "cygwin" if test "$OSTYPE" = "cygwin"
then cat ~/.ssh/id_rsa.pub>/dev/clipboard then cat ~/.ssh/id_rsa.pub>/dev/clipboard
else xclip -sel clip < ~/.ssh/id_rsa.pub else xclip -sel clip < ~/.ssh/id_rsa.pub
fi && echo "SSH Public key copied to clipboard" fi && echo "SSH Public key copied to clipboard"
}
pdiff() {
diff -r $1 $2 -x .git -x .idea -x .gradle
} }
createproject() { createproject() {
mkcd $1 mkcd $1
echo 'plugins { echo 'plugins {
kotlin("jvm") version "1.3.41" kotlin("jvm") version "1.3.41"
application application
id("com.github.johnrengelman.shadow") version "5.1.0" id("com.github.johnrengelman.shadow") version "5.1.0"
id("com.github.ben-manes.versions") version "0.21.0" id("com.github.ben-manes.versions") version "0.21.0"
} }
sourceSets { sourceSets {
main { main {
java.srcDir("src/main") java.srcDir("src/main")
@ -411,7 +467,7 @@ sourceSets {
java.srcDir("src/test") java.srcDir("src/test")
} }
}' > build.gradle.kts }' > build.gradle.kts
} }
# SWAP # SWAP

View File

@ -5,11 +5,14 @@
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported. # absolute path. No other format is supported.
# #
XDG_DESKTOP_DIR="$HOME/desktop" XDG_CONFIG_DIR="$HOME/.config"
XDG_DOWNLOAD_DIR="$HOME/daten/downloads" XDG_CACHE_DIR="$HOME/.cache"
XDG_DATA_DIR="$HOME/.local/share"
XDG_DESKTOP_DIR="$HOME/.local/desktop"
XDG_TEMPLATES_DIR="$HOME/.local/templates" XDG_TEMPLATES_DIR="$HOME/.local/templates"
XDG_DOCUMENTS_DIR="$HOME/daten" XDG_DOWNLOAD_DIR="$HOME/daten/downloads"
XDG_MUSIC_DIR="$HOME/daten/musik" XDG_MUSIC_DIR="$HOME/"
XDG_PICTURES_DIR="$HOME/daten/bilder" XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/daten/videos" XDG_VIDEOS_DIR="$HOME/daten/videos"
XDG_PUBLICSHARE_DIR="$HOME/" XDG_DOCUMENTS_DIR="$HOME/daten/Dropbox/dokumente"
XDG_PUBLICSHARE_DIR="$HOME/daten/share"

View File

@ -11,5 +11,9 @@ echo "Defaults timestamp_timeout=20" | sudo tee /etc/sudoers.d/timeout
# Stop logind from suspending my laptop # Stop logind from suspending my laptop
sudo sed -i 's/#HandleLidSwitch=suspend/HandleLidSwitch=ignore/' /etc/systemd/logind.conf sudo sed -i 's/#HandleLidSwitch=suspend/HandleLidSwitch=ignore/' /etc/systemd/logind.conf
# Fix Chrysalis for keyboardio - https://github.com/keyboardio/Chrysalis/wiki/Troubleshooting
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="230[0-3]", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/keyboardio.rules
systemctl disable ModemManager
# Colorize Pacman # Colorize Pacman
test -f /etc/pacman.conf && sudo sed -i 's/#Color/Color/' /etc/pacman.conf test -f /etc/pacman.conf && sudo sed -i 's/#Color/Color/' /etc/pacman.conf

View File

@ -4,6 +4,7 @@ export EDITOR=/usr/bin/nvim
export MANPAGER="sh -c 'col -bx | bat -l man -p'" export MANPAGER="sh -c 'col -bx | bat -l man -p'"
export PASSWORD_STORE_DIR="$HOME/.local/share/pass" export PASSWORD_STORE_DIR="$HOME/.local/share/pass"
export TIMEWARRIORDB="$HOME/.local/share/timewarrior"
export ZDOTDIR="$HOME/.config/zsh" export ZDOTDIR="$HOME/.config/zsh"
export _Z_DATA="$HOME/.local/share/zsh/z" export _Z_DATA="$HOME/.local/share/zsh/z"