I’m happy to formally announce the Grotesque project, which is an interactive fiction library manager, primarily for Linux. UPDATE: you can now download a Windows version of it!
Some of you may already be familiar with the project. Indeed, it’s been around for a couple years, but its last release in 2009 was version 0.2.1 and didn’t have many features. With the permission of the original author, I resumed development this summer and I have since implemented many of the features that I think it was lacking, enough for me to decide to bump the version number up to 0.9.
Grotesque 0.9 features:
Full Treaty of Babel bibliography support
Fetch bibliographical information from IFDB
Fetch and display cover art from IFDB
Fetch and display (average) star ratings from IFDB (which can be
overridden with your own rating)
Quickly filter your library by author, genre, group, year published,
forgiveness and minimum rating. Search the library by title (click in
the library and start typing)
Edit story entries
Show/hide the bibliographic columns of your choosing
Mark stories as new/played
Improved story description layout
Faster loading time for large libraries
Recursively import a directory tree
With an eye to the future, there are two flavors available, one built for GTK2 and one for GTK3. If you aren’t sure which to download, get the GTK2 version. Currently, I think only users of up-to-date Fedora, Arch, and OpenSUSE, for example, will have GTK3. Ubuntu will have it in the 11.10 release this October.
it seems I will not be trying this any time soon, since I’m pretty much the end user of all end users, didn’t even know there was such a thing as GTK, neither the official page nor this software’s developer offer the necessary material for me to try it out (much like the creator of IFMapper always cheerfully assumed with every new release that everyone would know how to install/update his RubyGemsOrWhatever application), and despite me having been waiting for something like this for a LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONG time.
Guess I’ll just have to wait longer, but hey, good work - it looks great, and is just the sort of thing I’d use a lot, if I didn’t have Windows.
By the way, I suppose there’s an easy way to add games to your library that are not compliant with Treaty of Babel? And that I can, say, add “tzx” games and open them with the interpreter of my choice, or at least with the program that is defined in my system to run “tzx” games? You don’t mention this in your blurb, and if it’s currently not supported, I would suggest you think it over.
I’ll see what I can do about packaging it for Windows. I have packaged Python/GTK applications in the past for Windows, but it’s been a while. I’ll give it a try today!!
Currently, you can add interpreters for any kind of game you can imagine. However, at the moment, if the program cannot extract any information from the file, it will give up. It already allows manual entry of game information on games in which no bibliographic information could be extracted, though. I could easily change it so that even if it failed to read the file, you can still manually enter the info. It should be pretty straight-forward to implement. Thanks for the idea!
Do you have any example files that aren’t ToB-compatible that I can test with?
I would suspect most Spectrum games would fit the bill, you can download them in all format from worldofspectrum.org/textadv/index.html. You can also check out DOS-based games, or Commodore, or amiga, or Apple II. Amiga and Apple II particularly I don’t see being ToB compliant.
Incidently, I took a stab at trying to download Python and GTK. My diagnosis: I really, really suck at it.
EDIT - Incidently, I shouldn’t fail to emphasise how pretty it looks, despite its name.
Ok yeah I have some DOS .exe games that I can try working with.
Sad note: it will be ugly as sin on Windows. (at least the last time I used a GTK program in in Windows, it was bad…btw GTK is the toolkit that I used for the interface, so that which defines the buttons, list views, drop-down menus, etc).
Unfortunately, to build it for Windows, it looks like I will actually need Windows.
Nonetheless, it looks like it will be pretty straight-forward to do using py2exe. If anyone out there is running Windows, has Python installed, and would like to help, please contact me! I don’t think a lot of Python knowledge on your part will even be necessary; I still have config files from an old project I did this with, so we can probably mostly copy those.
Ok, I can successfully build a Windows EXE, however it runs into problems with importing.
Good news: I’m 99% sure I know what the problem is (windows + gdk threading don’t play nicely together, if anyone’s curious)
Bad news: it requires some major restructuring to implement
More good news: I think I need to implement this restructuring to fix some problems that people are experiencing in Linux too (it’s partly related to, for example, the Loading Library dialog at the beginning not going away, which is because of a problem with threading).
I’ll report back here when I get it working. Let’s hope for it in Grotesque 0.9.1, which I hope to complete in the coming week or so, if all goes well.
Known bug (mentioned in an earlier post): if one of the loading dialogs (library loading, importing stories, or removing stories) finishes but doesn’t go away, just hit the Escape key. I’m trying to fix this. It seems to mostly happen with small libraries, so take that as a message to download more!
I’m happy to say that this is already fixed. Since it’s such a pain in the ass bug, I’m going to release this bugfix as 0.9.1 before I work on anything else. I know it’s weird because I just released 0.9 last night but I’d like to get this fix out the door as quickly as possible.
And, Windows users, you’ll be happy to know that I’m 99% sure that the solution to this bug also eliminated the problems with running Grotesque in Windows.
Now in three flavors: Linux GTK2, Linux GTK3, and Windows!
Ok, I was wrong about what was causing the Windows problem (or maybe there were two problems and I fixed them both) but I got it all worked out. I think that you should just be able to download the zip and run grotesque.exe. If something went wrong in the packaging and you can’t run it, please let me know and I’ll fix it ASAP. Turns out it’s a national holiday here in Spain tomorrow, so I guess I won’t be going to work and I’ll have time for hacking.
Some other notes on the release:
I disabled importing .blb files because there’s a bug in it that causes the program to hang. My next big mission is better handling of failed imports.
I fixed the pesky progress dialog bug, as noted
That’s it actually. It’s a minor update but it’s an important one for overall usability.
Superb work. Now, just to recap, here are my current issues:
I can’t add formats and interpreters, since when I try to click “OK” or “CANCEL” it gives the same null result (I really mean “null” - nothing happens at all when I click those buttons). On a related note, a “Browse” button would be useful here.
Hey, while writing this post I managed to make it so the app doesn’t start anymore, don’t ask me why…
…the only thing I think I did out of the ordinary was accidently trying to open it while it was already open. Now everytime I try to open it says:
See the logfile ‘C:\Interactive Fiction\Tools and Interpreters\grotesque-0.9.1-win\grotesque.exe.log’ for details
And the logfile:
Traceback (most recent call last):
File “grotesque”, line 3, in
File “grotesque\main.pyc”, line 776, in main
File “grotesque\main.pyc”, line 80, in init
File “grotesque\main.pyc”, line 245, in load_library
And I get this even if I delete all the files and unzip them back. That’s pretty weird.
It looks like your library file got corrupted. Go to C:\Users[your username].grotesque and delete the file called local_library.dat. Unfortunately, this can happen if the program crashes while updating the library. I’ll build in an automatic backup/recovery system, because it’s happened to me too. In the meantime, you might want to manually back it up just in case. I simply copy it to a new file called local_library.bak and if this happens, I delete the .dat file and rename the .bak to .dat (and create a new backup copy of it).
I’m not sure what you mean here. You’re trying to add a format/interpreter but then it crashes when you try to import a story file? That’s almost certainly because I haven’t yet implemented the ability to import non-ToB games (see my previous notes). That’s my goal for today(ish) and should be in 0.9.2. For now, please stick to .z*, .gblorb, .gam (this might be iffy), .taf, .zblorb, and .ulx.
Sorry it’s causing you so many problems!!! I hope to have it all worked out by 1.0, but your actually helping me quite a bit by suffering through the bugs. Thanks!!
And now it looks like a simple typo in the GTK2/Windows version is causing problems with editing files.
If you are running the linux gtk2 version, this is a bit amateurish, but I suggest that you fix it yourself. It’s really easy. In the GTK2 version open src/grotesque/main.py. Go to line 464, which has items.set_text(""). Just change the 23 to a 25. I’ve already pushed the fix to my code but I haven’t released a package with it yet. Windows users, you’ll have to wait until a bit later today when I release 0.9.2 (yes, it’s coming that soon).
I’m really sorry about these bugs. Never try to maintain two different parallel codebases. It makes you sloppy.