How to indicate that shell session is running inside Vifm
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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
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
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
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.