This is a practical API index for the public surface. For full rustdoc details, see docs.rs/grim-rs.
Grim::new()- Create new Grim instance and connect to Wayland compositor
get_outputs()- Get list of available outputs with their properties (name, geometry, scale)
capture_all()- Capture entire screen (all outputs)capture_all_with_scale(scale: f64)- Capture entire screen with scalingcapture_output(output_name: &str)- Capture specific output by namecapture_output_with_scale(output_name: &str, scale: f64)- Capture output with scalingcapture_region(region: Box)- Capture specific rectangular regioncapture_region_with_scale(region: Box, scale: f64)- Capture region with scalingcapture_outputs(parameters: Vec<CaptureParameters>)- Capture multiple outputs with different parameterscapture_outputs_with_scale(parameters: Vec<CaptureParameters>, default_scale: f64)- Capture multiple outputs with scaling
save_png(&data, width, height, path)- Save as PNG with default compression (level 6)save_png_with_compression(&data, width, height, path, compression: u8)- Save as PNG with custom compressionsave_jpeg(&data, width, height, path)- Save as JPEG with default quality (80) [requiresjpegfeature]save_jpeg_with_quality(&data, width, height, path, quality: u8)- Save as JPEG with custom quality (0-100) [requiresjpegfeature]save_ppm(&data, width, height, path)- Save as PPM (uncompressed)
to_png(&data, width, height)- Convert to PNG bytes with default compressionto_png_with_compression(&data, width, height, compression: u8)- Convert to PNG bytes with custom compressionto_jpeg(&data, width, height)- Convert to JPEG bytes with default quality [requiresjpegfeature]to_jpeg_with_quality(&data, width, height, quality: u8)- Convert to JPEG bytes with custom quality [requiresjpegfeature]to_ppm(&data, width, height)- Convert to PPM bytes
write_png_to_stdout(&data, width, height)- Write PNG to stdout with default compressionwrite_png_to_stdout_with_compression(&data, width, height, compression: u8)- Write PNG to stdout with custom compressionwrite_jpeg_to_stdout(&data, width, height)- Write JPEG to stdout with default quality [requiresjpegfeature]write_jpeg_to_stdout_with_quality(&data, width, height, quality: u8)- Write JPEG to stdout with custom quality [requiresjpegfeature]write_ppm_to_stdout(&data, width, height)- Write PPM to stdout
Grim::read_region_from_stdin()- Read region specification from stdin (format:"x,y widthxheight")
- Fields are private (encapsulated)
data()- Raw RGBA image data as&[u8]width()- Image width in pixelsheight()- Image height in pixelsinto_data()- Consume and return owned pixel buffer
- Fields are private (builder + getters API)
CaptureParameters::new(output_name)- Create parameters for an output- Builder methods:
.region(...),.overlay_cursor(...),.scale(...) - Accessors:
output_name(),region_ref(),overlay_cursor_enabled(),scale_factor() - Note: per-output
scaleis currently stored in params; effective scaling in multi-output capture is applied bycapture_outputs_with_scale(..., default_scale)
- Fields are private
get(output_name)- Get one output result by nameoutputs()- Borrow all output resultsinto_outputs()- Consume and returnHashMap<String, CaptureResult>
- Fields are private
name()- Output name (e.g.,eDP-1,HDMI-A-1)geometry()- Output position and size (Box)scale()- Output scale factordescription()- Optional monitor description
- Fields are private
Box::new(x, y, width, height)- Create region- Accessors:
x(),y(),width(),height() - Utilities:
is_empty(),intersects(...),intersection(...) - Parse from string:
"x,y widthxheight"
jpeg- Enable JPEG support (enabled by default)- Adds
save_jpeg*,to_jpeg*, andwrite_jpeg_to_stdout*methods
- Adds
To disable default features:
[dependencies]
grim-rs = { version = "0.1", default-features = false }