# JMComic-qt: a Qt desktop client for 禁漫天堂 that ships as a binary, not a build

> JMComic-qt is a PySide6 desktop client for the 禁漫天堂 / 18comic site, distributed as prebuilt archives for Windows, macOS and Linux. It solves the reading and downloading problem for people who do not want a browser tab, and it expects you to install its GPU upscaling runtime separately.

**tonquer/JMComic-qt** — 禁漫天堂，18comic，使用qt实现的PC客户端，支持Windows，Linux，MacOS

- Repository: https://github.com/tonquer/JMComic-qt
- Stars: 4,106 · Forks: 198
- Language: Python
- License: LGPL-3.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/tonquer-jmcomic-qt

## What JMComic-qt replaces, and for whom

The project is a PC client for 禁漫天堂 (18comic), written in Python with a Qt interface. The README lists its scope plainly: most of the site's functionality, plus image viewing and downloading. That is the whole pitch. It is for a reader who already uses the site and wants the reading surface to be a native window with a local download folder, rather than a browser and a set of saved tabs.

The audience is narrower than the topic list suggests. The README states the project is for technical research only and asks users not to put it to other uses, which is a disclaimer rather than a licence term; the actual licence is LGPL-3.0. It also names the tested platforms: Windows 10, macOS 10.15.7 and deepin 20.2. Those are the versions the maintainer tested, not a support matrix, and the README does not claim anything about newer releases.

The repository is not archived and the last push was on 2026-09-21, with v1.3.6 released the same day. So the distribution channel is live. What is thin is everything around it: there is no homepage, no documented configuration format, and no API surface described in the README.

## How the Qt client is put together

The layout tells you most of the architecture. The top level holds src/, ui/, lib/, res/, script/ and translate/, alongside build scripts named build_appimage.sh, build_ubuntu.sh and build_uos.sh. That split implies a Python application under src/, Qt Designer or QML files under ui/, bundled third-party code under lib/, translation catalogs under translate/, and packaging scripts per Linux target. The presence of three separate build scripts rather than one suggests the Linux packaging path differs by distribution family, which matches the README's note that Deepin and Uos users need an extra xcb utility library.

The README credits the components that do the non-UI work. The site access layer is credited to hect0x7/JMComic-Crawler-Python. The upscaling feature is credited to nihui/waifu2x-ncnn-vulkan, xinntao/Real-ESRGAN, nihui/realcugan-ncnn-vulkan and tonquer/sr-vulkan. Those are ncnn and Vulkan based inference tools, which explains why the Windows instructions tell you to install a Vulkan runtime if Waifu2x fails to initialise. The upscaler is not a Python model loaded in-process; it is a native component that needs a GPU driver stack the application does not ship.

That is the interesting design decision. The client stays a thin PySide6 shell over a crawler library and a set of external upscalers, which keeps the Python side small but pushes runtime dependencies onto the user. The README does not describe the download queue, the cache layout or how login state is stored, so the data flow beyond the UI is not documented.

## Installing the Windows build and reading your first comic

On Windows the project does not ask you to build anything. The README gives four steps: download the latest release, extract the zip, open start.exe, and later overwrite the old directory with a newer release to update. That last point is the upgrade story in full: there is no installer and no in-application updater described.

```bash
# 1. Download the latest release from the releases page
#    https://github.com/tonquer/JMComic-qt/releases
# 2. Extract the zip
# 3. Then run:
start.exe
```

After start.exe opens, you land on the login screen the README lists under 界面, alongside search, comic detail, download and the reader. Log in, search for a title, open its detail page, and either read it or queue it for download. The README does not document what the download directory defaults to or how to change it, so check the settings surface inside the application rather than looking for a config file.

If the upscaler fails, the failure is explicit in the README: a Waifu2x initialisation error or a DLL error means you are missing runtimes. It links the Visual C++ redistributable and VulkanRT 1.3.239.0 installer for that case.

```bash
# Install these only if Waifu2x fails to initialise or you see a DLL error
# VC_redist.x64.exe
# VulkanRT-1.3.239.0-Installer.exe
```

On macOS the README says to mount the dmg, drag JMComic into the Applications folder, and launch it from Launchpad. If macOS reports the file as damaged, the documented fix is a quarantine removal command.

```bash
sudo xattr -r -d com.apple.quarantine /Applications/JMComic.app
```

On Linux, Deepin and Uos users are told to install a Qt dependency first. The README gives a wget and dpkg pair for libxcb-util1.

```bash
wget http://ftp.br.debian.org/debian/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_amd64.deb
sudo dpkg -i ./libxcb-util1_0.4.0-1+b1_amd64.deb
```

Then download the latest release and run it. Note what is missing: the README does not name the Linux release artifact, does not say whether it is an AppImage or an archive, and does not document a package repository. The build_appimage.sh script in the repository suggests an AppImage is produced, but the README does not say so.

## Where JMComic-qt is the wrong tool

The clearest limitation is the one the README states itself: this is for technical research, and the maintainer asks you not to use it for anything else. If you need a tool with a support commitment, that sentence should end the evaluation.

The second limitation is the dependency surface on Windows. The upscaling feature depends on Vulkan and the Visual C++ runtime, and the README only tells you about them in the failure case. A user on a locked-down machine without administrator rights cannot install either, and the README does not describe a way to disable the upscaler or run without it. Whether the application degrades gracefully when Waifu2x is unavailable is not stated.

The third is platform coverage in practice. The README names macOS 10.15.7 and deepin 20.2 as the tested versions. It does not claim support for Apple silicon, for current macOS releases, or for distributions outside the Debian family. The three build scripts cover AppImage, Ubuntu and Uos, which leaves other Linux packaging to the user. There is no Flatpak, no Snap and no Homebrew formula mentioned anywhere in the README.

Finally, nothing in the README covers failure recovery. There is no documented rollback procedure for a bad upgrade, and the upgrade method itself is overwriting the directory, which means a release that breaks your setup is recovered by downloading an older zip and overwriting again. That is workable, but it is not documented as a procedure.

## What a crawler library does differently

The README credits hect0x7/JMComic-Crawler-Python as the source of the site access logic. That project is a Python library, and the difference in approach matters when you are choosing. JMComic-qt wraps that logic in a PySide6 application with a GUI, a reader, a download queue and bundled upscalers. The library gives you an importable module and leaves the interface, the storage layout and the scheduling to you.

The practical split: if you want to read comics on a desktop with a mouse, the Qt client is the shorter path, because you download a zip and run an executable. If you want to script downloads, run them on a headless server, or integrate the site into another tool, the library is the better fit, since the client's README describes no command-line interface, no exported API and no configuration file. The client also carries the upscaler dependency chain; a library user who does not want GPU inference does not inherit it.

The trade-off runs the other way too. The client bundles a working configuration of the crawler, so you do not have to track upstream changes yourself. A library user owns that maintenance.

## Licence and the cost of keeping up

JMComic-qt is LGPL-3.0. The README's badge points at a LICENSE.txt in a sibling repository, and the repository has a LICENSE file at the top level. LGPL-3.0 is a copyleft licence with a linking exception aimed at libraries. If you redistribute the application, the obligations attach to the LGPL-covered components, and the bundled third-party projects carry their own licences, which the README does not enumerate. This is not legal advice; if you plan to redistribute, read the LICENSE file and the licences of the components the README credits.

Upgrade cost is low by design. The README's update instruction is to download the newest release and overwrite the original directory, and releases have been frequent: v1.3.4 on 2026-07-23, v1.3.5 on 2026-09-14, v1.3.6 on 2026-09-21. The last push was on 2026-09-21. The cost you actually pay is bandwidth and disk, since each overwrite replaces the whole bundle including the native upscaler binaries.

There is a CHANGELOG file at the top level, so release notes exist, but the README does not link to it or summarise what changes between versions. You will read it in the repository rather than in the README.

## Conclusion

Adopt JMComic-qt if you want a desktop reader with local downloads on Windows and you accept that the upscaling feature asks for the Visual C++ and Vulkan redistributables before it will initialise. Do not adopt it if you need a package-manager install, a documented API, or a project that answers questions about rollback and data migration, because the README documents none of those. Before you commit, verify three things on your own machine: that start.exe launches on your Windows build, that the macOS build passes the quarantine removal step, and that the upscaler initialises after you install the two runtimes the README links.

## FAQ

### What is JMComic-qt?

It is a PC client for 禁漫天堂 (18comic) built with Qt and Python, supporting Windows, Linux and macOS. The README says it implements most of the site's functionality and supports viewing images and downloading.

### How do I install JMComic-qt on Windows?

Download the latest release, extract the zip and open start.exe. To update later, download the newest version and overwrite the original directory.

### Why does Waifu2x fail to initialise in JMComic-qt?

The README attributes this to missing runtimes and links the Visual C++ redistributable and the Vulkan runtime installer for that case. Installing both is the documented remedy.

### What licence does JMComic-qt use?

The project is licensed under LGPL-3.0, and the repository has a LICENSE file at the top level. The README does not enumerate the licences of the bundled upscaling components it credits.

## Sources

- [Issues](https://github.com/tonquer/JMComic-qt/issues)
- [License: LGPL-3.0](https://github.com/tonquer/JMComic-qt/blob/main/LICENSE)
- [README](https://github.com/tonquer/JMComic-qt/blob/main/README.md)
- [Releases](https://github.com/tonquer/JMComic-qt/releases)
- [tonquer/JMComic-qt on GitHub](https://github.com/tonquer/JMComic-qt)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/tonquer-jmcomic-qt
