Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallFor a new Wayland screenshot client, start by checking whether the target compositor advertises ext-image-copy-capture-v1. If it does, the client creates a capture session, waits for the compositor’s buffer constraints, submits a compatible buffer, and handles an asynchronous success or failure event. The protocol is still in a testing/staging phase, so it is not a universal, stable screenshot command. The older wlr-screencopy-unstable-v1 is a compatibility option only when the target requires it: its documentation calls it experimental and deprecated.
Choose a protocol for the compositor you target
Wayland does not provide a single screenshot command that works on every desktop. A client communicates with protocols advertised by the compositor, and the compositor’s implementation and version determine which capture route is available. Check the actual target system rather than assuming that a protocol found in documentation is enabled in every installation or build.
For new work, investigate ext-image-copy-capture-v1
ext-image-copy-capture-v1 is the newer image-capture protocol described in the available protocol documentation. It lets a client capture an image source—such as an output or a toplevel—into a client-submitted buffer. Its documentation places it in a testing or staging phase, so treat it as an evolving interface and verify compositor support before designing around it.
The protocol page lists compositor implementation versions including Sway 1.11, Labwc 0.20.2, and Mir 2.26. Those are entries in that page’s support table, not a guarantee that all builds or installations expose the protocol. Confirm the advertised globals, supported version, distribution build, and available source-selection route on the machine where the application will run.
Recommended Free Tools
#1 Best Overall
- Powerful Linux Laptop: This IdeaPad Slim 3 Laptop comes pre-installed with Ubuntu Linux, offering fast performance, robust security, and a clean, user-friendly experience. Enjoy full customization, seamless hardware compatibility, and access to thousands of open-source apps. Whether you're working, creating, or coding, it's built to keep up with everything you do.
- A Multitasking Master: The latest AMD Ryzen 7 5825U processor (up to 4.5 GHz) delivers powerful performance with 8 cores and 16 threads for smooth multitasking. Integrated AMD Radeon Graphics provide crisp visuals for streaming, browsing, photo editing, and casual gaming. With smart machine intelligence, it adapts to your needs for a fast, responsive experience.
- 15.6" Full HD Display: The IdeaPad Slim 3 boasts an 88% screen-to-body ratio for a floating, edge-to-edge visual experience. TÜV Low Blue Light certification reduces eye strain, making it perfect for long work or study sessions.
- Military-Grade Durability: The smart IdeaPad Slim 3 combines portability and durability, letting you work, study, and play on the go. With a profile 10% slimmer than the previous generation, it's lightweight yet military-grade rugged, ready for anything, anywhere.
- Versatile Connectivity: Enjoy the security of a built-in webcam with a privacy shutter. Connect effortlessly with multiple ports: 2x USB A, 1x USB C, 1x HDMI, 1x SD Card Reader, 1x Headphone/Microphone combo. Bundle comes with Stylus Pen, 256GB Portable SSD and 5-in-1 Docking Station.
Keep wlr-screencopy-unstable-v1 for compatibility
The legacy wlr-screencopy-unstable-v1 protocol can capture an entire output or a region expressed in output logical coordinates. Its documentation describes it as experimental and deprecated, and recommends ext-image-copy-capture-v1. Use it when the compositor you must support requires that path; do not make it the default choice for a new implementation without checking the target’s capabilities.
Understand the capture lifecycle before writing the client
A capture request is not simply “ask for a PNG.” The protocol flow coordinates a source, a session, compositor-provided buffer requirements, and a frame object. The client must respect the constraints it receives before requesting capture. A useful implementation plan is to keep protocol discovery, buffer allocation, frame submission, and completion handling as distinct stages.
- Discover and bind the advertised manager. Check the compositor’s advertised globals and bind the image-copy-capture manager only when it is available. The exact generated bindings and source-selection API depend on the protocol and client environment; do not assume that the manager alone supplies a universal desktop UI or a source picker.
- Obtain an image-capture source. Select the relevant source through the source protocol or API available on that system, such as an output or a toplevel. Mir’s screencasting documentation describes
ext_image_copy_capture_manager_v1in its setup and mentionswmenuorslurpas source selectors. Those examples are specific to that setup, not a mandatory selector built into the protocol. - Create a session for the source. The session includes an option controlling whether the cursor is painted onto captured frames. Choose this deliberately: when cursor painting is selected, the cursor is composited; when it is not selected, the cursor must not be composited.
- Wait for the buffer-constraint batch to finish. The compositor reports the buffer size and supported shared-memory and/or DMA-BUF formats and modifiers. It sends a
doneevent to end a batch of constraints. Constraints can be sent again if they change, so do not treat the first batch as immutable for the session’s entire lifetime. - Allocate a compatible buffer and attach it to a frame. Use the reported size and one of the supported format paths. Describe changed or damaged regions when useful. For the first capture, or whenever damage is not tracked, mark the whole buffer as damaged.
- Request capture and process completion. Attach the buffer before sending
capture; that request may be sent only once for a given frame. A successful frame provides metadata before itsreadyevent. A failed capture emitsfailed. Handle both outcomes rather than treating a request as an immediate, guaranteed image. - Destroy the completed frame before requesting another. Only one frame object may exist per session at a time. After completion, destroy that frame before creating or requesting the next one for the same session. The buffer may then be reused subject to the protocol’s constraints and your client’s buffer handling.
Buffer constraints, damage, and cursor behavior
The compositor, not the client, defines the valid buffer choices for a capture. A client should wait for the constraint batch’s done event, then select a supported memory path, format, and modifier and allocate at the reported size. Allocating from assumptions about a typical desktop format or viewport can leave the client with a buffer the compositor did not advertise as usable.
Rank #2
- Intel Core i5-10210U (up to 4.2GHz) - 1TB PCIe NVMe + 1TB HDD - 32GB DDR4 SDRAM
- 17.3" HD+ (1600x900) Display, Intel UHD Graphics 620
- Built in HD 720p Webcam with Microphone - Bluetooth Version4.2
- I/O Ports: 2x USB 3.1 (Data Only), 1x USB 2.0, 1x HDMI, 1x Headphone/Microphone Combo Jack
- Linux Mint Cinnamon 64-Bit - 6-Row Keyboard w/ Full Numberpad
Shared memory and DMA-BUF are alternative buffer paths listed in the constraints. The practical choice depends on what the compositor reports and what the client can allocate and submit. The protocol summary does not establish a universally preferable path or a specific pixel format; use the actual advertised values rather than hard-coding one.
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 errorsDamage describes which parts of the frame have changed. It is useful when the client can track changes, but it is not a substitute for a valid buffer. For a first frame, or when the client cannot reliably track changed regions, damage the entire buffer. This avoids claiming that unchanged pixels are valid when the client has no prior frame against which to compare them.
Cursor inclusion is a session decision, not a default to guess about. If the desired image should contain the cursor, request cursor painting for the session. If not, leave that option unselected; the compositor must not composite the cursor in that case. Applications that offer both modes should expose the distinction clearly because it affects what appears in the captured pixels.
Rank #3
- Intel Core i5-1335U Processor (12M Cache, 12 Threads, up to 4.6 GHz) - 256GB Solid State Drive - 16GB DDR4 SDRAM
- 15.6" FHD (1920x1080) Non-Touch Anti-Glare Display - Intel UHD 620 Integrated Graphics - Stereo Speakers
- 720p HD Webcam with Privacy Shutter. Integrated Microphone - Intel Dual Band Wireless-AC (2x2) 8265, Bluetooth Version 4.2
- I/O Ports: 2x USB 3.0, 1x USB 3.1 Type-C 3.1, Headphone/Mic Combo Port, 4-in-1 Card Reader, HDMI, Kensington Mini-Lock Slot
- Linux Mint (Cinnamon) 64-Bit - Keyboard with Full NumberPad - Fast Charging
Why a later frame may not arrive immediately
The protocol supports ongoing capture, but it does not promise that every request produces a newly copied frame immediately. After the first successful frame, the compositor may wait indefinitely for source content to change before copying another frame. A client designed around repeated capture should therefore treat this as event-driven behavior, not as a fixed-rate sequence of screenshots.
Keep the session alive while waiting for the next relevant change, and make the user experience distinguish “waiting for source changes” from “capture failed.” If the application needs a one-time image, the first completed frame may satisfy that request. If it needs continuing frames, its control flow must accommodate the compositor’s wait behavior and the one-frame-object-per-session limit.
What the protocol does not decide for your application
The capture protocol provides a low-level path for getting image data into a client buffer. It is not, by itself, a ready-made application command or a complete user workflow. The protocol evidence does not establish a universal permission prompt, privacy confirmation, saved-file location, clipboard action, or built-in source-selection interface. Do not promise those behaviors unless the application or desktop environment you target implements them.
Rank #4
- Source choice: determine how the target system exposes outputs or toplevels and whether your application needs an external selector.
- Image handling: after a successful frame, your application still needs to handle the buffer and any image encoding or file output it intends to provide.
- Platform behavior: document the compositor and release support you actually rely on instead of presenting one desktop’s behavior as a Wayland-wide guarantee.
- Failure and waiting: surface a failed frame as a failure, and allow for a later frame to wait for source changes rather than timing out immediately by design.
Compatibility checks and troubleshooting
When capture does not work, first identify whether the problem is protocol availability, source selection, buffer negotiation, or frame lifecycle. These checks follow the documented flow and help isolate the failure without assuming a universal compositor configuration.
| Symptom | Likely issue | What to check |
|---|---|---|
| The manager cannot be bound | The compositor may not advertise the image-copy-capture manager, or the client may be binding the wrong advertised interface/version. | Inspect the compositor’s actual advertised globals and version on the target installation. Do not rely solely on a support-table entry for another release or build. |
| No capture source can be selected | The protocol manager is present, but the client has no working path for obtaining a source. | Check the relevant source protocol or API and the compositor-specific selection flow. Mir’s documented setup mentions wmenu or slurp; these are not guaranteed to be available elsewhere. |
| Frame submission is rejected or fails | The buffer may not match the reported size or supported format path, may not be attached, or the frame may have been submitted incorrectly. | Wait for the complete constraint batch, use an advertised shared-memory or DMA-BUF format/modifier, attach the buffer, and send capture no more than once for that frame. |
| The first frame works but a later capture stalls | The source may not have changed, or the client may still have a live frame object from the previous capture. | Account for the documented wait-for-change behavior, process frame events, and destroy the completed frame before requesting another in the session. |
| The cursor is unexpectedly absent or present | The session’s cursor-painting option does not match the intended result. | Set the session option explicitly. Cursor painting is not an assumption to leave implicit. |
| Capture works on one machine but not another | Compositor support, version, build, or source-selection route differs. | Check advertised globals, version, distribution build, and available source path on each target. Use the legacy protocol only where that target’s support requires it. |
Implementation trade-offs to decide early
Before committing to a client design, compare the requirements that affect protocol and buffer handling rather than assuming that “screenshot” means the same operation everywhere.
- Compositor reach: whether the target advertises the newer protocol, and whether a compatibility path is needed for systems that do not.
- Capture source: whether the application must capture an output, a toplevel, or both, and how it obtains that source.
- Buffer import: which advertised shared-memory or DMA-BUF paths the client can support.
- Cursor policy: whether cursor pixels should be included in the captured frame.
- Capture cadence: whether the app needs one image or an ongoing session that can wait for source changes.
These choices affect compatibility and application behavior. The available protocol details do not establish performance figures, memory costs, or a universal advantage for one buffer path, so assess those against the compositor and client environment you actually support.
Best Value
- 12th Intel Alder Lake N95 Processor – The GMKtec G3 S Mini PC is powered by the 12th Gen Intel N95 processor with 4 cores, 4 threads, 6MB cache and a burst frequency up to 3.4GHz. Compared with N100/N5105/N5100/N5095, the N95 delivers up to 36% overall performance improvement. Perfect for routine tasks, office work, and home entertainment, this compact mini desktop is more convenient than traditional bulky PCs.
- 8GB RAM & 256GB SSD Storage – Pre-installed with 8GB DDR4 memory and a fast 256GB M.2 2242 SSD, the G3 S mini desktop offers quicker startup, smoother multitasking, and faster file transfers. Enjoy seamless performance whether you’re working on multiple applications, browsing, or streaming content.
- Rich Interfaces & Connectivity – The G3 S mini computer comes equipped with USB 3.2 (up to 10Gbps), dual HDMI 2.0 (4K@60Hz), and a 3.5mm audio jack. With support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet (RJ45 1000MbE), it connects easily with monitors, projectors, printers, office equipment, and other peripherals, making it versatile for both home and business use.
- Dual 4K Display Support – Featuring upgraded Intel UHD Graphics (up to 1000MHz), the G3 S supports 4K video playback and AV1 decoding for a smooth viewing experience. With dual HDMI outputs, you can connect two 4K@60Hz displays simultaneously, enabling efficient multitasking for work and entertainment.
- GMKtec WARRANTY - GMKtec offers a 1-year limited GMKtec's warranty for each mini PC, starting from the date of the purchase. All defects due to design and workmanship are covered. With a professional after sales team always ready to attend to your needs, you can simply relax and enjoy your mini PC.
Or skip the browser setup
The Wayland protocol above is for capturing desktop image sources through a compositor. If instead you need a screenshot of a public web page, ScreenshotNeo offers a separate website screenshot API; it does not replace a Wayland desktop capture client. The cURL request below returns a screenshot of a URL. See the ScreenshotNeo API documentation for request options.
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 and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server provides screenshot tools for AI agents, including Claude, Cursor, and other MCP clients. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for 1,000 free screenshots a month, with no card required.
Quick 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.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →

