#[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,
pub window: Option<WindowSelector>,
pub include_menu_bar: bool,
}Expand description
Limits and toggles for Computer::get_app_state.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
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.
window: Option<WindowSelector>The window to capture; None picks the focused or main window.
Also capture the app’s menu bar, as a second root after the window’s tree.
Only macOS keeps the menu bar outside the window; on Windows and Linux it is already part of the window’s tree, so this has no effect there.
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?
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.
Sourcepub fn window(self, window: WindowSelector) -> Self
pub fn window(self, window: WindowSelector) -> Self
Sets window.
Sets include_menu_bar.