WxReader
A lightweight PDF, ePub and ZIP book/manga reader app for Windows/Linux. Custom OpenGL shaders, external control (voice and webcam eye-gesture) supported.
Install / Use
/learn @puff-dayo/WxReaderREADME
wxReader
wxReader is a zip comic/zip manga/pdf document reader built with wxWidgets (wxPython), MuPDF (PyMuPDF), OpenGL (PyOpenGL), libvips (pyvips), and Python. Currently support Windows and Linux.
wxReaderVoiceCtrl is a hands-free external controller app for wxReader, recognizing voice command offline by vosk and pyaudio. GUI is built with wxPython. wxReaderEyeTrackCtrl is a hands-free external controller app for wxReader, recognizing eye movement and blinking gesture offline by EyeTrax through a webcam. GUI is also built with wxPython.
-> Download link <- <br>wxReader v1.5.0 for Windows10+ (>1809) <br>wxReader v1.3.9 for Debian13 <br>external controllers for Windows10+_avx2 (>1809)
Build/run from source: see below ↓
Minimum GPU Requirements
GPU that supports OpenGL 2.1 should be compatible, which typically includes:<br> Intel Graphics: GMA 950 and later <br> NVIDIA: GeForce 6000 series and later<br> AMD/ATI: Radeon X1000 series and later<br> All-in-wonder: ATI X600 series and later
Installation
Windows
-
From sauce (latest dev):
- Install Python 3.12 and uv,
uv --project . sync. - Download and put the libvips shared library *.dll files inside
.\src. - Sync dependencies with
uv. - Build with
.\build.baton Windows x64. (Run the build script inside root folder.) - (Notes: upgrade pymupdf will fail the compilation.)
- Optional:
uv --project .\extctrl\voice sync,uv --project .\extctrl\eye_track sync, then build with.\build_*.bat.
- Install Python 3.12 and uv,
-
Pre-compiled binary (stable): portable
.exefiles are provided on the Releases page. Here are links to download (for win10+ x86_64): -
Upgrade from older versions: simply copy the
wxReader.cfgandpswd.txtfiles containing all user settings to the folder of a new version. You (probably) can also just unzip and overwrite existing files in the old folder.
Linux
Tested on platform: Linux-6.12.73+deb13-amd64-x86_64-with-glibc2.41
-
Run from sauce (clone the linux-dev branch of the repo!):
- Install Python 3.13 and uv,
uv --project . sync. sudo apt install libvips42t64 python3-wxgtk4.0.uv venv --python /usr/bin/python3 --system-site-packages, and then activate the venv.cd src- ../.venv/bin/python wxReader.py
- Install Python 3.13 and uv,
-
Build your own binary:
uv --project . run pyinstaller \
--name wxReader \
--distpath build \
--workpath build/pyi-build \
--specpath build/pyi-spec \
--onedir \
--icon "$(pwd)/src/icon.png" \
--add-data "$(pwd)/src/icon.png:icon.png" \
--add-data "$(pwd)/src/filters:filters" \
--add-data "$(pwd)/src/locale:locale" \
--exclude-module tkinter \
--exclude-module pillow \
--collect-submodules OpenGL \
src/wxReader.py
- Pre-compiled binary: portable files are provided on the Releases page.
Edit translation
See /tools.txt in the repo.
Language support currently: en_US, ja_JP, zh_SG and zh_TW.
Message files are extracted with pybabel and translated with tool Virtaal.
How to ... in wxReader
Check the Menubar -> Info -> Help Topic manual of wxReader.
