Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
Peer-to-peer screen sharing, voice, camera and chat for browser, Windows and macOS. Kotlin/JS + Ktor, Tauri and native capture.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Share a screen. Talk it through. Keep everyone in the same room.
Peer-to-peer screen sharing, voice, camera and chat in your browser — with native capture on Windows and macOS.
Português · Website · Features · Run locally · Documentation
No account is required. The interface is currently in Brazilian Portuguese. Anyone with the room code can join; use it with people you trust.
Resolution, frame rate and audio availability depend on the source, browser, operating system, network and hardware. These are capture/encoder settings, not a performance guarantee.
| Browser | Windows desktop | macOS desktop | |
|---|---|---|---|
| Screen sharing, camera, voice and chat | Yes | Yes | Yes |
| Source selection | Browser picker | Native screens/windows and thumbnails | Native screens/windows and thumbnails |
| Shared audio | Browser/source dependent | Computer or selected application | Computer or selected application |
| Tray controls and startup at login | — | Yes | Yes |
| Distribution | Open the web app | x64 installer, MSI or portable EXE | Apple Silicon app archive and install script |
Desktop builds use the same Kotlin/JS client and rooms as the browser. Windows builds are unsigned; macOS builds use ad hoc signing without notarization. See installation, permissions and platform limits.
Watch the short demo or download the English-captioned MP4. The recording shows a real local browser session; it does not demonstrate native audio or measure streaming performance.
Screenshots show the current browser client in a local demo room, with a real WebRTC screen stream and sample conversation. The shared content is this repository's Kotlin protocol source.
| Join or create a room | Tune your transmission |
|---|---|
Install JDK 21 (the build uses a Java 21 toolchain), then clone and run:
git clone https://github.com/RafaelrainBR/screenshare-kotlin-js.git
cd screenshare-kotlin-js
./gradlew :server-java:run
On Windows PowerShell, use .\gradlew.bat :server-java:run.
Open http://localhost:8080 in two tabs and join the same room. The task builds the browser client and serves it with the signaling server. The included Gradle wrapper manages Gradle and the Kotlin/JS Node/Yarn tools; the first build downloads dependencies. For screen sharing on another host, serve the app over HTTPS.
See development and tests for build commands and desktop prerequisites; see self-hosting for Docker, Fly.io and STUN/TURN configuration.
flowchart LR
A["Browser / desktop A"] <-->|"WebSocket: rooms, chat, SDP and ICE"| S["Ktor signaling server"]
S <-->|"WebSocket: rooms, chat, SDP and ICE"| B["Browser / desktop B"]
A <-->|"WebRTC: screen, camera and audio"| B
A <-.->|"When direct connectivity fails"| T["TURN relay"]
T <-.-> B
| Module | Responsibility |
|---|---|
client/ | Kotlin/JS interface, WebRTC, screen sharing, camera and voice |
common/ | Kotlin Multiplatform packet types shared by JS and JVM |
server/ | Ktor/JVM signaling, room membership and in-memory chat history |
server-java/ | JVM entry point, fat JAR, Docker and Fly.io configuration |
desktop-native/ | Desktop app in Rust and iced: tray, updater, WebRTC and encoders |
desktop-capture/ | Shared Rust capture: Windows DXGI/GDI/WASAPI and macOS ScreenCaptureKit/Core Audio |
The UI uses local CSS, JavaScript and Barlow fonts. Dependency versions live in libs.versions.toml and the Cargo manifests.
Screenshare is under active development. Documentation describes the current source; the latest desktop release may lag behind master. Release assets and changes are listed on GitHub Releases.
Bug reports, platform testing and contributions are welcome. Start with CONTRIBUTING.md, check open issues, or read the documentation index.
Licensed under MIT.