Skip to content

Commit

Permalink
chore: 修改文档
Browse files Browse the repository at this point in the history
  • Loading branch information
nashaofu committed Jan 30, 2024
1 parent b65f70e commit 6ab1754
Show file tree
Hide file tree
Showing 4 changed files with 181 additions and 14 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy

- name: Cargo fmt
Expand All @@ -40,3 +41,23 @@ jobs:

- name: Test
run: cargo test
publish:
name: Publish
runs-on: ubuntu-latest
needs:
- lint
steps:
- uses: actions/checkout@v3

- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy

- name: Publish
if: github.event_name != 'pull_request'
env:
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
run: cargo publish --registry crates-io --token $NPM_TOKEN
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[package]
name = "xcap"
version = "0.0.2"
version = "0.0.3"
edition = "2021"
description = "A cross-platform screen capture library"
description = "XCap is a cross-platform screen capture library written in Rust. It supports Linux (X11, Wayland), MacOS, and Windows. XCap supports screenshot and video recording (to be implemented)."
license = "Apache-2.0"
documentation = "https://docs.rs/xcap"
homepage = "https://github.com/nashaofu/xcap"
Expand Down
131 changes: 131 additions & 0 deletions README-zh_CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# XCap

[English](README.md) | 简体中文

XCap 是一个使用 Rust 编写的跨平台的屏幕捕获库,它支持 Linux(X11,Wayland)、MacOS 与 Windows。XCap 支持截图与视频录制(待实现)。

## 功能

- 跨平台: 支持 Linux(X11,Wayland)、MacOS 与 Windows。
- 支持多种截图模式: 可以对屏幕与窗口进行截图。
- 支持视频录制:支持对屏幕或窗口进行录制(待实现)。

### 实现状态

| 功能 | Linux(X11) | Linux(Wayland) | MacOS | Windows |
| -------- | ---------- | -------------- | ----- | ------- |
| 屏幕截图 |||||
| 窗口截图 |||||
| 屏幕录制 | 🛠️ | 🛠️ | 🛠️ | 🛠️ |
| 窗口录制 | 🛠️ | 🛠️ | 🛠️ | 🛠️ |

- ✅: 功能可用
- ⛔: 功能可用,但在一些特殊场景下未完全支持
- 🛠️: 待开发

## 例子

- 屏幕截图

```rust
use std::time::Instant;
use xcap::Monitor;

fn normalized(filename: &str) -> String {
filename
.replace("|", "")
.replace("\\", "")
.replace(":", "")
.replace("/", "")
}

fn main() {
let start = Instant::now();
let monitors = Monitor::all().unwrap();

for monitor in monitors {
let image = monitor.capture_image().unwrap();

image
.save(format!("target/monitor-{}.png", normalized(monitor.name())))
.unwrap();
}

println!("运行耗时: {:?}", start.elapsed());
}
```

- 窗口截图

```rust
use std::time::Instant;
use xcap::Window;

fn normalized(filename: &str) -> String {
filename
.replace("|", "")
.replace("\\", "")
.replace(":", "")
.replace("/", "")
}

fn main() {
let start = Instant::now();
let windows = Window::all().unwrap();

let mut i = 0;

for window in windows {
// 最小化的窗口不能截屏
if window.is_minimized() {
continue;
}

println!(
"Window: {:?} {:?} {:?}",
window.title(),
(window.x(), window.y(), window.width(), window.height()),
(window.is_minimized(), window.is_maximized())
);

let image = window.capture_image().unwrap();
image
.save(format!(
"target/window-{}-{}.png",
i,
normalized(window.title())
))
.unwrap();

i += 1;
}

println!("运行耗时: {:?}", start.elapsed());
}
```

## Linux 系统要求

在 Linux 上,需要安装 `libxcb`, `libxrandr``dbus`.

Debian/Ubuntu:

```sh
apt-get install libxcb1 libxrandr2 libdbus-1-3
```

Alpine:

```sh
apk add libxcb libxrandr dbus
```

ArchLinux:

```sh
pacman -S libxcb libxrandr dbus
```

## License

本项目采用 Apache 许可证。详情请查看 [LICENSE](./LICENSE) 文件。
39 changes: 27 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
# 📷 XCap
# XCap

XCap is a cross-platform screen capture library for MacOS, Windows, Linux (X11, Wayland) written in Rust. It provides a simple API for capturing screen capture of a screen or a specific area of a screen.
English | [简体中文](README-zh_CN.md)

XCap is a cross-platform screen capture library written in Rust. It supports Linux (X11, Wayland), MacOS, and Windows. XCap supports screenshot and video recording (to be implemented).

## Features

- Cross-platform support: Windows Mac and Linux.
- Multiple capture modes: screen window.
- Video capture、audio capture soon.
- Cross-platform: Supports Linux (X11, Wayland), MacOS, and Windows.
- Supports multiple screenshot modes: Can take screenshots of the screen and windows.
- Supports video recording: Supports recording of the screen or window (to be implemented).

### Implementation Status

| Feature | Linux(X11) | Linux(Wayland) | MacOS | Windows |
| ---------------- | ---------- | -------------- | ----- | ------- |
| Screen Capture |||||
| Window Capture |||||
| Screen Recording | 🛠️ | 🛠️ | 🛠️ | 🛠️ |
| Window Recording | 🛠️ | 🛠️ | 🛠️ | 🛠️ |

- ✅: Feature available
- ⛔: Feature available, but not fully supported in some special scenarios
- 🛠️: To be developed

## Example
## Examples

- Monitor capture
- Screen Capture

```rust
use xcap::Monitor;
use std::time::Instant;
use xcap::Monitor;

fn normalized(filename: &str) -> String {
filename
Expand All @@ -40,11 +55,11 @@ fn main() {
}
```

- Window capture
- Window Capture

```rust
use xcap::Window;
use std::time::Instant;
use xcap::Window;

fn normalized(filename: &str) -> String {
filename
Expand Down Expand Up @@ -89,7 +104,7 @@ fn main() {
}
```

## Linux Requirements
## Linux System Requirements

On Linux, you need to install `libxcb`, `libxrandr`, and `dbus`.

Expand All @@ -113,4 +128,4 @@ pacman -S libxcb libxrandr dbus

## License

This project is licensed under the Apache License. See the [LICENSE](../LICENSE) file for details.
This project is licensed under the Apache License. See the [LICENSE](./LICENSE) file for details.

0 comments on commit 6ab1754

Please sign in to comment.