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

From Vifm Wiki
Jump to navigation Jump to search
(Fix syntax highlighting errors (use pre instead of source tag))
(Add the page to HOWTO category)
 
Line 54: Line 54:
  
 
[https://q2a.vifm.info/372/indicate-that-shell-sessions-is-running-inside-vifm Vifm Q&A question]
 
[https://q2a.vifm.info/372/indicate-that-shell-sessions-is-running-inside-vifm Vifm Q&A question]
 +
 +
[[Category:HOWTO]]

Latest revision as of 21:07, 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[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