roguauto 1.0.2

A lightweight power menu for Wayland compositors supporting wlr-layer-shell.
// Copyright (C) 2026 ac5307
// SPDX-License-Identifier: GPL-3.0-or-later

use crate::{env, io, Path};

const SOCKET_FILE_NAME: &str = "control.sock";

/// Returns the path to the daemon socket.
///
/// Returns an error if the XDG_RUNTIME_DIR environment variable
/// is not set.
pub fn socket_path() -> io::Result<Box<Path>> {
  use io::{Error, ErrorKind};
  let dir = env::var_os("XDG_RUNTIME_DIR")
    .filter(|val| !val.is_empty())
    .ok_or_else(|| {
      Error::new(ErrorKind::NotFound, "XDG_RUNTIME_DIR is not set")
    })?;

  let path: &Path = dir.as_ref();

  Ok(Box::from(
    path.join(crate::NAMESPACE).join(SOCKET_FILE_NAME),
  ))
}