Podzilla

From wikiPodLinux

The title of this article should be podzilla. The initial letter is capitalized due to technical limitations.

Podzilla is currently the default user interface for iPodLinux. It provides a very familiar user interface for accessing various functionality in iPodLinux, such as playing music, file browsing, image viewing, and more (see the list below); most of this functionality is provided by add-on modules that can be modified, added to, or removed as necessary. Visit podzilla Features for detailed features of the user interface.

Table of contents

Structure

Podzilla is basically a core, which provides many programming interfaces and such but very little functionality visible to the user, plus modules, which do the fun stuff. Everything that can be a module, is. Modules can be either compiled into podzilla or loaded from disk at runtime; they are loaded from /usr/lib on the iPod. They can be packaged in a special .pod format that bundles a module, its info file, and any data used. See Podzilla Modules for more details, or go to Special:Module to download or get information about specific modules.

The current, modular version of podzilla is called "podzilla 2" (or pz2 or PZ2 for short) to differentiate it from the old version, which will henceforth be called "legacy podzilla" or pz0.

Podzilla is built using the TTK toolkit. See Building Podzilla for information on how to build it and Modifying Podzilla to learn how to make your own modules.

The podzilla 2 API reference is available here (SVN r2330),

Core Functionality

Most of this won't be of much interest to users (as opposed to developers); see below for the juicy bits.
  • Complete compatibility with legacy podzilla apps
  • Module support functions
  • A robust configuration system (similar to legacy podzilla's, but supports more types of setting)
  • Simplifying wrappers over TTK's window and widget functions
  • Good event handling
  • Dynamic menu support
  • Modification of what-stuff-goes-in-the-header, including locally for specific apps (e.g. Steroids' life count)
  • Better dialog support, including word wrap
  • Vectorfont code (including a percent sign!)
  • Various iPod hardware functions
  • Font support, like pz0
  • DSP wrapping functions
  • Filebrowser helpers — modules can register types of files that they will handle
  • Base text input support (the actual methods are modules)
  • Color scheme support
  • Modules can define buttons to globally do an action when held (e.g. Menu -> backlight)
  • Locale support

Modules

Every one-source-file module in CVS pz0 has been ported. That is,

  • Some simple games
    • Hunt The Wumpus (Wumpus (http://www.wikipedia.org/wiki/Wumpus))
    • Invaders (Space Invaders (http://www.wikipedia.org/wiki/Space_invaders))
    • iPobble (Puzzle Bobble (http://www.wikipedia.org/wiki/Puzzle_Bobble) or Bust a Move)
    • Lights (Lights Out (http://www.wikipedia.org/wiki/Lights_Out_%28game%29))
    • Minesweeper (Minesweeper (http://www.wikipedia.org/wiki/Minesweeper_%28computer_game%29))
    • Othello
    • Pong (Pong (http://www.wikipedia.org/wiki/Pong))
    • Tic-Tac-Toe
    • Tunnel
  • A few GFX demos
    • Cube
    • Matrix
    • Mandelpod
  • Some vaguely useful things
    • Calendar display
    • Touch-Tone Dialer
    • PodDraw

See Podzilla Features for a complete list.

Building from source

You can check out PZ2 from Subversion here:

svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/libs/hotdog/
svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/libs/ttk/
svn co https://ipodlinux.svn.sourceforge.net/svnroot/ipodlinux/apps/ipod/podzilla2/

Please see Building Podzilla to find out how to build it.

If you don't want to go through all that, see below.

Installing from nightlies

Yes, there are now nightly builds of PZ2 available!

Look here (http://www.josh.sys-techs.com/svnbuilds). You'll see that there are three kinds of builds on there: appearance, podzilla2, and pzmodules. You want the latest (highest-numbered) from each category; the numbers do not have to match. (The numbers correspond to revisions in Subversion.)

The files in those archives need to be installed as follows:

  • The podzilla2-NNN.gz file should be unzipped and installed to iPod/bin/podzilla.
  • Every directory in pzmodules-NNN.zip should go in iPod/usr/lib.
  • The directories schemes and fonts in appearance-NNN.zip should go in iPod/usr/share.

If you're unsure about how to do this, see below.

Linux / Mac OS X

Installation on these platforms is pretty simple. Replace /mnt/ipod below with the actual mount point of your iPod. On OS X, this is /Volumes/ followed by the name of your iPod; for example, /Volumes/iPod. Replace NNN with the number in the name of the file you downloaded.

# gunzip podzilla2-NNN.gz
# install -m 755 podzilla2-NNN /mnt/ipod/bin/podzilla
# mkdir -p /mnt/ipod/usr/lib /mnt/ipod/usr/share
# ( cd /mnt/ipod/usr/lib; unzip $OLDPWD/pzmodules-NNN.zip )
# ( cd /mnt/ipod/usr/share; unzip $OLDPWD/appearance-NNN.zip )

To install modules, put their folders in /mnt/ipod/usr/lib.

  • Note: I found the "$OLDPWD", meaning the previous working directory variable isn't recognised under the tcsh shell, the one Jaguar uses. You must type out the location of the zip files, and before listing the location, this character must be entered "~". Without this, terminal will say it cannot find the file. So, for example, if the files are on the desktop, it would be: ~/Desktop/pzmodules-NNN.zip. One other note: before I could unzip the podzilla2 main file, I had to use the cd command to get to the directory I had the files in.

Windows

Installation on Windows is a bit more complex; you'll have to make a start file.

1. Uncompress the podzilla2-NNN.gz file and place it in the root of your iPod (that's directly in your iPod's drive, not in any folder) named only podzilla. No extension, no -NNN, just podzilla .

2. Create a folder called appearance in the root of your iPod. Unzip the contents of the appearance-NNN.zip file in it. (Inside the folder appearance you should have two folders fonts and schemes after the unzipping.)

3. Create a folder called modules in the root of your iPod. Unzip the contents of the pzmodules-NNN.zip file in it. (The folder should contain several dozen subfolders after the unzip.)

4. Put the following into a file named start (again, no extension) in the root of your iPod.

if [ -e /hp/podzilla ]; then
    mv /hp/podzilla /bin/podzilla
    chmod +x /bin/podzilla
fi

mkdir -p /usr/lib /usr/share

if [ -e /hp/modules/* ]; then
    mv /hp/modules/* /usr/lib/
    rm -r /hp/modules/*
fi

if [ -e /hp/appearance/* ]; then
    mv /hp/appearance/* /usr/share/
    rm -r /hp/appearance/*
fi

5. Reboot your iPod.

Note: If pz2 hangs while loading after restarting, reinstall and remove the start file before allowing pz2 to boot again.

A note about that start file: You can also use it to update components of PZ2, or install new modules. Just put the appropriate files in the modules or appearance directories, or put a new podzilla binary as podzilla in the root. If you don't have Minix-sh, you might get errors about the if statements, but everything should still work; that's why the ifs and fis are on separate lines from the commands. (If this is the case, and you're doing a partial update, you might also get errors about /hp/modules/* not existing or something; you can ignore these too.)

Views