Replace $HOME by '~' in terminal title

This commit is contained in:
Arun Prakash Jana 2021-03-27 22:13:39 +05:30
parent 0f4dfee6c6
commit e5d44ce223

View file

@ -425,7 +425,7 @@ static blkcnt_t dir_blocks;
static ulong_t num_files; static ulong_t num_files;
static kv *bookmark; static kv *bookmark;
static kv *plug; static kv *plug;
static uchar_t tmpfplen; static uchar_t tmpfplen, homelen;
static uchar_t blk_shift = BLK_SHIFT_512; static uchar_t blk_shift = BLK_SHIFT_512;
#ifndef NOMOUSE #ifndef NOMOUSE
static int middle_click_key; static int middle_click_key;
@ -1131,6 +1131,23 @@ static char *abspath(const char *path, const char *cwd)
return resolved_path; return resolved_path;
} }
static bool set_tilde_in_path(char *path)
{
if (is_prefix(path, home, homelen)) {
home[homelen] = path[homelen - 1];
path[homelen - 1] = '~';
return TRUE;
}
return FALSE;
}
static void reset_tilde_in_path(char *path)
{
path[homelen - 1] = home[homelen];
home[homelen] = '\0';
}
static int create_tmp_file(void) static int create_tmp_file(void)
{ {
xstrsncpy(g_tmpfpath + tmpfplen - 1, messages[STR_TMPFILE], TMP_LEN_MAX - tmpfplen); xstrsncpy(g_tmpfpath + tmpfplen - 1, messages[STR_TMPFILE], TMP_LEN_MAX - tmpfplen);
@ -5998,8 +6015,13 @@ begin:
if (!g_state.picker) { if (!g_state.picker) {
/* Set terminal window title */ /* Set terminal window title */
printf("\033]2;%s (%s)\007", xbasename(path), path); r = set_tilde_in_path(path);
printf("\033]2;%s\007", r ? &path[homelen - 1] : path);
fflush(stdout); fflush(stdout);
if (r)
reset_tilde_in_path(path);
} }
if (g_state.selmode && lastdir[0]) if (g_state.selmode && lastdir[0])
@ -7810,6 +7832,7 @@ int main(int argc, char *argv[])
return EXIT_FAILURE; return EXIT_FAILURE;
} }
DPRINTF_S(home); DPRINTF_S(home);
homelen = (uchar_t)xstrlen(home);
if (!setup_config()) if (!setup_config())
return EXIT_FAILURE; return EXIT_FAILURE;