Morganamilo/paru · error · anyhow::Error
file manager ' ' did not execute successfully
Error message
file manager '{}' did not execute successfully What it means
run_file_manager launches the configured file manager (e.g. in the review/directory- browsing flow) with command_status; if the process runs but exits non-zero, this ensure fails. The preceding context reports 'failed to execute file manager: <fm>' for spawn failures; this error covers exit-code failures.
Solutions
- Test the file manager manually: <fm> <dir> and fix its exit failure
- Check fm_flags in paru.conf for invalid options and remove them
- Set file manager to a known-working one, e.g. paru.conf: FileManager = ranger
Example fix
// before (paru.conf) [options] FileManager = nemo FmFlags = --bogus-flag // after [options] FileManager = ranger
Defensive patterns
Strategy: try-catch
Validate before calling
command -v "$FM" >/dev/null 2>&1 || echo "file manager missing: $FM" "$FM" "$DIR" && echo ok || echo "FM exits nonzero"
Try / catch
match run_file_manager(config, fm, dir) {
Err(e) => {
eprintln!("{} (check fm_flags and try running the FM manually)", e);
}
Ok(()) => {}
} Prevention
- Verify the configured file manager runs successfully on any directory
- Keep fm_flags minimal and valid for the chosen FM
- Run terminal file managers only inside a TTY context
When it happens
Trigger: config.fm (or default) points to a file manager binary that exists but exits with a non-zero status when opened on the build/review directory — e.g. ranger/nautilus failing on the given dir or bad fm_flags.
Common situations: fm_flags in paru.conf containing options the file manager doesn't support; file manager crashing on unusual filenames in the build dir; terminal-based FM run without a TTY.
Related errors
AI-assisted analysis of Morganamilo/paru@9ac3578807 (2026-09-12).
Data as JSON: /api/errors/91fd5427c6cca590.
Report an issue: GitHub.
Appendix: source
Thrown at src/install.rs:1600
config: &Config,
fetch: &aur_fetch::Fetch,
fm: &str,
pkgs: &[&str],
) -> Result<tempfile::TempDir> {
let has_diff = fetch.has_diff(pkgs)?;
fetch.save_diffs(&has_diff)?;
let view = tempfile::Builder::new().prefix("aur").tempdir()?;
fetch.make_view(view.path(), pkgs, &has_diff)?;
run_file_manager(config, fm, view.path())?;
Ok(view)
}
fn run_file_manager(config: &Config, fm: &str, dir: &Path) -> Result<()> {
let mut cmd = Command::new(fm);
cmd.args(&config.fm_flags).arg(dir).current_dir(dir);
let ret =
command_status(&mut cmd).with_context(|| tr!("failed to execute file manager: {}", fm))?;
ensure!(
ret.success().is_ok(),
tr!("file manager '{}' did not execute successfully", fm)
);
Ok(())
}
fn print_dir(
config: &Config,
pkgdir: &Path,
path: &Path,
stdin: &mut impl Write,
buf: &mut Vec<u8>,
bat: bool,
recurse: u32,
) -> Result<()> {
{
let c = config.color;
let has_pkgbuild = path.join("PKGBUILD").exists();View on GitHub (pinned to 9ac3578807)