Created
November 3, 2022 01:21
-
-
Save bndlfm/5bf5dc01d5e08e0bc0aa0353ae217b38 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# ~/.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 | |
} | |
UpdateAllPackages() { | |
# 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 | |
} | |
hide_on_open() { | |
tdrop -a auto_hide && "$@" && tdrop -a auto_show | |
} | |
#------------------------------------------------------------ | |
## 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 | |
################################################################################ | |
# BEGIN_KITTY_SHELL_INTEGRATION | |
if test -n "$KITTY_INSTALLATION_DIR" -a -e "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"; then source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"; fi | |
# END_KITTY_SHELL_INTEGRATION | |
#exec fish |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment