Mr. Teal
A program for reading comics on the computer
Latest release
Programming Note
Instructions
Changelog
Comic packages
Achewood
Listening To 11.975 MHz
Minus
Nod & Sleep
Octopus Pie
One Over Zero
Opplopolis
Pepper & Carrot
Pictures For Sad Children
Pixel
Return to Sender
Unicorn Jelly
Latest release
January 18, 2020: mr_teal_3.1.4.zip (2.7 MB)
A small, fast, free and open-source Windows program for reading comics (or any set of sequential images) with support for reading and writing annotations. Optimized for keyboard browsing. Written in QB64. Unlicensed, source code is available in the archive.
mr_teal_32_3.1.4.zip (2.4 MB)
Version compatible with 32-bit versions of Windows.
Programming note
April 4, 2023
It's been three years, and it looks like 3.14 will be the final version. There are many things I'd still like to do: fix some visual jank, figure out how to properly sort numbers, figure out a better method of resizing large images, make a proper linux version... during the period of intense work on Mr. Teal, 2019 to early 2020, I had a job that allowed me an unusually large amount of time to work on personal projects while on the clock. This job took a huge toll on my psychological wellbeing, but the time I was allowed to reclaim was worth it. Sadly, that job is a thing of the past: 100% of my time at the current office is wasted, and I don't anticipate being able to put the time into Mr. Teal that it needs.
Since the final version, I had abandoned Windows altogether and now use a Linux distribution as my workstation OS. I thought that I wouldn't be able to use Mr. Teal at all anymore, but I discovered it is still functional under Linux using the Proton compatibility layer provided by Steam. To use Mr. Teal this way, click "Add a game" at the bottom of the steam window, navigate to the location of the executable and add it to your library. Then, right-click on mr. teal in your steam library and click "properties", then "compatibility", and finally "force the use of a specific steam play compatibility tool". Choose the most recent version of proton (not experimental) from the drop-down. Mr. Teal should function almost exactly as it does under Windows. The initial display will look strange because it's missing the default windows fonts, but just press P to go to the settings menu and choose whichever available font you prefer.
I'm sad I wasn't able to do everythingI wanted with Mr. Teal, but I'm glad I can continue using it for the foreseeable future; it does exactly what I want it to, and in my opinion, is still the best tool for the job it was made to do. I'm pretty proud of it, and I hope people continue to get enjoyment from it for years to come.
Instructions
Main Menu
When you first start Mr. Teal, a list of folders and commands will be displayed. At first, the only available folder is "example", which only has a few creative commons-licensed comics. To add your own images, copy or move a folder into the program folder. Images will be detected and indexed automatically when loaded from the main menu. Currently supported formats are PNG, JPG, BMP and GIF. You can also have nested folders, so you can categorize your folders or split them up if you have a large number. Supports 20 folders with 20 subfolders each for a total of up to 400 directories.
Alternatively, you can drag a folder onto the "mrteal.exe" icon to copy it and open the program to the main menu. The imported directory will be marked (new).
If there are fewer than 10 folders displayed, you will see a cursor that looks like a single white box:  
When you see this cursor, that means the program's waiting for you to press a single key, and will react as soon as you press a key.
If there are more than 10 folders, the cursor looks like the white box sitting on a line: __
This means it's waiting for you two type up to two characters and then press enter.
Once you choose a folder, it'll scan it for images and build a file index. If there are no images, it'll show a warning. It'll continue to use this file index as long as there are no changes to the images. If you add, delete, or rename any images in the folder, it'll need to rebuild the file index. If you're not browsing that folder, it'll rebuild it automatically the next time you load it. If you make a change while you're currently browsing the folder, you'll need to rebuild the index manually by pressing Ctrl
-R
. Rebuilding the index will clear all bookmarks so make sure any changes to the file structure are final if you want it to save your place.
Press H
or ?
to display the Help screen, which is a condensed version of this document. Press P
to have a look at the Program settings. Press a number from 1-8 to get more information about that setting.
Viewing
←
and →
are used for navigation. The right arrow goes to the next image, the left arrow goes to the previous image. Your place is automatically saved every time you navigate to a new image. If you press right while viewing the last image or left while viewing the first image in a folder, it'll loop.
F1
-F10
to save up to 10 custom bookmarks for the current folder. It'll prompt you to type a name. Press F11
and F12
to save and load a quick bookmark, respectively.
1
-0
number keys will load the bookmarks assigned to the 10 function keys. Press Backspace
to return to the image you were just viewing (useful if you have a bookmark you want to repeatedly reference.)
B
will bring up the Bookmarks menu. You can see all 10 of the saved bookmarks, and can press a number to jump to that bookmark or press C
to clear all of them. The program will ask for confirmation.
↑
and ↓
arrow keys to scroll image vertically. This scrolls a user-definable amount which defaults to 2 lines. To change this setting, press P
and then 2
.
PgUp
and PgDn
to scroll up or down an entire page. Press P
and then 1
if you wish to adjust how much of the screen is scrolled.
Space
will immediately scroll to the top of the image.
D
will toggle the Display of all icons on or off. When off, only the image (and annotation/information, if applicable) will be shown.
Hold Shift
while pressing ←
↑
→
↓
to resize the window manually.
Home
resizes the window to fit the current image.
F
to toggle Fullscreen.
J
to Jump to a specific image number (leave blank to cancel, any input greater than the number of images will jump to the last one.)
A
to view Annotations. If an "A" icon is displayed on the left side of the screen, that means there's an annotation for the current image. Pressing A will display it until you navigate away from the current image.
S
will make annotations Show by default. When this is enabled, an inverted "A" icon will be displayed on the left side of the screen at all times. While this mode is active, all annotations will automatically show as soon as you view the image. Press A
or S
again to disable.
I
will view image Information. This will show you the current image number, the total number of images, and the path to the image you're currently looking at.
O
will keep image information On. This works similarly to pressing S
for annotations. While this is active, the "I" icon in the lower-right corner of the screen will be inverted and the information will automatically show when you navigate. Press I
or O
again to disable.
Esc
returns to the main menu. This clears your default folder, if you set it.
Q
will quit out of the program directly to your desktop. The next time you open Mr. Teal, it'll bypass the main menu and automatically load your default folder. This is saved as default.ini. You can edit or delete this file to change or clear your default, or just press Esc
while viewing to go back to the main menu.
Ctrl
-C
to Copy the alt text for the current image to the clipboard. Ctrl
-X
instead copies the full file path.
Ctrl
-R
to Rebuild the file index. This is here in case you want to add, remove, or rename any images while browsing. It'll rescan the folder and rebuild the index accordingly. Note that this clears the 10 bookmark slots and may change the saved quick bookmark.
Editing
To use these features, you must allow editing in the program settings menu. Press P
and then 8 to change or get more information about this setting. While editing is allowed, the following additional commands are available:
W
will Write a new annotation for the current image. Its existing annotation, if any, will be shown, and you'll be prompted to write one. Pressing enter without typing any text cancels, and any existing alt text will not be deleted or changed.
Ctrl
-V
to Very quickly paste the contents of the clipboard as the current image's annotation. If an annotation already exists for this image, this will overwrite it.
Del
will Delete the alt text for the current image.
WARNING: There is no confirmation for overwriting or deleting the alt text. This is for expediting adding alt text en masse. If there's a chance you might lose something important, be sure you have a backup.
General tips
Mr. Teal is specifically designed to make reading comics easier (for people who like the keyboard-based navigation, like me.) It works fine as a general image browser, but unless you're reading through comics, scanned book pages, etc in a linear manner, there are more efficient ways to do that. Irfanview is a great general-purpose image browser, the one I've used for over a decade, and I recommend it.
Mr. Teal is specifically designed for viewing screen-resolution images, and isn't a good choice for high-resolution scans without first resizing them. There is a resize mode in the options that will let you scale the image, but it's mutually exclusive to changing the size of the window, so images that are much wider than your screen would have a very narrow horizontal viewing window. Irfanview has a batch resize feature, so again, this is something that's very useful for formatting images for Mr. Teal. It was an indispensible tool for many of the image packages I released.
One limitation of Microsoft operating systems dating back to DOS is that they don't use natural sorting for numerals in files. When Mr. Teal generates the file list, the files may not appear in the correct order if they're not named a particular way (for example, with comics numbered 1.jpg - 100.jpg, the order will be 1, 10, 100, 11, etc.) They'll show up correctly in Windows Explorer, but because Mr. Teal uses command prompts to generate the file lists, it's still subject to this limitation. There are algorithms to get around this, of course, but I don't know how to do this in QB64. Luckily, that's another thing Irfanview can help with. Click File -> Batch Rename and you can give it a number of files to correctly sort and rename with a scheme that will make them show up correctly (i.e. 001.jpg, 002.jpg, etc).
I know it's frustrating that I keep saying to use this other program instead of this one - trust me, I find it frustrating too. I wish I was knowledgeable enough to implement some of these features. I have no background in computer science or programming and am 100% self-taught, and any version of BASIC isn't going to be the ideal tool for something like this, so I apologize for the limitations and inconvenience this causes. Again, this is a tool I made to solve one problem I was having, and I release it in hopes that it might be useful to someone else, even if I can't also replicate the functionality of some other tools I use. Thanks for understanding.
Changelog
3.1.4 (January 18, 2020)
Bugfixes: No longer generates invalid bookmark files in weird locations if you close the program by clicking the X at certain menu screens. If the folder in default.ini no longer exists, it'll delete the file and go to the main menu instead of crashing.
Also, I added support for three new fonts, cause why the heck not. Courier new bold, Lucida console, and cascadia code mono. The first two are default Windows system fonts, the third is included in the source folder with the other non-system fonts. License updated accordingly.
Also, you'll notice that this is version 3.1.4, and the executable file is exactly 3.14 megabytes. Insert your nerd jokes here, nerds.
3.1.3 (January 11, 2020)
Fixed a major bug where rebuilding a folder's file index on load would cause the bookmark file to be filled with invalid data, immediately crashing the program when it tries to load the nonexistent image #0.
3.1.3.1: Fixed another bug related to rebuilding the index: the program would crash if the "last read" bookmark was set to the number of an image that no longer exists (for example, if you're viewing the last image in a folder, delete one of them, and press Ctrl-R, it'll rebuild the index and then crash because it thinks you're viewing an image that no longer exists.) So now, any changes made to the files will cause all bookmarks to be reset. Changing the files after the index was built wasn't really in the original scope of the project, so I added a note to the documentation that they shouldn't do this if they want their reading order and bookmarks to stay intact. Also, from now on any time I make multiple minor changes on the same day, this isn't important enough to get a full minor version number. I don't want to discourage myself from making small changes because I'm worried I'll run out of numbers.
3.1.2 (January 11, 2020)
I just realized that the word "sequential" on the main menu has been misspelled for as long as the program's existed. Womp womp.
3.1.1 (January 10,2020)
Added a few safeguards so the program doesn't bug or crash in unusual situations: it now checks the file index against the folder contents whenever you first load a folder, and if there are any changes, it rebuilds the index. Also, if you want to add, remove, or rename any files while you're browsing, you can press Ctrl-R to rebuild it manually. Since this changes the file order, any bookmarks will be cleared.
Also, the program now checks to make sure the font files are still in the source directory, and will fall back to the system font if it tries to load a font that's no longer there. If the system font is also missing (I deleted comic sans off my computer, so it's not impossible) it'll show an error message and advise the user to download the latest release from this site. Also, if there are no folders in the same location as mrteal.exe, it'll show a message saying to add some folders and close the program. Now if anyone somehow ends up with just the binary and none of the supporting files, it'll at least tell them what's wrong and how to fix it instead of just crashing. This should almost never be an issue for anyone, but it's good practice.
Also fixed a bug where the image info didn't clear off the screen when toggling I
or O
off again.
3.1.0 (January 9, 2020)
I figure this is a big enough update for another point release. The program can now display subdirectories. It can only go one folder deep, but considering that's 20 folders * 20 subfolders = 400 possible directories, that's all anyone should ever need. If a folder has both images and folders inside it, it'll ignore the images and just show you the sub-directories. Because this messed with the default folder prompt (and because it's increasingly seeming like not a great idea,) I removed it. If you quit with Q while viewing a comic, it'll resume where you left off automatically. I figure it's not too cumbersome to press escape and get back to the menu, especially now that it doesn't reposition the window every time you do so.
I also added a Rescan Folders option to the main menu, so if you want to add a folder while the program's running, you don't have to quit and launch it again. Also, you can set the margin to a negative number from -1 to -10 if you want images to already be scrolled up when they're displayed. This could be useful for comics where every one has a large title or header that you want to skip. Those keypresses add up.
3.0.3 (January 8, 2020)
I DID IT! The background box for the annotation is now exactly the right size, every time. This has been my white whale pretty much since I started making this thing and I'm very happy to have finally nailed it down. I also caught a bug where text broken across 2 lines at a hyphen wasn't displaying the first part properly, which I probably would never have caught if I hadn't been intensely scrutinizing dozens of different annotations to make sure they look right, so hey, bonus fix. Also, the alt text will now wrap properly when the window is resized.
Also also: UI icons will now never display over top of an image or text. I created a modal of sorts in the middle of the screen for the "create a bookmark" and "jump to image" prompts. Fixed a bug where displaying the icons to the right of the image would cause the program to crash if the window is too narrow.
3.0.2 (January 8, 2020)
I fixed most of the ways in which I broke the annotation display in 3.0.0. There will sometimes be an additional blank line after the text, but it's better than the alternative. Also worrying is that it doesn't calculate the text length properly when the window size changes (which isn't often, fortunately) but for now I made the text just print as white on black so it's at least readable.
3.0.1 (January 7, 2020)
Noticed several major issues with the UI icons that I swear to god weren't there 5 minutes before I published, lol, it never ends
3.0.0 (January 7, 2020)
I know it seems weird that 3.0 is already out, considering how much time passed between 2.0 and the previous version, but working on it a bunch to get it out before the new year rekindled my enthusiasm for it, and I've been hacking away zealously for the past week. (I've even had programming dreams, which are no fun. It's always just the bad parts and nothing ever works, which is probably my brain's way of telling me it's time for a break.)
However, I'm very happy with this release. It doesn't add as many new features as 2.0, but I did a lot of cleaning up and optimizing, and it feels like a whole new program. Here's the run-down:
- It can now handle file and folder names with spaces
- It keeps the current image, the previous image, and the next image in memory at all times, so page-turning is instantaneous even with chunky files. This uses more memory, but it's still well within tolerances (i.e. it uses less RAM than any electron app.)
- With large files, there's still a momentary pause while it unloads and loads the appropriate image, so I added a loading dot under the scroll icons that shows when the program accepts input again. It's red when the program is unresponsive and turns green when it's ready. It's inspired by the virtual disc LEDs in Sega CD emulators. As with the rest of the UI, it can be disabled by pressing
D
- Jumping to an image and loading a bookmark is slightly slower than before, because it has to unload all three images in memory and load three more, but even with the largest comics I tried, it's still under a second.
- No longer uses CPU cycles when idle
- Completely redesigned menus and input routines
- It no longer creates empty txt file for images without annotations
- It will auto-delete empty txt files if they exist
- It no longer saves the bookmark file every time you turn the page (to prevent unnecessary disk access) but it saves your place whenever you back out to the main menu or quit the program, even if you click the X or press Alt-F4
- Window will no longer reset to initial position when going back to main menu (unless the window is off-screen)
- The current image will remain dimmed in background when using menus
- The window will auto-resize when too narrow for image (no more UI getting drawn on top of the comic)
- Changed default location of UI icons to be 3 spaces to the left of the image instead of halfway between the image and the window border
- Added UI location setting with four options: Left relative to image (default), left relative to window, right relative to image, right relative to window
- Added an option in program settings for mouse resize/image scaling mode*
- Two additional fonts are available, Inconsolata and Px437 IBM EGA8
*The mouse resize mode works differently than it did last time, but it's still kind of a hack - instead of resizing the canvas, like the default keyboard mode, it scales the entire program window, including the UI. I included it so you'd still have a way to view low-res comics without going fullscreen, but I still recommend either resizing them with Irfanview or using Waifu2x. QB64's baked-in image scaling glitches out when the user tries to resize the window with the existing method, so I had to make them mutually exclusive, but it's at least there as a fallback.
Other notes: the bookmarks are a little less janky. It won't let you assign multiple bookmarks for one image, and if you try to assign a bookmark that already exists to the same image, nothing happens. I added two new fonts because the way the tops of the characters are cut off with Consolas was driving me nuts. Why does it do that? It doesn't do that in anything else. It's my go-to font for text editing and it's the monospace font I use in my browser. Super frustrating. I added inconsolata, which is a google font but it's free-licensed so whatever. It's fine, but it's missing a surprising number of characters. You can't even use it as a terminal font because it's missing all the box-drawing characters, but for just standard ASCII stuff it works. I also added Px437 IBM EGA8, which is a re-creation of one of the bitmap fonts used in IBM PCs that I'm surprisingly fond of. It feels fitting to have a program written in a descendent of QBASIC with pixelated, aliased-as-hell fonts. I dig it. Check out in10h.org/oldschool-pc-fonts to see more like it. All fonts are in the source directory and the license file has been updated accordingly.
Update history
Comic packages
Note
Many of the packages make use of a program called "waifu2x" for image scaling and noise reduction of old webcomics posted with smaller resolution screens in mind. This appears to be the best program for this sort of upscaling, but I don't endorse the name of the software and am open to suggestions for alternatives.
Achewood
- achewood_2x.zip (1.22 GB)
The first 1,178 Achewood strips, which covers everything up to the 2014 hiatus, upscaled with waifu2x and saved as high-quality PNG files. Includes all alt text. Content warning: Contains strong language, frequent drug/alcohol use, brief nudity, violence including gun violence, body horror, and frequent discussion of depression and mental illness in general.
- gof_2x.zip (40.3 MB)
The 43 Achewood strips that comprise the beloved Great Outdoor Fight storyline, upscaled and saved as high-quality PNG files. A good preview of the full achewood_2x package.
- achewood.zip (77.6 MB)
The original low-resolution images, for lower-bandwidth connections or the authentic web experience.
Listening To 11.975 MhZ
- 11_975mhz_2x.zip (79.4 MB)
163 strips. As far as I can tell, this is the full archive of the webcomic by Ethan Forsythe; if it's not complete, this is as complete an archive as anyone but the author will likely ever see. This is the dadaist predecessor to the digital serialized comic series of the same name. The first 55 strips were low-res and have been upscaled with waifu2x. Content warning: nudity, strong language, body horror, and one strip that contains a transphobic slur.
- 11_975mhz.zip (30.8 MB)
Original web resolution version of above.
- 11_975mhz_oddbagel.zip (22 kb)
A collection of commentary and analysis for the first 65 strips by Tumblr user oddbagel that I found interesting and wanted to preserve.
Minus
Nod & Sleep
- nodsleep.zip (4.9 MB)
A short 27-page comic by Cat S. about a boy who doesn't want to sleep. Creative commons licensed.
Octopus Pie
- Octopus Pie (2x).zip (1.6 GB)
The full archive of Octopus Pie by Meredith Gran, upscaled with waifu2x and saved as high-resolution PNG files. Content warning: Drugs, sexual themes, lots of swearing, occasional nudity. Released under a creative commons license.
- Octopus Pie.zip (200 MB)
Original web resolution.
One Over Zero
- oneoverzero_2x.zip (1.1 GB)
The full archive of 1/0 by Tailsteak, upscaled with waifu2x and saved as high-resolution PNG files. The early strips are very messy and don't really benefit from the upscaling process, but it starts to be worth it around strip #123. No annotations.
- oneoverzero.zip (38.3 MB)
Original web resolution version of 1/0.
Opplopolis
- Opplopolis_1-15.zip (292 MB)
The entire 15-issue run of Opplopolis by Kit Roebuck. All 360 pages plus covers, previews, and a few extras. All blog posts included as annotations. I'm using the images from the 150 DPI CBZ archives included with each issue on Gumroad. Each issue is available as a "pay what you want" download which also includes a print-quality 300 DPI PDF. A print collection of issues 1-10 is also available on Amazon.
This comic is unfinished, and will likely never be finished, so be aware of that. It's still my favorite comic. No disrespect intended by posting the higher-res images here, I just want more people to be aware of it. If you like it please give the author money one of the two ways I linked above. Content warning: Fictional conspiracies and cults, implied gun violence.
Pepper & Carrot
- peppercarrot.zip (141 MB)
Lovely open-source comic about a witch and her cat. The first 31 English XXL montage files (with every panel in one image).
Pictures For Sad Children
- pfsc_2x.zip (328 MB)
378 images, upscaled with Waifu2x. Mostly comics, a few misc. images and photos from the blog included. Content warning: depression, mental illness, violence, suicide.
- pfsczip (18.1 MB)
The original web resolution.
Pixel
- pixel.zip (8.2 MB)
The full 287-comic run of Pixel by Chris Dlugosz. Double-sized but not upscaled or resampled to retain the pixel art. Includes annotations.
Return to Sender
- rts_2x.zip (117 MB)
Every page of the unfinished comic by Vera Brosgol. This comic was important to me when I was in high school, and I feared it was lost, but miraculously the wayback machine managed to save all 75 pages. I collected the pages for future-proofing and faster browsing. Content warning for edgy early 2000s violence and humor. Upscaled with Waifu2x
- return_to_sender.zip (14 MB)
The original web resolution.
Unicorn Jelly
- UnicornJelly.zip (38.8 MB)
All 668 main strips from Unicorn Jelly by Jennifer Diane Reitz, double-sized (not upscaled or resampled, to retain the pixel art.) Animated strips are recreated with static images to the best of my ability. Includes all titles/tag lines from each individual comic. Does not include alternate universe strips or outtakes. Content warning: occasional violence and nudity/sexual content, nothing explicit.
Other
Codex Seraphinianus
- codex_s.zip (148 MB)
The Codex Seraphinianus. A mysterious book. Content warning: nudity, body horror
Comic packages are hosted off-site due to storage/bandwidth considerations. If any of these downloads is broken please let me know.
To install, extract into the same folder where mrteal.exe is located and run the program. If already running, you can rescan for new folders by pressing R at the main menu.
I am in no way affiliated with any of the comics on this page, I'm just a fan who wants a better reading experience. I only link to packages of comics that are permissively licensed or are "abandonware" (i.e. have concluded or gone on indefinite hiatus, and aren't being actively monetized.) If you don't want your images posted here, just let me know and I'll remove them.
This program is released with the unlicense. TL;DR: This is free and unencumbered software released into the public domain. It can be used and modified with neither restriction nor warranty. If you have a set of comics you'd like to see here, drop me a line. Also, if you use Mr. Teal for your own project, please let me know so I can give you a shoutout!
Pepper & Carrot by David Revoy is used under a Creative Commons Attribution 4.0 license.