pub struct SeatRef(/* private fields */);
Implementations§
Source§impl SeatRef
impl SeatRef
Sourcepub fn disable(&mut self) -> Result<(), Errno>
pub fn disable(&mut self) -> Result<(), Errno>
Disables a seat, used in response to a disable_seat event. After disabling the seat, the seat devices must not be used until enable_seat is received, and all requests on the seat will fail during this period.
Examples found in repository?
5fn main() {
6 let active = Rc::new(RefCell::new(false));
7
8 let seat = {
9 let active = active.clone();
10 Seat::open(move |seat, event| match event {
11 SeatEvent::Enable => {
12 println!("Enable");
13 println!("Name: {}", seat.name());
14
15 *active.borrow_mut() = true;
16 }
17 SeatEvent::Disable => {
18 println!("Disable");
19
20 *active.borrow_mut() = false;
21 seat.disable().unwrap();
22 }
23 })
24 };
25
26 if let Ok(mut seat) = seat {
27 while !(*active.borrow()) {
28 println!("waiting for activation...n");
29 seat.dispatch(-1).unwrap();
30 }
31
32 // Close seat
33 drop(seat);
34 }
35}
Sourcepub fn open_device<P: AsRef<Path>>(&mut self, path: &P) -> Result<Device, Errno>
pub fn open_device<P: AsRef<Path>>(&mut self, path: &P) -> Result<Device, Errno>
Opens a device on the seat, returning its device ID and fd
This will only succeed if the seat is active and the device is of a type permitted for opening on the backend, such as drm and evdev.
The device may be revoked in some situations, such as in situations where a seat session switch is being forced.
Sourcepub fn close_device(&mut self, device: Device) -> Result<(), Errno>
pub fn close_device(&mut self, device: Device) -> Result<(), Errno>
Closes a device that has been opened on the seat using the device_id from libseat_open_device.
Sourcepub fn name(&mut self) -> &str
pub fn name(&mut self) -> &str
Retrieves the name of the seat that is currently made available through the provided libseat instance.
Examples found in repository?
5fn main() {
6 let active = Rc::new(RefCell::new(false));
7
8 let seat = {
9 let active = active.clone();
10 Seat::open(move |seat, event| match event {
11 SeatEvent::Enable => {
12 println!("Enable");
13 println!("Name: {}", seat.name());
14
15 *active.borrow_mut() = true;
16 }
17 SeatEvent::Disable => {
18 println!("Disable");
19
20 *active.borrow_mut() = false;
21 seat.disable().unwrap();
22 }
23 })
24 };
25
26 if let Ok(mut seat) = seat {
27 while !(*active.borrow()) {
28 println!("waiting for activation...n");
29 seat.dispatch(-1).unwrap();
30 }
31
32 // Close seat
33 drop(seat);
34 }
35}
Sourcepub fn switch_session(&mut self, session: i32) -> Result<(), Errno>
pub fn switch_session(&mut self, session: i32) -> Result<(), Errno>
Requests that the seat switches session to the specified session number. For seats that are VT-bound, the session number matches the VT number, and switching session results in a VT switch.
A call to libseat_switch_session does not imply that a switch will occur, and the caller should assume that the session continues unaffected.
Sourcepub fn get_fd(&mut self) -> Result<BorrowedFd<'_>, Errno>
pub fn get_fd(&mut self) -> Result<BorrowedFd<'_>, Errno>
Retrieve the pollable connection fd for a given libseat instance. Used to poll the libseat connection for events that need to be dispatched.
Returns a pollable fd on success.
Sourcepub fn dispatch(&mut self, timeout: i32) -> Result<i32, Errno>
pub fn dispatch(&mut self, timeout: i32) -> Result<i32, Errno>
Reads and dispatches events on the libseat connection fd.
The specified timeout dictates how long libseat might wait for data if none is available: 0 means that no wait will occur, -1 means that libseat might wait indefinitely for data to arrive, while > 0 is the maximum wait in milliseconds that might occur.
Returns a positive number signifying processed internal messages on success. Returns 0 if no messages were processed. Returns -1 and sets errno on error.
Examples found in repository?
5fn main() {
6 let active = Rc::new(RefCell::new(false));
7
8 let seat = {
9 let active = active.clone();
10 Seat::open(move |seat, event| match event {
11 SeatEvent::Enable => {
12 println!("Enable");
13 println!("Name: {}", seat.name());
14
15 *active.borrow_mut() = true;
16 }
17 SeatEvent::Disable => {
18 println!("Disable");
19
20 *active.borrow_mut() = false;
21 seat.disable().unwrap();
22 }
23 })
24 };
25
26 if let Ok(mut seat) = seat {
27 while !(*active.borrow()) {
28 println!("waiting for activation...n");
29 seat.dispatch(-1).unwrap();
30 }
31
32 // Close seat
33 drop(seat);
34 }
35}