Skip to content

Commit 3ad8cd7

Browse files
anbeckhamclaude
andcommitted
Rewrite README for better discoverability and conversion
Restructure to lead with the problem LinGlide solves instead of jumping straight into features. Add comparison table vs alternatives, expand feature list, add release/stars badges, use collapsible troubleshooting sections, and add contributing section. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 99eb18a commit 3ad8cd7

1 file changed

Lines changed: 81 additions & 48 deletions

File tree

README.md

Lines changed: 81 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,85 @@
1-
# LinGlide
1+
<p align="center">
2+
<img src="LinGlideFlow.png" alt="LinGlide" width="128">
3+
<br>
4+
<strong>LinGlide</strong>
5+
</p>
26

3-
[![CI](https://github.com/BeckhamLabsLLC/LinGlide/actions/workflows/ci.yml/badge.svg)](https://github.com/BeckhamLabsLLC/LinGlide/actions/workflows/ci.yml)
4-
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7+
<h3 align="center">Use your phone as a second monitor on Linux</h3>
58

69
<p align="center">
7-
<img src="LinGlideFlow.png" alt="LinGlide Logo" width="128">
10+
<a href="https://github.com/BeckhamLabsLLC/LinGlide/actions/workflows/ci.yml"><img src="https://github.com/BeckhamLabsLLC/LinGlide/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
12+
<a href="https://github.com/BeckhamLabsLLC/LinGlide/releases"><img src="https://img.shields.io/github/v/release/BeckhamLabsLLC/LinGlide" alt="Release"></a>
13+
<a href="https://github.com/BeckhamLabsLLC/LinGlide/stargazers"><img src="https://img.shields.io/github/stars/BeckhamLabsLLC/LinGlide?style=social" alt="GitHub stars"></a>
814
</p>
915

10-
A high-performance Linux application that turns your mobile device into an extended display with touch control. Built with Rust for optimal performance.
16+
<p align="center">
17+
<em>Turn any phone or tablet into a wireless extended display with touch control.<br>No app install needed — runs entirely in the browser. Built with Rust.</em>
18+
</p>
1119

12-
**Developed by [BeckhamLabs](https://beckhamlabs.com)**
20+
---
1321

14-
## Features
22+
Windows and macOS have tools like Duet Display, Sidecar, and GlideX. Linux has had nothing — until now.
23+
24+
**LinGlide** is a native Linux application that creates a real virtual display on your system and streams it to any mobile device over WiFi. Your phone becomes a true second monitor: drag windows to it, use touch to interact, and it shows up in your display settings like any other screen.
1525

16-
- **Extended Display**: Use your phone/tablet as a second monitor
17-
- **Touch Control**: Full touch input support - tap, scroll, drag
18-
- **Zero App Install**: Works in any modern browser (PWA supported)
19-
- **Low Latency**: Hardware-accelerated H.264 streaming
20-
- **Secure**: Device pairing with PIN verification
21-
- **mDNS Discovery**: Devices auto-discover the server on your network
26+
<!-- TODO: Replace with an actual demo GIF or screenshot of LinGlide in action -->
27+
<!-- <p align="center">
28+
<img src="demo.gif" alt="LinGlide demo" width="600">
29+
</p> -->
2230

23-
## Quick Install
31+
## Why LinGlide?
2432

25-
One command to install everything:
33+
| | LinGlide | VNC-based scripts | Deskreen |
34+
|---|---|---|---|
35+
| **True extended display** | Virtual monitor via EVDI | xrandr hacks | Mirror only |
36+
| **Touch input** | Native tap, scroll, drag, stylus | No | No |
37+
| **App install required** | No (browser PWA) | VNC viewer app | No |
38+
| **Latency** | Low (H.264 + WebCodecs) | High (VNC) | Medium (WebRTC) |
39+
| **Written in** | Rust | Bash/Python | Electron |
40+
| **Linux native** | Yes | Yes | Cross-platform |
41+
| **Secure pairing** | PIN + token auth + TLS | None | None |
42+
43+
## Features
44+
45+
- **Extended display** — real virtual monitor via EVDI kernel module, visible in display settings
46+
- **Mirror mode** — share your existing screen without a virtual display
47+
- **Full touch control** — tap, scroll, drag, and stylus input via uinput
48+
- **Zero install on mobile** — works in Chrome, Edge, Safari (PWA for app-like experience)
49+
- **Low latency** — hardware-accelerated H.264 encoding with OpenH264
50+
- **Secure** — 6-digit PIN pairing, token authentication, TLS encryption
51+
- **Auto-discovery** — devices find LinGlide automatically via mDNS
52+
- **USB support** — ADB port forwarding for wired Android connections
53+
- **Desktop GUI** — system tray app with QR code for easy pairing
54+
- **CLI** — fully scriptable for power users
55+
56+
## Quick Start
2657

2758
```bash
2859
git clone https://github.com/BeckhamLabsLLC/LinGlide.git
29-
cd linglide
60+
cd LinGlide
3061
sudo ./scripts/install.sh
3162
```
3263

33-
Then **log out and log back in** for permissions to take effect.
64+
Log out and back in, then:
3465

35-
## Usage
36-
37-
1. Launch **LinGlide** from your application menu (or run `linglide` in terminal)
66+
1. Launch **LinGlide** from your application menu (or run `linglide`)
3867
2. Click **Start Server**
39-
3. On your mobile device, open the URL shown (or scan the QR code)
40-
4. Enter the PIN to pair your device
41-
42-
That's it! Your mobile device is now an extended display.
68+
3. On your phone, open the URL shown or scan the QR code
69+
4. Enter the PIN — done
4370

4471
## System Requirements
4572

4673
- Linux with X11 (Wayland support planned)
47-
- EVDI kernel module (installed automatically)
48-
- Modern browser with WebCodecs (Chrome 94+, Edge 94+, Safari 16.4+)
74+
- EVDI kernel module (installed automatically by the install script)
75+
- Mobile browser with WebCodecs support:
76+
- Chrome/Chromium 94+
77+
- Edge 94+
78+
- Safari 16.4+
79+
- Firefox is **not** supported (no WebCodecs)
4980

5081
## Build from Source
5182

52-
If you prefer to build manually:
53-
5483
```bash
5584
# Install dependencies (Ubuntu/Debian)
5685
sudo apt install build-essential pkg-config libssl-dev libx11-dev \
@@ -64,23 +93,17 @@ cargo build --release -p linglide-desktop
6493
./target/release/linglide-gui
6594
```
6695

67-
## Uninstall
68-
69-
```bash
70-
sudo ./scripts/uninstall.sh
71-
```
72-
7396
## How It Works
7497

7598
```
7699
┌─────────────────────────────────────────────────────────────┐
77100
│ LINUX HOST (Rust) │
78101
├─────────────────────────────────────────────────────────────┤
79-
│ EVDI → Frame → H.264 Encoder
80-
│ (Virtual Capture (OpenH264)
102+
│ EVDI → Frame → H.264 Encoder │
103+
│ (Virtual Capture (OpenH264) │
81104
│ Display) │
82105
│ │
83-
│ uinput ← Event ← WebSocket Server
106+
│ uinput ← Event ← WebSocket Server │
84107
│ (Touch) Handler (Axum + TLS) │
85108
└─────────────────────────────────────────────────────────────┘
86109
@@ -96,34 +119,44 @@ sudo ./scripts/uninstall.sh
96119

97120
## Troubleshooting
98121

99-
### EVDI module not loading
122+
<details>
123+
<summary><strong>EVDI module not loading</strong></summary>
100124

101125
If you see "Failed to add EVDI device", run:
102126
```bash
103127
sudo modprobe -r evdi && sudo modprobe evdi initial_device_count=1
104128
```
105-
106129
The install script configures this automatically for future boots.
130+
</details>
107131

108-
### Permission denied for uinput
132+
<details>
133+
<summary><strong>Permission denied for uinput</strong></summary>
109134

110135
Log out and log back in after installation for group permissions to take effect.
136+
</details>
111137

112-
### Browser not supported
138+
<details>
139+
<summary><strong>Browser not supported</strong></summary>
113140

114-
WebCodecs is required. Supported browsers:
115-
- Chrome/Chromium 94+
116-
- Edge 94+
117-
- Safari 16.4+
141+
WebCodecs is required. Use Chrome/Chromium 94+, Edge 94+, or Safari 16.4+. Firefox does not support WebCodecs.
142+
</details>
118143

119-
Firefox does not support WebCodecs.
144+
## Contributing
145+
146+
Contributions are welcome! Feel free to open issues for bugs or feature requests, or submit pull requests.
147+
148+
## Uninstall
149+
150+
```bash
151+
sudo ./scripts/uninstall.sh
152+
```
120153

121154
## License
122155

123-
MIT License - see [LICENSE](LICENSE) for details.
156+
MIT License see [LICENSE](LICENSE) for details.
124157

125158
---
126159

127160
<p align="center">
128-
Made with care for the Linux community by <a href="https://beckhamlabs.com">BeckhamLabs</a>
161+
<a href="https://beckhamlabs.com">BeckhamLabs</a>
129162
</p>

0 commit comments

Comments
 (0)