initial commit
This commit is contained in:
commit
d640a50b17
408
.bashrc
Normal file
408
.bashrc
Normal file
@ -0,0 +1,408 @@
|
||||
#
|
||||
# ~/.bashrc
|
||||
#
|
||||
|
||||
|
||||
## Save history of multiple terminal windows
|
||||
#-https://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
|
||||
# Avoid duplicates
|
||||
# borked, doesn't save in correct order and inserts random entries
|
||||
# HISTCONTROL=ignoredups:erasedups
|
||||
# # When the shell exits, append to the history file instead of overwriting it
|
||||
# shopt -s histappend
|
||||
|
||||
# # After each command, append to the history file and reread it
|
||||
# PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
|
||||
|
||||
|
||||
# Softlink ~ config file to syncthing config fodler
|
||||
# ln -s /home/yuriy/Syncthing/Configurations/Linux.config/.bashrc /home/yuriy/.bashrc
|
||||
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
[[ -f ~/.welcome_screen ]] && . ~/.welcome_screen
|
||||
|
||||
_set_my_PS1() {
|
||||
PS1='[\u@\h \W]\$ '
|
||||
if [ "$(whoami)" = "liveuser" ] ; then
|
||||
local iso_version="$(grep ^VERSION= /usr/lib/endeavouros-release 2>/dev/null | cut -d '=' -f 2)"
|
||||
if [ -n "$iso_version" ] ; then
|
||||
local prefix="eos-"
|
||||
local iso_info="$prefix$iso_version"
|
||||
PS1="[\u@$iso_info \W]\$ "
|
||||
fi
|
||||
fi
|
||||
}
|
||||
_set_my_PS1
|
||||
unset -f _set_my_PS1
|
||||
|
||||
ShowInstallerIsoInfo() {
|
||||
local file=/usr/lib/endeavouros-release
|
||||
if [ -r $file ] ; then
|
||||
cat $file
|
||||
else
|
||||
echo "Sorry, installer ISO info is not available." >&2
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
alias ls='ls --color=auto'
|
||||
alias ll='ls -lav --ignore=..' # show long listing of all except ".."
|
||||
alias l='ls -lav --ignore=.?*' # show long listing but no hidden dotfiles except "."
|
||||
|
||||
[[ "$(whoami)" = "root" ]] && return
|
||||
|
||||
[[ -z "$FUNCNEST" ]] && export FUNCNEST=100 # limits recursive functions, see 'man bash'
|
||||
|
||||
## Use the up and down arrow keys for finding a command in history
|
||||
## (you can write some initial letters of the command first).
|
||||
bind '"\e[A":history-search-backward'
|
||||
bind '"\e[B":history-search-forward'
|
||||
|
||||
################################################################################
|
||||
## Some generally useful functions.
|
||||
## Consider uncommenting aliases below to start using these functions.
|
||||
|
||||
|
||||
_GeneralCmdCheck() {
|
||||
# A helper for functions UpdateArchPackages and UpdateAURPackages.
|
||||
|
||||
echo "$@" >&2
|
||||
"$@" || {
|
||||
echo "Error: '$*' failed." >&2
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
_CheckInternetConnection() {
|
||||
# curl --silent --connect-timeout 8 https://8.8.8.8 >/dev/null
|
||||
eos-connection-checker
|
||||
local result=$?
|
||||
test $result -eq 0 || echo "No internet connection!" >&2
|
||||
return $result
|
||||
}
|
||||
|
||||
_CheckArchNews() {
|
||||
local conf=/etc/eos-update-notifier.conf
|
||||
|
||||
if [ -z "$CheckArchNewsForYou" ] && [ -r $conf ] ; then
|
||||
source $conf
|
||||
fi
|
||||
|
||||
if [ "$CheckArchNewsForYou" = "yes" ] ; then
|
||||
local news="$(yay -Pw)"
|
||||
if [ -n "$news" ] ; then
|
||||
echo "Arch news:" >&2
|
||||
echo "$news" >&2
|
||||
echo "" >&2
|
||||
# read -p "Press ENTER to continue (or Ctrl-C to stop): "
|
||||
else
|
||||
echo "No Arch news." >&2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
UpdateArchPackages() {
|
||||
# Updates Arch packages.
|
||||
|
||||
_CheckInternetConnection || return 1
|
||||
|
||||
_CheckArchNews
|
||||
|
||||
#local updates="$(yay -Qu --repo)"
|
||||
local updates="$(checkupdates)"
|
||||
if [ -n "$updates" ] ; then
|
||||
echo "Updates from upstream:" >&2
|
||||
echo "$updates" | sed 's|^| |' >&2
|
||||
_GeneralCmdCheck sudo pacman -Syu "$@"
|
||||
return 0
|
||||
else
|
||||
echo "No upstream updates." >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
UpdateAURPackages() {
|
||||
# Updates AUR packages.
|
||||
|
||||
_CheckInternetConnection || return 1
|
||||
|
||||
local updates
|
||||
if [ -x /usr/bin/yay ] ; then
|
||||
updates="$(yay -Qua)"
|
||||
if [ -n "$updates" ] ; then
|
||||
echo "Updates from AUR:" >&2
|
||||
echo "$updates" | sed 's|^| |' >&2
|
||||
_GeneralCmdCheck yay -Syua "$@"
|
||||
else
|
||||
echo "No AUR updates." >&2
|
||||
fi
|
||||
else
|
||||
echo "Warning: /usr/bin/yay does not exist." >&2
|
||||
fi
|
||||
}
|
||||
|
||||
psyu() {
|
||||
# Updates all packages in the system.
|
||||
# Upstream (i.e. Arch) packages are updated first.
|
||||
# If there are Arch updates, you should run
|
||||
# this function a second time to update
|
||||
# the AUR packages too.
|
||||
|
||||
UpdateArchPackages || UpdateAURPackages
|
||||
}
|
||||
|
||||
_open_files_for_editing() {
|
||||
# Open any given document file(s) for editing (or just viewing).
|
||||
# Note1: Do not use for executable files!
|
||||
# Note2: uses mime bindings, so you may need to use
|
||||
# e.g. a file manager to make some file bindings.
|
||||
|
||||
if [ -x /usr/bin/exo-open ] ; then
|
||||
echo "exo-open $*" >&2
|
||||
/usr/bin/exo-open "$@" >& /dev/null &
|
||||
return
|
||||
fi
|
||||
if [ -x /usr/bin/xdg-open ] ; then
|
||||
for file in "$@" ; do
|
||||
echo "xdg-open $file" >&2
|
||||
/usr/bin/xdg-open "$file" >& /dev/null &
|
||||
done
|
||||
return
|
||||
fi
|
||||
|
||||
echo "Sorry, none of programs [$progs] is found." >&2
|
||||
echo "Tip: install one of packages" >&2
|
||||
for prog in $progs ; do
|
||||
echo " $(pacman -Qqo "$prog")" >&2
|
||||
done
|
||||
}
|
||||
|
||||
_Pacdiff() {
|
||||
local differ pacdiff=/usr/bin/pacdiff
|
||||
|
||||
if [ -n "$(echo q | DIFFPROG=diff $pacdiff)" ] ; then
|
||||
for differ in kdiff3 meld diffuse ; do
|
||||
if [ -x /usr/bin/$differ ] ; then
|
||||
DIFFPROG=$differ su-c_wrapper $pacdiff
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Reboot directly to Windows
|
||||
# https://unix.stackexchange.com/questions/43196/how-can-i-tell-grub-i-want-to-reboot-into-windows-before-i-reboot
|
||||
# Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu
|
||||
bootwindows ()
|
||||
{
|
||||
windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2)
|
||||
notify-send -t 1000 "$windows_title"
|
||||
# sudo grub-reboot "$windows_title" && sudo reboot
|
||||
}
|
||||
# alias reboot-to-windows='reboot_to_windows'
|
||||
|
||||
## FZF
|
||||
# https://github.com/junegunn/fzf/wiki/examples#opening-files
|
||||
fe() {
|
||||
IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0))
|
||||
[[ -n "$files" ]] && ${EDITOR:-vim} "${files[@]}"
|
||||
}
|
||||
## FZF
|
||||
|
||||
# Modified version where you can press
|
||||
# - CTRL-O to open with `open` command,
|
||||
# - CTRL-E or Enter key to open with the $EDITOR
|
||||
fo() {
|
||||
cd /home/$USER/
|
||||
IFS=$'\n' out=("$(fzf -e --query="$1" --exit-0 --expect=alt-e,alt-o,ctrl-o,ctrl-e,ctrl-p)")
|
||||
key=$(head -1 <<< "$out")
|
||||
file=$(head -2 <<< "$out" | tail -1)
|
||||
# echo "key1: $key"
|
||||
|
||||
if [ -n "$file" ]; then
|
||||
file=/home/$USER/${file}
|
||||
case "$key" in
|
||||
*ctrl-p*) echo ${file} | xclip -sel c ;; # copy variable contents to clip
|
||||
*alt-o*) Directory="$(dirname "${file}")" ; dolphin "${Directory}";;
|
||||
*alt-e*)
|
||||
# FullFilepath=/home/me/mydir/file.c
|
||||
Directory="$(dirname "${file}")" # Get directory
|
||||
FileNameWExt="$(basename "${file}")" # File Name wExtension
|
||||
FileNameNoExt=${file%.*} # File name wOut Extension
|
||||
FileExtension="${file##*.}" # File Extension
|
||||
# echo "$Directory"
|
||||
# echo "$FileNameWExt"
|
||||
# echo "$FileNameNoExt"
|
||||
# echo "$FileExtension"
|
||||
# xdg-open $file
|
||||
|
||||
case "$FileExtension" in
|
||||
*txt*) subl ${file} ;;
|
||||
*conf*) subl ${file} ;;
|
||||
*sh*) subl ${file} ;;
|
||||
*py*) subl ${file} ;;
|
||||
*jpg*) gimp ${file} & xdotool key Escape ;;
|
||||
*png*) gimp ${file} & xdotool key Escape ;;
|
||||
*) subl ${file} ;; # sublime everything else
|
||||
esac ;;
|
||||
*) xdg-open $file ;;
|
||||
esac
|
||||
# echo "$file"
|
||||
# echo "key2: $key"
|
||||
# [ "$key" = ctrl-o ] && open "$file" || gimp "$file" &
|
||||
# [ "$key" = ctrl-p ] && echo "$file"
|
||||
fi
|
||||
#sleep .5
|
||||
#xdotool key F3
|
||||
fo
|
||||
}
|
||||
# Expand on this later
|
||||
|
||||
|
||||
foa() {
|
||||
cd /
|
||||
IFS=$'\n' out=("$(fzf -e --query="$1" --exit-0 --expect=alt-e,alt-o,ctrl-o,ctrl-e,ctrl-p)")
|
||||
key=$(head -1 <<< "$out")
|
||||
file=$(head -2 <<< "$out" | tail -1)
|
||||
# echo "key1: $key"
|
||||
|
||||
if [ -n "$file" ]; then
|
||||
file=/home/$USER/${file}
|
||||
case "$key" in
|
||||
*ctrl-p*) echo ${file} | xclip -sel c ;; # copy variable contents to clip
|
||||
*alt-o*) Directory="$(dirname "${file}")" ; dolphin "${Directory}";;
|
||||
*alt-e*)
|
||||
# FullFilepath=/home/me/mydir/file.c
|
||||
Directory="$(dirname "${file}")" # Get directory
|
||||
FileNameWExt="$(basename "${file}")" # File Name wExtension
|
||||
FileNameNoExt=${file%.*} # File name wOut Extension
|
||||
FileExtension="${file##*.}" # File Extension
|
||||
# echo "$Directory"
|
||||
# echo "$FileNameWExt"
|
||||
# echo "$FileNameNoExt"
|
||||
# echo "$FileExtension"
|
||||
# xdg-open $file
|
||||
|
||||
case "$FileExtension" in
|
||||
*txt*) subl ${file} ;;
|
||||
*conf*) subl ${file} ;;
|
||||
*sh*) subl ${file} ;;
|
||||
*py*) subl ${file} ;;
|
||||
*jpg*) gimp ${file} & xdotool key Escape ;;
|
||||
*png*) gimp ${file} & xdotool key Escape ;;
|
||||
*) subl ${file} ;; # sublime everything else
|
||||
esac ;;
|
||||
*) xdg-open $file ;;
|
||||
esac
|
||||
# echo "$file"
|
||||
# echo "key2: $key"
|
||||
# [ "$key" = ctrl-o ] && open "$file" || gimp "$file" &
|
||||
# [ "$key" = ctrl-p ] && echo "$file"
|
||||
fi
|
||||
#sleep .5
|
||||
#xdotool key F3
|
||||
fo
|
||||
}
|
||||
|
||||
|
||||
sdl() {
|
||||
|
||||
local playlist="$1"
|
||||
cd "/home/yuriy/Executables/zspotify/"
|
||||
|
||||
python zspotify ${playlist}
|
||||
|
||||
echo "we done!"
|
||||
|
||||
}
|
||||
|
||||
# cf - fuzzy cd from anywhere
|
||||
# ex: cf word1 word2 ... (even part of a file name)
|
||||
# zsh autoload function
|
||||
cf() {
|
||||
local file
|
||||
|
||||
file="$(locate -Ai -0 $@ | grep -z -vE '~$' | fzf --read0 -0 -1)"
|
||||
|
||||
if [[ -n $file ]]
|
||||
then
|
||||
if [[ -d $file ]]
|
||||
then
|
||||
cd -- $file
|
||||
else
|
||||
cd -- ${file:h}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# cdf - cd into the directory of the selected file
|
||||
cdf() {
|
||||
local file
|
||||
local dir
|
||||
file=$(fzf +m -q "$1") && dir=$(dirname "$file") && cd "$dir"
|
||||
}
|
||||
|
||||
# fh - repeat history
|
||||
# fh - repeat history
|
||||
fh() {
|
||||
print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g')
|
||||
}
|
||||
|
||||
|
||||
rl() {
|
||||
# reload bashrc in current instance
|
||||
. ~/.bashrc
|
||||
echo "Successfully Reloaded .bashrc"
|
||||
}
|
||||
|
||||
parul(){
|
||||
pacman -Qqe > pkglist.txt
|
||||
subl pkglist.txt
|
||||
}
|
||||
|
||||
|
||||
update() {
|
||||
# echo "Updating Parcman Packages:"
|
||||
# pacman -Sy archlinux-keyring ;
|
||||
# paru -Syu
|
||||
|
||||
# echo "Updating Parcman Packages:"
|
||||
# sudo pacman -Sy archlinux-keyring chaotic-keyring endeavouros-keyring --noconfirm;paru -Syu --noconfirm;sudo pacman -Scc --noconfirm
|
||||
sudo pacman -Sy archlinux-keyring chaotic-keyring endeavouros-keyring --noconfirm --needed ; paru -Syu --noconfirm --needed ; echo $(sudo ls /var/cache/pacman/pkg/ | wc -l) packages in cache
|
||||
|
||||
echo "Updating Flatpak packages:"
|
||||
flatpak update
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
# to refresh terminal with new config:
|
||||
# . ~/.bashrc
|
||||
|
||||
## Aliases for the functions above.
|
||||
## Uncomment an alias if you want to use it.
|
||||
##
|
||||
|
||||
alias ef='_open_files_for_editing' # 'ef' opens given file(s) for editing
|
||||
# alias pacdiff=_Pacdiff
|
||||
alias parus='paru -S'
|
||||
alias paruss='paru -Ss'
|
||||
alias parur='paru -R'
|
||||
alias parurr='paru -Rs'
|
||||
alias parurl='sudo pacman -Syy'
|
||||
alias ps='pacseek'
|
||||
alias clip='xclip -sel clip'
|
||||
alias snano='sudo nano'
|
||||
alias pu='pdfunite'
|
||||
alias joplin='joplin-desktop'
|
||||
alias tda='todo.sh add'
|
||||
alias yt='yt-dlp'
|
||||
alias chrome='chromium'
|
||||
alias mvideos='/home/yuriy/Syncthing/Python/Tools/MergeVideoFilesTogether.py'
|
||||
#alias everything=fo
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
################################################################################
|
Loading…
Reference in New Issue
Block a user