Monday, May 26, 2014

Loose Change

Once again it's been a long time gone with nothing new here on the old blog.  Probably because I'm incapable of focusing on any one thing long enough to have something worth writing about.  However I have tinkered with a few small odds and ends.

For a short while I thought maybe I was gonna do something to improve the zipit text mode browsing options.  The ideal would be to get something going with both text and images and sharing the framebuffer nicely with tmux.  Yeah right, I know, keep dreaming.  But anyhow, I finally got motivated enough to build w3m, which supposedly can do just that, well, except for maybe the tmux part.  As expected the w3m executable came out rather bulky, which was disappointing.  And then I didn't quite come up with a workable solution for the pictures.  The w3m-img program responsible for putting the images on the framebuffer needed some work to make it capable of handling the evil rotated zipit framebuffer.   The solution may actually be out there already, if only I could convince google to translate some half English, half Japanese web pages properly.  Meanwhile this slowed me down just long enough that I eventually lost interest and moved on to something else.   Oh well.

But first I briefly considered hacking together something for displaying pictures superimposed on top of the links browser's text mode.  That'd require a straight up framebuffer driver, no sdl, so I built the fbv image viewer and even added a rotation option for the command line.  And that's about as far as I went, because I got distracted by iz2s build of zgv.  I was using it to compare with fbv and quickly realized that gif image support was broken in the iz2s executable.  A little debugging pointed to some routines used to read the gif structs containing some bad assumptions about sizeof() results for structs with odd byte counts.  So I fixed that and the gif display worked.  Mostly.  Naturally I wanted to try some animated gifs and the first file I tested used some (probably unnecessary) colormap manipulations that apparently aren't supported by the zgv gif code.  The animation played ok, but the colors were all over the place.  However, once again I got distracted before I'd worked out a satisfactory fix.

Around that time there were a few new users on the zipit IRC channel who took tinyirc out for a spin and came up with some fairly reasonable suggested improvements.  Before they vanished to some other IRC channel I dropped zgv and quickly added tab completion for NICKs, channel autojoin, automatic NickServe identification, and a few other options supported by changing the command line HOSTNAME arg into partial IRC URL support.  I also started on a busybox ash script to make configuration of the tinyirc command line options easier.  I'd probably be done with it already if I'd written it in C and ncurses, but for personal development reasons I really wanted to see what I could do with a minimal script for the built in busybox ash shell.  Here's what it looks like so far.


The script parses a small wrapper script containing a tinyirc command line and draws a little TUI with the tinyirc settings.  I still need to add something to edit the settings (inside the TUI if possible) and then save or run the resulting tinyirc command line.  I'm hoping to eventually be able to save new tinyirc configs as gmenu2x applets on the Network screen. 

Unfortunately before finishing that I ran into another issue with the image viewers.  I'd dumped some photos of the giant poison vines in my backyard from my camera onto the zipit, hoping to show them to some nonbelievers later.  But when I went to review them I got "out of memory" messages on every single image the viewer on the zipit.  Awkward.  Basic math says 10 megapixels at 4 bytes per pixel is a few megas too many for the zipit.  And sadly, I vaguely remembered assuming sometime in a past life that nobody in their right mind would ever try to view raw camera images on the zipit.  Oops.  Apparently I was wrong.  I hate when that happens.  So I got to work and patched up zgv (for starters) to do a cheesy power of 2 autoscale on any jpegs requiring more than 16 megabytes when uncompressed.  Seems to work so far...  I'd like to do something for imgv as well, but I suspect the simplified libsdl_image code layer may get in the way.

Hopefully I can at least wrap up the irc config script in the near future.  Meanwhile, I should be able to get my act together long enough to post some new iz2s executables of zgv, fbv, and tinyirc.

fbv-iz2s.zip

tinyirc-iz2s-tab-join-id.zip

zgv-gif-jpeg-fixes-iz2s.zip

Apparently I recently compiled zip and unzip executables for the iz2jffs.  Must've wanted them for something...

zip-unzip-iz2s.zip

Update:

My script is slowly shaping up.  You can follow the chain of pastebin links to see the progress.   However it's up to 15K already and still not quite finished.  I'd like to see it around 10K, with something that at least resembles real widget data structures that I could potentially reuse someday.  Not quite there yet...