oh-my-bash/plugins/xterm/xterm.plugin.bash
Koichi Murase 9ac2a92906 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
2022-10-07 19:35:58 +09:00

53 lines
1.8 KiB
Bash

#! 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
#
_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"
}
function _omb_plugin_xterm_short_command {
local input_command="$*"
if [[ ${OMB_PLUGIN_XTERM_SHORT_TERM_LINE-} == true ]] ((${#input_command} > 8)); then
input_command=${input_command%% *}
fi
echo "$input_command"
}
function _omb_plugin_xterm_set_title {
local title=${1-}
printf '\e]0;%s\e\\' "$title"
}
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:-\$}"
}
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)"
}
function set_xterm_title { _omb_plugin_xterm_set_title "$@"; }
precmd_functions+=(_omb_plugin_xterm_precmd_title)
preexec_functions+=(_omb_plugin_xterm_preexec_title)