Mr. Teal

A program for reading comics on the computer

Screenshot of Mr. Teal program window showing comic

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
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:

*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


Listening To 11.975 MhZ


Minus


Nod & Sleep


Octopus Pie


One Over Zero


Opplopolis


Pepper & Carrot


Pictures For Sad Children


Pixel


Unicorn Jelly



Other

Codex Seraphinianus



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.