| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| releases | 2025-11-15 | ||
| README.md | 2025-11-15 | 8.2 kB | |
| LICENSE | 2025-07-25 | 35.1 kB | |
| Totals: 3 Items | 43.4 kB | 1 |
Comic Strip Browser
A standalone PyQt6 application for browsing a selection of comic strips from GoComics.com. Features include calendar navigation, caching, and support for 20 popular comic strips including Calvin and Hobbes, Peanuts, Garfield, and more.
This app has been vibe-coded with Amazon's Kiro and adjusted afterwards. Read the full story. That branch ended with version 1.0.4.
Three months later, I tried to fix a few bugs and add some extra features. I still don't have a Windows build, but the Linux binaries and packages (.deb, .rpm) work rather fine in version 1.1.3.
Kiro (Claude) helped with these minor changes, but it added more bugs than it fixed. I should have hunted the bugs myself and only let Kiro create the RPM .spec and other boring stuff. Kiro is even able to be that stupid:
Oops! I accidentally deleted the
.gitfolder. Let me fix that:
Nothing beats Kiro in creating new bugs, though. Or in forgetting what the purpose of a change was, what was the bug we were hunting, or that the bug needs to be fixed, not the error message!
In the end, given the difficulties in building a PyQt6 self-contained Windows binary with either PyInstaller or cx_Freeze, I suppose PyQt6 is the wrong cross-platform framework. Maybe I should learn Avalonia UI.
Features
- 20 Popular Comic Strips: Calvin and Hobbes, Peanuts, Garfield, Wizard of Id, and more.
- Calendar Navigation: Easy date selection with visual indicators.
- Keyboard Navigation: Left/Right arrows: Previous/Next, Home/End: First/Today.
- Direct Access: Button for First day of each comic as hosted on GoComics.com.
- Random Access: Button for display of a Random date for each comic.
- Smart Caching: Stores last 200 comics per strip for fast loading or later consulting from the cache folder.
- Offline Viewing: View cached comics without internet connection.
- Cross-Platform: Works on Linux and should work on Windows someday (it currently doesn't build or doesn't run).
Supported Comic Strips
- Calvin and Hobbes - since 1985-11-18
- Peanuts - since 1950-10-16
- Peanuts Begins - since 1950-10-16 (Reprint series; for old dates can be identical to Peanuts, only in color)
- Garfield - since 1978-06-19
- Wizard of Id - since 2002-01-01 (Limited GoComics availability)
- Pearls before Swine - since 2002-01-07
- Shoe - since 2001-04-08 (Limited GoComics availability)
- B.C. - since 2002-01-01 (Limited GoComics availability)
- Back to B.C. - since 2015-09-21 (Recent reprint series)
- Pickles - since 2003-01-01 (Limited GoComics availability)
- WuMo - since 2013-10-13 (With gaps)
- Speed Bump - since 2002-01-01 (Limited GoComics availability)
- Free Range - since 2007-02-03
- Off the Mark - since 2002-09-02 (Limited GoComics availability)
- Mother Goose and Grimm - since 2002-11-25 (Limited GoComics availability)
- The Flying McCoys - since 2005-05-09
- The Duplex - since 1996-08-12
- Reality Check - since 1997-01-01
- Adam@Home - since 1995-06-20
- Ziggy - since 1971-06-27
Note that some comic titles, especially in their early days, can have large gaps in availability.
Releases
📦 Binaries can be downloaded:
-
from GitHub.
-
from SourceForge.
Installation
Pre-built Binaries
Linux:
.debpackage for Debian/Ubuntu/MX/Mint.rpmpackage for Fedora/RHEL/CentOS/Alma/Rocky- Prebuilt binary with
.desktopfile, icon, and installation script - AppImage (just in case)
Using the non-packaged binary:
With comic-strip-browser, comic-strip-browser.desktop, comic-strip-browser.png and install.sh in the same folder, make sure the last one is executable (chmod +x install.sh) and launch it. It will install to ~/.local/bin/.
To uninstall the app, launch ~/.local/bin/uninstall-comic-strip-browser.
Building from Source
Prerequisites:
# For Debian/Ubuntu/MX/Mint
sudo apt-get update
sudo apt-get install -y build-essential python3 python3-pip python3-venv
# For Fedora
sudo dnf -y install rpm-build rpmdevtools python3-devel python3-pip \
python3-virtualenv
Build the binary:
./build_scripts/build_linux.sh
Alternatively, or for the first time:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python ./build_scripts/build.py
Build the .deb:
After you have a successfully built binary:
python3 ./build_scripts/create_deb.py
Build the .rpm:
./build_scripts/build_rpm.sh
Build the AppImage:
curl -L -o appimagetool-x86_64.AppImage https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
./appimagetool-x86_64.AppImage dist/ComicStripBrowser.AppDir
Windows:
Both build_windows.bat and build_windows_cxfreeze.bat failed in my attempts and in the abomination called GitHub Actions. Read WINDOWS_BUILD.md if it helps.
Known issues
Race conditions can make it forget the name of the selected comic strip
Should you click around frantically, repeatedly changing the comic strip from the 15 provided options after having changed the date, you might at some point see error messages about the impossibility of retrieving the “unknown” comic for today, despite the selected day in the calendar being another one. In some cases clicking again on the desired title is useless, but other titles remain functional. Should this happen, close the app and reopen it. Shit happens.
Fractional scaling may lead to suboptimal rendering of the comics
This is because such a scaling is performed externally, not by the app. Basically, an image is enlarged by the display server or by the window manager. While such a phenomenon is typically associated with X11, Deepin's Wayland-based Treeland is quite a failure in this regard. Compare the rendering in Deepin 25.0.1 with the out-of-the-box 125% desktop scaling to the normal 100% scaling:
Maximizing the window can help in some cases. In others, you might want to resize the window until a better rendering is obtained, if at all.
Cached images and logs
The last-accessed 200 images for each comic title are stored in a folder called cache, which is too generic a name. Each comic title has its own subfolder, though.
The folder cache is saved as follows:
- In the current directory when possible, which happens if you launch the binary or the AppImage from a folder somewhere in your home.
- In $HOME when this is not possible, especially when installed globally from the
.deband launched from the menu. - Beware that if you launch the app via a launcher triggered by Alt+F2, the current directory is
~/Desktopin MATE and $HOME in other desktop environments.
The location should probably have been ~/.cache/comic-strip-browser/.
Discover and AppStream
I noticed that KDE Discover ignores the copyright file and claims there's no license in the .deb, or that the author is unknown in the .rpm. Bloody fucking Discover.
The AppImage
The AppImage is, by all evidence, useless as long as it's basically a wrap around a fat binary created by PyInstaller. It doesn't hurt to have it, though.
License
This project is licensed under the MIT License. See LICENSE file for details.
Note: This application is for personal use only. Please respect the terms of service of GoComics.com and the copyright of comic strip creators.