2022-10-02 10:36:05 +09:00
|
|
|
#! 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"
|
2022-10-02 10:22:15 +09:00
|
|
|
}
|
|
|
|
|
2022-10-02 10:36:05 +09:00
|
|
|
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"
|
2022-10-02 10:22:15 +09:00
|
|
|
}
|
|
|
|
|
2022-10-02 10:36:05 +09:00
|
|
|
function _omb_plugin_xterm_set_title {
|
|
|
|
local title=${1-}
|
|
|
|
printf '\e]0;%s\e\\' "$title"
|
2022-10-02 10:22:15 +09:00
|
|
|
}
|
|
|
|
|
2022-10-02 10:36:05 +09:00
|
|
|
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:-\$}"
|
2022-10-02 10:22:15 +09:00
|
|
|
}
|
|
|
|
|
2022-10-02 10:36:05 +09:00
|
|
|
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)"
|
2022-10-02 10:22:15 +09:00
|
|
|
}
|
|
|
|
|
2022-10-02 10:36:05 +09:00
|
|
|
function set_xterm_title { _omb_plugin_xterm_set_title "$@"; }
|
|
|
|
|
|
|
|
precmd_functions+=(_omb_plugin_xterm_precmd_title)
|
|
|
|
preexec_functions+=(_omb_plugin_xterm_preexec_title)
|