Prism Information – In Depth

[[UPDATED - 08/11/22 to include Linux paths]]
A lot of people have been having problems getting extensions to work with Prism. This is kind of an expected situation considering that the extensions that are being targeted are designed for use under Firefox, which has a different UI than Prism. This can cause a lot of headaches trying to figure out what’s wrong. There are ways around some of these problems, especially if the extension includes a xul overlay that is compatible with the browser xul for Prism. Or if you can load the chrome url to the main xul overlay in Prism’s input url (which of course requires that you already have the extension installed). Other extensions however, have no hope of working with Prism unless changes are made to the overlays.

I’ve also been running into a problem described by commenter Marcel, here. I’ve been getting a similar error under Windows for different extensions when I try to install them. Don’t know why, and what makes it worse is that these errors crop up in extensions that I’ve had no problems installing before on other computers (maybe I need to have Webrunner installed along side Prism?). I’ve also had problems with version 0.9 not installing and using the included icons for webapp files. I’m going to have to look into that one a bit further before I can comment more on it though.

At any rate, I’m going to list as much information in this post as I can find on Prism to refer back to, then I’m going to create a new post on how to install an extension for Prism manually. I’d also like to post a how-to on getting POW to work under Prism as well, but I don’t know whether or not I’ll get to that (maybe over Thanksgiving break). So, first some links.

LINKS:
Mozilla Labs’ Prism Page – A broad overview of the goals of the Mozilla Prism Project
Mozilla Developer Center’s Prism Page
MDC’s Prism Page on Extensions
Mozilla Labs’ Prism Forum
Mozilla Wiki Prism Page – Along with the Dev Center’s page, a good source for documentation on  Prism
Mark Finkle’s Blog (one of Prism’s developers – BTW – THANK YOU MARK!!!)
SVN for Prism’s source code
List of Prism Contributors on ohloh.net
Douglas Meyer’s Blog post on getting Google Gears to work with Prism
Commenter Manlo’s blog post on getting RTM working with Prism (does not appear to be working)
Wikipedia Entry

Next, here’s a list of all the files that Prism makes use of in the user’s profile directory on Windows and Mac OS X – Linux to come (I don’t have access to my Linux box at the moment).

Default Prisim Folders in User’s Home directory (Windows as of Prism v0.9):

Under C:\Documents and Settings\{user name}\Application Data\

Prism\
Prism\profiles.ini
Prism\Profiles\
Prism\Profiles\{random string}.default\
Prism\Profiles\{random string}.default\cert8.db
Prism\Profiles\{random string}.default\compatibility.ini
Prism\Profiles\{random string}.default\compreg.dat
Prism\Profiles\{random string}.default\cookies.sqlite
Prism\Profiles\{random string}.default\extensions
Prism\Profiles\{random string}.default\extensions.cache
Prism\Profiles\{random string}.default\extensions.ini
Prism\Profiles\{random string}.default\key3.db
Prism\Profiles\{random string}.default\localstore.rdf
Prism\Profiles\{random string}.default\mimeTypes.rdf
Prism\Profiles\{random string}.default\permissions.sqlite
Prism\Profiles\{random string}.default\places.sqlite
Prism\Profiles\{random string}.default\prefs.js
Prism\Profiles\{random string}.default\secmod.db
Prism\Profiles\{random string}.default\xpti.dat
Prism\Profiles\{random string}.default\extensions\

Under C:\Documents and Settings\{user name}\Local Settings\Application Data\

Prism\Prism\
Prism\Prism\updates\
Prism\Prism\updates\0\

For Each WebApp Prism creates (Windows as of Prism v0.9):

Under C:\Documents and Settings\{user name}\Application Data\Prism\

{webapp name}\
{webapp name}\profiles.ini
{webapp name}\Profiles\
{webapp name}\Profiles\{random string}.default\
{webapp name}\Profiles\{random string}.default\cert8.db
{webapp name}\Profiles\{random string}.default\compatibility.ini
{webapp name}\Profiles\{random string}.default\compreg.dat
{webapp name}\Profiles\{random string}.default\cookies.sqlite
{webapp name}\Profiles\{random string}.default\extensions
{webapp name}\Profiles\{random string}.default\extensions.cache
{webapp name}\Profiles\{random string}.default\extensions.ini
{webapp name}\Profiles\{random string}.default\extensions.rdf
{webapp name}\Profiles\{random string}.default\key3.db
{webapp name}\Profiles\{random string}.default\localstore.rdf
{webapp name}\Profiles\{random string}.default\mimeTypes.rdf
{webapp name}\Profiles\{random string}.default\permissions.sqlite
{webapp name}\Profiles\{random string}.default\places.sqlite
{webapp name}\Profiles\{random string}.default\pluginreg.dat
{webapp name}\Profiles\{random string}.default\prefs.js
{webapp name}\Profiles\{random string}.default\secmod.db
{webapp name}\Profiles\{random string}.default\signons3.txt
{webapp name}\Profiles\{random string}.default\xpti.dat
{webapp name}\Profiles\{random string}.default\extensions\

Under C:\Documents and Settings\{user name}\Application Data\WebApps\

{webapp name}@{webappaddr}\
{webapp name}@{webappaddr}\localstore.json
{webapp name}@{webappaddr}\override.ini
{webapp name}@{webappaddr}\webapp.ini
{webapp name}@{webappaddr}\webapp.js
{webapp name}@{webappaddr}\icons\
{webapp name}@{webappaddr}\icons\default\
{webapp name}@{webappaddr}\icons\default\{icons included in webapp bundle}

Under C:\Documents and Settings\{user name}\Local Settings\Application Data\Prism\

{webapp name}\
{webapp name}\Prism\
{webapp name}\Prism\updates\
{webapp name}\Prism\updates\0\
{webapp name}\Profiles\
{webapp name}\Profiles\l05apnbh.default\
{webapp name}\Profiles\l05apnbh.default\XPC.mfl
{webapp name}\Profiles\l05apnbh.default\XUL.mfl
{webapp name}\Profiles\l05apnbh.default\Cache\
{webapp name}\Profiles\l05apnbh.default\Cache\_CACHE_001_
{webapp name}\Profiles\l05apnbh.default\Cache\_CACHE_002_
{webapp name}\Profiles\l05apnbh.default\Cache\_CACHE_003_
{webapp name}\Profiles\l05apnbh.default\Cache\_CACHE_MAP_
{webapp name}\Profiles\l05apnbh.default\Cache\{other cache files}

Default Prisim Folders in User’s Home directory (Mac OS X as of Prism v0.9):
Under /Users/{user name}/Library/Application Support/Prism/

Profiles/
Profiles/profiles.ini
Profiles/{random string}.default/
Profiles/{random string}.default/cert8.db
Profiles/{random string}.default/compatibility.ini
Profiles/{random string}.default/compreg.dat
Profiles/{random string}.default/cookies.sqlite
Profiles/{random string}.default/extensions.cache
Profiles/{random string}.default/extensions.ini
Profiles/{random string}.default/key3.db
Profiles/{random string}.default/localstore.rdf
Profiles/{random string}.default/mimeTypes.rdf
Profiles/{random string}.default/permissions.sqlite
Profiles/{random string}.default/places.sqlite
Profiles/{random string}.default/pluginreg.dat
Profiles/{random string}.default/prefs.js
Profiles/{random string}.default/secmod.db
Profiles/{random string}.default/xpti.dat
Profiles/{random string}.default/extensions/

For Each WebApp Prism creates (Mac OS X as of Prism v0.9):

Under /Users/{user name}/Library/Application Support/{webapp name}/

Profiles/
Profiles/profiles.ini
Profiles/{random string}.default/
Profiles/{random string}.default/cert8.db
Profiles/{random string}.default/compatibility.ini
Profiles/{random string}.default/compreg.dat
Profiles/{random string}.default/cookies.sqlite
Profiles/{random string}.default/extensions.cache
Profiles/{random string}.default/extensions.ini
Profiles/{random string}.default/key3.db
Profiles/{random string}.default/localstore.rdf
Profiles/{random string}.default/mimeTypes.rdf
Profiles/{random string}.default/permissions.sqlite
Profiles/{random string}.default/places.sqlite
Profiles/{random string}.default/pluginreg.dat
Profiles/{random string}.default/prefs.js
Profiles/{random string}.default/secmod.db
Profiles/{random string}.default/xpti.dat
Profiles/{random string}.default/extensions/

Under /Users/{user name}/Library/WebApps/{webapp name}@{webappaddr}/

{webapp name}@{webappaddr}/localstore.json
{webapp name}@{webappaddr}/override.ini
{webapp name}@{webappaddr}/webapp.ini
{webapp name}@{webappaddr}/webapp.js
{webapp name}@{webappaddr}/icons/
{webapp name}@{webappaddr}/icons/default/
{webapp name}@{webappaddr}/icons/default/{icons included in webapp bundle}

Default Prisim Folders in User’s Home directory (Linux as of Prism v0.9):

Under /home/{user name}/

.prism/prismdir.lin.txt
.prism/profiles.ini
.prism/{randomstring}.default/
.prism/{randomstring}.default/Cache/
.prism/{randomstring}.default/cert8.db
.prism/{randomstring}.default/compatibility.ini
.prism/{randomstring}.default/compreg.dat
.prism/{randomstring}.default/cookies.sqlite
.prism/{randomstring}.default/extensions/
.prism/{randomstring}.default/extensions.cache
.prism/{randomstring}.default/extensions.ini
.prism/{randomstring}.default/key3.db
.prism/{randomstring}.default/localstore.rdf
.prism/{randomstring}.default/mimeTypes.rdf
.prism/{randomstring}.default/.parentlock
.prism/{randomstring}.default/permissions.sqlite
.prism/{randomstring}.default/places.sqlite
.prism/{randomstring}.default/prefs.js
.prism/{randomstring}.default/secmod.db
.prism/{randomstring}.default/XPC.mfasl
.prism/{randomstring}.default/xpti.dat
.prism/{randomstring}.default/XUL.mfasl
.prism/{randomstring}.default/Cache/
.prism/{randomstring}.default/Cache/_CACHE_001_
.prism/{randomstring}.default/Cache/_CACHE_002_
.prism/{randomstring}.default/Cache/_CACHE_003_
.prism/{randomstring}.default/Cache/_CACHE_MAP_

For Each WebApp Prism creates (Linux as of Prism v0.9):

Under /home/{user name}/.prism/

{webapp name}/
{webapp name}/{randomstring}.default/
{webapp name}/{randomstring}.default/Cache/
{webapp name}/{randomstring}.default/Cache/_CACHE_001_
{webapp name}/{randomstring}.default/Cache/_CACHE_002_
{webapp name}/{randomstring}.default/Cache/_CACHE_003_
{webapp name}/{randomstring}.default/Cache/_CACHE_MAP_
{webapp name}/{randomstring}.default/cert8.db
{webapp name}/{randomstring}.default/compatibility.ini
{webapp name}/{randomstring}.default/compreg.dat
{webapp name}/{randomstring}.default/cookies.sqlite
{webapp name}/{randomstring}.default/extensions/
{webapp name}/{randomstring}.default/extensions.cache
{webapp name}/{randomstring}.default/extensions.ini
{webapp name}/{randomstring}.default/key3.db
{webapp name}/{randomstring}.default/localstore.rdf
{webapp name}/{randomstring}.default/mimeTypes.rdf
{webapp name}/{randomstring}.default/.parentlock
{webapp name}/{randomstring}.default/permissions.sqlite
{webapp name}/{randomstring}.default/places.sqlite
{webapp name}/{randomstring}.default/prefs.js
{webapp name}/{randomstring}.default/secmod.db
{webapp name}/{randomstring}.default/XPC.mfasl
{webapp name}/{randomstring}.default/xpti.dat
{webapp name}/{randomstring}.default/XUL.mfasl
{webapp name}/profiles.ini

From the above lists of file locations, it should be apparent (okay, if you really really look, hard) that there are two ways to go about installing an extension for Prism. The first is install that extension “globally”, which is to say that you install that extension for every webapp. For this method the extension gets installed into Prism’s extension directory. The second method is to install the extension “locally”, or on a per-webapp basis. In this case each extension is installed in the individual webapp’s extension directory.

The first method is more difficult because by default, installing an extension will be done when you have a webapp loaded, so it will install the extension into that webapp’s extension folder. In order to install a webapp globally, you’ll need to perform a manual installation or open a new webapp that loads the addon’s xul (chrome://global/content/config.xul). I should mention that this worked on Prism/Webrunner 0.8, but I have yet to test this on Prism 0.9, so this may no longer work.

So, why they heck would I list all the files and directories here? Well, I want a reference to point at when I start explaining which files to make changes to in order to install an extension manually.

Code Snippit for Prism Extensions’ install.rdf

<em:targetApplication>
  <!– Prism –>
  <Description>
    <em:id>prism@developer.mozilla.org</em:id>
    <em:minVersion>0.8</em:minVersion>
    <em:maxVersion>1.0.0.*</em:maxVersion>
   </Description>
</em:targetApplication>

Code Snippit for Prism Extensions’ extension.rdf (information is required from the **install.rdf**)

<RDF:Description
    RDF:about="urn:mozilla:item:{**extension id from install.rdf**}"
    NS1:installLocation="app-profile"
    NS1:version="**from install.rdf**"
    NS1:optionsURL="**from install.rdf**"
    NS1:iconURL="**from install.rdf**"
    NS1:name="**from install.rdf**"
    NS1:description="**from install.rdf**"
    NS1:creator="**from install.rdf**"
    NS1:homepageURL="http://**from install.rdf**"
    NS1:contributor="**from install.rdf**">

More to come…

Ubuntu 8.04 – Installed and AWESOME!!

screenshotI just finished basic configuration of Ubuntu 8.04 Beta (Hardy Heron) on my laptop – AND IT’S AWESOME!! My laptop is a Toshiba Satellite P105-S6024, and I’ve been having no end of problems getting the audio to work in conjunction with the ACPI. Turns out the Toshiba provided ACPI code for the BIOS isn’t all that great under GNU/Linux, and in order to fix the problem you’ve got to either recompile the kernel (which was the direction I had finally decided to take this weekend), or if you could get it to work, there’s a way to add the code to the initrid.

I had read this morning that there was a new Ubuntu release and, as I was having problems with Debian and was about to reinstall Ubuntu 7.10, so I decided to give it a try. Well, it’s a Beta, but I’m not going to hold that against it! Compiz is installted by default (but just subtley enough you don’t know it till you’re seeing the tell tail fades and such), Firefox 3 Beta 4, wireless support includes WPA (which it has had built-in since the 7.10 release), improved dual screen support for laptops, hell – I didn’t even have to install 915resolution to setup my Intel display to 1440×900! I still had to install Amorok and vlc manually, but that’s cake compared to recompiling a kernel.

  1. So far so good, performance is a bit sluggish (especially with the extra visual enhancements enabled), but I’m thoroughly tickled pink by the feature set and compatibility! THANK YOU UBUNTU COMMUNITY!!

Link:

Ubuntu Test Releases

VMware Workstation Floppy Image Howto

I’m taking the RedHat RHA030 and 130 right now at ECU. The really cool thing about the class is that it’s all online. We use VMware Workstation 6 and connect to the classroom servers through a VPN connection. The biggest drawback to the class is that it’s all online. Weird how that works.

Any-who, one of our labs has us using mount and umount (did I mention that RHA030 is a basic GNU/Linux skills class with a RedHat flavor?) with a floppy drive. There are a couple of problems with this, however. One, there’s no virtual floppy disk on the virtual machine that’s been configured for class. Two, VMware Workstation 6 has this weird quirk (at least the version we have) that won’t allow you to create floppy images in the img format. It adds flp to the end of whatever you put want to name your file, and then gives this error that the file already exists, which doesn’t make a lot of sense since the Workstation just created the file and should know that.

So, here’s a (mostly) graphical tutorial that allows you to create your own floppy image and use it with VMware Workstation 6.

Step 1. Open VMware Workstation and select the virtual machine you want to add a virtual floppy drive to.

Step 2. Select “Edit Virtual Machine Settings” from that virtual machine’s “Commands” menu.
vfd01

Step 3. From the “Virtual Machine Settings” dialog’s “Hardware” tab, click the “Add…” button
vfd02

Step 4. On the “Hardware Wizard” dialog, select the “Floppy Drive” hardware type and then click the “Next” button.
vfd03

Step 5. On the “Hardware Wizard” dialog, choose the “Create a blank floppy image” radio button and then click the “Next” button. vfd04

Step 6. On the “Hardware Wizard” dialog, click the “Bowse” button to choose a location for your floppy image.
vfd05

Step 7. Type in the name of the image file you want to create. Notice I tried to input an “.img” extension which is one of the types listed in the file type select box. Don’t bother trying that because Workstation will automatically tack on a “.flp” extension regardless of what you input.
vfd06

Step 8. Check your file’s path and then click “Finish”. What’s supposed to happen is, Workstation creates an image file with the name in the text box.
vfd07

Step 9. What happens is Workstation adds the “.flp” extension, creates the image file, then gives you this Alert box stating: “Unable to create floppy image. File exists.” Idiotic really. Just click the “OK” button and proceed as follows.
vfd08

Step 10. You’ll now see that your file name has been appended with the “.flp” extension and that and further “Finish” clicking will merely give you to opportunity to view the Alert box again. But don’t worry, because even though you’re getting error a strange and magical thing has happened. Click “Cancel” to proceed to the next step.
vfd09

Step 11. Click “OK” on the “Virtual Machine Settings” dialog.
vfd10

Step 12. Ok, this is less of a step than just a view of the results. Remember that “strange and magical” thing I mentioned? Well, as it turns out Workstation has added the floppy drive to your virtual hardware and created and added the floppy image to your floppy drive just fine even with those errors. Weird, weird, weird, but I’m not really complaining, now I can do my lab!
vfd11

Hope this helps anyone still having problems with this.