mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-05-11 05:55:37 +00:00
plugins/xterm: Refactor
* plugins/xterm: Add header line as an OMB plugin
* plugins/xterm: Add link to the upstream version
* plugins/xterm: Add the list of the configuration variables
* plugins/xterm: Do not rely on the function "cite"
* plugins/xterm: Add dependency to bash-preexec
* plugins/xterm: Use "function func" to avoid aliasing
* plugins/xterm: Namespacing function names
* plugins/xterm: Namespacing configuration variables
* plugins/xterm (_omb_plugin_xterm_set_title): Avoid expanding escapes in directory names, etc.
* plugins/xterm: Always enable precmd/preexec because the plugin should be enabled by the users' decision
* plugins/xterm: Do no unneccessarily add braces around ${var}
* plugins/xterm: Do no uneccessarily quote words
* plugins/xterm: Add README
This commit is contained in:
3
plugins/xterm/README.md
Normal file
3
plugins/xterm/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Xterm plugin
|
||||
|
||||
This plugin sets the xterm title for the current directory and the currently running command.
|
||||
@@ -1,45 +1,52 @@
|
||||
# shellcheck shell=bash
|
||||
cite about-plugin
|
||||
about-plugin 'automatically set your xterm title with host and location info'
|
||||
#! bash oh-my-bash.module
|
||||
# Description: automatically set your xterm title with host and location info'
|
||||
# Source: https://github.com/Bash-it/bash-it/blob/bf2034d13d/plugins/available/xterm.plugin.bash
|
||||
#
|
||||
# @var[opt] PROMPT_CHAR ... This variable is shared with powerline
|
||||
# @var[opt] OMB_PLUGIN_XTERM_SHORT_TERM_LINE
|
||||
# @var[opt] OMB_PLUGIN_XTERM_SHORT_USER
|
||||
# @var[opt] OMB_PLUGIN_XTERM_SHORT_HOSTNAME
|
||||
#
|
||||
|
||||
_short-dirname() {
|
||||
local dir_name="${PWD/~/\~}"
|
||||
if [[ "${SHORT_TERM_LINE:-}" == true && "${#dir_name}" -gt 8 ]]; then
|
||||
echo "${dir_name##*/}"
|
||||
else
|
||||
echo "${dir_name}"
|
||||
_omb_module_require plugin:bash-preexec
|
||||
|
||||
function _omb_plugin_xterm_short_dirname {
|
||||
local dir_name=${PWD/~/\~}
|
||||
if [[ ${OMB_PLUGIN_XTERM_SHORT_TERM_LINE-} == true ]] && ((${#dir_name} > 8)); then
|
||||
dir_name=${dir_name##*/}
|
||||
fi
|
||||
echo "$dir_name"
|
||||
}
|
||||
|
||||
_short-command() {
|
||||
function _omb_plugin_xterm_short_command {
|
||||
local input_command="$*"
|
||||
if [[ "${SHORT_TERM_LINE:-}" == true && "${#input_command}" -gt 8 ]]; then
|
||||
echo "${input_command%% *}"
|
||||
else
|
||||
echo "${input_command}"
|
||||
if [[ ${OMB_PLUGIN_XTERM_SHORT_TERM_LINE-} == true ]] ((${#input_command} > 8)); then
|
||||
input_command=${input_command%% *}
|
||||
fi
|
||||
echo "$input_command"
|
||||
}
|
||||
|
||||
set_xterm_title() {
|
||||
local title="${1:-}"
|
||||
echo -ne "\033]0;${title}\007"
|
||||
function _omb_plugin_xterm_set_title {
|
||||
local title=${1-}
|
||||
printf '\e]0;%s\e\\' "$title"
|
||||
}
|
||||
|
||||
precmd_xterm_title() {
|
||||
set_xterm_title "${SHORT_USER:-${USER}}@${SHORT_HOSTNAME:-${HOSTNAME}} $(_short-dirname) ${PROMPT_CHAR:-\$}"
|
||||
function _omb_plugin_xterm_precmd_title {
|
||||
local user=${OMB_PLUGIN_XTERM_SHORT_USER:-$USER}
|
||||
local host=${OMB_PLUGIN_XTERM_SHORT_HOSTNAME:-$HOSTNAME}
|
||||
_omb_plugin_xterm_set_title "$user@$host $(_omb_plugin_xterm_short_dirname) ${PROMPT_CHAR:-\$}"
|
||||
}
|
||||
|
||||
preexec_xterm_title() {
|
||||
local command_line="${BASH_COMMAND:-${1:-}}"
|
||||
local directory_name short_command
|
||||
directory_name="$(_short-dirname)"
|
||||
short_command="$(_short-command "${command_line}")"
|
||||
set_xterm_title "${short_command} {${directory_name}} (${SHORT_USER:-${USER}}@${SHORT_HOSTNAME:-${HOSTNAME}})"
|
||||
function _omb_plugin_xterm_preexec_title {
|
||||
local command_line=${BASH_COMMAND:-${1:-}}
|
||||
local directory_name=$(_omb_plugin_xterm_short_dirname)
|
||||
local short_command=$(_omb_plugin_xterm_short_command "$command_line")
|
||||
local user=${OMB_PLUGIN_XTERM_SHORT_USER:-$USER}
|
||||
local host=${OMB_PLUGIN_XTERM_SHORT_HOSTNAME:-$HOSTNAME}
|
||||
_omb_plugin_xterm_set_title "$short_command {$directory_name} ($user@$host)"
|
||||
}
|
||||
|
||||
case "${TERM:-dumb}" in
|
||||
xterm* | rxvt*)
|
||||
precmd_functions+=(precmd_xterm_title)
|
||||
preexec_functions+=(preexec_xterm_title)
|
||||
;;
|
||||
esac
|
||||
function set_xterm_title { _omb_plugin_xterm_set_title "$@"; }
|
||||
|
||||
precmd_functions+=(_omb_plugin_xterm_precmd_title)
|
||||
preexec_functions+=(_omb_plugin_xterm_preexec_title)
|
||||
|
||||
Reference in New Issue
Block a user