Finding the User Binary Path

If your app needs to know where ~/.local/bin is, this page shows you exactly how to get that path.

Sometimes your application might need to install an executable file on the user’s system. The XDG spec recommends a specific place for this, which is usually ~/.local/bin.

The xdgdir crate makes it easy to get this path. This guide will show you how.

Getting the Binary Path

The path to the user’s binary directory is stored in the bin field of the BaseDir struct. You can get it using either BaseDir::global() or BaseDir::new(), since this path is not specific to your application.

Here is how you can get it.

Rust
use xdgdir::BaseDir;

fn main() {
    let dirs = BaseDir::global().unwrap();

    println!("User binary path is: {}", dirs.bin.display());
}

How it Works

When you run this code, it will print the standard location for user-specific executables.

Plain Text
User binary path is: /home/your-user/.local/bin

Unlike the other directories like config or data, the binary path is not configurable with an XDG_ environment variable. It is always resolved as $HOME/.local/bin. This is part of the XDG specification.

This path is useful if your application has command-line tools that you want to make available to the user. You could copy your executable to this directory and then instruct the user to add it to their shell’s $PATH variable if it’s not already there.