#[non_exhaustive]pub struct CaptureOptions {
pub include_tree: bool,
pub include_screenshot: bool,
pub text_limit: Option<usize>,
pub max_nodes: usize,
pub max_depth: usize,
pub max_screenshot_dimension: Option<u32>,
pub launch_if_needed: bool,
}Expand description
Limits and toggles for Computer::get_app_state.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.include_tree: boolWalk the accessibility tree. Disabling this invalidates element indexes.
include_screenshot: boolCapture a screenshot. Disabling this prevents coordinate-based actions.
text_limit: Option<usize>Maximum characters kept per text attribute; None keeps everything.
max_nodes: usizeMaximum number of raw accessibility nodes visited.
max_depth: usizeMaximum tree depth visited.
max_screenshot_dimension: Option<u32>Screenshots larger than this on either side are downscaled; None keeps full resolution.
launch_if_needed: boolLaunch the app (without activating it) if it is installed but not running.
Implementations§
Source§impl CaptureOptions
impl CaptureOptions
Sourcepub const fn include_tree(self, yes: bool) -> Self
pub const fn include_tree(self, yes: bool) -> Self
Sets include_tree.
Sourcepub const fn include_screenshot(self, yes: bool) -> Self
pub const fn include_screenshot(self, yes: bool) -> Self
Sets include_screenshot.
Examples found in repository?
examples/textedit.rs (line 20)
11fn main() -> computer_use::Result<()> {
12 use std::time::Duration;
13
14 use computer_use::{
15 CaptureOptions, ClickMethod, ClickOptions, ClickTarget, Computer, ElementQuery, Error, TextSelection,
16 };
17
18 const APP: &str = "TextEdit";
19 let mut computer = Computer::new()?.settle_delay(Duration::from_millis(300));
20 let tree_only = CaptureOptions::default().include_screenshot(false);
21
22 let state = computer.get_app_state(APP, &tree_only)?;
23 let new_doc = state.find(&ElementQuery::text("New Document").with_role("button").exact(true)).next();
24 if let Some(button) = new_doc.map(|e| e.index) {
25 println!(
26 "click New Document: {:?}",
27 computer.click(APP, ClickTarget::Element(button), ClickOptions::default())?
28 );
29 }
30
31 let state = computer.get_app_state(APP, &tree_only)?;
32 let text_area = state
33 .find(&ElementQuery::role("AXTextArea"))
34 .next()
35 .map(|e| e.index)
36 .ok_or_else(|| Error::StateUnavailable("no text area".into()))?;
37 println!(
38 "click text area {text_area}: {:?}",
39 computer.click(APP, ClickTarget::Element(text_area), ClickOptions::default())?
40 );
41 computer.set_value(APP, text_area, "")?;
42 computer.type_text(APP, "Hello from computer-use-rs!\nSecond line.")?;
43
44 let state = computer.get_app_state(APP, &tree_only)?;
45 let value = state.find(&ElementQuery::role("AXTextArea")).next().and_then(|e| e.value.clone());
46 println!("text area now contains: {value:?}");
47
48 computer.select_text(APP, text_area, &TextSelection::new("computer-use-rs"))?;
49 let state = computer.get_app_state(APP, &tree_only)?;
50 println!("selected text: {:?}", state.selected_text);
51
52 computer.press_key(APP, "BackSpace")?;
53 let state = computer.get_app_state(APP, &tree_only)?;
54 let value = state.find(&ElementQuery::role("AXTextArea")).next().and_then(|e| e.value.clone());
55 println!("after BackSpace: {value:?}");
56
57 computer.press_key(APP, "super+a")?;
58 let state = computer.get_app_state(APP, &tree_only)?;
59 println!("after super+a, selected: {:?}", state.selected_text);
60
61 let focused = ClickOptions::default().method(ClickMethod::FocusedBackground);
62 println!("focused click: {:?}", computer.click(APP, ClickTarget::Element(text_area), focused)?);
63 computer.type_text(APP, " The end.")?;
64 let state = computer.get_app_state(APP, &tree_only)?;
65 let value = state.find(&ElementQuery::role("AXTextArea")).next().and_then(|e| e.value.clone());
66 println!("final text: {value:?}");
67
68 Ok(())
69}Sourcepub const fn text_limit(self, limit: Option<usize>) -> Self
pub const fn text_limit(self, limit: Option<usize>) -> Self
Sets text_limit.
Sourcepub const fn max_screenshot_dimension(self, max: Option<u32>) -> Self
pub const fn max_screenshot_dimension(self, max: Option<u32>) -> Self
Sets max_screenshot_dimension.
Sourcepub const fn launch_if_needed(self, yes: bool) -> Self
pub const fn launch_if_needed(self, yes: bool) -> Self
Sets launch_if_needed.
Trait Implementations§
Source§impl Clone for CaptureOptions
impl Clone for CaptureOptions
Source§impl Debug for CaptureOptions
impl Debug for CaptureOptions
Source§impl Default for CaptureOptions
impl Default for CaptureOptions
impl Eq for CaptureOptions
Source§impl PartialEq for CaptureOptions
impl PartialEq for CaptureOptions
impl StructuralPartialEq for CaptureOptions
Auto Trait Implementations§
impl Freeze for CaptureOptions
impl RefUnwindSafe for CaptureOptions
impl Send for CaptureOptions
impl Sync for CaptureOptions
impl Unpin for CaptureOptions
impl UnsafeUnpin for CaptureOptions
impl UnwindSafe for CaptureOptions
Blanket Implementations§
impl<T> AutoreleaseSafe for Twhere
T: ?Sized,
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