diff --git a/src/ui/file_tree.rs b/src/ui/file_tree.rs index 2eedc38d..07dcf014 100644 --- a/src/ui/file_tree.rs +++ b/src/ui/file_tree.rs @@ -782,9 +782,9 @@ impl Tty7App { } if roots.is_empty() && id.is_local() - && let Some(home) = std::env::var_os("HOME") + && let Some(home) = crate::ui::path_display::local_home() { - roots.push(PathBuf::from(home)); + roots.push(home); } let _ = window; let Some(code) = self.tab_code_mut_or_init() else { diff --git a/src/ui/presets.rs b/src/ui/presets.rs index d6b3a1e3..084642b9 100644 --- a/src/ui/presets.rs +++ b/src/ui/presets.rs @@ -941,9 +941,9 @@ impl FillFile { fn expand_path(p: &str) -> PathBuf { let p = p.trim(); if let Some(rest) = p.strip_prefix("~/") - && let Some(home) = std::env::var_os("HOME") + && let Some(home) = crate::ui::path_display::local_home() { - return PathBuf::from(home).join(rest); + return home.join(rest); } let path = PathBuf::from(p); if path.is_absolute() { diff --git a/src/ui/sftp.rs b/src/ui/sftp.rs index e723fd15..ba369bf5 100644 --- a/src/ui/sftp.rs +++ b/src/ui/sftp.rs @@ -310,11 +310,14 @@ fn mode_string(mode: u32) -> String { ) } +/// Where a download lands when nothing else says. +/// +/// The relative `.` is a last resort rather than a failure because a +/// download has to be offered somewhere; every other caller of +/// [`path_display::local_home`](crate::ui::path_display::local_home) wants +/// the `None` and shows the path whole instead. fn local_home() -> PathBuf { - std::env::var_os("HOME") - .or_else(|| std::env::var_os("USERPROFILE")) - .map(PathBuf::from) - .unwrap_or_else(|| PathBuf::from(".")) + crate::ui::path_display::local_home().unwrap_or_else(|| PathBuf::from(".")) } fn local_download_dir() -> PathBuf {