diff --git a/powerline/bindings/bash/powerline.sh b/powerline/bindings/bash/powerline.sh index 67c1d8bb..f14a4743 100644 --- a/powerline/bindings/bash/powerline.sh +++ b/powerline/bindings/bash/powerline.sh @@ -1,3 +1,15 @@ +_powerline_columns_fallback() { + if which stty &>/dev/null ; then + local cols="$(stty size 2>/dev/null)" + if ! test -z "$cols" ; then + echo "${cols#* }" + return 0 + fi + fi + echo 0 + return 0 +} + _powerline_init_tmux_support() { if test -n "$TMUX" && tmux refresh -S &>/dev/null ; then # TMUX variable may be unset to create new tmux session inside this one @@ -16,7 +28,7 @@ _powerline_init_tmux_support() { } _powerline_tmux_set_columns() { - _powerline_tmux_setenv COLUMNS "$COLUMNS" + _powerline_tmux_setenv COLUMNS "${COLUMNS:-$(_powerline_columns_fallback)}" } trap "_powerline_tmux_set_columns" SIGWINCH @@ -32,7 +44,7 @@ _powerline_init_tmux_support() { _run_powerline() { # Arguments: side, last_exit_code, jobnum - $POWERLINE_COMMAND shell $1 -w $COLUMNS -r bash_prompt --last_exit_code=$2 --jobnum=$3 + $POWERLINE_COMMAND shell $1 -w "${COLUMNS:-$(_powerline_columns_fallback)}" -r bash_prompt --last_exit_code=$2 --jobnum=$3 } _powerline_prompt() { diff --git a/powerline/bindings/fish/powerline-setup.fish b/powerline/bindings/fish/powerline-setup.fish index 6cb807fa..35ec5763 100644 --- a/powerline/bindings/fish/powerline-setup.fish +++ b/powerline/bindings/fish/powerline-setup.fish @@ -1,4 +1,23 @@ function powerline-setup + function _powerline_columns_fallback + if which stty ^/dev/null + if stty size ^/dev/null + stty size | cut -d' ' -f2 + return 0 + end + end + echo 0 + return 0 + end + + function _powerline_columns + if test -z "$COLUMNS" + _powerline_columns_fallback + else + echo "$COLUMNS" + end + end + if test -z "$POWERLINE_NO_FISH_PROMPT$POWERLINE_NO_SHELL_PROMPT" if test -z "$POWERLINE_COMMAND" if which powerline-client >/dev/null @@ -20,11 +39,11 @@ function powerline-setup if test -z "$POWERLINE_NO_FISH_ABOVE$POWERLINE_NO_SHELL_ABOVE" set promptside aboveleft set rpromptpast 'echo -n " "' - set columnsexpr '(math $COLUMNS - 1)' + set columnsexpr '(math (_powerline_columns) - 1)' else set promptside left set rpromptpast - set columnsexpr '$COLUMNS' + set columnsexpr '(_powerline_columns)' end eval " function fish_prompt @@ -53,7 +72,7 @@ function powerline-setup _powerline_tmux_setenv PWD "$PWD" end function --on-signal WINCH _powerline_tmux_set_columns - _powerline_tmux_setenv COLUMNS "$COLUMNS" + _powerline_tmux_setenv COLUMNS (_powerline_columns) end _powerline_tmux_set_columns _powerline_tmux_set_pwd diff --git a/powerline/bindings/zsh/powerline.zsh b/powerline/bindings/zsh/powerline.zsh index aad0df53..0eadb16a 100644 --- a/powerline/bindings/zsh/powerline.zsh +++ b/powerline/bindings/zsh/powerline.zsh @@ -8,6 +8,18 @@ if test -z "${POWERLINE_COMMAND}" ; then fi fi +_powerline_columns_fallback() { + if which stty &>/dev/null ; then + local cols="$(stty size 2>/dev/null)" + if ! test -z "$cols" ; then + echo "${cols#* }" + return 0 + fi + fi + echo 0 + return 0 +} + integer _POWERLINE_JOBNUM _powerline_init_tmux_support() { @@ -28,7 +40,7 @@ _powerline_init_tmux_support() { } function -g _powerline_tmux_set_columns() { - _powerline_tmux_setenv COLUMNS "$COLUMNS" + _powerline_tmux_setenv COLUMNS "${COLUMNS:-$(_powerline_columns_fallback)}" } chpwd_functions+=( _powerline_tmux_set_pwd ) @@ -126,7 +138,7 @@ _powerline_setup_prompt() { new_args_2+=' -R local_theme=continuation' local add_args_3=$add_args' -R local_theme=select' local add_args_2=$add_args$new_args_2 - add_args+=' --width=$(( COLUMNS - 1 ))' + add_args+=' --width=$(( ${COLUMNS:-$(_powerline_columns_fallback)} - 1 ))' local add_args_r2=$add_args$new_args_2 PS1='$($POWERLINE_COMMAND shell aboveleft -r zsh_prompt '$add_args')' RPS1='$($POWERLINE_COMMAND shell right -r zsh_prompt '$add_args')'