first commit
This commit is contained in:
78
profiles/base/.bashrc.d/10-gentoo-color-r2.bash
Normal file
78
profiles/base/.bashrc.d/10-gentoo-color-r2.bash
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
# copied from https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash
|
||||
|
||||
if [[ ${NO_COLOR} ]]; then
|
||||
# Respect the user's wish not to use color. See https://no-color.org/.
|
||||
gentoo_color=0
|
||||
elif [[ ${COLORTERM@a} == *x* && ${COLORTERM} == @(24bit|truecolor) ]]; then
|
||||
# The COLORTERM environment variable can reasonably be trusted here.
|
||||
# See https://github.com/termstandard/colors for further information.
|
||||
gentoo_color=1
|
||||
else
|
||||
# Check TERM against a whitelist covering a majority of popular
|
||||
# terminal emulators and virtual console implementations known to
|
||||
# support color. If no matching entry is found, try to use tput(1) to
|
||||
# determine whether color is supported.
|
||||
case ${TERM} in
|
||||
*color* |\
|
||||
*direct* |\
|
||||
*ghostty |\
|
||||
[Ekx]term* |\
|
||||
alacritty |\
|
||||
aterm |\
|
||||
contour |\
|
||||
dtterm |\
|
||||
foot* |\
|
||||
jfbterm |\
|
||||
linux |\
|
||||
mlterm |\
|
||||
rxvt* |\
|
||||
screen* |\
|
||||
tmux* |\
|
||||
wsvt25* ) gentoo_color=1 ;;
|
||||
* ) gentoo_color=$(tput colors 2>/dev/null)
|
||||
esac
|
||||
fi
|
||||
|
||||
# For direxpand to be missing indicates that bash is lacking readline support.
|
||||
prompt_exit_code() {
|
||||
local -r exit_code=$?
|
||||
if [[ ${exit_code} -ne 0 ]]; then
|
||||
printf "%s " "${exit_code}"
|
||||
fi
|
||||
}
|
||||
|
||||
if (( gentoo_color <= 0 )) || ( ! shopt -u direxpand 2>/dev/null ); then
|
||||
# Define a prompt without color.
|
||||
PS1='\u@\h \w \$ '
|
||||
elif (( EUID == 0 )); then
|
||||
# If root, omit the username and print the hostname in red.
|
||||
PS1='\[\e[01;31m\]\h\[\e[01;34m\] \w \$\[\e[00m\] '
|
||||
else
|
||||
# Otherwise, print the username and hostname in green.
|
||||
PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \[\e[01;31m\]$(prompt_exit_code)\[\e[01;34m\]\w \$\[\e[00m\] '
|
||||
fi
|
||||
|
||||
if (( gentoo_color > 0 )); then
|
||||
# Colorize the output of diff(1), grep(1) and a few coreutils utilities.
|
||||
# However, do so only where no alias/function by the given name exists.
|
||||
for _ in diff dir grep ls vdir; do
|
||||
if [[ $(type -t "$_") == file ]]; then
|
||||
alias "$_=$_ --color=auto"
|
||||
fi
|
||||
done
|
||||
|
||||
# Enable colors for ls(1) and some other utilities that respect the
|
||||
# LS_COLORS variable. Prefer ~/.dir_colors, per bug #64489.
|
||||
if hash dircolors 2>/dev/null; then
|
||||
if [[ -f ~/.dir_colors ]]; then
|
||||
eval "$(COLORTERM=1 dircolors -b -- ~/.dir_colors)"
|
||||
elif [[ -f /etc/DIR_COLORS ]]; then
|
||||
eval "$(COLORTERM=1 dircolors -b /etc/DIR_COLORS)"
|
||||
else
|
||||
eval "$(COLORTERM=1 dircolors -b)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
unset -v gentoo_color
|
||||
78
profiles/base/.bashrc.d/10-gentoo-title-r3.bash
Normal file
78
profiles/base/.bashrc.d/10-gentoo-title-r3.bash
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
# copied from https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash
|
||||
|
||||
# For information regarding the control sequences used, please refer to
|
||||
# https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.
|
||||
|
||||
genfun_set_win_title() {
|
||||
# Advertise the fact that the presently running interactive shell will
|
||||
# update the title. Doing so allows for its subprocesses to determine
|
||||
# whether it is safe to set the title of their own accord. Note that 0
|
||||
# refers to the value of Ps within the OSC Ps ; Pt BEL sequence.
|
||||
export SHELL_SETS_TITLE=0
|
||||
|
||||
# Sets the window title with the Set Text Parameters control sequence.
|
||||
# For screen, the sequence defines the hardstatus (%h) and for tmux, the
|
||||
# pane_title (#T). For graphical terminal emulators, it is normal for
|
||||
# the title bar to be affected.
|
||||
genfun_set_win_title() {
|
||||
local prompt
|
||||
|
||||
if [[ ${PROMPT_DIRTRIM} ]]; then
|
||||
# Respect the value of PROMPT_DIRTRIM. If set as 0, the
|
||||
# current working directory shall be shown in full.
|
||||
prompt='\u@\h \w'
|
||||
else
|
||||
# Show the basename of the current working directory.
|
||||
prompt='\u@\h \W'
|
||||
fi
|
||||
printf '\033]0;%s\007' "${prompt@P}"
|
||||
}
|
||||
|
||||
genfun_set_win_title
|
||||
}
|
||||
|
||||
unset -v SHELL_SETS_TITLE
|
||||
|
||||
# Determine whether the terminal can handle the Set Text Parameters sequence.
|
||||
# The only terminals permitted here are those for which there is empirical
|
||||
# evidence that the sequence is supported and that the UTF-8 character encoding
|
||||
# is handled correctly. Quite rightly, this precludes many vintage terminals.
|
||||
case ${TERM} in
|
||||
alacritty*|contour|foot*|tmux*|xterm-ghostty)
|
||||
# The terminal emulator also supports XTWINOPS. If the PTY was
|
||||
# created by sshd(8) then push the current window title to the
|
||||
# stack and arrange for it to be popped upon exiting. Xterm also
|
||||
# supports this but there are far too many terminal emulators
|
||||
# that falsely identify as being xterm-compatible.
|
||||
if [[ ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
|
||||
trap 'printf "\033[23;0t"' EXIT
|
||||
printf '\033[22;0t'
|
||||
fi
|
||||
;;
|
||||
rxvt-unicode*|st-256color|xterm*)
|
||||
# If the PTY was created by sshd(8) then proceed no further.
|
||||
# Alas, there exist many operating environments in which the
|
||||
# title would otherwise not be restored upon ssh(1) exiting.
|
||||
# Those wanting for the title to be set regardless may adjust
|
||||
# ~/.bashrc or create a bashrc.d drop-in to set PROMPT_COMMAND.
|
||||
# For example, PROMPT_COMMAND=(genfun_set_win_title).
|
||||
if [[ ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
screen*)
|
||||
# If the PTY was created by sshd(8) and screen(1) was launched
|
||||
# prior to the SSH session beginning, as opposed to afterwards,
|
||||
# proceed no further. It is another case in which there would be
|
||||
# no guarantee of the title being restored upon ssh(1) exiting.
|
||||
if [[ ! ${WINDOW} && ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
return
|
||||
esac
|
||||
|
||||
# Arrange for the title to be updated each time the primary prompt is displayed.
|
||||
PROMPT_COMMAND+=('genfun_set_win_title')
|
||||
Reference in New Issue
Block a user