Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: windows-installer
path: release/**/*.exe
path: |
release/**/*.exe
release/**/*.exe.blockmap
release/**/latest.yml
retention-days: 30

build-macos:
Expand Down Expand Up @@ -65,7 +68,11 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: macos-installer
path: release/**/*.dmg
path: |
release/**/*.dmg
release/**/*.dmg.blockmap
release/**/*.zip
release/**/latest-mac.yml
retention-days: 30

build-linux:
Expand Down Expand Up @@ -94,6 +101,8 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: linux-installer
path: release/**/*.AppImage
path: |
release/**/*.AppImage
release/**/latest-linux.yml
retention-days: 30

144 changes: 144 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: Release

on:
push:
tags:
- 'v*'

jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci

- name: Install app dependencies
run: npx electron-builder install-app-deps

- name: Build Windows app
run: npm run build:win
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Windows artifact
uses: actions/upload-artifact@v4
with:
name: windows-build
path: |
release/**/*.exe
release/**/*.exe.blockmap
release/**/latest.yml
retention-days: 1

build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: npm ci

- name: Install app dependencies
run: npx electron-builder install-app-deps

- name: Build macOS app
run: npm run build:mac
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload macOS artifact
uses: actions/upload-artifact@v4
with:
name: macos-build
path: |
release/**/*.dmg
release/**/*.dmg.blockmap
release/**/*.zip
release/**/latest-mac.yml
retention-days: 1

build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: npm ci

- name: Install app dependencies
run: npx electron-builder install-app-deps

- name: Build Linux app
run: npm run build:linux
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Linux artifact
uses: actions/upload-artifact@v4
with:
name: linux-build
path: |
release/**/*.AppImage
release/**/latest-linux.yml
retention-days: 1

release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: Display structure of downloaded files
run: |
if [ -d artifacts ]; then
ls -R artifacts
else
echo "No artifacts directory found"
fi

- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/**/*.exe
artifacts/**/*.dmg
artifacts/**/*.AppImage
artifacts/**/*.zip
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
10 changes: 9 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ Thank you for considering contributing to this project! By contributing, you hel
5. **Test Your Changes**
- Test your changes thoroughly to ensure they work as expected and do not break existing functionality.

### FFmpeg-based recording notes

The screen recording workflow is migrating away from Chromium's `MediaRecorder` to an external `ffmpeg` process (and `ffprobe` for post-recording validation).

- Ensure `ffmpeg` and `ffprobe` are available on your PATH, or set `OPENSCREEN_FFMPEG_PATH` / `OPENSCREEN_FFPROBE_PATH`.
- Run a quick sanity check: `npm run verify:ffmpeg`
- Current platform support: Windows + macOS are supported, Linux falls back to the legacy `MediaRecorder` workflow for now.

6. **Commit Your Changes**
- Commit your changes with a clear and concise commit message:
```bash
Expand Down Expand Up @@ -54,4 +62,4 @@ If you encounter a bug or have a feature request, please open an issue in the [I

By contributing to this project, you agree that your contributions will be licensed under the [MIT License](./LICENSE).

Thank you for your contributions!
Thank you for your contributions!
26 changes: 19 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@

# <p align="center">OpenScreen</p>

<p align="center">
<strong>English</strong> | <a href="README_zh-CN.md">简体中文</a>
</p>

<p align="center"><strong>OpenScreen is your free, open-source alternative to Screen Studio (sort of).</strong></p>


Expand Down Expand Up @@ -46,7 +50,7 @@ OpenScreen is 100% free for personal and commercial use. Use it, modify it, dist

## Installation

Download the latest installer for your platform from the [GitHub Releases](https://github.com/siddharthvaddem/openscreen/releases) page.
Download the latest installer for your platform from the [GitHub Releases](https://github.com/fengjinyi98/openscreen/releases) page.

### macOS

Expand Down Expand Up @@ -82,12 +86,20 @@ You may need to grant screen recording permissions depending on your desktop env

_I'm new to open source, idk what I'm doing lol. If something is wrong please raise an issue 🙏_

## Contributing

Contributions are welcome! If you’d like to help out or see what’s currently being worked on, take a look at the open issues and the [project roadmap](https://github.com/users/siddharthvaddem/projects/3) to understand the current direction of the project and find ways to contribute.


## License
## Contributing

Contributions are welcome! If you’d like to help out or see what’s currently being worked on, take a look at the open issues and the [project roadmap](https://github.com/users/siddharthvaddem/projects/3) to understand the current direction of the project and find ways to contribute.

### FFmpeg recording (dev note)

The recording workflow is migrating from Chromium's `MediaRecorder` to an external `ffmpeg` process (and uses `ffprobe` for post-recording validation).

- Ensure `ffmpeg` and `ffprobe` are available on your PATH, or set `OPENSCREEN_FFMPEG_PATH` / `OPENSCREEN_FFPROBE_PATH`.
- Run a quick sanity check: `npm run verify:ffmpeg`
- Current platform strategy: Windows + macOS use FFmpeg, Linux falls back to the legacy `MediaRecorder` workflow for now.


## License


This project is licensed under the [MIT License](./LICENSE). By using this software, you agree that the authors are not liable for any issues, damages, or claims arising from its use.
Expand Down
102 changes: 102 additions & 0 deletions README_zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<p align="center">
<img src="openscreen.png" alt="OpenScreen Logo" width="64" />
<br />
<br />
<a href="https://deepwiki.com/siddharthvaddem/openscreen">
<img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" />
</a>
</p>

# <p align="center">OpenScreen</p>

<p align="center">
<a href="README.md">English</a> | <strong>简体中文</strong>
</p>

<p align="center"><strong>OpenScreen 是 Screen Studio 的免费开源替代品。</strong></p>

如果你不想为 Screen Studio 每月支付 29 美元,但需要一个简单的工具来制作精美的产品演示和教程视频,这款免费应用就是为你准备的。OpenScreen 并未涵盖 Screen Studio 的所有功能,但已经能够满足基本需求!

Screen Studio 是一款出色的产品,这绝对不是一个 1:1 的克隆。OpenScreen 是一个更简洁的版本,为那些想要掌控一切且不想付费的用户提供基础功能。如果你需要所有高级功能,最好还是支持 Screen Studio(他们确实做得很棒)。但如果你只是想要一个免费(没有任何附加条件)且开源的工具,这个项目完全可以胜任!

OpenScreen 对个人和商业用途都是 100% 免费的。你可以使用、修改、分发它。(如果你愿意的话,请给个 star 支持一下!😁)

**⚠️ 免责声明:这是一个测试版本,可能存在一些 bug(但希望你能有良好的使用体验!)**

</p>
<p align="center">
<img src="preview.png" alt="OpenScreen 应用预览" style="height: 320px; margin-right: 12px;" />
<img src="preview2.png" alt="OpenScreen 应用预览 2" style="height: 320px; margin-right: 12px;" />
<img src="preview3.png" alt="OpenScreen 应用预览 3" style="height: 320px; margin-right: 12px;" />
<img src="preview4.png" alt="OpenScreen 应用预览 4" style="height: 320px; margin-right: 12px;" />

</p>
</p>

## 核心功能
- 录制整个屏幕或特定应用窗口
- 添加手动缩放(可自定义缩放深度)
- 自由定制缩放的持续时间和位置
- 裁剪视频录制以隐藏部分内容
- 选择壁纸、纯色、渐变或自定义图片作为背景
- 运动模糊效果,使平移和缩放更流畅
- 添加标注(文字、箭头、图片)
- 剪辑片段
- 以不同的宽高比和分辨率导出

## 安装

从 [GitHub Releases](https://github.com/fengjinyi98/openscreen/releases) 页面下载适合你平台的最新安装包。

### macOS

如果你遇到 macOS Gatekeeper 阻止应用运行的问题(因为应用没有开发者证书),可以在安装后运行以下终端命令来绕过:

```bash
xattr -rd com.apple.quarantine /Applications/Openscreen.app
```

运行此命令后,请前往 **系统偏好设置 > 安全性与隐私** 授予"屏幕录制"和"辅助功能"权限。授权完成后即可启动应用。

### Linux

从 releases 页面下载 `.AppImage` 文件。赋予执行权限后运行:

```bash
chmod +x Openscreen-Linux-*.AppImage
./Openscreen-Linux-*.AppImage
```

根据你的桌面环境,可能需要授予屏幕录制权限。

### Windows

从 releases 页面下载 `.exe` 安装程序,双击运行即可安装。

## 技术栈
- Electron
- React
- TypeScript
- Vite
- PixiJS
- dnd-timeline

---

_如果有任何问题,请提交 issue 🙏_

## 贡献

欢迎贡献!如果你想帮忙或查看当前正在进行的工作,请查看 open issues 和 [项目路线图](https://github.com/users/siddharthvaddem/projects/3) 来了解项目的当前方向并找到贡献的方式。

### 录制链路(FFmpeg)开发提示

录制工作流正在从 Chromium 的 `MediaRecorder` 迁移到外部 `ffmpeg` 进程(并使用 `ffprobe` 在录制结束后做自动校验)。

- 请确保 `ffmpeg`/`ffprobe` 已加入 PATH,或设置环境变量:`OPENSCREEN_FFMPEG_PATH` / `OPENSCREEN_FFPROBE_PATH`
- 可运行冒烟自检:`npm run verify:ffmpeg`
- 当前平台策略:Windows / macOS 优先走 FFmpeg,Linux 暂时回退到旧的 `MediaRecorder` 工作流

## 许可证

本项目采用 [MIT 许可证](./LICENSE)。使用本软件即表示你同意作者不对因使用本软件而产生的任何问题、损害或索赔承担责任。
Loading