116 lines
2.3 kB
1
_rwx_shell_color() {
2
local code="${1}"
3
case "${RWX_SHELL}" in
4
"bash")
5
printf "\x01\e[0"
6
if [ -n "${code}" ]; then
7
printf "%s" ";${code}"
8
fi
9
printf "m\x02"
10
;;
11
*)
12
printf "\033["
13
if [ -n "${code}" ]; then
14
printf "%s" "${code}"
15
else
16
printf "0"
17
fi
18
printf "m"
19
;;
20
esac
21
}
22
RWX_COLOR_BROWN="$(_rwx_shell_color 33)"
23
RWX_COLOR_CYAN="$(_rwx_shell_color 36)"
24
RWX_COLOR_DEFAULT="$(_rwx_shell_color)"
25
RWX_COLOR_GREEN="$(_rwx_shell_color 31)"
26
RWX_COLOR_MAGENTA="$(_rwx_shell_color 35)"
27
RWX_COLOR_RED="$(_rwx_shell_color 32)"
28
29
rwx_shell_configure() {
30
[ -n "${ENV}" ] || ENV="${RWX_MAIN_PATH}"
31
export ENV
32
# prompt
33
PS1="\$(rwx_shell_prompt \${?})"
34
PS2="├ "
35
# specific
36
case "${RWX_SHELL}" in
37
"bash")
38
# completion
39
local root="/usr/share/bash-completion"
40
local file="bash_completion"
41
local path="${root}/${file}"
42
# shellcheck disable=SC1090
43
[ -f "${path}" ] && . "${path}"
44
root="${root}/completions"
45
if [ -d "${root}" ]; then
46
set \
47
"git" \
48
"tar"
49
for file in "${@}"; do
50
path="${root}/${file}"
51
# shellcheck disable=SC1090
52
[ -f "${path}" ] && . "${path}"
53
done
54
fi
55
# history
56
HISTCONTROL="ignorespace"
57
HISTSIZE=-1
58
HISTTIMEFORMAT="%Y%m%d %H%M%S "
59
;;
60
*) ;;
61
esac
62
}
63
rwx_shell_configure
64
65
rwx_shell_prompt() {
66
local date host id
67
local code="${1}"
68
date="$(date +%H:%M:%S)"
69
local git
70
host="$(hostname)"
71
id="$(id --user)"
72
local path="${PWD}"
73
local user="${USER}"
74
local view="╰ "
75
# code
76
if [ "${code}" -ne 0 ]; then
77
view="${view}${RWX_COLOR_GREEN}"
78
else
79
view="${view}${RWX_COLOR_RED}"
80
fi
81
view="${view}${code}"
82
# date
83
view="${view}${RWX_COLOR_DEFAULT} @ "
84
view="${view}${RWX_COLOR_BROWN}${date}"
85
# git
86
if command -v "__git_ps1" >"/dev/null"; then
87
git="$(__git_ps1)"
88
if [ -n "${git}" ]; then
89
view="${view}${RWX_COLOR_DEFAULT} –${RWX_COLOR_MAGENTA}${git}"
90
fi
91
fi
92
# new
93
view="${view}\\n"
94
# path
95
view="${view}${RWX_COLOR_CYAN}${path}"
96
# new
97
view="${view}\\n"
98
# frame
99
view="${view}${RWX_COLOR_DEFAULT}╭ "
100
# user
101
if [ "${id}" -eq 0 ]; then
102
view="${view}${RWX_COLOR_GREEN}"
103
else
104
view="${view}${RWX_COLOR_RED}"
105
fi
106
view="${view}${user}"
107
# host
108
view="${view}${RWX_COLOR_DEFAULT} @ "
109
view="${view}${RWX_COLOR_BROWN}${host}"
110
# new
111
view="${view}\\n"
112
# prompt
113
view="${view}${RWX_COLOR_DEFAULT}${PS2}"
114
# print
115
printf "%b" "${view}"
116
}
117