Difference between revisions of "How to indicate that shell session is running inside Vifm"

From Vifm Wiki
Jump to navigation Jump to search
(Initial version of the page)
(No difference)

Revision as of 21:04, 31 August 2018

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.

Links

Vifm Q&A question