pub struct ComputerUseBuilder { /* private fields */ }Expand description
Builder for a standalone Linux computer-use harness.
Implementations§
Source§impl ComputerUseBuilder
impl ComputerUseBuilder
Sourcepub fn native_timeout(self, timeout: Duration) -> Self
pub fn native_timeout(self, timeout: Duration) -> Self
Change how long native Wayland gets to produce a readable frame.
Examples found in repository?
examples/basic.rs (line 11)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let mut arguments = std::env::args_os().skip(1);
7 let program = arguments
8 .next()
9 .unwrap_or_else(|| "gnome-calculator".into());
10 let harness = ComputerUse::builder()
11 .native_timeout(Duration::from_secs(8))
12 .fallback_timeout(Duration::from_secs(30))
13 .bridge_geometry(1280, 800)
14 .build()?;
15 let mut app = harness.launch(LaunchConfig::new(program).args(arguments))?;
16
17 let frame = app.capture()?;
18 println!(
19 "controlled pid={} transport={:?} frame={}x{}",
20 app.pid(),
21 app.transport(),
22 frame.width,
23 frame.height
24 );
25 frame.image.save("agent-seat-frame.png")?;
26
27 // Harmlessly focus the center of the captured app to prove pointer input.
28 app.click(
29 f64::from(frame.width) / 2.0,
30 f64::from(frame.height) / 2.0,
31 PointerButton::Left,
32 1,
33 )?;
34
35 app.stop();
36 Ok(())
37}Sourcepub fn fallback_timeout(self, timeout: Duration) -> Self
pub fn fallback_timeout(self, timeout: Duration) -> Self
Change how long the XWayland fallback gets to produce a frame.
Examples found in repository?
examples/basic.rs (line 12)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let mut arguments = std::env::args_os().skip(1);
7 let program = arguments
8 .next()
9 .unwrap_or_else(|| "gnome-calculator".into());
10 let harness = ComputerUse::builder()
11 .native_timeout(Duration::from_secs(8))
12 .fallback_timeout(Duration::from_secs(30))
13 .bridge_geometry(1280, 800)
14 .build()?;
15 let mut app = harness.launch(LaunchConfig::new(program).args(arguments))?;
16
17 let frame = app.capture()?;
18 println!(
19 "controlled pid={} transport={:?} frame={}x{}",
20 app.pid(),
21 app.transport(),
22 frame.width,
23 frame.height
24 );
25 frame.image.save("agent-seat-frame.png")?;
26
27 // Harmlessly focus the center of the captured app to prove pointer input.
28 app.click(
29 f64::from(frame.width) / 2.0,
30 f64::from(frame.height) / 2.0,
31 PointerButton::Left,
32 1,
33 )?;
34
35 app.stop();
36 Ok(())
37}Sourcepub fn bridge_geometry(self, width: u16, height: u16) -> Self
pub fn bridge_geometry(self, width: u16, height: u16) -> Self
Set the compatibility bridge canvas size.
Examples found in repository?
examples/basic.rs (line 13)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let mut arguments = std::env::args_os().skip(1);
7 let program = arguments
8 .next()
9 .unwrap_or_else(|| "gnome-calculator".into());
10 let harness = ComputerUse::builder()
11 .native_timeout(Duration::from_secs(8))
12 .fallback_timeout(Duration::from_secs(30))
13 .bridge_geometry(1280, 800)
14 .build()?;
15 let mut app = harness.launch(LaunchConfig::new(program).args(arguments))?;
16
17 let frame = app.capture()?;
18 println!(
19 "controlled pid={} transport={:?} frame={}x{}",
20 app.pid(),
21 app.transport(),
22 frame.width,
23 frame.height
24 );
25 frame.image.save("agent-seat-frame.png")?;
26
27 // Harmlessly focus the center of the captured app to prove pointer input.
28 app.click(
29 f64::from(frame.width) / 2.0,
30 f64::from(frame.height) / 2.0,
31 PointerButton::Left,
32 1,
33 )?;
34
35 app.stop();
36 Ok(())
37}Sourcepub fn build(self) -> Result<ComputerUse>
pub fn build(self) -> Result<ComputerUse>
Start the private seat and return a ready harness.
Examples found in repository?
examples/basic.rs (line 14)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let mut arguments = std::env::args_os().skip(1);
7 let program = arguments
8 .next()
9 .unwrap_or_else(|| "gnome-calculator".into());
10 let harness = ComputerUse::builder()
11 .native_timeout(Duration::from_secs(8))
12 .fallback_timeout(Duration::from_secs(30))
13 .bridge_geometry(1280, 800)
14 .build()?;
15 let mut app = harness.launch(LaunchConfig::new(program).args(arguments))?;
16
17 let frame = app.capture()?;
18 println!(
19 "controlled pid={} transport={:?} frame={}x{}",
20 app.pid(),
21 app.transport(),
22 frame.width,
23 frame.height
24 );
25 frame.image.save("agent-seat-frame.png")?;
26
27 // Harmlessly focus the center of the captured app to prove pointer input.
28 app.click(
29 f64::from(frame.width) / 2.0,
30 f64::from(frame.height) / 2.0,
31 PointerButton::Left,
32 1,
33 )?;
34
35 app.stop();
36 Ok(())
37}Trait Implementations§
Source§impl Clone for ComputerUseBuilder
impl Clone for ComputerUseBuilder
Source§fn clone(&self) -> ComputerUseBuilder
fn clone(&self) -> ComputerUseBuilder
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ComputerUseBuilder
impl Debug for ComputerUseBuilder
Auto Trait Implementations§
impl Freeze for ComputerUseBuilder
impl RefUnwindSafe for ComputerUseBuilder
impl Send for ComputerUseBuilder
impl Sync for ComputerUseBuilder
impl Unpin for ComputerUseBuilder
impl UnsafeUnpin for ComputerUseBuilder
impl UnwindSafe for ComputerUseBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.