Prism: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (WebRunner moved to Prism: project name change)
No edit summary
Line 1: Line 1:
WebRunner is a simple XULRunner based browser that hosts web applications without the normal web browser user interface. WebRunner is based on a concept called Site Specific Browsers (SSB). An SSB is an application with an embedded browser designed to work exclusively with a single web application. It doesn’t have the menus, toolbars and accoutrements of a normal web browser. Some people have called it a "[http://www.hawkwings.net/2006/05/13/a-dedicated-distraction-free-browser-for-gmail/ distraction free browser]" because none of the typical browser chrome is used. An SSB also has a tighter integration with the OS and desktop than a typical web application running through a web browser.
Prism is a simple XULRunner based browser that hosts web applications without the normal web browser user interface. Prism is based on a concept called Site Specific Browsers (SSB). An SSB is an application with an embedded browser designed to work exclusively with a single web application. It doesn’t have the menus, toolbars and accoutrements of a normal web browser. Some people have called it a "[http://www.hawkwings.net/2006/05/13/a-dedicated-distraction-free-browser-for-gmail/ distraction free browser]" because none of the typical browser chrome is used. An SSB also has a tighter integration with the OS and desktop than a typical web application running through a web browser.


WebRunner has become [http://labs.mozilla.com/2007/10/prism/ Prism], a Mozilla Labs project. Find more discussion in the Prism [https://labs.mozilla.com/forum/index.php/board,16.0.html user feedback forum].
<div class="note">WebRunner has become [http://labs.mozilla.com/2007/10/prism/ Prism], a Mozilla Labs project. Find more discussion in the Prism [https://labs.mozilla.com/forum/index.php/board,16.0.html user feedback forum].</div>


== WebRunner / SSB Objectives ==
== Prism / SSB Objectives ==
Looking at what has already been done and discussed about desktop/webapp integration, the following is a suggested roadmap for SSB experimentation:
Looking at what has already been done and discussed about desktop/webapp integration, the following is a suggested roadmap for SSB experimentation:
* '''Separate process:''' When the webapp goes down or locks up, I don’t want anything else affected. Thankfully, Firefox does have session restore, but that is beside the point. When I open many tabs and have several webapps running in a browser, things get slow and unstable after a day or two.
* '''Separate process:''' When the webapp goes down or locks up, I don’t want anything else affected. Thankfully, Firefox does have session restore, but that is beside the point. When I open many tabs and have several webapps running in a browser, things get slow and unstable after a day or two.
Line 12: Line 12:


* [[WebRunner:Planning | WebRunner Planning Whiteboard]]
* [[WebRunner:Planning | WebRunner Planning Whiteboard]]
* [[WebRunner:FAQ | WebRunner FAQ]]
* [[Prism/FAQ | Prism FAQ]]


== Current Features ==
== Current Features ==
Line 19: Line 19:
* Simple Print support via context menu
* Simple Print support via context menu
* About support via context menu which is useful for checking the XULRunner runtime version
* About support via context menu which is useful for checking the XULRunner runtime version
* Launch Webrunner with commandline parameters to host specific webapps
* Launch Prism with commandline parameters to host specific webapps
* Web application profile support - parameters for a web app can be saved to an INI-style *.webapp file
* Web application profile support - parameters for a web app can be saved to an INI-style *.webapp file
* Support for webapp owned popup windows - some email webapps can use a popup to compose email
* Support for webapp owned popup windows - some email webapps can use a popup to compose email
Line 31: Line 31:
* Add support for inline spellcheck and suggestions on context menu
* Add support for inline spellcheck and suggestions on context menu
* Add support for form field autocompletion, like Firefox
* Add support for form field autocompletion, like Firefox
* Enable extension support so WebRunner can be tweaked or enhanced. Also, webapps themselves can be tweaked by extensions
* Enable extension support so Prism can be tweaked or enhanced. Also, webapps themselves can be tweaked by extensions
* Create an tool to create new webapp profiles so new webapps can be installed from WebRunner
* Create an tool to create new webapp profiles so new webapps can be installed from Prism
* Create an extension to allow Firefox to create webapp profiles since most of this process starts in the browser
* Create an extension to allow Firefox to create webapp profiles since most of this process starts in the browser
* Create some form of adjusting preferences (about:config?). For instance, I had to add the code below in webruner-prefs.js to adjust proxy
* Create some form of adjusting preferences (about:config?). For instance, I had to add the code below in webruner-prefs.js to adjust proxy
Line 57: Line 57:
* Support for increasing and decreasing text size (ctrl++ and ctrl--)
* Support for increasing and decreasing text size (ctrl++ and ctrl--)
* Menu option - 'Preferences'
* Menu option - 'Preferences'
* Configuration option to sandbox a webapp so it doesn't share cookies with other webapps in the same webrunner. This could allow multiple Google apps to be open with different accounts (a@gmail.com Gmail; b@msn.com for Reader; c@hostedgmail.com for Hosted Gmail).
* Configuration option to sandbox a webapp so it doesn't share cookies with other webapps in the same Prism. This could allow multiple Google apps to be open with different accounts (a@gmail.com Gmail; b@msn.com for Reader; c@hostedgmail.com for Hosted Gmail).
 
== Security ==
 
Webapp bundles, as defined today, can and usually do include a JS (webapp.js) which runs with system privileges. This should be removed, so that starting a webapp bundle does not imply handing over your machine and all the data on it to whoever created or modified the bundle. Ideally, webapp bundles should not be able to do more than a normal webapp can, just run in a slightly different UI (no menu etc.) and in their own process.


== Web Application Bundles ==
== Web Application Bundles ==
A web application [[WebRunner:Bundle | bundle]] is a zip archive that holds a [[WebRunner:Config | configuration]] file, icons and an optional webapp JS [[WebRunner:Scripting | script]]. The profile can be used to launch and install the webapp in WebRunner:
A web application [[Prism/Bundle | bundle]] is a zip archive that holds a [[Prism/Config | configuration]] file, icons and an optional webapp JS [[Prism/Scripting | script]]. The profile can be used to launch and install the webapp in Prism:


<code>webrunner -webapp [webapp-bundle]</code>
<code>prism -webapp [webapp-bundle]</code>


Whenever a web application has been launched / installed using the above command line and the webapp [[WebRunner:Config | configuration]] has an '''ID''' parameter, the web application is unpacked into the WebRunner profile folder and can be launched directly using:
Whenever a web application has been launched / installed using the above command line and the webapp [[Prism/Config | configuration]] has an '''ID''' parameter, the web application is unpacked into the Prism profile folder and can be launched directly using:


<code>webrunner -webapp [webapp-id]</code>
<code>prism -webapp [webapp-id]</code>


Here is a simple [[WebRunner:Bundle#HowTo | how-to]] for building a basic web application bundle.
Here is a simple [[Prism/Bundle#HowTo | how-to]] for building a basic web application bundle.


See: [[WebRunner:Bundle]]
See: [[Prism/Bundle]]


== Web Application Configuration ==
== Web Application Configuration ==
A webapp bundle should contain a webapp.ini [[WebRunner:Config | configuration]] file. The configuration file is a simple, INI-style text file that specifies some parameters about a web application.  
A webapp bundle should contain a webapp.ini [[Prism/Config | configuration]] file. The configuration file is a simple, INI-style text file that specifies some parameters about a web application.  


See: [[WebRunner:Config]]
See: [[Prism/Config]]


== Web Application Script ==
== Web Application Script ==
Some WebRunner-based web applications may want to tweak the behavior or add desktop-ish features to the webapp. WebRunner supports a simple [[WebRunner:Scripting | scripting]] system that can be used to add custom JS script to the WebRunner chrome [[WebRunner:HostWindow | host]], but not the webcontent itself.
Some Prism-based web applications may want to tweak the behavior or add desktop-ish features to the webapp. Prism supports a simple [[Prism/Scripting | scripting]] system that can be used to add custom JS script to the Prism chrome [[Prism/HostWindow | host]], but not the webcontent itself.
 
<div class="note"> In the future, the webapp script may have lower privileges. We are looking into the security aspects of the higher privilege level.</div>


See: [[WebRunner:Scripting]]
See: [[Prism/Scripting]]


== WebRunner Host Window ==
== Prism Host Window ==
WebRunner provides a simple, scaled down browser window for running web applications. Using [[WebRunner:Config | configuration]] files and webapp [[WebRunner:Scripting | scripting]], the host window can be modified.
Prism provides a simple, scaled down browser window for running web applications. Using [[Prism/Config | configuration]] files and webapp [[Prism/Scripting | scripting]], the host window can be modified.


See: [[WebRunner:HostWindow]]
See: [[Prism/HostWindow]]


== Installer ==
== Installer ==
The installer should configure the OS to associate *.webapp files with WebRunner. This means that when you double-click or launch a *.webapp file, WebRunner is launched and automatically opens the web application.
The installer should configure the OS to associate *.webapp files with Prism. This means that when you double-click or launch a *.webapp file, Prism is launched and automatically opens the web application.


Current Windows and Mac installs automatically associate *.webapp with WebRunner.
Current Windows and Mac installs automatically associate *.webapp with Prism.


One interesting side efect is that after this change, you can select a link to a .webapp file in a Web Page and you get it run by webrunner - in IE this runs anywhere, but this won't work in Firefox unless the webapp is being issued with an appropriate MIME type on the server: application/x-webrunner works (see [http://blondechris.com/www/gmail.webapp here] for an example).
One interesting side efect is that after this change, you can select a link to a .webapp file in a Web Page and you get it run by webrunner - in IE this runs anywhere, but this won't work in Firefox unless the webapp is being issued with an appropriate MIME type on the server: application/x-webrunner works (see [http://blondechris.com/www/gmail.webapp here] for an example).

Revision as of 20:53, 30 October 2007

Prism is a simple XULRunner based browser that hosts web applications without the normal web browser user interface. Prism is based on a concept called Site Specific Browsers (SSB). An SSB is an application with an embedded browser designed to work exclusively with a single web application. It doesn’t have the menus, toolbars and accoutrements of a normal web browser. Some people have called it a "distraction free browser" because none of the typical browser chrome is used. An SSB also has a tighter integration with the OS and desktop than a typical web application running through a web browser.

WebRunner has become Prism, a Mozilla Labs project. Find more discussion in the Prism user feedback forum.

Prism / SSB Objectives

Looking at what has already been done and discussed about desktop/webapp integration, the following is a suggested roadmap for SSB experimentation:

  • Separate process: When the webapp goes down or locks up, I don’t want anything else affected. Thankfully, Firefox does have session restore, but that is beside the point. When I open many tabs and have several webapps running in a browser, things get slow and unstable after a day or two.
  • Minimal UI: A generic browser UI is not needed for webapps. If any UI is present, make it specific to the webapp I am using.
  • Basic desktop integration: Create shortcuts to start the webapp, add ability to show specialized icons in the tray or dock and ability to display notifications.
  • Platform with extensions: I don’t want to download a full browser runtime for each webapp. I do want to be able to add some custom code/features that are not directly supported in the webapp. I should be able to install one runtime and then get packages or extensions for each webapp. Think Firefox extensions or Greasemonkey scripts. These extensions should be able to tweak the SSB UI as well.
  • Open external links in real browser: If I click a link in the webapp that opens a new site, don’t change my webapp browser window. Open all external links in my default/real browser.

Current Features

  • Window title tracking
  • Context menu for basic clipboard and selection operations
  • Simple Print support via context menu
  • About support via context menu which is useful for checking the XULRunner runtime version
  • Launch Prism with commandline parameters to host specific webapps
  • Web application profile support - parameters for a web app can be saved to an INI-style *.webapp file
  • Support for webapp owned popup windows - some email webapps can use a popup to compose email
  • Show float-over link destinations in the statusbar so users can see where the link will take them
  • Support download manager

Wishlist

  • Add Taskbar icon representation option for the web applications.
  • Add one instance behavior in order for the shortcuts to bring the web app to view rather than open a second window.
  • Add menus for page setup, open profile and work offline
  • Add support for inline spellcheck and suggestions on context menu
  • Add support for form field autocompletion, like Firefox
  • Enable extension support so Prism can be tweaked or enhanced. Also, webapps themselves can be tweaked by extensions
  • Create an tool to create new webapp profiles so new webapps can be installed from Prism
  • Create an extension to allow Firefox to create webapp profiles since most of this process starts in the browser
  • Create some form of adjusting preferences (about:config?). For instance, I had to add the code below in webruner-prefs.js to adjust proxy
  pref("network.proxy.autoconfig_url", "http://autoproxy.url.pac");
  pref("network.proxy.type", 2)
using a parameter in the .webapp file would be the best solution :
  proxy=http://myname:mypassword@myproxy:3128/
  • Add url/domain/subdomain restriction (external links won't work) give more detail on the discussion page
  • Add ability to open external links with other browsers (Firefox/Konqueror/IE/etc.) this should be working now - give more detail on the discussion page
  • Add ability to have entire software and webapp run from a USB memory device for roaming use.
  • Possibility of full screen mode
  • Find box
  • Navigation with Alt + mouse scroll wheel is working, even if navigation is disabled in webapp.ini. Maybe it should be like in firefox Shift + mouse scroll wheel when navigation is enabled.
  • More robust command line handling. It would be nice be able to simply type one of these:
webrunner gmail.webapp
webrunner https://mail.google.com/mail
  • Updater like firefox that tells you when a new version of webrunner has been released.
  • Add something to configure and block advertisement.
  • Back, forward (history) and reload buttons are necessary.
  • Support for increasing and decreasing text size (ctrl++ and ctrl--)
  • Menu option - 'Preferences'
  • Configuration option to sandbox a webapp so it doesn't share cookies with other webapps in the same Prism. This could allow multiple Google apps to be open with different accounts (a@gmail.com Gmail; b@msn.com for Reader; c@hostedgmail.com for Hosted Gmail).

Web Application Bundles

A web application bundle is a zip archive that holds a configuration file, icons and an optional webapp JS script. The profile can be used to launch and install the webapp in Prism:

prism -webapp [webapp-bundle]

Whenever a web application has been launched / installed using the above command line and the webapp configuration has an ID parameter, the web application is unpacked into the Prism profile folder and can be launched directly using:

prism -webapp [webapp-id]

Here is a simple how-to for building a basic web application bundle.

See: Prism/Bundle

Web Application Configuration

A webapp bundle should contain a webapp.ini configuration file. The configuration file is a simple, INI-style text file that specifies some parameters about a web application.

See: Prism/Config

Web Application Script

Some Prism-based web applications may want to tweak the behavior or add desktop-ish features to the webapp. Prism supports a simple scripting system that can be used to add custom JS script to the Prism chrome host, but not the webcontent itself.

In the future, the webapp script may have lower privileges. We are looking into the security aspects of the higher privilege level.

See: Prism/Scripting

Prism Host Window

Prism provides a simple, scaled down browser window for running web applications. Using configuration files and webapp scripting, the host window can be modified.

See: Prism/HostWindow

Installer

The installer should configure the OS to associate *.webapp files with Prism. This means that when you double-click or launch a *.webapp file, Prism is launched and automatically opens the web application.

Current Windows and Mac installs automatically associate *.webapp with Prism.

One interesting side efect is that after this change, you can select a link to a .webapp file in a Web Page and you get it run by webrunner - in IE this runs anywhere, but this won't work in Firefox unless the webapp is being issued with an appropriate MIME type on the server: application/x-webrunner works (see here for an example).

Installs

Latest version

Bundles

User Contributed Bundles

Contributing

Blog Posts

Site Specific Browsers
WebRunner
Using WebRunner
WebRunner + Gears = Offline Desktop Reader
WebRunner 0.5
WebRunner 0.5 - Mac Support
WebRunner 0.5 - Linux Install
WebRunner, Google Reader, and Google Notebook
Distraction Free GTD - 32+ web app files for online todo lists
ThansCorner: Mozilla WebRunner 0.7
Mozilla WebRunner: a one-window, tabless browser with no URL bar
WebRunner becomes Prism - A Mozilla Labs Project
Mozilla Labs: Prism
Alex Faaborg: Prism
Mozilla Prism: Bringing Web Apps to the Desktop
Mozilla Prism Portable (Spanish)