screen_record/linux/
mod.rs1use std::path::Path;
2
3use crate::cli::{AudioMode, ContainerFormat, ImageFormat};
4use crate::error::CliError;
5use crate::types::{ShareableContent, WindowInfo};
6
7#[doc(hidden)]
8pub mod audio;
9#[doc(hidden)]
10pub mod ffmpeg;
11#[doc(hidden)]
12pub mod portal;
13pub mod preflight;
14#[cfg(target_os = "linux")]
15pub(crate) mod x11;
16
17pub fn shareable_content() -> Result<ShareableContent, CliError> {
18 x11::fetch_shareable_content()
19}
20
21pub fn screenshot_window(
22 window: &WindowInfo,
23 path: &Path,
24 format: ImageFormat,
25) -> Result<(), CliError> {
26 preflight::preflight()?;
27 ffmpeg::screenshot_window(window, path, format)
28}
29
30pub fn record_window(
31 window: &WindowInfo,
32 duration: u64,
33 audio: AudioMode,
34 path: &Path,
35 format: ContainerFormat,
36) -> Result<(), CliError> {
37 preflight::preflight()?;
38 ffmpeg::record_window(window, duration, audio, path, format)
39}
40
41pub fn record_display(
42 display_id: u32,
43 duration: u64,
44 audio: AudioMode,
45 path: &Path,
46 format: ContainerFormat,
47) -> Result<(), CliError> {
48 preflight::preflight()?;
49 ffmpeg::record_display(display_id, duration, audio, path, format)
50}
51
52pub fn record_main_display(
53 duration: u64,
54 audio: AudioMode,
55 path: &Path,
56 format: ContainerFormat,
57) -> Result<(), CliError> {
58 preflight::preflight()?;
59 ffmpeg::record_main_display(duration, audio, path, format)
60}
61
62pub fn screenshot_portal(path: &Path, format: ImageFormat) -> Result<(), CliError> {
63 preflight::preflight()?;
64 let capture = portal::acquire_capture()?;
65 ffmpeg::screenshot_portal(&capture, path, format)
66}
67
68pub fn record_portal(duration: u64, path: &Path, format: ContainerFormat) -> Result<(), CliError> {
69 preflight::preflight()?;
70 let capture = portal::acquire_capture()?;
71 ffmpeg::record_portal(&capture, duration, path, format)
72}