How to indicate that shell session is running inside Vifm

From Vifm Wiki
Jump to: navigation, search

The idea is to make shell indicate whether it was run inside by Vifm and exiting it will bring Vifm back or not.

Variant #1. Demonstrated using zsh[edit]

Add the following to .zshrc:

if [ $(ps -ocommand= $(ps -oppid= -p $$)) = "vifm" ]
then
        printf "\e[48;5;21m"
        echo "-- VIFM SHELL SESSION --"
        export PROMPT="-- VIFM_SESSION --"$'\n'"${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)"
fi

It will look similar to this:

-- VIFM SHELL SESSION --
-- VIFM_SESSION --
➜  ~ uname 
Linux
-- VIFM_SESSION --

Variant #2. Demonstrated using bash[edit]

To be added to vifmrc:

let $INSIDE_VIFM = 'true'

In .bashrc :

if [ -n "$INSIDE_VIFM" ]; then
    PS1="[V]$PS1"
    unset INSIDE_VIFM
fi

Will look similar to this:

[V][~]$

Drawbacks[edit]

Environment variable might "leak" to some child process, which will later spawn a shell and trick it into reporting as if it's inside Vifm.

Links[edit]

Vifm Q&A question