Socket

Struct Socket 

Source
pub struct Socket { /* private fields */ }
Expand description

Helper for blocking communication over the niri socket.

This struct is used to communicate with the niri IPC server. It handles the socket connection and serialization/deserialization of messages.

Implementations§

Source§

impl Socket

Source

pub fn connect() -> Result<Self>

Connects to the default niri IPC socket.

This is equivalent to calling Self::connect_to with the path taken from the SOCKET_PATH_ENV environment variable.

Source

pub fn connect_to(path: impl AsRef<Path>) -> Result<Self>

Connects to the niri IPC socket at the given path.

Source

pub fn send(&mut self, request: Request) -> Result<Reply>

Sends a request to niri and returns the response.

Return values:

  • Ok(Ok(response)): successful Response from niri
  • Ok(Err(message)): error message from niri
  • Err(error): error communicating with niri
Source

pub fn read_events(self) -> impl FnMut() -> Result<Event>

Starts reading event stream Events from the socket.

The returned function will block until the next Event arrives, then return it.

Use this only after requesting an EventStream.

§Examples
use niri_ipc::{Request, Response};
use niri_ipc::socket::Socket;

fn main() -> std::io::Result<()> {
    let mut socket = Socket::connect()?;

    let reply = socket.send(Request::EventStream)?;
    if matches!(reply, Ok(Response::Handled)) {
        let mut read_event = socket.read_events();
        while let Ok(event) = read_event() {
            println!("Received event: {event:?}");
        }
    }

    Ok(())
}

Auto Trait Implementations§

§

impl Freeze for Socket

§

impl RefUnwindSafe for Socket

§

impl Send for Socket

§

impl Sync for Socket

§

impl Unpin for Socket

§

impl UnwindSafe for Socket

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.