yaoyao2mm/cheatreader
一个浮动的桌面阅读器,具有透明文本模式,可实现低干扰阅读。
- Stars
- 636
- Forks
- 18
- 最近推送(UTC)
- 2026年9月9日
- 项目状态
- 未归档
技术话题
使用的依赖
依赖清单 24 项
- flutter
{"sdk":"flutter"} - flutter_localizations
{"sdk":"flutter"} - cupertino_icons
^1.0.8 - window_manager
^0.5.1 - shared_preferences
^2.5.4 - file_selector
^1.1.0 - desktop_drop
^0.7.0 - path
^1.9.1 - cross_file
^0.3.5+2 - enough_convert
^1.6.0 - archive
^4.0.7 - html
^0.15.6 - xml
^6.5.0 - syncfusion_flutter_pdf
^33.1.44 - package_info_plus
^8.3.0 - url_launcher
^6.3.2 - http
^1.5.0 - intl
any - tray_manager
^0.5.2 - hotkey_manager
^0.2.3 - flutter_test开发依赖
{"sdk":"flutter"} - flutter_lints开发依赖
^6.0.0 - icons_launcher开发依赖
^3.0.3 - image开发依赖
^4.8.0
所在榜单
原始 README
以下为英文项目原文快照,最新内容请访问 GitHub。
展开 / 收起项目 README
English · 简体中文
CheatReader hero banner
A floating desktop reader for low-distraction reading.
CheatReader keeps books visible in the corner of your screen without turning your desktop into a full reading app.
Platform Desktop Formats UI
[!IMPORTANT] CheatReader is only a local multi-format file reader. It does not support importing books or content from any URL, web link, online source, or remote feed. It does not support, encourage, or endorse any act that infringes the lawful rights of writers, publishers, or other copyright holders. This project is shared for learning and technical exchange only. The author does not intend to use this software for commercial activity or to profit from it.
Why It Exists
Traditional reading apps want your full attention. CheatReader does the opposite: it stays light, quiet, and easy to tuck into the edge of your workspace while you keep doing other things.
Highlights
- Transparent text-only mode that lets the app disappear into your desktop
- Compact single-line and multi-line reading modes
- Configurable mode switching via double click, middle click, or keyboard shortcut
- Adjustable line spacing, reading width, and keyboard controls for longer sessions
- Direct jump by line, page, percentage, and text search with previous/next match navigation
- Built-in custom font loading with a dedicated user-selected font option
- System-wide boss-key hide and restore on Windows, macOS, and Linux X11 without losing reading state
- Support for
txt,epub,html,markdown,fb2,docx, andpdf - Local managed library copies so imported books still restore after restart
- Lightweight desktop-first reading flow with drag-and-drop import
CheatReader transparent mode intro
CheatReader full-screen demo
Platform Support
| Platform | Status | Notes |
|---|---|---|
| macOS | Best supported | Transparent overlay mode is fully tuned here |
| Windows | Supported | Same reading flow, frameless desktop window, test recommended on target machine |
| Linux | Supported | Same reading flow, frameless desktop window, Ubuntu startup now prefers multi-line recovery-safe behavior |
Supported Formats
| Format | Status | Notes |
|---|---|---|
txt |
Full | Encoding-aware plain text import |
epub |
Text extraction | Chapter text is extracted into the existing reader flow |
html / htm / xhtml |
Text extraction | Ignores page chrome and keeps readable body text |
md / markdown |
Text extraction | Strips markdown syntax into plain readable text |
fb2 |
Text extraction | Pulls FictionBook section text into the reader |
docx |
Text extraction | Extracts readable document body text into the existing text-first flow |
pdf |
Text extraction | Best-effort text-layer extraction; image-only or layout-heavy PDFs may fail or read imperfectly |
Run
flutter pub get
flutter run -d macos
Install on macOS without an Apple Developer account
If you download the unsigned macOS app from GitHub Releases, macOS may block it the first time you launch it.
You can remove the quarantine flag in Terminal:
xattr -dr com.apple.quarantine /Applications/cheatreader.app
If you keep the app somewhere else, replace the path with the actual app location.
Run on Windows
flutter config --enable-windows-desktop
flutter run -d windows
Run on Linux
flutter config --enable-linux-desktop
flutter run -d linux
If a saved floating-window layout becomes hard to find, you can reset just the display-related settings without wiping the bookshelf:
cheatreader --reset-display
Desktop Prerequisites
Windows
- Flutter with Windows desktop enabled
- Visual Studio with Desktop development with C++
Linux
- Flutter with Linux desktop enabled
clang,cmake,ninja-build,pkg-config- GTK development packages required by Flutter desktop
Typical Ubuntu/Debian setup:
sudo apt-get update
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libkeybinder-3.0-dev
The released Debian package also requires libayatana-appindicator3-1 for its
system tray integration and libkeybinder-3.0-0 for global shortcuts on X11.
Install release packages with APT so dependencies are resolved automatically:
sudo apt install ./cheatreader-v0.1.29-linux-amd64.deb
On Ubuntu 20.04, that runtime is provided by the universe repository. If APT
reports that it is unavailable, repair the package state and enable the
repository before retrying:
sudo add-apt-repository universe
sudo apt update
sudo apt --fix-broken install
sudo apt install libayatana-appindicator3-1
sudo apt install ./cheatreader-v0.1.29-linux-amd64.deb
Use apt-cache policy libayatana-appindicator3-1 to confirm which repository
and version APT selected. Avoid dpkg -i for this package because it does not
resolve missing dependencies.
Global boss-key registration works on Linux X11. Wayland compositors generally block applications from registering arbitrary global shortcuts, so Wayland users can still use the shortcut while CheatReader is focused and restore a hidden reader from its tray icon.
Verify
flutter test
flutter analyze
For desktop floating-window changes, also run the manual checklist in
manual-test-files/regression-checklist.md.
You can also test platform builds directly:
flutter build windows
flutter build linux
Todo
This section highlights the feedback that comes up most often, so users can see what we plan to prioritize next.
- [x] Add an in-app About section with version info and a bug-report entry
- [ ] Improve the bookshelf experience with better organization and recovery for imported books
- [x] Add more reading controls such as line spacing, reading width, and shortcut customization
- [ ] Improve desktop installation and distribution so first-time setup feels easier
- [ ] Keep improving import stability for edge-case
epub,html, and encoded text files
Releases
This repository is configured for automated desktop releases with GitHub Actions.
- Push a tag like
v0.1.0 - GitHub Actions runs analyze and tests
- The workflow builds macOS, Windows, Linux
amd64, and Linuxarm64release artifacts - GitHub Release assets are uploaded automatically
You can also trigger the workflow manually from the Actions tab with a tag name.
License
This repository is licensed under the CheatReader Non-Commercial License. You may use, study, modify, and share this code for personal learning and other non-commercial purposes only. Commercial use, resale, paid distribution, sublicensing, or using this project and its derivatives to generate revenue is not permitted without prior written permission from the copyright holder.
Project Direction
CheatReader is intentionally opinionated:
- minimal chrome
- floating utility, not a bookshelf-heavy library app
- text-first extraction over perfect original-format rendering
That keeps the experience fast, calm, and easy to leave open all day.