For a practical cross-platform starting point, use XCap 0.9.8: enumerate monitors, capture each image, and save it. Capturing a desktop is not one uniform operation across operating systems, however. Linux Wayland support has important qualifications, and the right API depends on whether you need a whole monitor, a window, or a region.
How do I take a screenshot of my desktop in Rust?
The documented XCap workflow is to call Monitor::all(), capture an image from each returned monitor with capture_image(), then save it. This example writes one PNG per enumerated monitor and propagates errors instead of panicking:
use xcap::Monitor;
fn main() -> Result<(), Box<dyn std::error::Error>> {
for (index, monitor) in Monitor::all()?.into_iter().enumerate() {
let image = monitor.capture_image()?;
image.save(format!("monitor-{index}.png"))?;
}
Ok(())
}
Use the version documented by the linked page in your dependency configuration. The example follows the XCap 0.9.8 README’s monitor enumeration, image capture, and PNG-save flow. The README uses unwraps in its short example; returning or handling errors, as above, is safer in an application because display enumeration, capture, and saving can fail.
This captures each monitor separately; it does not combine multiple displays into one image. If you want one display, a particular window, or a rectangle, select an API that exposes that capture unit and verify its behavior on your target operating system.
#1 Best Overall
- [INTEL POWERED CONTENT] - Built with a 8th Generation Hexa-Core Intel i5 and 32GB of DDR4 RAM; Modern, Windows 11 ready, with 4K support, Executive multitasking, media streaming and smooth, multi-tab web browsing; Perfect as an all-purpose multimedia computer; built for content creators; Plenty of RAM and Mass storage for photo and video editing powered by Intel HD 630
- [LATEST WIRELESS TECH] - This Dell Desktop Computer easily connects to the internet through the Built In WiFi / Bluetooth
- [SOLID STATE STORAGE] - This Dell Computer setup comes with an ultra-fast 1TB Solid State Drive (SSD); Setup as the primary boot device; Boot and load programs with lightning speed ; Additional expansion available
- [BUY & OWN WITH CONFIDENCE] - From the world's largest Microsoft Authorized Refurbisher; Quality Guarantee and Free Tech Support; Award-winning Customer Service; | Support Sustainable Business
- [MODERN HI-SPEED PORTS] - USB 3.0 (x4) | USB 2.0 (x4) | DisplayPort (x1) | HDMI Port (x1) | Audio Combo Jack (x1) | Audio Out (x1) | RJ-45 Ethernet (x1) | Internal SATA (x3)
Which part of the desktop can Rust capture?
Decide what “desktop screenshot” means for your application before choosing a crate. A full monitor, an individual window, and an arbitrary screen region are distinct capture requests, and not every crate documents the same modes on every platform.
- All monitors: enumerate displays and save one image per monitor, as in the example above.
- One monitor: enumerate monitors, select the intended one using metadata available in the chosen crate, then capture that monitor. Account for users whose display arrangement or scaling differs from your development setup.
- A window: use a crate that explicitly documents window capture, and check its platform status. XCap’s README documents window capture, but its Wayland status has caveats.
- A region: use a region or area API. XCap documents region capture; the older
screenshotscrate documentscapture_area(...).
Capture APIs are local desktop capabilities, not browser-page screenshot APIs. If your real input is a web URL and you need a rendered page image or PDF, see the ScreenshotNeo option after the local Rust workflow.
Which Rust screenshot crate should I choose?
XCap is a reasonable first crate to investigate for a new cross-platform application because its README documents monitor enumeration, full-screen and window capture, region capture, and an operating-system status table. That documentation is not an independent compatibility test: validate the exact targets and session types your app will support.
XCap
The XCap 0.9.8 README lists Windows 8.1 and later, macOS, Linux X11, and Linux Wayland. It marks Wayland screen and window capture as available but not fully supported in some special scenarios. Do not interpret that as an unconditional guarantee for every compositor, desktop session, or permission configuration.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Rank #2
- Model: Dell OptiPlex 7050 Small Form Factor (SFF)
- Processor: Intel Core i7-7700 3.60 GHz
- Memory: 32GB DDR4 Ram
- Storage: 1TB Solid State Drive (SSD) Fast Boot + Storage
- Operating System: Windows 11 Pro (64-bit)
screenshots
The screenshots 0.8.10 documentation demonstrates Screen::all(), capture(), and capture_area(...), followed by saving the returned image. Its README says “Move to XCap,” making it relevant when maintaining an existing dependency or comparing an older API, rather than an obvious default for new work. For that crate and version, the Linux requirements listed include libxcb, libxrandr, and dbus; its Debian/Ubuntu package example is libxcb1 libxrandr2 libdbus-1-3. Treat those as requirements stated for that crate/version, not universal requirements for Rust screen capture.
miniscreenshot_desktop
miniscreenshot_desktop 0.2.0 offers a small take() API and documents an automatic backend-selection sequence. It tries Wayland when the environment variable is set and the compositor supports zwlr_screencopy_manager_v1; then X11 when DISPLAY is set and the session is not XWayland; then XDG Desktop Portal. Its documentation says the portal path works on GNOME, KDE, Flatpak, and Snap, and may show a confirmation dialog. The Wayland protocol condition matters if you expect a no-prompt native capture.
sss_capture
sss_capture 0.1.0 documents full-desktop, monitor, window, region, and cursor-oriented APIs. Its Linux strategy prefers native wlr-screencopy when advertised, then XDG Desktop Portal, then X11 through XWayland. It describes direct OS/protocol bindings and typed errors. The docs.rs page gives its release date as 2026-05-17; evaluate API maturity and target compatibility rather than treating a broad feature list as evidence of production reliability.
Compare the details that affect deployment
| Option | Documented capture or backend details | Important qualification |
|---|---|---|
| XCap 0.9.8 | Monitor enumeration, full-screen, window, and region examples/status information. | Linux Wayland screen and window capture are not fully supported in some special scenarios. |
screenshots 0.8.10 |
Screen enumeration, capture, area capture; Linux packages listed include XCB, XRandR, and D-Bus libraries. | README says “Move to XCap.” Dependencies are specific to this crate/version. |
miniscreenshot_desktop 0.2.0 |
One-call take(); Wayland protocol, X11, then portal selection sequence. |
Wayland requires the documented protocol condition; portal capture may prompt for confirmation. |
sss_capture 0.1.0 |
Desktop, monitor, window, region, cursor-oriented APIs; native Wayland, portal, then X11/XWayland strategy. | Release date on docs.rs is 2026-05-17; evaluate maturity and deployment compatibility. |
These package pages do not establish a comparable speed ranking or independent quality evaluation. Choose based on capture unit, operating systems, Linux backend and compositor requirements, prompts, runtime dependencies, error handling, release maturity, and license; confirm details against the exact crate version you adopt.
Rank #3
- IMMERSIVE 24 INCH DISPLAY: Experience stunning clarity on a Full HD IPS screen with ultra-thin bezels, offering a 90% screen-to-body ratio that makes everything from spreadsheets to streaming come alive with vibrant colors and crisp details.
- POWERFUL INTEL PROCESSING: Tackle demanding tasks with ease thanks to the Intel processor and 16GB of high-speed memory, delivering smooth performance whether you're multitasking between applications or running productivity software.
- GENEROUS STORAGE: Store all your important files, photos, and programs with blazing-fast solid state drive technology that ensures quick boot times, rapid file access, and plenty of space for your digital life.
- ENHANCED PRIVACY AND COLLABORATION: Work confidently with the pop-up privacy camera that tucks away when not in use, plus dual microphones with noise reduction for crystal-clear video calls that keep you connected professionally.
- ECO-CONSCIOUS DESIGN: Feel good about your purchase with an EPEAT Gold registered and ENERGY STAR certified computer that combines premium performance with responsible environmental manufacturing practices.
How do I handle Linux Wayland capture?
Wayland capture depends on the compositor and the backend route available to the application. A crate’s support label alone cannot tell you whether your app will capture silently, require a portal interaction, or support a particular window or region in the session you deploy to.
- Identify the session and compositor. Test under the actual Wayland desktop environments and packaging modes you support, not only under X11 or XWayland.
- Check the crate’s documented route. For
miniscreenshot_desktop, native Wayland selection requires the documentedzwlr_screencopy_manager_v1condition; its fallback sequence may reach the portal.sss_capturedocuments nativewlr-screencopy, then portal, then X11 through XWayland. - Plan for user interaction. The
miniscreenshot_desktopdocumentation warns that its portal route may show a confirmation dialog. A background workflow that assumes unattended capture may therefore need a different design. - Test the exact requested target. Screen, window, and region capture can have different support status. XCap explicitly cautions that some Wayland screen/window scenarios are not fully supported.
Portal behavior and compositor protocol availability are implementation details, not interchangeable promises. Keep permission or confirmation flows visible to users, and report a failed or cancelled capture rather than silently treating it as a valid image.
How should I make capture and saving reliable?
Keep the capture pipeline explicit: discover the target, capture it, then save or process the returned image. Every stage can fail independently. The sample uses Rust’s ? operator so its caller receives an error instead of a panic; a GUI or service can instead map errors into a user-facing status and retry policy appropriate to its workflow.
- Inspect monitor metadata. Do not assume monitor ordering, coordinates, or dimensions are identical across machines. Select the target using the metadata exposed by the crate.
- Use a deliberate filename and output location. The sample’s names are simple local paths. Production code should decide where files belong and how repeated captures avoid accidental overwrites.
- Confirm the output format. The cited examples save PNGs. For another encoding, confirm that the selected image type and crate version support it and configure quality or color handling as needed; the documentation cited here does not establish a universal set of encoders.
- Keep the dependency and target matrix explicit. Pin the crate version you have validated and test the operating systems, display servers, permissions, multi-monitor layouts, and scaling configurations your application claims to support.
Performance, reliability, and cost considerations
The package documentation reviewed here does not provide a comparable benchmark or establish a general performance winner. Capture time and resource use should be measured in your own application on its supported hardware and desktop sessions; timing snippets in examples are not benchmark evidence.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #4
- This Certified Refurbished product is tested and certified to look and work like new. The refurbishing process includes functionality testing, basic cleaning, inspection, and repackaging. The product ships with all relevant accessories, a minimum 90-day warranty, and may arrive in a generic box. Only select sellers who maintain a high-performance bar may offer Certified Refurbished products on Amazon.com.
- Dell Optiplex 3050 SFF Desktop computer PC, Intel Quad Core i5-6500 up to 3.6GHz, 16GB DDR4, 256GB SSD
- Includes: USB Keyboard & Mouse, USB WiFi adapter, Microsoft office 30 days free trail.
- Port: Front: USB 3.0(2), USB 2.0(2); Rear: DP, HDMI, USB 3.0(2), USB 2.0(2), RJ-45.
- Support 4K (3840x2160) Dual display, makes it easy to connect two monitors at the same time, and you can expand working Windows, mirror content, or expand a single window across multiple monitors.
For reliability, the main practical variables established by these docs are platform/backend support, compositor protocol availability, portal interaction, native Linux runtime dependencies for the particular crate, and error handling. Exercise those paths in integration tests. Handle capture failures separately from file-write failures so operators can identify whether the image was never obtained or could not be stored.
These Rust crates are local software dependencies, not metered hosted screenshot services; the cited pages do not establish a comparable price or service-level commitment. For a cloud API that renders a URL rather than capturing the current desktop, ScreenshotNeo has its own published plan terms below.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
If you need screenshots of web pages by URL rather than the machine’s local desktop, ScreenshotNeo is a website screenshot API and MCP server. A single GET request can return PNG, JPEG, WebP, or PDF. See the API documentation for parameters and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie/consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses report the page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is on every plan, and yearly billing gives two months free. Sign up for free: 1,000 screenshots a month, no card required.
Best Value
- Connectivity: Includes WiFi, Bluetooth, and LAN for wireless and wired connections
- Memory: Features 16GB DDR4 RAM for smooth multitasking and performance
- Storage: Combines 500GB SSD and 1TB HDD for ample storage space
- Graphics: Integrated Intel UHD Graphics 630 for crisp visuals and video playback
- Design: Sleek desktop tower with black color and slim profile for modern look
Common errors and troubleshooting
Monitor enumeration fails
Monitor::all() returns a result, not a guaranteed list. Check the error and confirm the program is running in a supported interactive desktop session with the expected display environment. Test on the operating system and session type you ship.
Capture fails on Wayland
Check the crate’s backend requirements and the compositor’s available protocols. XCap documents special scenarios where Wayland support is incomplete; the miniscreenshot_desktop Wayland path depends on zwlr_screencopy_manager_v1. If the crate falls back to a portal, account for a possible confirmation dialog rather than assuming unattended capture.
The screenshot is missing or the wrong display
Do not assume the first enumerated monitor is the intended one or that desktop coordinates match a single-display setup. Inspect the available monitor metadata, choose explicitly, and test multi-monitor arrangements and scaling on target machines.
Linux cannot load a native library
If maintaining screenshots 0.8.10, compare the installed runtime libraries with its documented Linux requirements: libxcb, libxrandr, and dbus. Its Debian/Ubuntu example names libxcb1 libxrandr2 libdbus-1-3. These are not a universal dependency list for other crates; consult the selected crate’s own version-specific instructions.
Image saving fails
Handle the save result independently from capture. Verify that the destination directory exists and is writable, and use an output path your application is allowed to create. A successful capture does not imply a successful disk write.
Frequently asked questions
Does the example save one combined image for multiple monitors?
No. It writes one PNG for each monitor returned by enumeration. Combining displays into a single canvas requires additional layout and image-processing logic not shown in the crate’s basic example.
Can a Rust screenshot program run without the user noticing?
Not as a general cross-platform guarantee. The cited Wayland portal path may request confirmation, and the package documentation does not establish a universal silent-capture permission model. Design around the target platform’s documented behavior.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsQuick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




