-
Notifications
You must be signed in to change notification settings - Fork 0
/
bashrc
140 lines (127 loc) · 4.99 KB
/
bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# -*- shell-script -*-
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
PS1='[\u@\h \W]\$ '
PATH=${PATH}:${HOME}/bin:${HOME}/.cargo/bin
export EDITOR=emacsclient
export ENIGMACURRY_EMACS_DEV=true
unset USERNAME
export GTK_THEME=Adwaita:dark
export QT_QPA_PLATFORMTHEME=qt5ct
which keychain 2>/dev/null >&2 && \
eval $(keychain --eval --quiet)
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias bb='rlwrap bb'
alias ec="${HOME}/git/vendor/enigmacurry/emacs/ec"
# Use bash-completion, if available
[[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \
. /usr/share/bash-completion/bash_completion
## Rustup cargo environment
## On a new machine, you should run rustup-init first.
test -f "$HOME/.cargo/env" && source "$HOME/.cargo/env"
## PS1 adapted from https://gist.github.com/xenji/2292341
ps1_generator() {
# docker context inspect --format '{{ .Name }}'
Time12h="\T"; Time12a="\@"; ShortHost="\h"; Username="\u";
PathShort="\W"; PathFull="\w"; NewLine="\n"; Jobs="\j";
test -f ~/.config/git-prompt.sh || \
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh \
> ~/.config/git-prompt.sh
source ~/.config/git-prompt.sh
Color_Off="\[\033[0m\]"; IBlack="\[\033[0;90m\]"; BWhite="\[\033[1;37m\]"; BGreen="\[\033[1;32m\]";
BIRed="\[\033[1;91m\]"; BIWhite="\[\033[1;97m\]"; BIPurple="\[\033[1;95m\]"; BIBlue="\[\033[1;94m\]";
GIT_PS1='$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
DIRTY="$?"; \
HEADREV=`git log --pretty=%h -n 1`; \
echo -n "|G:'${BWhite}'$HEADREV"; \
if [ "$DIRTY" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "@'${BGreen}'"$(__git_ps1 "(%s)"); \
else \
# @5 - Changes to working tree
echo "'${BIBlue}'@'${BIRed}'"$(__git_ps1 "{%s}"); \
fi)'${Color_Off}'"; \
else \
# @2 - Prompt when not in GIT repo
echo ""; \
fi)'
if docker context inspect >/dev/null 2>&1; then
DOCKER_PS1='|D:'${BIBlue}'$(docker context inspect --format "{{ .Name }}")'
fi
USER_PS1=${BIPurple}${Username}'@'${ShortHost}${Color_Off}
PATH_PS1='|'${BWhite}${PathShort}${Color_Off}
export PS1='['${USER_PS1}${GIT_PS1}${DOCKER_PS1}${PATH_PS1}'] $ '
}
ps1_generator && unset -f ps1_generator
## Emacs vterm hooks:
vterm_printf() {
if [ -n "$TMUX" ] && ([ "${TERM%%-*}" = "tmux" ] || [ "${TERM%%-*}" = "screen" ]); then
# Tell tmux to pass the escape sequences through
printf "\ePtmux;\e\e]%s\007\e\\" "$1"
elif [ "${TERM%%-*}" = "screen" ]; then
# GNU screen (screen, screen-256color, screen-256color-bce)
printf "\eP\e]%s\007\e\\" "$1"
else
printf "\e]%s\e\\" "$1"
fi
}
if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
function clear() {
vterm_printf "51;Evterm-clear-scrollback";
tput clear;
}
fi
vterm_prompt_end(){
vterm_printf "51;A$(whoami)@$(hostname):$(pwd)"
}
PS1=$PS1'\[$(vterm_prompt_end)\]'
#### To enable Bash shell completion support for d.rymcg.tech,
#### add the following lines into your ~/.bashrc ::
if [[ -d ${HOME}/git/vendor/enigmacurry/d.rymcg.tech ]]; then
export PATH=${PATH}:${HOME}/git/vendor/enigmacurry/d.rymcg.tech/_scripts/user
eval "$(d.rymcg.tech completion bash)"
## Example project alias: creates a shorter command used just for the Traefik project:
__d.rymcg.tech_cli_alias d
__d.rymcg.tech_project_alias traefik
fi
## yt-dlp
## Watch any youtube/invidious video URL (or any URL yt-dlp supports) at the highest quality:
## Can read URL input directly if the argument is left blank (incognito mode)
## (Sometimes yt doesn't work, so use yt-720 as a backup)
#### Old version:
# yt() {
# STREAM=$1; [[ "$STREAM" == "" ]] && read -e -p "Enter stream: " STREAM
# yt-dlp -f bestvideo+bestaudio "$STREAM" -o - | mpv - --fs -force-seekable=yes
# }
#### New version: mpv can run use yt-dlp all by itself, just pass the URL:
alias yt=mpv
## Watch youtube/invidious video URL (or any URL yt-dlp supports)
## Uses a medium quality pre-muxed stream (its usually about 720p).
## Can read URL input directly if the argument is left blank (incognito mode)
## (yt-720 has higher reliability than yt, but its lower quality)
yt-720() {
STREAM=$1; [[ "$STREAM" == "" ]] && read -e -p "Enter stream: " STREAM
yt-dlp "$STREAM" -o - | mpv - --fs -force-seekable=yes
}
## Download best quality video and audio and mux together:
yt-download() {
STREAM=$1; [[ "$STREAM" == "" ]] && read -e -p "Enter stream: " STREAM
yt-dlp -f bestvideo+bestaudio "$STREAM" --merge-output-format mp4
}
## Download youtube audio only
yt-audio() {
STREAM=$1; [[ "$STREAM" == "" ]] && read -e -p "Enter stream: " STREAM
yt-dlp -x --audio-format mp3 $STREAM
}
screen-record() {
mkdir -p ~/Screencasts
DESCRIPTION="$@"
wf-recorder -a -f ~/Screencasts/$(date +%Y-%m-%d-%H%M)-"$DESCRIPTION".mkv
}
## Run local (unversioned) config:
test -f ~/.bashrc.local && source ~/.bashrc.local