<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pandorawiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skeezix</id>
	<title>Pandora Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://pandorawiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skeezix"/>
	<link rel="alternate" type="text/html" href="https://pandorawiki.org/Special:Contributions/Skeezix"/>
	<updated>2026-04-23T18:08:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0-alpha</generator>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4All&amp;diff=29945</id>
		<title>Compo4All</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4All&amp;diff=29945"/>
		<updated>2014-09-23T20:07:38Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Publishing a game to the servers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compo4All is an gaming competition system designed by Skeezix.&lt;br /&gt;
&lt;br /&gt;
The initial system was based on a MAME build where highscores were uploaded to a website, but has since expanded to include native Pandora games ([[PND]]) as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
Currently, the only supported platform is the Pandora, but there are thoughts about expanding it to the Raspberry Pi, and desktop environments.&lt;br /&gt;
&lt;br /&gt;
There is an unofficial port of C4A for the GCW and Caanoo. However at the moment only a few games (no MAME) are supported yet.&lt;br /&gt;
&lt;br /&gt;
== Launchers ==&lt;br /&gt;
* Skeezix's [http://repo.openpandora.org/?page=detail&amp;amp;app=compo4all-skeezix-0001 Compo4All MAME] ([http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/ Forum Thread])&lt;br /&gt;
* Skeezix's [http://repo.openpandora.org/?page=detail&amp;amp;app=compo4all-mgr-skeezix-0001 Compo4All Manager] ([http://boards.openpandora.org/index.php/topic/13742-c4a-manager-now-on-repo-beta-please-test-it-create-your-c4a-profile-without-using-c4a-mame-now/#entry260224 Forum Thread])&lt;br /&gt;
* [http://pandorawiki.org/User:Pmprog pmprog's] [http://repo.openpandora.org/?page=detail&amp;amp;app=thetournamenthub.marqwatkin Tournament Hub] ([http://boards.openpandora.org/index.php/topic/12745-pandora-compo4all-ui/ Forum Thread])&lt;br /&gt;
* Ziz's [http://repo.openpandora.org/?page=detail&amp;amp;app=Sparrow-C4A-Manager-1337 Sparrow C4A Manager] ([http://boards.openpandora.org/topic/14104-sparrow-compo4all-manager-and-puzzletube-c4a-edition-betas Forum Thread])&lt;br /&gt;
&lt;br /&gt;
== Scoreboard ==&lt;br /&gt;
Scores are shown within the three launchers, but are also accessible via a web browser at [http://c4a.openpandora.org/ http://c4a.openpandora.org]&lt;br /&gt;
&lt;br /&gt;
== Developers SDK ==&lt;br /&gt;
&lt;br /&gt;
There are two ways of developing C4A stuff at the moment. First of all the official way from skeezix. Details of the official API for integrating with the Compo4All system can be found [[Compo4AllSDK|here]].&lt;br /&gt;
&lt;br /&gt;
The second way is to use libSparrowNet, an independent library from Ziz, which encapsulate the network stuff with background thread and multi platform support. Details can be found [[Using_C4A_with_libSparrowNet|here]].&lt;br /&gt;
&lt;br /&gt;
== Publishing a game to the servers ==&lt;br /&gt;
&lt;br /&gt;
Given that a game supports compo4all (pushes scores to it, say), a few steps remain.&lt;br /&gt;
&lt;br /&gt;
  - the compo4all server must be told about the game, via a config file submitted to skeezix (at the openpandora boards)&lt;br /&gt;
  - ideally, the http://c4a.openpandora.org/ website needs to have some marquee artwork (send an image to milkshake at the openpandora boards)&lt;br /&gt;
&lt;br /&gt;
A config file example (pulled from current indie game) is below; the values shoudl be more or less self explanatory, but I realize at this time this isn't a great deal of information; please ask if you're confused about the syntax or acceptible values and I'll update this page!&lt;br /&gt;
&lt;br /&gt;
Sample config file:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
    &amp;quot;active&amp;quot;: true,&lt;br /&gt;
    &amp;quot;plugin&amp;quot;: &amp;quot;scoreonly&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: null,&lt;br /&gt;
    &amp;quot;alltime&amp;quot;: true,&lt;br /&gt;
    &amp;quot;platforms&amp;quot;: [ &amp;quot;pandora&amp;quot; ],&lt;br /&gt;
    &amp;quot;league&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;shortname&amp;quot;: &amp;quot;mygame&amp;quot;,&lt;br /&gt;
    &amp;quot;longname&amp;quot;: &amp;quot;My Game!&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;highest-first&amp;quot;,&lt;br /&gt;
    &amp;quot;dispunit&amp;quot;: &amp;quot;points&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
    &amp;quot;field&amp;quot;: &amp;quot;indie&amp;quot;,&lt;br /&gt;
    &amp;quot;genre&amp;quot;: &amp;quot;logic&amp;quot;,&lt;br /&gt;
    &amp;quot;execinfo&amp;quot;: {&lt;br /&gt;
      &amp;quot;pandora&amp;quot;: {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;standalone&amp;quot;,&lt;br /&gt;
        &amp;quot;pnd_unique_id&amp;quot;: &amp;quot;mygame.skeezix.001&amp;quot;,&lt;br /&gt;
        &amp;quot;last_known_filename_hint&amp;quot;: &amp;quot;mygame.pnd&amp;quot;,&lt;br /&gt;
        &amp;quot;command_line_add&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;last_known_appdata_hint&amp;quot;: &amp;quot;mygame&amp;quot;,&lt;br /&gt;
        &amp;quot;file_dependancies_hint&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Permissible values..&lt;br /&gt;
&lt;br /&gt;
ordering: lowest-first highest-first&lt;br /&gt;
type: standalone&lt;br /&gt;
league: all&lt;br /&gt;
field: indie arcade&lt;br /&gt;
genre: logic strategy racing action shmup runngun&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4All&amp;diff=29944</id>
		<title>Compo4All</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4All&amp;diff=29944"/>
		<updated>2014-09-23T20:06:13Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Developers SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compo4All is an gaming competition system designed by Skeezix.&lt;br /&gt;
&lt;br /&gt;
The initial system was based on a MAME build where highscores were uploaded to a website, but has since expanded to include native Pandora games ([[PND]]) as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platforms ==&lt;br /&gt;
Currently, the only supported platform is the Pandora, but there are thoughts about expanding it to the Raspberry Pi, and desktop environments.&lt;br /&gt;
&lt;br /&gt;
There is an unofficial port of C4A for the GCW and Caanoo. However at the moment only a few games (no MAME) are supported yet.&lt;br /&gt;
&lt;br /&gt;
== Launchers ==&lt;br /&gt;
* Skeezix's [http://repo.openpandora.org/?page=detail&amp;amp;app=compo4all-skeezix-0001 Compo4All MAME] ([http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/ Forum Thread])&lt;br /&gt;
* Skeezix's [http://repo.openpandora.org/?page=detail&amp;amp;app=compo4all-mgr-skeezix-0001 Compo4All Manager] ([http://boards.openpandora.org/index.php/topic/13742-c4a-manager-now-on-repo-beta-please-test-it-create-your-c4a-profile-without-using-c4a-mame-now/#entry260224 Forum Thread])&lt;br /&gt;
* [http://pandorawiki.org/User:Pmprog pmprog's] [http://repo.openpandora.org/?page=detail&amp;amp;app=thetournamenthub.marqwatkin Tournament Hub] ([http://boards.openpandora.org/index.php/topic/12745-pandora-compo4all-ui/ Forum Thread])&lt;br /&gt;
* Ziz's [http://repo.openpandora.org/?page=detail&amp;amp;app=Sparrow-C4A-Manager-1337 Sparrow C4A Manager] ([http://boards.openpandora.org/topic/14104-sparrow-compo4all-manager-and-puzzletube-c4a-edition-betas Forum Thread])&lt;br /&gt;
&lt;br /&gt;
== Scoreboard ==&lt;br /&gt;
Scores are shown within the three launchers, but are also accessible via a web browser at [http://c4a.openpandora.org/ http://c4a.openpandora.org]&lt;br /&gt;
&lt;br /&gt;
== Developers SDK ==&lt;br /&gt;
&lt;br /&gt;
There are two ways of developing C4A stuff at the moment. First of all the official way from skeezix. Details of the official API for integrating with the Compo4All system can be found [[Compo4AllSDK|here]].&lt;br /&gt;
&lt;br /&gt;
The second way is to use libSparrowNet, an independent library from Ziz, which encapsulate the network stuff with background thread and multi platform support. Details can be found [[Using_C4A_with_libSparrowNet|here]].&lt;br /&gt;
&lt;br /&gt;
== Publishing a game to the servers ==&lt;br /&gt;
&lt;br /&gt;
Given that a game supports compo4all (pushes scores to it, say), a few steps remain.&lt;br /&gt;
&lt;br /&gt;
  - the compo4all server must be told about the game, via a config file submitted to skeezix (at the openpandora boards)&lt;br /&gt;
  - ideally, the http://c4a.openpandora.org/ website needs to have some marquee artwork (send an image to milkshake at the openpandora boards)&lt;br /&gt;
&lt;br /&gt;
A config file example (pulled from current indie game) is below; the values shoudl be more or less self explanatory, but I realize at this time this isn't a great deal of information; please ask if you're confused about the syntax or acceptible values and I'll update this page!&lt;br /&gt;
&lt;br /&gt;
Sample config file:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
    &amp;quot;active&amp;quot;: true,&lt;br /&gt;
    &amp;quot;plugin&amp;quot;: &amp;quot;scoreonly&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: null,&lt;br /&gt;
    &amp;quot;alltime&amp;quot;: true,&lt;br /&gt;
    &amp;quot;platforms&amp;quot;: [ &amp;quot;pandora&amp;quot; ],&lt;br /&gt;
    &amp;quot;league&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
    &amp;quot;shortname&amp;quot;: &amp;quot;mygame&amp;quot;,&lt;br /&gt;
    &amp;quot;longname&amp;quot;: &amp;quot;My Game!&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;highest-first&amp;quot;,&lt;br /&gt;
    &amp;quot;dispunit&amp;quot;: &amp;quot;points&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;int&amp;quot;,&lt;br /&gt;
    &amp;quot;field&amp;quot;: &amp;quot;indie&amp;quot;,&lt;br /&gt;
    &amp;quot;genre&amp;quot;: &amp;quot;logic&amp;quot;,&lt;br /&gt;
    &amp;quot;execinfo&amp;quot;: {&lt;br /&gt;
    &amp;quot;pandora&amp;quot;: {&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;standalone&amp;quot;,&lt;br /&gt;
    &amp;quot;pnd_unique_id&amp;quot;: &amp;quot;squared!.gandi&amp;quot;,&lt;br /&gt;
    &amp;quot;last_known_filename_hint&amp;quot;: &amp;quot;squared.pnd&amp;quot;,&lt;br /&gt;
    &amp;quot;command_line_add&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;last_known_appdata_hint&amp;quot;: &amp;quot;squared&amp;quot;,&lt;br /&gt;
    &amp;quot;file_dependancies_hint&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Permissible values..&lt;br /&gt;
&lt;br /&gt;
ordering: lowest-first highest-first&lt;br /&gt;
type: standalone&lt;br /&gt;
league: all&lt;br /&gt;
field: indie arcade&lt;br /&gt;
genre: logic strategy racing action shmup runngun&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27139</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27139"/>
		<updated>2013-05-11T00:27:36Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the execution info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
=== Getting the execution info ===&lt;br /&gt;
&lt;br /&gt;
The execinfo request will get you some details so you can actually run the application needed for a given game. The url form is:&lt;br /&gt;
&lt;br /&gt;
Example: skeezix.wallednetworks.com:13001/execinfo_1/microbes/pandora&lt;br /&gt;
&lt;br /&gt;
Example return:&lt;br /&gt;
  - command_line_add&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
  - &amp;quot;file_dependancies_hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  - &amp;quot;last_known_filename_hint&amp;quot;: &amp;quot;microbes1.0rel2-1.pnd&amp;quot;&lt;br /&gt;
  - &amp;quot;pnd_unique_id&amp;quot;: &amp;quot;microbes.wb.mainapp&amp;quot;&lt;br /&gt;
  - &amp;quot;type&amp;quot;: &amp;quot;standalone&amp;quot;&lt;br /&gt;
  - &amp;quot;last_known_appdata_hint&amp;quot;: &amp;quot;microbes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
File dependancies could be things like &amp;quot;roms/dkong.zip&amp;quot; for a MAME dependancy, say.&lt;br /&gt;
&lt;br /&gt;
Command line add could be: &amp;quot;--c4a --game foo&amp;quot; or whatever the application needs to tell it we're running from a c4a frontend.&lt;br /&gt;
&lt;br /&gt;
The actual invocation could be done a number of ways, such as by using pnd_run or pnd_run.sh directly; you can use libpnd (built into the firmware) for all the heavy lifting .. it has utility functions for most everything you need.&lt;br /&gt;
&lt;br /&gt;
Some quick off-memory pseudocode follows-- though its so close it would nearly compile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Now, libpnd gives you everything you need to run stuff, but you have to call a few functions.. its not all rolled into one.&lt;br /&gt;
&lt;br /&gt;
Why?&lt;br /&gt;
&lt;br /&gt;
Because it lets you be efficient; your steps are usually..&lt;br /&gt;
i) Ask it to find pnd_run.sh &amp;lt;- you can skip it, and use the firmware path if you want&lt;br /&gt;
ii) Ask it for a path set from config &amp;lt;- you can skip it, hardcode it if you like: the fw conf is:&lt;br /&gt;
/media/*/pandora/apps:/media/*/pandora/desktop:/media/*/pandora/menu:/usr/pandora/apps&lt;br /&gt;
- you feed that to the discovery function&lt;br /&gt;
iii) Ask it to run a discovery (return all apps within a path set)&lt;br /&gt;
--&amp;gt; keep this value; it returns a 'box', a linked list, save it so that you don't have to re-discover for every run; discover once, and then you are run-instantly next run&lt;br /&gt;
iv) for loop over the result list, looking for unique-id match&lt;br /&gt;
v) ask libpnd to run the entry you found (just pass the box pointer into the run function)&lt;br /&gt;
&lt;br /&gt;
Its pretty easy for me anyway :) All you need is steps 3-5.&lt;br /&gt;
&lt;br /&gt;
If I roll you a utility 'run the damned pnd' function, it'll be doing all that stuff every time... pretty inefficient.&lt;br /&gt;
&lt;br /&gt;
The code would be like this:&lt;br /&gt;
&lt;br /&gt;
Given char *my_unique_id that you know from the server.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;pnd_pxml.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_utility.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_conf.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_container.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_discovery.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_apps.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// run a discovery&lt;br /&gt;
pnd_box_handle g_active_apps = NULL;&lt;br /&gt;
char *searchpath = &amp;quot;/media/*/pandora/apps:/media/*/pandora/desktop:/media/*/pandora/menu:/usr/pandora/apps&amp;quot; &amp;lt;- from conf file!&lt;br /&gt;
&lt;br /&gt;
g_active_apps = pnd_disco_search ( searchpath, NULL ); &amp;lt;- keep this value for the life of the frotnend session&lt;br /&gt;
&lt;br /&gt;
if ( ! g_active_apps ) {&lt;br /&gt;
printf ( life is hell )&lt;br /&gt;
return ( sucks )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pnd_disco_t *a = pnd_box_get_head ( g_active_apps );&lt;br /&gt;
void *nexta = NULL;&lt;br /&gt;
&lt;br /&gt;
while ( a ) {&lt;br /&gt;
nexta = pnd_box_get_next ( a );&lt;br /&gt;
&lt;br /&gt;
if ( strncmp ( a -&amp;gt; unique_id, my_unique_id, strlen ( my_unique_id ) ) == 0 ) {&lt;br /&gt;
// found disco-t entry, run it&lt;br /&gt;
&lt;br /&gt;
ret = pnd_apps_exec_disco ( &amp;quot;/usr/scripts/pnd_run.sh&amp;quot;, a, 0 /* options */, NULL );&lt;br /&gt;
if ( ret ) .....&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a = nexta;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
Thats it :)&lt;br /&gt;
&lt;br /&gt;
Now, the pnd_run.sh path might be wrong, I dont' sleep much :)&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
Now, you want to pass args.. theres some params to pnd_apps_exec_disco() so you can pass it args, I think:&lt;br /&gt;
&lt;br /&gt;
pnd_apps_exec_info_t extra;&lt;br /&gt;
extra.args = &amp;quot;--game foo&amp;quot;&lt;br /&gt;
then pass PND_EXEC_OPTION_INFO into the 'args' bit instead:&lt;br /&gt;
&lt;br /&gt;
ret = pnd_apps_exec_disco ( &amp;quot;/usr/scripts/pnd_run.sh&amp;quot;, a, PND_EXEC_OPTION_INFO /* options */, &amp;amp;extra );&lt;br /&gt;
&lt;br /&gt;
That should do it, but I'm going from memory. Still, thats pretty damned close pseudo-code... probably compiles ;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
|-&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27138</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27138"/>
		<updated>2013-05-11T00:27:08Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the execution info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
=== Getting the execution info ===&lt;br /&gt;
&lt;br /&gt;
The execinfo request will get you some details so you can actually run the application needed for a given game. The url form is:&lt;br /&gt;
&lt;br /&gt;
Example: skeezix.wallednetworks.com:13001/execinfo_1/microbes/pandora&lt;br /&gt;
&lt;br /&gt;
Example return:&lt;br /&gt;
  - command_line_add&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
  - &amp;quot;file_dependancies_hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  - &amp;quot;last_known_filename_hint&amp;quot;: &amp;quot;microbes1.0rel2-1.pnd&amp;quot;&lt;br /&gt;
  - &amp;quot;pnd_unique_id&amp;quot;: &amp;quot;microbes.wb.mainapp&amp;quot;&lt;br /&gt;
  - &amp;quot;type&amp;quot;: &amp;quot;standalone&amp;quot;&lt;br /&gt;
  - &amp;quot;last_known_appdata_hint&amp;quot;: &amp;quot;microbes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
File dependancies could be things like &amp;quot;roms/dkong.zip&amp;quot; for a MAME dependancy, say.&lt;br /&gt;
&lt;br /&gt;
Command line add could be: &amp;quot;--c4a --game foo&amp;quot; or whatever the application needs to tell it we're running from a c4a frontend.&lt;br /&gt;
&lt;br /&gt;
The actual invocation could be done a number of ways, such as by using pnd_run or pnd_run.sh directly; you can use libpnd (built into the firmware) for all the heavy lifting .. it has utility functions for most everything you need.&lt;br /&gt;
&lt;br /&gt;
Some quick off-memory pseudocode follows-- though its so close it would nearly compile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Now, libpnd gives you everything you need to run stuff, but you have to call a few functions.. its not all rolled into one.&lt;br /&gt;
&lt;br /&gt;
Why?&lt;br /&gt;
&lt;br /&gt;
Because it lets you be efficient; your steps are usually..&lt;br /&gt;
i) Ask it to find pnd_run.sh &amp;lt;- you can skip it, and use the firmware path if you want&lt;br /&gt;
ii) Ask it for a path set from config &amp;lt;- you can skip it, hardcode it if you like: the fw conf is:&lt;br /&gt;
/media/*/pandora/apps:/media/*/pandora/desktop:/media/*/pandora/menu:/usr/pandora/apps&lt;br /&gt;
- you feed that to the discovery function&lt;br /&gt;
iii) Ask it to run a discovery (return all apps within a path set)&lt;br /&gt;
--&amp;gt; keep this value; it returns a 'box', a linked list, save it so that you don't have to re-discover for every run; discover once, and then you are run-instantly next run&lt;br /&gt;
iv) for loop over the result list, looking for unique-id match&lt;br /&gt;
v) ask libpnd to run the entry you found (just pass the box pointer into the run function)&lt;br /&gt;
&lt;br /&gt;
Its pretty easy for me anyway :) All you need is steps 3-5.&lt;br /&gt;
&lt;br /&gt;
If I roll you a utility 'run the damned pnd' function, it'll be doing all that stuff every time... pretty inefficient.&lt;br /&gt;
&lt;br /&gt;
The code would be like this:&lt;br /&gt;
&lt;br /&gt;
Given char *my_unique_id that you know from the server.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;pnd_pxml.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_utility.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_conf.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_container.h&amp;quot;&lt;br /&gt;
#include &amp;quot;pnd_discovery.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// run a discovery&lt;br /&gt;
pnd_box_handle g_active_apps = NULL;&lt;br /&gt;
char *searchpath = &amp;quot;/media/*/pandora/apps:/media/*/pandora/desktop:/media/*/pandora/menu:/usr/pandora/apps&amp;quot; &amp;lt;- from conf file!&lt;br /&gt;
&lt;br /&gt;
g_active_apps = pnd_disco_search ( searchpath, NULL ); &amp;lt;- keep this value for the life of the frotnend session&lt;br /&gt;
&lt;br /&gt;
if ( ! g_active_apps ) {&lt;br /&gt;
printf ( life is hell )&lt;br /&gt;
return ( sucks )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pnd_disco_t *a = pnd_box_get_head ( g_active_apps );&lt;br /&gt;
void *nexta = NULL;&lt;br /&gt;
&lt;br /&gt;
while ( a ) {&lt;br /&gt;
nexta = pnd_box_get_next ( a );&lt;br /&gt;
&lt;br /&gt;
if ( strncmp ( a -&amp;gt; unique_id, my_unique_id, strlen ( my_unique_id ) ) == 0 ) {&lt;br /&gt;
// found disco-t entry, run it&lt;br /&gt;
&lt;br /&gt;
ret = pnd_apps_exec_disco ( &amp;quot;/usr/scripts/pnd_run.sh&amp;quot;, a, 0 /* options */, NULL );&lt;br /&gt;
if ( ret ) .....&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a = nexta;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
Thats it :)&lt;br /&gt;
&lt;br /&gt;
Now, the pnd_run.sh path might be wrong, I dont' sleep much :)&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
Now, you want to pass args.. theres some params to pnd_apps_exec_disco() so you can pass it args, I think:&lt;br /&gt;
&lt;br /&gt;
pnd_apps_exec_info_t extra;&lt;br /&gt;
extra.args = &amp;quot;--game foo&amp;quot;&lt;br /&gt;
then pass PND_EXEC_OPTION_INFO into the 'args' bit instead:&lt;br /&gt;
&lt;br /&gt;
ret = pnd_apps_exec_disco ( &amp;quot;/usr/scripts/pnd_run.sh&amp;quot;, a, PND_EXEC_OPTION_INFO /* options */, &amp;amp;extra );&lt;br /&gt;
&lt;br /&gt;
That should do it, but I'm going from memory. Still, thats pretty damned close pseudo-code... probably compiles ;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
|-&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27137</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27137"/>
		<updated>2013-05-11T00:23:58Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Launcher Developer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
=== Getting the execution info ===&lt;br /&gt;
&lt;br /&gt;
The execinfo request will get you some details so you can actually run the application needed for a given game. The url form is:&lt;br /&gt;
&lt;br /&gt;
Example: skeezix.wallednetworks.com:13001/execinfo_1/microbes/pandora&lt;br /&gt;
&lt;br /&gt;
Example return:&lt;br /&gt;
  - command_line_add&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
  - &amp;quot;file_dependancies_hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
  - &amp;quot;last_known_filename_hint&amp;quot;: &amp;quot;microbes1.0rel2-1.pnd&amp;quot;&lt;br /&gt;
  - &amp;quot;pnd_unique_id&amp;quot;: &amp;quot;microbes.wb.mainapp&amp;quot;&lt;br /&gt;
  - &amp;quot;type&amp;quot;: &amp;quot;standalone&amp;quot;&lt;br /&gt;
  - &amp;quot;last_known_appdata_hint&amp;quot;: &amp;quot;microbes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
File dependancies could be things like &amp;quot;roms/dkong.zip&amp;quot; for a MAME dependancy, say.&lt;br /&gt;
&lt;br /&gt;
Command line add could be: &amp;quot;--c4a --game foo&amp;quot; or whatever the application needs to tell it we're running from a c4a frontend.&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
|-&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27131</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27131"/>
		<updated>2013-05-03T14:38:26Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* SC Exec Return Values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
|-&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27130</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27130"/>
		<updated>2013-05-03T14:38:04Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* SC Exec Return Values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
!-&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27129</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27129"/>
		<updated>2013-05-03T14:37:49Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Spaghetti Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
The paramater's vary by module;&lt;br /&gt;
&lt;br /&gt;
An example for the 'scoreonly' simple module is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODULE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform: Currently 'pandora' should be specified&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Exec Return Values ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
! All seemed well&lt;br /&gt;
|-&lt;br /&gt;
! -1&lt;br /&gt;
! General error (such as bad arguments to sc); maybe failure to get RAM; possibly a problem with plugins (scoreonly module submissions.)&lt;br /&gt;
!&lt;br /&gt;
! -2&lt;br /&gt;
! Could not write file that was pulled; coudl not find player profile&lt;br /&gt;
|-&lt;br /&gt;
! -3&lt;br /&gt;
! For a file dependancy (such as MAEM ./hi file), file could not be found/opened&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27128</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27128"/>
		<updated>2013-05-03T14:32:46Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the Score Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27127</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27127"/>
		<updated>2013-05-03T14:32:13Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the Score Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
[code]&lt;br /&gt;
  - You can also pull a simple HTML (ASCII) dump: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/&lt;br /&gt;
  - Getting previous months can use backdating for both JSON and ASCII pulls; for example: skeezix.wallednetworks.com:13001/scoreboard_1/mspacman/201304/&lt;br /&gt;
[/code]&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27126</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27126"/>
		<updated>2013-05-03T14:27:42Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the Score Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
The scoreboard is an array of dictionairies, one dict per score entry.&lt;br /&gt;
&lt;br /&gt;
The dictionairies will include at least:&lt;br /&gt;
  - shortname -&amp;gt; the player's shortname (initials)&lt;br /&gt;
  - longname -&amp;gt; the player's long name (display name)&lt;br /&gt;
  - hi -&amp;gt; the actual score number (for single-score style of games); TBD for time-attack, and other kinds of games&lt;br /&gt;
  - time -&amp;gt; the epoch time the event occured&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27125</id>
		<title>Compo4AllSDK</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Compo4AllSDK&amp;diff=27125"/>
		<updated>2013-05-03T14:22:34Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Getting the Games List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Compo4All API Guide =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
All information from the server is transfered by the HTTP protocol, so you can use libraries such as libcurl to handle all that work.&lt;br /&gt;
Information is passed using the JSON markup language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launcher Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Getting the Games List ===&lt;br /&gt;
&lt;br /&gt;
Sending a HTTP GET request to [http://skeezix.wallednetworks.com:13001/curgamelist_1 /curgamelist_1] will return you a list of games, and details of those games&lt;br /&gt;
&lt;br /&gt;
The JSON response will be an array of dictionairies (one dictionairy per game.)&lt;br /&gt;
&lt;br /&gt;
The dictionaries will include at least the following fields for each game:&lt;br /&gt;
  - gamename -&amp;gt; the 'short name' of the game; for MAME, it is the driver name ('dkong') and not generally for display; it is a unique-id (unique within C4A)&lt;br /&gt;
  - longname -&amp;gt; the readable display name ('Donkey Kong')&lt;br /&gt;
  - status -&amp;gt; current status options include:&lt;br /&gt;
    - available -&amp;gt; show in frontends, available for scoring etc&lt;br /&gt;
    - active -&amp;gt; show in frontends (and highlight or in their own tab?), is actively in the ROT tournament or highlight right now (but is otherwise same as available)&lt;br /&gt;
    - wip -&amp;gt; do not show in frontend; available for scoring and functionality identical to 'active', but for developers to test their code prior to finalization&lt;br /&gt;
  - genre -&amp;gt; the 'type' of game (at a high level); current values are..&lt;br /&gt;
    - platform&lt;br /&gt;
    - maze&lt;br /&gt;
    - runngun&lt;br /&gt;
    - shmup&lt;br /&gt;
    - strategy&lt;br /&gt;
    - ... we can add more - to be determined&lt;br /&gt;
  - field -&amp;gt; the 'kind' of game it is, the platform; current values are&lt;br /&gt;
    - arcade -&amp;gt; implies c4a-mame will be used&lt;br /&gt;
    - indie -&amp;gt; means standalone; it will contact c4a, but not be part of c4a-mame&lt;br /&gt;
    - TBD&lt;br /&gt;
&lt;br /&gt;
=== Getting the Score Board ===&lt;br /&gt;
&lt;br /&gt;
Requesting [http://skeezix.wallednetworks.com:13001/json_1/bublbobl /json_1/(gamename)] will return you scoreboard details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game Developer ==&lt;br /&gt;
&lt;br /&gt;
=== Spaghetti Client ===&lt;br /&gt;
&lt;br /&gt;
The [http://boards.openpandora.org/index.php/topic/12127-release-compo4all-mame-ladderscoreboard-competition-for-classic-arcade-games/page-18#entry237182 Spaghetti Client] can be downloaded from the thread, and you can easily submit scores by starting a process with the following command line (assuming sc is bundled in your working directory)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;./sc MODE OPERATION GAMENAME PLATFORM SCORE&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SC Modes ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Mode&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! so&lt;br /&gt;
! Sends the Score only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SC Operations ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! push&lt;br /&gt;
! Sending data to the server&lt;br /&gt;
|-&lt;br /&gt;
! pull&lt;br /&gt;
! Get data from the server (not implemented)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26979</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26979"/>
		<updated>2013-03-11T23:55:39Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
A minimal (and typical) exec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A fully loaded one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot; extraarguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see the freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot; extraarguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Open a BMP Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Open a stylesheet&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26978</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26978"/>
		<updated>2013-03-11T23:49:41Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
A minimal (and typical) exec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A fully loaded one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot; extraarguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot; extraarguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Open a BMP Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Open a stylesheet&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26977</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26977"/>
		<updated>2013-03-11T23:47:37Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
A minimal (and typical) exec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A fully loaded one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot; extraarguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26976</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26976"/>
		<updated>2013-03-11T21:28:35Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or minimally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26975</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26975"/>
		<updated>2013-03-11T21:28:01Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or minimally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;exec command=&amp;quot;myprogram.sh&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26974</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26974"/>
		<updated>2013-03-11T21:27:20Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
* ''(optional)'' The extraarguments attribute may be missing; values here are appended to the Exec= .desktop line after everything else, and after adding a --: pnd_run.sh, when executing this, will let the dashdash arguments be handled first by the shell then fed into the pnd application. Regualr arguments above are enquoted and shielded by pnd_run.sh so not handled/expanded by the shell or desktop environment. Example: For file associations, &amp;quot;%f&amp;quot; (or others) may be a desireable argument.. however, placing %f into &amp;quot;arguments&amp;quot; element above will result in &amp;quot;%f&amp;quot; (literally!) being passed into the pnd application; adding &amp;quot;%f&amp;quot; into extraarguments will result in a file associated invocation with %f expanded to the desired string, instead. Specifically, &amp;quot;arguments&amp;quot; above will insert _-a &amp;quot;foo&amp;quot;_ into the Exec= line, while extraarguments will append _-- foo_.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26973</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26973"/>
		<updated>2013-03-11T21:23:52Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association (though it is possible to put multiple mimetypes into a single association it muddies the waters so is best avoided.) The association is a request that this application may open a specified mimetype(s). Many applications may associate the same mimetype, and the desktop may offer a menu to allow one to be selected.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(no longer used)'' The command attribute is not used; most linux distributions do not allow for alternative execution methods for file associations versus standalone execution, so we have dropped this idea&lt;br /&gt;
* ''(no longer used)'' The arguments attribution is no longer used; see 'command' for why. &lt;br /&gt;
&lt;br /&gt;
You will likely want to add an &amp;quot;extraarguments&amp;quot; element into the &amp;lt;exec&amp;gt; line, to contain '%f' or other hint; in this way the desktop environment will know to insert the filename(s), url(s), etc:&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26942</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26942"/>
		<updated>2013-03-08T04:15:32Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
'''Due to a built in limit, currently only 3 file association entries are supported. If you desire more (say, you're porting gimp and need 50...), please contact the firmware dev team :)'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association, and will create an additional .desktop file. (ie: One .desktop file for the executable and in normal category, and an optional .desktop file for the 'info' request, and another .desktop file (in Other category :/) for each file association. '''Note:''' if we suppress the display of the file association from the menu (great!), it also won't show up in the Thunar file-association confirmation/selection dialog and so may not be available (retarded xfce?); as such, we send the file assoc to the menu, but into Other. The .desktop file will be named after the unique-id, the subapp number within the pndfile, and the file-association number (1, 2, 3, ...), so as to have a unique filename.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(required)'' The command attribute on an association element specifies the command to be run; in the file association .desktop files, this will be used in the Exec= line in place of the normal &amp;lt;exec command='foo'&amp;gt;; in this fashion, you can (if you desire) have an alternative executable for each association, or just have it feed the same executable as normal invocation.&lt;br /&gt;
* ''(optional)'' The arguments attribution on the association element allows you to request a special arugment to pnd_run.sh, that in turn is passed to your executable (the 'command' portion of the association.) This is where you specify say '%f' so that the desktop environment will pass in the implied filename (or url, or whatever.) &lt;br /&gt;
&lt;br /&gt;
In PXML in the &amp;quot;arguments&amp;quot; element you will very likely wish to add one of these; see the Freedesktop specification, but suffice to say:&lt;br /&gt;
* ex: &amp;lt;association name=&amp;quot;myapp png loader&amp;quot; filetype&amp;quot;image/pnd&amp;quot; command=&amp;quot;run.sh&amp;quot; arguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/mysdcard/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26941</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26941"/>
		<updated>2013-03-08T04:14:24Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
'''Due to a built in limit, currently only 3 file association entries are supported. If you desire more (say, you're porting gimp and need 50...), please contact the firmware dev team :)'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains one or multiple association-elements. Every association-element represents one file action association, and will create an additional .desktop file. (ie: One .desktop file for the executable and in normal category, and an optional .desktop file for the 'info' request, and another .desktop file (in Other category :/) for each file association. '''Note:''' if we suppress the display of the file association from the menu (great!), it also won't show up in the Thunar file-association confirmation/selection dialog and so may not be available (retarded xfce?); as such, we send the file assoc to the menu, but into Other. The .desktop file will be named after the unique-id, the subapp number within the pndfile, and the file-association number (1, 2, 3, ...), so as to have a unique filename.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;. It will be shown in menus, so include your app name ideally.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(required)'' The command attribute on an association element specifies the command to be run; in the file association .desktop files, this will be used in the Exec= line in place of the normal &amp;lt;exec command='foo'&amp;gt;; in this fashion, you can (if you desire) have an alternative executable for each association, or just have it feed the same executable as normal invocation.&lt;br /&gt;
* ''(optional)'' The arguments attribution on the association element allows you to request a special arugment to pnd_run.sh, that in turn is passed to your executable (the 'command' portion of the association.) This is where you specify say '%f' so that the desktop environment will pass in the implied filename (or url, or whatever.) &lt;br /&gt;
&lt;br /&gt;
In PXML in the &amp;quot;arguments&amp;quot; element you will very likely wish to add one of these; see the Freedesktop specification, but suffice to say:&lt;br /&gt;
* ex: &amp;lt;association name=&amp;quot;myapp png loader&amp;quot; filetype&amp;quot;image/pnd&amp;quot; command=&amp;quot;run.sh&amp;quot; arguments=&amp;quot;%f&amp;quot;/&amp;gt;&lt;br /&gt;
*   %f -&amp;gt; a single file&lt;br /&gt;
*   %F -&amp;gt; multiple files&lt;br /&gt;
*   %U -&amp;gt; a url&lt;br /&gt;
* and so on (see freedesktop specification in the Exec tag)&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/Foot/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -- %f&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26940</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26940"/>
		<updated>2013-03-08T03:25:50Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
'''This element is a 'recent' addition to the firmware (Super Zaxxon) - users will have to ensure they are in a late edition firmware'''&lt;br /&gt;
&lt;br /&gt;
'''Due to a built in limit, currently only 3 file association entries are supported. If you desire more (say, you're porting gimp and need 50...), please contact the firmware dev team :)'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(NOT USED)'' The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Code into the PXML in the &amp;quot;arguments&amp;quot; section; see the Freedesktop specification, but suffice to say:&lt;br /&gt;
* ex: &amp;lt;Exec ...... arguments=&amp;quot;%F&amp;quot;/&amp;gt;&lt;br /&gt;
* %f -&amp;gt; a single file&lt;br /&gt;
* %F -&amp;gt; multiple files&lt;br /&gt;
* %U -&amp;gt; a url&lt;br /&gt;
* and so on&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/Foot/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -a &amp;quot;%F&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26902</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26902"/>
		<updated>2013-03-06T22:22:42Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
'''This element is not integrated into the firmware (Release Zaxxon) yet - therefore using it will have no effect!'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(NOT USED)'' The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Code into the PXML in the &amp;quot;arguments&amp;quot; section; see the Freedesktop specification, but suffice to say:&lt;br /&gt;
* ex: &amp;lt;Exec ...... arguments=&amp;quot;%F&amp;quot;/&amp;gt;&lt;br /&gt;
* %f -&amp;gt; a single file&lt;br /&gt;
* %F -&amp;gt; multiple files&lt;br /&gt;
* %U -&amp;gt; a url&lt;br /&gt;
* and so on&lt;br /&gt;
&lt;br /&gt;
The result in the .desktop file is a Exec= line looking approximately like:&lt;br /&gt;
&lt;br /&gt;
* Exec=/usr/pandora/scripts/pnd_run.sh -p &amp;quot;/media/Foot/pandora/menu//ristrun.pnd&amp;quot; -e &amp;quot;run.sh&amp;quot; -b &amp;quot;ristrun&amp;quot; -a &amp;quot;%F&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26901</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26901"/>
		<updated>2013-03-06T22:20:11Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
'''This element is not integrated into the firmware (Release Zaxxon) yet - therefore using it will have no effect!'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association. ex: &amp;quot;Open PNG&amp;quot;&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to. ex: image/png&lt;br /&gt;
* ''(NOT USED)'' The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26900</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=26900"/>
		<updated>2013-03-06T22:19:25Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. In general it is likely that a working PXML file will stay valid, if the schema definition mentioned here is followed.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
The following specification is based on what the latest version of the PXML_schema.xsd definition accepts as valid data. Files that do not pass the validation might still work as expected, but if the validation is passed you can be (almost) 100% sure that it is supposed to be correct.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The &amp;lt;PXML&amp;gt; tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag only requires the &amp;quot;xmlns&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;package&amp;gt; element ===&lt;br /&gt;
Since &amp;quot;pnd&amp;quot;-files can contain various applications the new &amp;lt;package&amp;gt; element was introduced. It is meant to allow you to describe what the package is about. This will, at least at the moment (firmware 1 pre hotfix6), not be used by the pandora itself for detection, but is meant as tool for package repositories as well as package managers that might eventually be created. Each pnd should have one of those at the top (and only one). The information required in the &amp;lt;package&amp;gt; block will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;application&amp;gt; element ===&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many. The information required in the &amp;lt;application&amp;gt; blocks will be explained below in the respective section below.&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;package&amp;gt; area ==&lt;br /&gt;
As described above, each pnd should start with a package description. For single application packages this can basically be a copy of the respective areas from the &amp;lt;application&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;package id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (author, version...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/package&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier common to all versions of a particular PND package. This can be achieved by appending some random number to your package name or by simply generating a completely random, very long identifier. A good ID may consist of the application name, developer name and some key, for example ''battlejewels.skeezix.001'' or ''quake-1.pickle.001''. '''The package ID must not include characters which would be invalid in directory or file names, such as ?, &amp;gt;, /, etc. Use of such characters will prevent the PND from functioning.''' The package ID allows repositories to identify different versions of the same package and therefore determine whether that package should be updated. The package ID should therefore '''not''' be changed if a package is merely updated.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the package title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. Additional tags are optional. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The &amp;lt;application&amp;gt; area ==&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All other elements described in this section (exec, author...) should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The &amp;quot;id&amp;quot; attribute specifies an identifier for your current application, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* ''(optional)'' The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
'''Notice: appdata names with dashes in (e.g. quake-2 rather than quake2) will cause the pnd file to function improperly.'''    &lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
Below are the allowed elements inside the &amp;lt;application&amp;gt; blocks. You can have as many applications listed in a single PXML file as you want to (though there is/was a limit in libpnd that was set to about 50 once upon the time, which might eventually be completely be removed).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;exec&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The exec element should specify all the information needed to execute your application. An exec element must be included in every PXML file. Only exactly one exec element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* ''(optional)'' The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* ''(optional)'' The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* ''(optional)'' The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* ''(optional)'' The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* ''(optional)'' The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;author&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is mandatory. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies the name of the author.&lt;br /&gt;
* ''(optional)'' The website attribute specifies the website of the author.&lt;br /&gt;
* ''(optional)'' The email attribute specifies the e-mail of the author.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;version&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It is recommended to keep the entries as simple as possible, where possible just numbers. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: strings consisting of letters (a-z and A-Z) as well as the chars '+' and '-'.&lt;br /&gt;
* ''(optional'' You can specify a type attribute that is either set to &amp;quot;release&amp;quot;, &amp;quot;beta&amp;quot; or &amp;quot;alpha&amp;quot;. This will (at the moment) not be read by libpnd but package repositories might use it in some way (to eg mark &amp;quot;beta&amp;quot; versions explicitly or something like this). If this is not specified, &amp;quot;release&amp;quot; will be assumed.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot; type=&amp;quot;release&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;osversion&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here. If unsure, just use a '0' in the respective field.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The major attribute specifies the major version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The minor attribute specifies the minor version number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The release attribute specifies the release number. Valid entries: non negative integers.&lt;br /&gt;
* ''(required)'' The build attribute specifies what build the application is at. Valid entries: non negative integers.&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;titles&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The titles element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The titles element specifies the text that is shown to the users of your PND file as the application title. Inside the &amp;lt;titles&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;lt;titles&amp;gt; element with at least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language. Additional tags are optional.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;titles&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/titles&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;descriptions&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The descriptions element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
The descriptions element specifies the text that is shown to the users of your PND file as the package description. Inside the &amp;lt;descriptions&amp;gt; block should be one entry for each language you want to support. The first language listed should always be ''en_US''. The language is indicated by the lang attribute. The &amp;quot;descriptions&amp;quot;-element is optional, though it is highly recommended to specify it. If specified, at least one entry for &amp;quot;en_US&amp;quot; ( American English language) is required. Several of those elements are allowed, one for each lang that you want to display.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is new in HF6. For backwards compatibilty please include the &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt; once outside the &amp;lt;titles&amp;gt; block, too!&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;descriptions&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/descriptions&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&amp;lt;!--pre HF6 compatibility--&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;icon&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The icon element should specify a nice icon for your application. An icon element is optional, but if one is specified you have to include the src attribute. Only up to one icon element is allowed. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;licenses&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The licenses element is an element that contains multiple other elements.&lt;br /&gt;
&lt;br /&gt;
It contains multiple license elements. Every element represents one license (so you *can* also multilicense something). You have to provide at least one license for your application. You can basically enter anything you want, though if you are using an existing license, it is best to just enter the name and provide a link to the full version. This tag also allows you to provide links to websites with the sourcecode. &lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute specifies what the license is called. If you don't have a real license you can also enter some short text here (please keep it short!) or just enter &amp;quot;other&amp;quot; and doN't care no more.&lt;br /&gt;
* ''(optional)'' The url attribute can be used to specify a url to the full license text.&lt;br /&gt;
* ''(optional)'' The sourcecodeurl attribute can be used to specify a url to the sources.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;licenses&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;GPLv2+&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl-2.0.html&amp;quot; sourcecodeurl=&amp;quot;http://pandora.org/sources/package.tar.bz2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;license name=&amp;quot;other&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/licenses&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;previewpics&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element. Use the native 800x480 LCD screen resolution, minimenu and others will scale it down as needed.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Recommendation ====&lt;br /&gt;
&lt;br /&gt;
If you define multiple &amp;lt;previewpic&amp;gt; elements, then set the most illustrative picture as the primary &amp;lt;previewpic&amp;gt;!&amp;lt;br&amp;gt;&lt;br /&gt;
''Why?'' Because many context use only that picture at all or at that picture at first sight and more only on demand. ''Examples:''&lt;br /&gt;
* [[Minimenu]]'s preview function (toggled via &amp;quot;A&amp;quot;) shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/includes/rss.php Repo RSS feed] shows only the first picture,&lt;br /&gt;
* [http://repo.openpandora.org/?page=detail&amp;amp;app=pndmanager-bzar PNDManager]'s app info shows 1 picture at first sight, more on demand.&lt;br /&gt;
&lt;br /&gt;
Currently there is no technical definition of the ''&amp;quot;primary&amp;quot;'' &amp;lt;previewpic&amp;gt;, therefore ensure that your intended primary &amp;lt;previewpic&amp;gt;&lt;br /&gt;
* occurs first in the source code order,&lt;br /&gt;
* has a filename that lists it first in a typical lexicographical sorting order.&lt;br /&gt;
&lt;br /&gt;
''What is an illustrative picture?''&amp;lt;br&amp;gt;&lt;br /&gt;
It should quickly give an impression of the look &amp;amp; feel of an application.&amp;lt;br&amp;gt;&lt;br /&gt;
I.e. for video games this would mean and in-game screenshot rather than a main menu screenshot, except if the menu is just a small overlay, and the important parts of the game can still be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://boards.openpandora.org/index.php?/topic/8137-pnd-packagers-1-please-provide-previewpics-2-define-primary-pic-if-you-give-multiple/ Discussion in the developer forum]&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;info&amp;gt; element ===&lt;br /&gt;
====Description====&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above. Per application only up to one of those entries is allowed. If you need more, the best approach is to create an html file and link the other files.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* ''(required)'' type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file). Those two are the only types allowed if the validation against the scheme is meant to be successful.&lt;br /&gt;
* ''(required)'' src → A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;categories&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
For passing validation any category/subcategory entries have to confirm to the FDO specs linked above.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;associations&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
'''This element is not integrated into the firmware (Release Zaxxon) yet - therefore using it will have no effect!'''&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false (this is not checked via the schema!).&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The name attribute on an association element specifies the user-friendly action name for the association.&lt;br /&gt;
* ''(required)'' The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to.&lt;br /&gt;
* ''(required)'' The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The &amp;lt;clockspeed&amp;gt; element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* ''(required)'' The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example files ==&lt;br /&gt;
There are several example files available in the [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=tree;f=docs/examples git repository]. They do match the current specification and (unless mentioned differently) validate. Below the direct links and a short description what they are meant to show:&lt;br /&gt;
&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/PXML.xml PXML.xml]: This is a sample PXML.xml file making use of many different things.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/average-case_PXML.xml average-case_PXML.xml]: This is an example how a &amp;quot;common&amp;quot; pnd with just one application could look. Most of the information for the &amp;lt;package&amp;gt; block can in this case directly be copied over from the respective parts in the &amp;lt;application&amp;gt; block.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/full-sample_PXML.xml full-sample_PXML.xml]: This is a complex example defining a &amp;quot;real&amp;quot; package collection. It offers several applications, all using different features of PXML.&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-schema_PXML.xml minimum-schema_PXML.xml]: This is a minimum example that will validate with the schema but basically offer nothing beside what really is required. This application should work nicely with any pnd repositories based upon the PXML specs. '''NOTE:''' This application will not work with pre HF6, for support for OS versions up to HF6 an additional &amp;lt;title&amp;gt; block outside of &amp;lt;titles&amp;gt; is required!&lt;br /&gt;
* [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/examples/minimum-libpnd_PXML.xml minimum-libpnd_PXML.xml]: This is a minimum example that will work on the pandora, but is '''not''' following the schema and lots of information that will be required for repositories based on the PXML specs is not available.&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it. The schema is also available in a plaintext file described in words that are by far more compact than this page but still understandable for coders: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema_plaintext.txt plaintext description of the schema]&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository). Here is the file history: [http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=history;f=docs/PXML_schema.xsd PXML_schema.xsd file history]&lt;br /&gt;
Once on the history page, just click on the filename (right click -&amp;gt; save as) to download the latest version.&lt;br /&gt;
&lt;br /&gt;
The easiest way to run validation is using this command:&lt;br /&gt;
 xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml&lt;br /&gt;
To run it you have to have xmllint installed and the (latest) PXML_schema.xsd definition downloaded. Using this command you can now simply evaluate if the PXML.xml file is valid.  xmllint can be installed via the angstrom repository (it is part of libxml2-utils). &lt;br /&gt;
&lt;br /&gt;
'''Attention''': It is possible to validate PXML files that won't work with pre HotFix6. If you want to have the pnd work with basically all versions of the OS (you most likely want this!) please have a look above searching for ''&amp;lt;!--pre HF6 compatibility--&amp;gt;'' and include those blocks in your pxml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Official OpenPandora Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Development&amp;diff=6284</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Development&amp;diff=6284"/>
		<updated>2011-02-22T14:49:20Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kernel and Firmware==&lt;br /&gt;
* [[Development_Tools | Pandora kernel and Firmware reference information]] including SD card booting&lt;br /&gt;
* [[http://bugs.openpandora.org/ Pandora Bug Tracker]], [[Reporting bugs]] instructions&lt;br /&gt;
* Official [[Current_open_tasks_official | Open Tasks]] (please don't edit unless you are a dev)&lt;br /&gt;
&lt;br /&gt;
==Compiling Software==&lt;br /&gt;
* [[Setting up a cross-compiler|Set up a cross-compiler]] to compile code for the Pandora on your PC.&lt;br /&gt;
* Or, [[Bollocks | set up and compile directly on the Pandora, 'bollocks' style]].&lt;br /&gt;
&lt;br /&gt;
==Porting and Writing Software==&lt;br /&gt;
* If porting existing software, try the [[porting guide]].&lt;br /&gt;
* If creating new code, then the [[development tutorials]] may be useful.&lt;br /&gt;
&lt;br /&gt;
==Distributing Software==&lt;br /&gt;
* Learn more about the [[Libpnd hub|PND file format]] that is used for distribution.&lt;br /&gt;
* [[PND quickstart]] - Quickly learn how to make PNDs (using Linux) for your software.&lt;br /&gt;
&lt;br /&gt;
==Pandora firmware (kernel, libpnd, etc etc) governance==&lt;br /&gt;
* Learn more about [[firmware_governance|submitting patches]] and getting involved in firmware and library development&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Development&amp;diff=6283</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Development&amp;diff=6283"/>
		<updated>2011-02-22T14:48:00Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Kernel and Firmware==&lt;br /&gt;
* [[Development_Tools | Pandora kernel and Firmware reference information]] including SD card booting&lt;br /&gt;
* [[http://bugs.openpandora.org/ Pandora Bug Tracker]], [[Reporting bugs]] instructions&lt;br /&gt;
* Official [[Current_open_tasks_official | Open Tasks]] (please don't edit unless you are a dev)&lt;br /&gt;
&lt;br /&gt;
==Compiling Software==&lt;br /&gt;
* [[Setting up a cross-compiler|Set up a cross-compiler]] to compile code for the Pandora on your PC.&lt;br /&gt;
* Or, [[Bollocks | set up and compile directly on the Pandora, 'bollocks' style]].&lt;br /&gt;
&lt;br /&gt;
==Porting and Writing Software==&lt;br /&gt;
* If porting existing software, try the [[porting guide]].&lt;br /&gt;
* If creating new code, then the [[development tutorials]] may be useful.&lt;br /&gt;
&lt;br /&gt;
==Distributing Software==&lt;br /&gt;
* Learn more about the [[Libpnd hub|PND file format]] that is used for distribution.&lt;br /&gt;
* [[PND quickstart]] - Quickly learn how to make PNDs (using Linux) for your software.&lt;br /&gt;
&lt;br /&gt;
==Pandora firmware (kernel, libpnd, etc etc) governance==&lt;br /&gt;
* Learn more about [[firmware_governance|submitting patches]] to the firmware and libraries&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=5738</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=5738"/>
		<updated>2011-02-16T14:25:13Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers the specification for PXML files. To see the specification for PND repository files, please see the [[PND repository specification]].&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. Please wait until this standard is finished before writing a PXML file.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot;/&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The PXML-tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot; id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag accepts a few attributes, namely the &amp;quot;id&amp;quot; and &amp;quot;xmlns&amp;quot; attributes.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
* '''DEPRECATED; SEE &amp;quot;application&amp;quot; tag.''' The &amp;quot;id&amp;quot; attribute specifies an identifier for your PND package, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
=== The Application-tag ===&lt;br /&gt;
====Description====&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;id&amp;quot; attribute specifies an identifier for your PND package, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
=== The title element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The title element specifies the text that is shown to the users of your PND file as the application title. This element can be specified multiple times in multiple languages (the language is indicated by the lang attribute).&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The description element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The description element specifies the text that is shown to the users of your PND file as the application description. This element can be specified multiple times in multiple languages the language is indicated by the lang attribute.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;description&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The exec element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The exec element should specify all the information needed to execute your application.&lt;br /&gt;
An exec element must be included in every PXML file. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The icon element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The icon element should specify a nice icon for your program.&lt;br /&gt;
An icon element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The info element ===&lt;br /&gt;
====Description====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file)&lt;br /&gt;
* src → '''required''' A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The previewpics element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element.&lt;br /&gt;
&lt;br /&gt;
* The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The author element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The name attribute specifies the name of the author.&lt;br /&gt;
* The website attribute specifies the website of the author.&lt;br /&gt;
* The email attribute specifies the e-mail of the author. This attribute is not yet supported by libpnd, but please specify it anyways.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The version element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The major attribute specifies the major version number. This number should be 0 or more.&lt;br /&gt;
* The minor attribute specifies the minor version number. This number should be 0 or more.&lt;br /&gt;
* The release attribute specifies the release number. This number should be 0 or more.&lt;br /&gt;
* The build attribute specifies what build the application is at. This number should be 0 or more.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The osversion element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here.&lt;br /&gt;
An osversion element is optional. It accepts the same attributes as the version element.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The categories element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The associations element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false.&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* The name attribute on an association element specifies the user-friendly action name for the association.&lt;br /&gt;
* The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to.&lt;br /&gt;
* The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; exec=&amp;quot;-f %s --no-deinterlacing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; exec=&amp;quot;-f %s --crash-on-success&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The clockspeed element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The mkdir element ===&lt;br /&gt;
&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The PXML may request creation of directories on the SD card.&lt;br /&gt;
&lt;br /&gt;
'''This should be used sparingly.'''&lt;br /&gt;
&lt;br /&gt;
There are a number of scenarios in which this may be useful; should an application wish to attempt to establish a canonicle location for a file, it can request a path be created. This can avoid user confusion -- user merely plugs in SD, waits a few moments, pulls out SD, and inspects it to see what directories he may populate. Consider 'id' files for Quake -- the user might have many ports of the game, such as Quake, or ioquake, or others. They could all share the same id pak files, but the user may not know where to put them. (Especially since the pnd-file itself does not have user documentation available perhaps.) Consider ROM-paths for emulators .. perhaps the emulator expects ROMs in a specific location? If so, the author may wish to have that location created, to make it obvious.&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
The paths are created on the SD that contains the pnd.&lt;br /&gt;
The paths may not include &amp;quot;..&amp;quot; or wildcards.&lt;br /&gt;
&lt;br /&gt;
It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* dir -&amp;gt; the name of the path to be created; it may not be multiple levels deep - to effect that, include multiple &amp;lt;dir path=&amp;quot;...&amp;quot;/&amp;gt; entries&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mkdir&amp;gt;&lt;br /&gt;
  &amp;lt;dir path=&amp;quot;/foo/bar&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/mkdir&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is in /pandora/desktop on SD1 (/media/mmcblk0p1 say), then /media/mmcblk0p1/foo/bar will be created.&lt;br /&gt;
&lt;br /&gt;
== Example file ==&lt;br /&gt;
Please see the [[PXML_archetype|PXML archetype]].&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it.&lt;br /&gt;
&lt;br /&gt;
The current-most XSD is in 'libpnd' (in the git repository.) Look in docs: http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=docs/PXML_schema.xsd;h=2d28bbeb42d6f6a96c74161825b06f917318fa54;hb=HEAD&lt;br /&gt;
&lt;br /&gt;
You will also need to put the XML schema for the PXML format in the same folder as your PXML file. Note that the current PXML schema is horribly out of date.&lt;br /&gt;
&lt;br /&gt;
When you have done that, and know how to use it, you need to change a few things in your PXML file. In your PXML tag, change the contents from this...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt; ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...to this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;PXML_schema.xsd&amp;quot;&amp;gt; ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the PXML file can be validated.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=5592</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=5592"/>
		<updated>2011-02-11T01:26:37Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* minimenu / mmenu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{IntroNote | This Wiki is an unofficial community project, and Open Pandora Ltd. is not responsible for its content. Neither is the Wiki an official source of information about your device. &amp;lt;br/&amp;gt;We can always use more help, look [[Getting_involved#The_Wiki | here]] to find out how you can get involved.}}&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|The Pandora.]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion! Ask on the [http://boards.openpandora.org/ Official Open Pandora forum] if you want a definitive answer.&lt;br /&gt;
&lt;br /&gt;
If you find a problem which is not explained after visiting the forum, be sure to report it in the [http://bugs.openpandora.org/ Bug Tracker]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[http://www.open-pandora.org/ Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[http://www.open-pandora.org/ Open Pandora Ltd]] cannot be held responsible for any resulting damages that occur from you modifying your Pandora.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the [http://apps.openpandora.org Pandora Apps] website, the [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive], or the websites of trusted developers.&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – that is more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
*Battery case (note: it can be difficult to open. [http://boards.openpandora.org/index.php?/topic/963-complain-about-battery-case-here/ Here] is how to do it)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable (As of 3rd November 2010 these are not yet included in the box and will ship separately as available)&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric [[keypad]]&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be clocked higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (For example, turning Wi-Fi off will give better battery life.)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB [[NAND]] FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric [[keypad]]&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the original Nintendo DS. (See the [[#Applications | Applications]] section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
If you find this linux stuff is a bit new and overwhelming, please try the [[Quickstart | quickstart page]] for a simple walk through the first steps (including downloading the codec pack) and please provide feedback on the forums about how it can be improved and still kept simple.&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket. &lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;fast charge&amp;quot; just put the system into &amp;quot;low-power&amp;quot; mode. You cannot charge the system while _off_. This is currently a feature and may change in future versions of the firmware. &lt;br /&gt;
&lt;br /&gt;
You can find more useful information about charging on the [[Power_modes]]-page.&lt;br /&gt;
&lt;br /&gt;
As an added note by MWeston:&lt;br /&gt;
IF YOU POWERED THE SYSTEM WITHOUT A BATTERY, SHUT IT OFF BEFORE STICKING THE BATTERY BACK IN.&lt;br /&gt;
&lt;br /&gt;
Finally, don't just leave your Pandora plugged in forever.  Unplug it once every couple days while using it to allow the battery to discharge from full (to around 90% or less?).  If you're not going to use your Pandora for a while, discharge the battery to around 40%, remove the battery, wrap it in a plastic bag (a Ziplock-type bag?), and stick it in the fridge.&lt;br /&gt;
&lt;br /&gt;
Leaving your Pandora plugged in indefinitely, even while in low-power mode, may damage the battery!  See the [http://boards.openpandora.org/index.php?/topic/640-warning-dont-leave-your-pandora-plugged-in-for-too-long/|the Open Pandora Boards] for more details.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the Analog Nubs [http://pandorawiki.org/Nubs]====&lt;br /&gt;
&lt;br /&gt;
The nubs automatically calibrate with use, and do so every time the unit is freshly powered up. Calibration information is stored inside the nub RAM, so when you power down (full power off, not just low power mode) the calibration information is lost. Calibrating the nubs is as simple as just using them -- do a few left right up down moves or swoosh around, and the nub will know its boundaries and be good thereafter.&lt;br /&gt;
&lt;br /&gt;
So no special effort is required to calibrate or use the nubs, but the first few motions you use of them may be erratic as they self-calibrate.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
==== Mouse (stylus/pointer) settings ====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
See the [[GUI]] page for more details on the user interfaces which can be used with the Pandora.&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
=====The main grid=====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
=====Skinning=====&lt;br /&gt;
&lt;br /&gt;
Skinning guide in gp32x forum: http://www.gp32x.com/board/index.php?/topic/53990-skinning-minimenu/&lt;br /&gt;
&lt;br /&gt;
A mmskin.conf from February 2011: http://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-libraries.git;a=blob;f=minimenu/skin/default/mmskin.conf;h=695888b3ae310d7ea04b4e682baed0c0c6fc4349;hb=98c1d081629ac9cbb3056b39097a3db968ce4055&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment (Xfce)===&lt;br /&gt;
&lt;br /&gt;
=====On the Desktop=====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal [[NAND]].&lt;br /&gt;
&lt;br /&gt;
=====In the menu=====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later on.&lt;br /&gt;
&lt;br /&gt;
If a window is too tall to fit on the screen you can move it by holding down the left sholder button and dragging the window with the stylus.&lt;br /&gt;
&lt;br /&gt;
===Pandora Button===&lt;br /&gt;
&lt;br /&gt;
When in the desktop style environment (Xfce), the Pandora button will bring up the applications menu, letting you quickly view the available applications. If held, it allows you to [[User_manual#Killing Applications | kill]] an unresponsive application. If that doesn't work, you can do a hard-reset of the Pandora by pressing and holding the Pandora button, then flicking the power switch to the right.&lt;br /&gt;
&lt;br /&gt;
===Power modes===&lt;br /&gt;
&lt;br /&gt;
The [[Power modes]] page provides full details of power modes, charging and battery care and lifetime.&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply sliding the power switch to the right will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display reduces power consumption.&lt;br /&gt;
&lt;br /&gt;
Shutdown will only occur if you are unplugged from the wall. The device can't be charged while off, to &amp;quot;fast charge&amp;quot; just switch to low power mode. See [[Power modes | power modes]] for more info.&lt;br /&gt;
&lt;br /&gt;
The actual behavior of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
=== USB Peripherals ===&lt;br /&gt;
You can connect USB2 High Speed peripherals directly, using the large USB connector, or a USB-OTG adaptor lead. Lower-speed USB devices will only work through a hub, the Pandora does not have the support circuitry inside to drive the interface in the correct mode.&lt;br /&gt;
See the [[USB_compatibility_list|the USB compatibility list]] for peripherals which have been tested so far.&lt;br /&gt;
&lt;br /&gt;
=== Killing Applications ===&lt;br /&gt;
Killing (or forcibly closing) an unresponsive application is as simple as holding down the Pandora button (just under start and select) for a few seconds. A dialog will appear which lists the open applications and gives you the option to kill them.&lt;br /&gt;
&lt;br /&gt;
=== Forcing a Restart ===&lt;br /&gt;
Occasionally something will happen causing your Pandora to become unresponsive (to the point that even killing a program isn't possible). When this happens it is necessary to force your Pandora to restart. The easiest way to do this is by holding the Pandora button and moving the power switch to the right.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Customization ==&lt;br /&gt;
This is just an overview of the customization and configuration you can do. Individual sections may link to their own pages.&lt;br /&gt;
&lt;br /&gt;
=== Setting Up WiFi ===&lt;br /&gt;
If wifi is enabled, and you are in range of an access point, a dialogue should appear offering to connect to it. See the [[Wifi]] page for more detail on using wifi.&lt;br /&gt;
&lt;br /&gt;
=== Setting Up Bluetooth ===&lt;br /&gt;
&lt;br /&gt;
=== Adjusting Brightness/Contrast ===&lt;br /&gt;
Brightness can be raised by pressing Fn+I and lowered with Fn+U. A tool is included with the Pandora called &amp;quot;LCD-Settings&amp;quot; (under the &amp;quot;Settings&amp;quot; menu) which can be used to adjust the brightness and the gamma.&lt;br /&gt;
&lt;br /&gt;
=== Changing Your Theme ===&lt;br /&gt;
Under &amp;quot;Settings&amp;quot; in the menu, you will find &amp;quot;Appearance&amp;quot; which will let you adjust the style, icon set, fonts, and a few other appearance related settings. Also, under &amp;quot;Window Manager&amp;quot; you can adjust the style of each window's title bar.&lt;br /&gt;
&lt;br /&gt;
=== Minimenu Configuration and Tricks ===&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
[[Minimenu Configuration Documentation | This section contains more information.]]&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal [[NAND]]; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as [[Introduction to PNDs | pnd-files]] (a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full featured web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail (warning: do not use ClawsMail, it will fill up your [[NAND]]. Solutions are [http://www.gp32x.com/board/index.php?/topic/56810-html-viewer-for-claws-mail/page__view__findpost__p__919458 being worked on]).&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora. &lt;br /&gt;
&lt;br /&gt;
*On this wiki, we maintain up-to-date lists of [[games]], [[Emulator list|emulators]], and [[Software projects|other software]], with download links. These lists are more comprehensive than the two official sites below, because not every program is submitted to both of them.&lt;br /&gt;
&lt;br /&gt;
*To help with the massive range of applications, the wiki has a page to bring together some stable and highly rated apps which will help you to get started, see [[Top 10 apps]]&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [http://apps.open-pandora.org Open App Store], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager opkg, which is a fork of [http://en.wikipedia.org/wiki/Ipkg ipkg]. Note this will install to [[NAND]] by default, so should be used with great caution. Type &amp;quot;df -h&amp;quot; into the terminal to see how much space you have left.&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;''Note: Your Pandora's internal memory (NAND) will be at close to capacity when you receive it. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the opkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates will probably use a pandora specific repository in the future).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installing a PND file (an application) ====&lt;br /&gt;
[[Image:PandoraSD.png|thumb|alt=SD card folder structure|This is what the folder structure on your SD card should look like. The drive letter and card name will vary; they're not important.]]&lt;br /&gt;
Installation of a PND file is so easy, you can hardly even call it installing. All you need to do is copy the PND file into the appropriate folder on your SD card. The first thing you'll need to do is set up some folders that the Pandora will recognise. It's recommended that you start with a blank, freshly formatted (or freshly purchased) SD card. For the purposes of this guide we'll refer to your SD card as &amp;lt;SD&amp;gt;. (Windows might call it something like G:\Removable Disk.) Create a new folder on the SD card called 'pandora':&lt;br /&gt;
*&amp;lt;SD&amp;gt;/pandora&lt;br /&gt;
Then open the 'pandora' folder, and create four more inside it: apps, appdata, desktop, and menu:&lt;br /&gt;
*&amp;lt;SD&amp;gt;/pandora/apps&lt;br /&gt;
*&amp;lt;SD&amp;gt;/pandora/appdata/&lt;br /&gt;
*&amp;lt;SD&amp;gt;/pandora/desktop/&lt;br /&gt;
*&amp;lt;SD&amp;gt;/pandora/menu/&lt;br /&gt;
Now you're ready to install a PND file. Just copy and paste (or drag and drop) (or save) the file into your folder of choice:&lt;br /&gt;
* Putting a PND in the /desktop folder will make it appear on the XFCE desktop&lt;br /&gt;
* Putting a PND in the /menu folder will make it appear in the XFCE system menu&lt;br /&gt;
* Putting a PND in the /apps folder will make it appear in both locations&lt;br /&gt;
* If you're using Minimenu instead of XFCE, it doesn't matter which of these three folders you use&lt;br /&gt;
Occasionally you'll come across an application which needs additional data (for example, the data files for Quake, or ROMs for an emulator). These files goes into the appdata folder. A PND program will automatically create its own subfolder within /appdata the first time it is run; then you can add files to it. More information on this is available on the [[Introduction_to_PNDs#Where_does_my_data_go.3F_How_do_I_make_files_visible_to_the_applications.3F | introduction to PNDs]] page.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
For more detail about firmware, see the [[Introduction to firmware]] page.&lt;br /&gt;
&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Updates to the firmware are currently provided as Hotfix packages, in [[Introduction to PNDs |PND]] format. Check the OpenPandora official [http://www.open-pandora.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=178&amp;amp;Itemid=32&amp;amp;lang=en support] page for the latest status. This will update any parts of the system which need to be updated. A more flexible system is planned, this should allow automatic downloading and installing of updates if you wish (but should not be expected before some time in 2011).&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
There are several reasons why you might wish to take this seemingly drastic step. It is possible that the system software gets corrupted somehow (for example, a power failure whilst you are completing the 'first boot' process). Alternatively, you might wish to install a copy of the firmware on an SD card if you are experimenting with different system configurations. Regardless, the Pandora is very robust, it is always possible to download some files to the SD card, and use these to return the internal [[NAND]] to the 'factory' state without too much effort. See the [[Introduction to firmware]] page for information on how to do this.&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
==Futher reading==&lt;br /&gt;
* [[Basic Linux Guide]] - For those who don't know very much about Linux and want to learn more.&lt;br /&gt;
* [[Minimenu Configuration Documentation]] - If you want to customize or configure Minimenu.&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
* [[Emulator list]] - See what systems you can emulate.&lt;br /&gt;
* [[Games]] - Take a look at the games that are available.&lt;br /&gt;
* [[Software projects]] - A list of all non-emulator, non-game software for Pandora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2389</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2389"/>
		<updated>2010-06-07T13:46:46Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Where Do .PNDs Go? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable (As of 05-25-10 these are not yet included in the box and will ship separately as available)&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
As an added note by MWeston:&lt;br /&gt;
IF YOU POWERED THE SYSTEM WITHOUT A BATTERY, SHUT IT OFF BEFORE STICKING THE BATTERY BACK IN.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the Analog Nubs ====&lt;br /&gt;
&lt;br /&gt;
The nubs automatically calibrate with use, and do so every time the unit is freshly powered up. Calibration information is stored inside the nub RAM, so when you power down (full power off, not just low power mode) the calibration information is lost. Calibrating the nubs is as simple as just using them -- do a few left right up down moves or swoosh around, and the nub will know its boundaries and be good thereafter.&lt;br /&gt;
&lt;br /&gt;
So no special effort is required to calibrate or use the nubs, but the first few motions you use of them may be erratic as they self-calibrate.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
Pasting from a forum post:&lt;br /&gt;
&lt;br /&gt;
  - closing the lid turns off the screen; it is _not_ low power mode -- rational: we figuredyou might want to play music or other tasks while the lid is closed. Turning off the LCD does save quite a bit of power, however.&lt;br /&gt;
&lt;br /&gt;
  - hitting the power switch briefly does to 'low power mode' or 'standby'; the cpu is clocked down, the lcd is turned off, networking is turned off; hit power again to restore to the previous state. In low power mode, the system is running, just really slow, and your system should get a few days in this mode before it runs out of batteries.&lt;br /&gt;
&lt;br /&gt;
  - and of course, 'off' -- xfce -&amp;gt; logout -&amp;gt; shut down, or minimenu 0-&amp;gt; select -&amp;gt; shutdown, and you're _off_.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [http://apps.open-pandora.org Open App Store], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
/pandora/mmenu -&amp;gt; show up only in minimenu, ignored by the rest of the system&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
NOTE: You can actually put subdirectories into those locations above, should you wish to organize your pnd-files somehow within those larger categories.&lt;br /&gt;
&lt;br /&gt;
==== Where do .PND files NOT go? ====&lt;br /&gt;
&lt;br /&gt;
.pnd files are looked for in the directories mentioned above; that list can be tailored if you wish to edit config files.&lt;br /&gt;
&lt;br /&gt;
.pnd files are not looked for in the / (root) of the SD cards.. this is _on purpose_; consider, if your SD card is 32GB, or if yo're using a 2TB USB drive even -- it could have tens of thousands of files on it; having the Pandora scan the entire device for pnd files would take forever. Instead, we made a well defined set of directories the system will use - /pandora for everything, with 'appdata' and 'menu' and 'desktop' and other special purpose directories.&lt;br /&gt;
&lt;br /&gt;
We could perhaps add / (root) of SD, without checking subdirectories, but thought it may run into confusion; we may add that later. But currently, the system will scan all subdirectories of the directories named above, so you can organize pnd files within those directories if you like.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
The process for reinstalling the firmware is as follows:&lt;br /&gt;
* Extract the contents of the zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.&lt;br /&gt;
* Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).&lt;br /&gt;
* Insert that SD card into pandora's first slot(it's the one closer to headphone jack).&lt;br /&gt;
* Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).&lt;br /&gt;
* A menu should appear on screen. Select &amp;quot;boot from SD1&amp;quot; using the d-pad by pressing B or X.&lt;br /&gt;
* Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.&lt;br /&gt;
* The device should turn off, press power (without holding R) to turn it back on.&lt;br /&gt;
* It should then start it's first boot process which migh take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.&lt;br /&gt;
&lt;br /&gt;
The first firmware release can be found [http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip here] (Version: 2010-05-01-Zaxxon)&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Bluetooth ====&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
With default configuration, preview pictures will be pulled in as you rest the selection on applications (and not during menu load time, since it is too slow to do that, currently.) When pulled in, a preview pic is cached to RAM (so is instant for pulling up this session again). With default configuration, the preview pic will also attempt to cache out to SD card so that even next session of the menu, it will pull up very quickly (partial second.) However, that very first time you pull up any given preview pic, it will take a few seconds to load due to mounting the pnd-application, looking for the preview inside, and unmounting the application.&lt;br /&gt;
&lt;br /&gt;
The Force All Preview option is in the Select menu; this option allows you to take the preview caching hit right away, for all applications. Trigger this option, then ignore your Pandora for a couple minutes while it chugs away.&lt;br /&gt;
&lt;br /&gt;
Upon completion, all pnd-applications containing Previews should have them in their SD cache (assuming you had sufficient space free.) What this means is that pulling up preview pics should be instant for this sesssion, and very fast for future sessions as well.. no more waiting a few seconds for the first time pull up of a preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
&lt;br /&gt;
First, download the compressed firmware file from [http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip]&lt;br /&gt;
&lt;br /&gt;
Then, follow the following instructions:&lt;br /&gt;
&lt;br /&gt;
#Extract the contents of this zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.&lt;br /&gt;
#Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).&lt;br /&gt;
#Insert that SD card into pandora's first slot (it's the one closer to headphone jack).&lt;br /&gt;
#Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).&lt;br /&gt;
#A menu should appear on screen. Select &amp;quot;boot from SD1&amp;quot; using the d-pad by pressing B or X.&lt;br /&gt;
#Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.&lt;br /&gt;
#The device should turn off, press power (without holding R) to turn it back on. It should then start it's first boot process which migh take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have successfully reflashed your firmware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: [http://www.gp32x.com/board/index.php?/topic/53637-first-boot-its-asking-for-a-login-and-password/page__view__findpost__p__858053 notaz]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Cross-compiler&amp;diff=2374</id>
		<title>Cross-compiler</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Cross-compiler&amp;diff=2374"/>
		<updated>2010-06-03T18:14:51Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To compile your applications to the ARM architecture you're going to need a cross-compiler.&lt;br /&gt;
&lt;br /&gt;
== Using the SDK-Installer ==&lt;br /&gt;
Cpasjuste on the GP32X forums has made a nice script to get a build environment and libraries installed on Ubuntu/Debian systems. Download links and a brief explanation can be found in [http://www.gp32x.com/board/index.php?/topic/52343-pandora-sdk-installer/ this thread].&lt;br /&gt;
&lt;br /&gt;
== Manual Installation ==&lt;br /&gt;
If you want a bit more control, Code-Sourcery hosts a bunch of cross-compiling suites for various platforms on their site, some editions have to be paid for, but they do have &amp;quot;lite&amp;quot; editions without support that are completely free.&lt;br /&gt;
&lt;br /&gt;
Head up onto [http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057 here]. The recommended release at time of writing is [http://www.codesourcery.com/sgpp/lite/arm/portal/release1039 2009q3].&lt;br /&gt;
&lt;br /&gt;
Installers are available for Linux and Windows. Alternatively, download and unpack the tarball, then add the bin directory to your path.&lt;br /&gt;
&lt;br /&gt;
== Example: Setting up a cross compiler using Code Sourcery, and doing so inside a VM ==&lt;br /&gt;
&lt;br /&gt;
Skeezix makes some notes in [http://www.rjmitchell.ca/~jeff/blog2009/2010/06/02/getting-up-and-going-with-a-crosscompiler-for-pandora-arm-in-5-minutes/ his blog] about setting up CodeSourcery's prebuilt toolchain in a VM very quickly.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2348</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2348"/>
		<updated>2010-05-27T17:40:30Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Where Do .PNDs Go? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable (As of 05-25-10 these are not yet included in the box and will ship separately as available)&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
As an added note by MWeston:&lt;br /&gt;
IF YOU POWERED THE SYSTEM WITHOUT A BATTERY, SHUT IT OFF BEFORE STICKING THE BATTERY BACK IN.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the Analog Nubs ====&lt;br /&gt;
&lt;br /&gt;
The nubs automatically calibrate with use, and do so every time the unit is freshly powered up. Calibration information is stored inside the nub RAM, so when you power down (full power off, not just low power mode) the calibration information is lost. Calibrating the nubs is as simple as just using them -- do a few left right up down moves or swoosh around, and the nub will know its boundaries and be good thereafter.&lt;br /&gt;
&lt;br /&gt;
So no special effort is required to calibrate or use the nubs, but the first few motions you use of them may be erratic as they self-calibrate.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
Pasting from a forum post:&lt;br /&gt;
&lt;br /&gt;
  - closing the lid turns off the screen; it is _not_ low power mode -- rational: we figuredyou might want to play music or other tasks while the lid is closed. Turning off the LCD does save quite a bit of power, however.&lt;br /&gt;
&lt;br /&gt;
  - hitting the power switch briefly does to 'low power mode' or 'standby'; the cpu is clocked down, the lcd is turned off, networking is turned off; hit power again to restore to the previous state. In low power mode, the system is running, just really slow, and your system should get a few days in this mode before it runs out of batteries.&lt;br /&gt;
&lt;br /&gt;
  - and of course, 'off' -- xfce -&amp;gt; logout -&amp;gt; shut down, or minimenu 0-&amp;gt; select -&amp;gt; shutdown, and you're _off_.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [http://apps.open-pandora.org Open App Store], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
/pandora/mmenu -&amp;gt; show up only in minimenu, ignored by the rest of the system&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
The process for reinstalling the firmware is as follows:&lt;br /&gt;
* Extract the contents of the zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.&lt;br /&gt;
* Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).&lt;br /&gt;
* Insert that SD card into pandora's first slot(it's the one closer to headphone jack).&lt;br /&gt;
* Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).&lt;br /&gt;
* A menu should appear on screen. Select &amp;quot;boot from SD1&amp;quot; using the d-pad by pressing B or X.&lt;br /&gt;
* Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.&lt;br /&gt;
* The device should turn off, press power (without holding R) to turn it back on.&lt;br /&gt;
* It should then start it's first boot process which migh take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.&lt;br /&gt;
&lt;br /&gt;
The first firmware release can be found [http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip here] (Version: 2010-05-01-Zaxxon)&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Bluetooth ====&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
With default configuration, preview pictures will be pulled in as you rest the selection on applications (and not during menu load time, since it is too slow to do that, currently.) When pulled in, a preview pic is cached to RAM (so is instant for pulling up this session again). With default configuration, the preview pic will also attempt to cache out to SD card so that even next session of the menu, it will pull up very quickly (partial second.) However, that very first time you pull up any given preview pic, it will take a few seconds to load due to mounting the pnd-application, looking for the preview inside, and unmounting the application.&lt;br /&gt;
&lt;br /&gt;
The Force All Preview option is in the Select menu; this option allows you to take the preview caching hit right away, for all applications. Trigger this option, then ignore your Pandora for a couple minutes while it chugs away.&lt;br /&gt;
&lt;br /&gt;
Upon completion, all pnd-applications containing Previews should have them in their SD cache (assuming you had sufficient space free.) What this means is that pulling up preview pics should be instant for this sesssion, and very fast for future sessions as well.. no more waiting a few seconds for the first time pull up of a preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2345</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2345"/>
		<updated>2010-05-27T13:11:32Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Power Modes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable (As of 05-25-10 these are not yet included in the box and will ship separately as available)&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
As an added note by MWeston:&lt;br /&gt;
IF YOU POWERED THE SYSTEM WITHOUT A BATTERY, SHUT IT OFF BEFORE STICKING THE BATTERY BACK IN.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the Analog Nubs ====&lt;br /&gt;
&lt;br /&gt;
The nubs automatically calibrate with use, and do so every time the unit is freshly powered up. Calibration information is stored inside the nub RAM, so when you power down (full power off, not just low power mode) the calibration information is lost. Calibrating the nubs is as simple as just using them -- do a few left right up down moves or swoosh around, and the nub will know its boundaries and be good thereafter.&lt;br /&gt;
&lt;br /&gt;
So no special effort is required to calibrate or use the nubs, but the first few motions you use of them may be erratic as they self-calibrate.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
Pasting from a forum post:&lt;br /&gt;
&lt;br /&gt;
  - closing the lid turns off the screen; it is _not_ low power mode -- rational: we figuredyou might want to play music or other tasks while the lid is closed. Turning off the LCD does save quite a bit of power, however.&lt;br /&gt;
&lt;br /&gt;
  - hitting the power switch briefly does to 'low power mode' or 'standby'; the cpu is clocked down, the lcd is turned off, networking is turned off; hit power again to restore to the previous state. In low power mode, the system is running, just really slow, and your system should get a few days in this mode before it runs out of batteries.&lt;br /&gt;
&lt;br /&gt;
  - and of course, 'off' -- xfce -&amp;gt; logout -&amp;gt; shut down, or minimenu 0-&amp;gt; select -&amp;gt; shutdown, and you're _off_.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [http://apps.open-pandora.org Open App Store], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
The process for reinstalling the firmware is as follows:&lt;br /&gt;
* Extract the contents of the zip to root (main) directory (folder) of your SD card. Fat32 and ext2 filesystems are supported.&lt;br /&gt;
* Make sure the pandora is turned off (remove the battery in case it crashes or doesn't turn off by using normal means).&lt;br /&gt;
* Insert that SD card into pandora's first slot(it's the one closer to headphone jack).&lt;br /&gt;
* Press and hold the right trigger ('R'), then turn the power on (if you have battery removed, insert it while holding R).&lt;br /&gt;
* A menu should appear on screen. Select &amp;quot;boot from SD1&amp;quot; using the d-pad by pressing B or X.&lt;br /&gt;
* Wait for flash process to finish. Connect the charger to be sure the battery doesn't run out while flashing. Press enter when asked to do so.&lt;br /&gt;
* The device should turn off, press power (without holding R) to turn it back on.&lt;br /&gt;
* It should then start it's first boot process which migh take up to 15 minutes, be sure to wait for it to finish, otherwise firmware corruption might happen again.&lt;br /&gt;
&lt;br /&gt;
The first firmware release can be found [http://notaz.gp2x.de/releases/pandora/pandora-firmware-2010-05-01-Zaxxon.zip here] (Version: 2010-05-01-Zaxxon)&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Bluetooth ====&lt;br /&gt;
&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
With default configuration, preview pictures will be pulled in as you rest the selection on applications (and not during menu load time, since it is too slow to do that, currently.) When pulled in, a preview pic is cached to RAM (so is instant for pulling up this session again). With default configuration, the preview pic will also attempt to cache out to SD card so that even next session of the menu, it will pull up very quickly (partial second.) However, that very first time you pull up any given preview pic, it will take a few seconds to load due to mounting the pnd-application, looking for the preview inside, and unmounting the application.&lt;br /&gt;
&lt;br /&gt;
The Force All Preview option is in the Select menu; this option allows you to take the preview caching hit right away, for all applications. Trigger this option, then ignore your Pandora for a couple minutes while it chugs away.&lt;br /&gt;
&lt;br /&gt;
Upon completion, all pnd-applications containing Previews should have them in their SD cache (assuming you had sufficient space free.) What this means is that pulling up preview pics should be instant for this sesssion, and very fast for future sessions as well.. no more waiting a few seconds for the first time pull up of a preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2327</id>
		<title>Libpnd hub</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2327"/>
		<updated>2010-05-17T00:50:57Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Recommended layout of a pnd directory structure, ie: how to make a well behaved pnd file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=libpnd - the Pandora Library=&lt;br /&gt;
&lt;br /&gt;
libpnd is a basic collection of functions and tools to make working Pandora-specific operations easier; to wit, it is hoped multiple applications will make use of this library rather than re-implement similar functionality and lead to problems down the road. (Instead we can run into problems together and thus clobberize them.) &lt;br /&gt;
&lt;br /&gt;
libpnd thus is a collection of ...&lt;br /&gt;
&lt;br /&gt;
* handy system code that hopefully is reusable - IO functions, CPU clock setting, etc.&lt;br /&gt;
* applications for supporting the Pandora unique features, such as pndnotifyd for auto-discovery of PXML and .pnd applicatons&lt;br /&gt;
* libraries for support of the .pnd and PXML systems; i.e.: for locating, executable, mounting and unmounting PXML-directory and .pnd applications, loading PXML and handling overrides&lt;br /&gt;
* hopefully reusable code for support of these things; i.e.: a rudimentary but useful config-file parser, rudimentary singly-linked-list container, etc.&lt;br /&gt;
&lt;br /&gt;
libpnd will/does also include utility functions for setting the CPU clock, reading GPIO inputs without depending on SDL, and other handy bits.&lt;br /&gt;
&lt;br /&gt;
'''You can, nay, are needed - contribute to libpnd!'''&lt;br /&gt;
&lt;br /&gt;
==Design considerations and philosophy==&lt;br /&gt;
&lt;br /&gt;
While much of libpnd is obvious, some decisions had to be made and it may help to know the guiding principle behind it; the Pandora device will be a handheld _computer_, but libpnd is designed to facilitate certain operations with goals towards..&lt;br /&gt;
&lt;br /&gt;
- simplicity - just work right, configuration not generally needed&lt;br /&gt;
&lt;br /&gt;
- obviousness - work as one would expect for this sort of device; i.e.: the user assumes something will work a certain way, and it does&lt;br /&gt;
&lt;br /&gt;
- like other guys - as an extension of the prior point, we have tried to follow UNIX spirit and provide reusable small tools to do the work those bits can be leveraged, but further tried to follow the spirit of other consoles. So while the device is a powerful little computer, it is probably going to be used by gaming and retro enthusiasts and so we color some of our decisions that way. (i.e.: consider that a PS2/xbox/PSP/etc will have save-game or data management as a separate application, for instance. If thats the best multi-million dollar companies can come up with over decades, well, its not so bad for us to fall back on!)&lt;br /&gt;
&lt;br /&gt;
- not over-defined; libpnd and PXML try to define a bunch of things, but we also do not _over define_; we try to lead by providing examples and styles, and while we have designed ahead for many things, we have also not nailed a lot of that down too early. It is better to be simple and shipped, then complex and a mess.. adaptable rather than scary.&lt;br /&gt;
&lt;br /&gt;
The library is of course broken into parts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include     - include these files to make use of the lib&lt;br /&gt;
lib         - the code that produces the lib&lt;br /&gt;
test        - mini tools to test various pieces of the lib in isolation&lt;br /&gt;
bin         - test tools - tools for testing the lib as it is developed, not anticipated to be used by many&lt;br /&gt;
testdata/   - for testing /etc/pandora; will contain 'conf' dir, for example&lt;br /&gt;
apps/       - actual applications people may use, such as pndnotifyd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For now though, here are a couple notes about the design.&lt;br /&gt;
&lt;br /&gt;
- it is straight C code, to be maximumly re-usable (perhaps C++ and other language bindings will tie back to it). I have gone out of my way to limit external references so that bindings are easier to make. &lt;br /&gt;
&lt;br /&gt;
- contrary to the previous comment, we've used a bit of C++ for the tinyxml parser .. hopefully this is not an issue.&lt;br /&gt;
&lt;br /&gt;
- I have tried to keep the API relatively simple and am faking some OO like data hiding to try to keep dev noses out of structures that are subject to change. i.e.: functions for list management and node access are provided, don't dig into the void* cast structs, or you could get burnt.&lt;br /&gt;
&lt;br /&gt;
- the API should be pretty stable; so far very few user-code changes have ever been needed.. lib internal changes should be binary compatible.&lt;br /&gt;
&lt;br /&gt;
- As a result of that decision, 'handles' are used; a handle is a 'black box' type, something you cannot just use 'handle h; h -&amp;gt; foo = 5' type code for. Instead, internally the library will cast the handle to the actual useful type (which may involve pointer arith etc). This way the user can be returned a handle, and pass the handle to various access functions to get useful data/operations.. but the user is not encouraged to look inside the data objects himself&lt;br /&gt;
&lt;br /&gt;
- As another implication, access functions are available aplenty; it is a little unwieldy perhaps, but its all about keeping the API good without the user peeking inside and risking being broken down the road. (By example, consider.. you use ftell() on a FILE object; you don't go looking in FILE for the 'position' member, since it might be platform specific, etc.)&lt;br /&gt;
&lt;br /&gt;
- The lib works pretty well, but there is room for improvement internally; it won't hurt my feelings for you to suggest improvements, and I'm sure we would all be grateful for any patches you provide. We've _started_ this library, but by no means wish to carry it alone!&lt;br /&gt;
&lt;br /&gt;
==Opportunities for improvement==&lt;br /&gt;
&lt;br /&gt;
Certainly nothing is perfect, especially when chasing moving targets.  Some aspects of the library are less efficient, or missing, or buggy, and a few things are noted here should someone have time. The API was designed to be pretty stable so the internal code could be altered without breaking the API interface.&lt;br /&gt;
&lt;br /&gt;
- better ISO lang handling .. due to shift from original PXML spec to new PXML spec with better lang support I've not updated some of the internal code, API uses etc to handle it. (even .desktop files could include all iso-lang titles, and let the WM pick through as the spec suggests.)&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
&lt;br /&gt;
libpnd (including all the apps etc) are released under the LGPL (ie: so there should be no encumbrances that prevent linking to commercial applications.)&lt;br /&gt;
&lt;br /&gt;
   1                   GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
&lt;br /&gt;
   2                        Version 2.1, February 1999&lt;br /&gt;
&lt;br /&gt;
==Obtaining the library==&lt;br /&gt;
&lt;br /&gt;
libpnd is in the Official Pandora GIT repo: [http://git.openpandora.org/cgi-bin/gitweb.cgi]&lt;br /&gt;
&lt;br /&gt;
To obtain yourself a copy, use something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://git.openpandora.org/pandora-libraries.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thats all you normally need. For copy-paste from the private Wiki sake, heres what I had before:&lt;br /&gt;
&lt;br /&gt;
Without going into how to set up a GIT, the summary that I (as a registered dev in the repo) used was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir libpnd&lt;br /&gt;
cd libpnd&lt;br /&gt;
git init&lt;br /&gt;
git remote add libpnd ssh://foo@git.openpandora.org/srv/git/pandora-libraries.git&lt;br /&gt;
git pull libpnd master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building the library==&lt;br /&gt;
&lt;br /&gt;
Standard 'make' should be sufficient here; pull down the directory from the GIT, cd into it, and run make. Thats it.&lt;br /&gt;
&lt;br /&gt;
Note that the make default target is 'everything', which will emit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libpnd.a - the static linked version of the lib&lt;br /&gt;
libpnd.so.1.0.1 - the dynlinked version&lt;br /&gt;
libpnd.so.1 - the stub for the shared lib; i.e.: apps should link against libpnd.so.1 and not the 1.0.1 over-specific version&lt;br /&gt;
bin/* - the 'test' dir and the 'apps' dir builds will end up in bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few additional make targets, however.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make clean - wipes out the object files, the bin files, and *~* (emacs backup files), empties some of the deploy stuff, etc. Do this before committing to GIT or we will beat you with sticks.&lt;br /&gt;
make deploy - populates the deploy/ directory, which is what is used inthe shipping images; i.e.: testdata/conf includes test configs, while deploy/etc/pandora/conf includes the configs we ship with. This make will copy over some of the libs and binaries and such.&lt;br /&gt;
make pnd - create a few sample pnd files for testing the lib on an x86 machine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Included Applications==&lt;br /&gt;
&lt;br /&gt;
===pndnotifyd===&lt;br /&gt;
&lt;br /&gt;
Manages the auto-discovery mechanism and integrating PXML.xml dir-apps and .pnd files into the FreeDesktop standard system (.desktop files). A dedicated libpnd-aware menu could leverage libpnd directly and not need pndnotifyd, though pndnotifyd does offer some handy bits such as HUPping apps to suggest to them that applications may have been added/removed (libpnd includes all the necessary functions for this as well.)&lt;br /&gt;
&lt;br /&gt;
===pndvalidator===&lt;br /&gt;
&lt;br /&gt;
Is mostly a skeleton right now; in the future, it is hoped it will inspect a PXML.xml and then check to ensure the referenced assets are present; the goal to validate the PXML.xml is spec compliant, and the resulting application would be useful.&lt;br /&gt;
&lt;br /&gt;
===discotest===&lt;br /&gt;
&lt;br /&gt;
One of the test tools; it essentially runs an auto-discovery to list off the found apps (be they PXML.xml dir apps or .pnd files), and can dump various data or invoke one or other little tasks; used to test lots of&lt;br /&gt;
bits of libpnd as it was developed.&lt;br /&gt;
&lt;br /&gt;
===rawpxmltest===&lt;br /&gt;
&lt;br /&gt;
Reads a given PXML.xml and spits out some of the fields found within.&lt;br /&gt;
&lt;br /&gt;
===test tools===&lt;br /&gt;
&lt;br /&gt;
See the test/ dir in the libpnd source for assorted goofy little test apps used for testing bits of libpnd over time. They also may serve as source examples for using some of the APIs. They're old and shoddy probably too.&lt;br /&gt;
&lt;br /&gt;
==Distributed PXML.xml-directory and pnd applications, how does running them actually work?==&lt;br /&gt;
&lt;br /&gt;
This is just a quick summary to save you guessing by reading this whole document.&lt;br /&gt;
&lt;br /&gt;
In essence, libpnd includes lots of real code, but in many places it passes heavy lifting off to shellscripts. This is both handy because the scripts are easily modified without recompilation, and further extends our design goals of making the library bindable to any other language.&lt;br /&gt;
&lt;br /&gt;
Remember, PXML.xml directories are just as executable/mountable as .pnd apps.&lt;br /&gt;
&lt;br /&gt;
So while libpnd is mostly straight-C and so easily bound to python or perl or whatever, libpnd itself invokes many scripts. Those scripts can be directly used by other applications, including other shellscripts.. so libnd functionality can even have bindings in other scripts. This is very flexible and powerful, and handy during debugging or SSHing into the Pandora, etc.&lt;br /&gt;
&lt;br /&gt;
The application lifecycle goes like this:&lt;br /&gt;
&lt;br /&gt;
- device is turned on&lt;br /&gt;
&lt;br /&gt;
- during init, pndnotifyd is brought up and inhales the config giles&lt;br /&gt;
&lt;br /&gt;
- pndnotidyd will attempt to auto-discover what PXML.xml directory apps and .pnd-file apps are in the configured searchpaths&lt;br /&gt;
&lt;br /&gt;
- pndnotifyd will set up filesystem watches on the directories in the notify searchpath; if any of those directories are touched, pndnotifyd will wake up and re-auto-discover .. possibly removing .desktop entries or creating new ones. (i.e.: you drop a new app into the app searchpath, or remove one, or mount an SD card, etc. This is how appications immediately show up or vanish from the window manager desktops.)&lt;br /&gt;
&lt;br /&gt;
- a libpnd aware launcher can execute applications direct (using libpnd)&lt;br /&gt;
&lt;br /&gt;
- a libpnd unaware launcher can execute applications via the .desktop standard system; pndnotidyd will emit .desktop files as needed.&lt;br /&gt;
&lt;br /&gt;
- when libpnd or a .desktop file need to execute an application, they do it via pnd_run.sh (which may be leveraged by other applications, but they hould use libpnd if they can instead, for utmost compatiblity down the road.) pnd_run.sh does the mount of the ISO, runs the actual execable and so on, as directed by libpnd or the command-line args from the .desktop. pnd_run.sh will clean up after everything as well.&lt;br /&gt;
&lt;br /&gt;
So it all works like magic, but it is not that complex a system once you've got the hang of what all is going on.&lt;br /&gt;
&lt;br /&gt;
application -&amp;gt; libpnd -&amp;gt; shellscripts -&amp;gt; system&lt;br /&gt;
&lt;br /&gt;
==FAQ: IF you want to make files visible to the apps, do you have to modify the pnd?==&lt;br /&gt;
&lt;br /&gt;
No. When apps write back to themselves, the writes go to their /pandora/appdata on the SD that houses them. The next time the app reads a file in its directory, the OS will ensure they get the newer file, which is the one in the appdata.&lt;br /&gt;
&lt;br /&gt;
Likewise, you can just drop a file into the appdata and the app will see it.&lt;br /&gt;
&lt;br /&gt;
The app doesn't know about appdata and its pnd file.. the OS and libpnd take care of all the magic.. the app sees one directory, but the reality is there is magic merging going on behind the scenes.&lt;br /&gt;
&lt;br /&gt;
==Assumptions about the filesystem and Configuration==&lt;br /&gt;
&lt;br /&gt;
Note that for libpnd to work, it makes certain assumptions about the filesystem and config files. Since libpnd was developed with the images it should work for the Pandora .. but just dropping libpnd onto another Linux distribution and it won't likely 'work out of the box'. Certain config files will need to be set, and certain conventions followed.&lt;br /&gt;
&lt;br /&gt;
===Searchpaths===&lt;br /&gt;
&lt;br /&gt;
libpnd was designed so that most everything is configured in files, and that these files should be easily hackable and easily overriden, without compromising the machine. It should be feasible to add a config file to an SD card, have it take over if available when required, and then 'undo' those configs simply by removal of the SD card and rebooting.&lt;br /&gt;
&lt;br /&gt;
To facilitate this design goal, all config files are 'sought' using a search-path system.&lt;br /&gt;
&lt;br /&gt;
Developers should be mindful of using the libpnd APIs so this behaviour is inherited to interested applications; developers could also reuse the logic for searching for files, if they find it useful.&lt;br /&gt;
&lt;br /&gt;
Searchpaths are colon-delimited list of paths, searched left to right.&lt;br /&gt;
&lt;br /&gt;
ex: foo:bar:/my/baz means to look for a given file in 'foo', then in 'bar', then in '/my/baz'.&lt;br /&gt;
&lt;br /&gt;
The standard config files have a default searchpath, and those config files will define further searchpaths for scripts and such the system uses. This makes the system highly flexible -- default scripts are included, but can be overridden by dropping the right named script on an SD card, or by altering a config file.&lt;br /&gt;
&lt;br /&gt;
See the example config files below for example searchpaths -- i.e.: how pndnotifyd searches for pnd_run, etc.&lt;br /&gt;
&lt;br /&gt;
===Notification paths===&lt;br /&gt;
&lt;br /&gt;
The 'apps' config includes a searchpath that specifies the sub-paths to be 'watched'. Various watch mechanisms exist for various filesystem types, but over the course of Pandora development (various kernels, various k-modules, various DM and WM's, I found the included system most stable, though not most current. After a final device image is settled on, it might be time to alter the notification system, but it should not impact the libpnd API.)&lt;br /&gt;
&lt;br /&gt;
Anyway, watches are placed upon the paths defined, and if anything in those paths changes, the auto-discovery code is kicked off to seek our PXML.xml and .pnd type applications in the search paths.&lt;br /&gt;
&lt;br /&gt;
Note that searchpath and notifypaths are different (and usually very similar, but have the option to be very different.)&lt;br /&gt;
&lt;br /&gt;
===Config files===&lt;br /&gt;
&lt;br /&gt;
libpnd includes a generic simple config file parser and assumes the presence of a few config files. It also includes defaults&lt;br /&gt;
so if a config is missing or broken things should work.&lt;br /&gt;
&lt;br /&gt;
In general, Pandora specific config files should be located in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/pandora/conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The config files are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conf -- this file is generally _not_ included with the Pandora and left to default; its job is to define the basic default searchpath for config files, so should you wish to override things entirely, you may need to alter this file. i.e.: If you wish to switch to test config files on SD or in /tmp, instead of using any other conf files .. you can create this guy. This provides a mechanism to short circuit the entire conf system.&lt;br /&gt;
&lt;br /&gt;
apps -- this config file defines auto-discovery and other application bundle parameters&lt;br /&gt;
&lt;br /&gt;
desktop -- this config defines &amp;quot;dotdesktop&amp;quot; .desktop and FreeDesktop integration paramters -- example is where to spit out icons or .desktop files from discovered PXML.xml or pnd applications&lt;br /&gt;
&lt;br /&gt;
categories -- this config maps PXML.xml spec based categories to FreeDesktop standard categories; in this way a PXML based applicatoin can show up in the appropriate categories of a WM that does not use libpnd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====conf File====&lt;br /&gt;
&lt;br /&gt;
No default is included with the distribution.&lt;br /&gt;
&lt;br /&gt;
The default search path is reasonable and assumes we want the official /etc/pandora/conf near the end, with checks to the SD cards for overrides first. (Likely most people will not override, so the canonical location will be used 99.9% of the time.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_SEARCHPATH &amp;quot;/media/mmcblk0p1/pandora/conf:/media/mmcblk1p1/pandora/conf:/etc/pandora/conf:./testdata/conf&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key for override is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_KEY        &amp;quot;conf.searchpath&amp;quot; /* if not found, use PND_CONF_SEARCHPATH */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which suggests using something like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[conf]&lt;br /&gt;
searchpath   /foo/bar:/baz/bing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====desktop File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Desktop configuration&lt;br /&gt;
&lt;br /&gt;
[dotfiles]&lt;br /&gt;
#(~/Desktop for xfce, /usr/share/applications for WMs that actually follow spec)&lt;br /&gt;
dotdesktoppath  ~/Desktop/      # path for pndnotifyd to spit .desktop files into (run as root)&lt;br /&gt;
iconpath        /tmp    # path for pndnotifyd to drop icons into (can be same as .desktop if WM permits)&lt;br /&gt;
&lt;br /&gt;
[launcher]&lt;br /&gt;
# if hupscript is commented out entirely, pndnotifyd will not try to find/run the hup&lt;br /&gt;
# if it is uncommented, pndnotifyd will attempt to invoke the hupscript after emitting .desktop files&lt;br /&gt;
# (the hupscript exists to hup the WMs to redisplay .desktop apps)&lt;br /&gt;
#hupscript      pnd_hup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====apps File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Application configuration&lt;br /&gt;
&lt;br /&gt;
[autodiscovery]&lt;br /&gt;
# searchpath is a list of paths (colon separated) in which to look for PXML.xml or .pnd-file applications&lt;br /&gt;
searchpath      /media/*/pandora/apps:/usr/pandora/apps&lt;br /&gt;
# notifypath is a list of paths to monitor; if anything in those paths changes, the searchpath is rescanned&lt;br /&gt;
# note that for each path chunk, all current subdirs of that path are also watched)&lt;br /&gt;
notifypath      /media:/media/*/pandora/apps:/usr/pandora/apps:./testdata/app?&lt;br /&gt;
&lt;br /&gt;
# PXMLs may be overridden .. i.e.: overrides are a subset of PXML, where the values are copied over the full PXML&lt;br /&gt;
[overrides]&lt;br /&gt;
# searchpath to look for PXML overrides (which are named by the unique-id)&lt;br /&gt;
searchpath      ~/pxml-overrides&lt;br /&gt;
&lt;br /&gt;
# [pnd] defines where to locate the pnd support scripts, so the user may override pnd_run.sh without clobbering built in&lt;br /&gt;
[pnd]&lt;br /&gt;
searchpath      /media/*/pandora/scripts:/usr/pandora/scripts&lt;br /&gt;
runscript       pnd_run.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====categories File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# dotdesktop configuration&lt;br /&gt;
&lt;br /&gt;
# this config file maps 'PXML' categories to free-desktop standard categories&lt;br /&gt;
# i.e.: category 'Foo' could map to more standard 'Utility', thus making .desktop file&lt;br /&gt;
# emitting a more useful thing&lt;br /&gt;
&lt;br /&gt;
# the standard listing of categories is:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/latest/apa.html&lt;br /&gt;
&lt;br /&gt;
# note that 'map' section in the config is _required_ for a match to be found; this&lt;br /&gt;
# is done to separate categories from (future) top-level directives&lt;br /&gt;
&lt;br /&gt;
default Application;Utility;Network;&lt;br /&gt;
&lt;br /&gt;
[map]&lt;br /&gt;
Development     Development&lt;br /&gt;
Education       Education&lt;br /&gt;
Games   Game&lt;br /&gt;
Graphics        Graphics&lt;br /&gt;
Internet        Network&lt;br /&gt;
Multimedia      AudioVideo&lt;br /&gt;
Office  Office&lt;br /&gt;
Settings        Settings&lt;br /&gt;
System  System&lt;br /&gt;
Utilities       Utility&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SD card layout===&lt;br /&gt;
&lt;br /&gt;
libpnd concerns itself with things in the 'pandora' root folder on SD. We agonized over this decision, but settled on this to avoid cases where someone with a 16GB SDHC card puts 50-million files with &amp;quot;.pnd&amp;quot; on them, and expects reasonable performance. Instead, applications for instance would have to be in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/menu -&amp;gt; apps that will go to /usr/share/applications and should show up in xfce menu by category&lt;br /&gt;
/pandora/desktop -&amp;gt; apps that will go to ~/Desktop and show up on user desktop as icons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following location is used by pmenu (and may get deprecated, but I've not discussed it with cpasjuste yet.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/apps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e.: the searchpath for autodiscovery includes /media/*/pandora/apps (and desktop and menu now)&lt;br /&gt;
&lt;br /&gt;
Also in the /pandora/ folder is a magic 'appdata' folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/appdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a .pndfile or PXML.xml dir get mounted, any writes back to the mounted area are put into appdata, with a subdir by the unique-id. i.e.: With the hypothetical MAME.pnd, it might update its config files after a user changes something, or create new files, or store hiscores or whatever. If it doesn't write them to NAND, and doesn't want ot write them to /mame/some/dir, but instead record it to itself for whatever reason, it would go to /pandora/appdata/MAMEs-ID/ instead. The pnd or PXML.xml app area is never modified during a run, only the appdata. (But when an application reads its own path, it will pick up the appdata version of the file instead of the actual file. Then magic of union-type filesystems!)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
If Myapp with unique-id foo.123 is mounted, then any write-backs are directed to..&lt;br /&gt;
&lt;br /&gt;
/pandora/appdata/foo.123/&lt;br /&gt;
&lt;br /&gt;
On the SD that hosts the application.&lt;br /&gt;
&lt;br /&gt;
===NAND layout===&lt;br /&gt;
&lt;br /&gt;
In addition to seeking applications in SD cards, /usr/pandora/apps is included in the default searchpath, so that 'built in' apps can be listed, or users can drop them there.&lt;br /&gt;
&lt;br /&gt;
It might be a cool addition to put a user homedir into the searchpath as well, so NAND but user-homedir (for on-device browser downloads, say.)&lt;br /&gt;
&lt;br /&gt;
==Command line tools and testing==&lt;br /&gt;
&lt;br /&gt;
A number of scripts and tools are included or built with libpnd, to facilitate testing of the lib as its being developed and to assist in making .pnd files and PXML.xml files.&lt;br /&gt;
&lt;br /&gt;
==PXML.xml and .pnd files==&lt;br /&gt;
&lt;br /&gt;
On most platforms, applications are distributed as an executable and optional datafiles and likely an installer. The installers job is to integrate the application into the filesystem, as the transport mechanism itself is not executable and is considered temporary. In Windows an application might be installed into Program Files, while in Unix an application might be dropped into /usr/local/bin .. data files in various other places.&lt;br /&gt;
&lt;br /&gt;
For the Pandora platform we wanted a very easy to use workflow -- download and run -- and also have a very different operating environment. With multiple SD cards available for expansion (and that space being highly desirable due to a smaller internal store) it is desirable to install applications to SD, and yet SD cards are by definition something users will wish to carry multiple of. With two slots, it could be quite a chore to install an application to SD1, its data to SD2, and then say have only one of them plugged in at a time, or switch which slot they're in, or any number of scenarios. i.e.: Installing onto a medium which may be present or not at any time is very different to how most operating systems work. So we made something new and awesome.&lt;br /&gt;
&lt;br /&gt;
The PXML.xml and .pnd-file approach we came up with attempts to address these issues.&lt;br /&gt;
&lt;br /&gt;
The goals:&lt;br /&gt;
&lt;br /&gt;
- for the user, an application can be a single file download&lt;br /&gt;
&lt;br /&gt;
- furthermore, there is no installation whatsoever, beyond dropping that single file into the right place on the SD card&lt;br /&gt;
&lt;br /&gt;
- using the application should be easy -- stick in the SD card, and tap/launch on the icon.&lt;br /&gt;
&lt;br /&gt;
- for uninstallation, delete the single file. Thats it, no fuss.&lt;br /&gt;
&lt;br /&gt;
- for the developer, creating that single file should be easy to do&lt;br /&gt;
&lt;br /&gt;
- for the system, performance should be high&lt;br /&gt;
&lt;br /&gt;
Remember, an application can be a .pnd 'bundle' (single file containing all the sub-files), or a PXML.xml 'dir application' (an unpacked .pnd esentially.) '''BOTH PXML.xml-dirs and .pnd's ARE EXECUTABLE.'''&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will auto-discover PXML.xml in a directory and consider that an application, emitting a .desktop file, just as well as a .pnd file. i.e.: This can be hand for development or users. Remember that a mounted PXML.xml dir still redirect write-backs to the /pandora/appdata directory, just like a full .pnd application. They are treated the same!&lt;br /&gt;
&lt;br /&gt;
===What are PXML.xml and .pnd files?===&lt;br /&gt;
&lt;br /&gt;
PXML.xml is a file describing an application&lt;br /&gt;
&lt;br /&gt;
A directory containing a PXML.xml _is executable_&lt;br /&gt;
&lt;br /&gt;
A .pnd file is the packaged up version of the directory that is executable.&lt;br /&gt;
&lt;br /&gt;
i.e.: a PXML.xml in a directory is just as executable as a .pnd representation of that directory.&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
mkdir OutcaST&lt;br /&gt;
cp outcast.bin OutcaST/&lt;br /&gt;
cp PXML.xml OutcaST/&lt;br /&gt;
# at this point, the OutcaST directory is now discoverable and executable&lt;br /&gt;
&lt;br /&gt;
pnd_make.sh -this -that OutcaST outcast.pnd&lt;br /&gt;
# at this point, outcast.pnd is executable (as is the OutcaST directory), so upload outcast.pnd to the Open Handhelds Archive and let people enjoy!&lt;br /&gt;
&lt;br /&gt;
===A note on including shared libs===&lt;br /&gt;
A philsophy for packaging that I am advocating is to 'just make applications work' -- avoid dependancy trees.&lt;br /&gt;
&lt;br /&gt;
Some guidelines:&lt;br /&gt;
&lt;br /&gt;
1) you can depend on shared libs included with the firmware to always be there&lt;br /&gt;
&lt;br /&gt;
2) you should include any shared libs you need for your app, that are not in the firmware (yes, this increases app size a little bit, and potentially makes for duplication among apps that use the same shared libs)&lt;br /&gt;
&lt;br /&gt;
3) if a shared lib becomes desirable in the firmware, it can be added there as a firmware patch easily (this has the advantage of gradulaly updating the entire user based, and apps easily saying 'we depend in firmware version X', rather than making for pnd-dependnacies and the equivilent of 'dll hell'&lt;br /&gt;
&lt;br /&gt;
4) You'll have to be careful in linking your application to ensure that the shared libs you are including in the pnd/PXML-dir are to be locatable by your binaries. ie: stick them in a 'lib/' dir in your bundle, and stamp your binary with a library-path './dir/' so they can be found, say. More later.&lt;br /&gt;
&lt;br /&gt;
===Future idea: pnd's for containing system-wide shared libs===&lt;br /&gt;
&lt;br /&gt;
This is something we've bounced around for quite awhile, but not committed to. As it keeps coming up I thought I'd put some notes here in public.&lt;br /&gt;
&lt;br /&gt;
It is possibly desirable to make a special searchpath that is discovered during machine boot, and any pnd's found there are automatically mounted (and left mounted) into a special path (say /usr/local/pandora/lib or somesuch.) This way, collections of handy utilities or shared libraries could be distributed as a pnd, and become available in consistent locations. If 10 applications need a shared lib, and don't want to duplciate it in each of their pnd files, this could be an approach.&lt;br /&gt;
&lt;br /&gt;
I tend to think it is best avoided, however, since it complicates the user experience -- we end up with pnd depandancies, and apps nolonger about to 'just work', and apps that did work and 'suddenly break' when other files are altered. The philosphy we're going for with pnd files is 'drag and drop' -- user downloads a pnd file, and it works.. a self contained application, nice and easy. We start complicating the dependancies, and it turns into 'dll hell' as seen on other platforms.&lt;br /&gt;
&lt;br /&gt;
That said, it is _not_ difficult to add into the existing system and design; we've been mulling it over, but it is best avoided for now. rather than complicate the system up front, let us try to get a functional and as lightweight-as-possible system on the uptake, gather some usage data points and then worry about upgrades :)&lt;br /&gt;
&lt;br /&gt;
===File format - PXML.xml / PXML Specification===&lt;br /&gt;
See the [[PXML_specification|PXML specification]]&lt;br /&gt;
&lt;br /&gt;
Alternatively the spec is included in the docs/ directory of the libpnd distribution, though the wiki version linked above should be considered cannon.&lt;br /&gt;
&lt;br /&gt;
A note on history; the PXML spec was originally created by EvilDragon, and went through a number of revisions as suggestions came in; as these things are wont to do, the target was ever moving and the scope and meaning of PXML changed so at some point a more strategic approach was needed. dflemstr took it upon himself to help recode some of the parse and re-evaluate many of the PXML decisions and hence was born the PXML-version-2 spec.&lt;br /&gt;
&lt;br /&gt;
===File format - .pnd files===&lt;br /&gt;
The pnd file format is pretty straight forward, though most will interact with it through the included (or community supplied) tools.&lt;br /&gt;
&lt;br /&gt;
Basically its just an ISO file (or other filesystem type) with a PXML.xml and an optional PNG icon appended. (example: cat appfolder.iso app.pxml icon.png &amp;gt; app.pnd) For ease of discussion, I refer to ISO but in fact you coudl be using squashfs or other types.&lt;br /&gt;
&lt;br /&gt;
The ISO filesystem portion of the file can include anything the developer wishes, as long as it includes a PXML.xml in its root file and an executable somewhere in there. It can also include images, audio files, data files of any kind. It can be small or large.&lt;br /&gt;
&lt;br /&gt;
Yes, the PXML.xml is included in the ISO portion (in the root directory), and also appended to the end of the .pnd file (for _convenience_ .. it is very easy and fast to locate in this position; we can backseek into the ISO to find the PXML, but if its a 500MB ISO it could take awhile. Hence, we append it and can find it in one seek.)&lt;br /&gt;
&lt;br /&gt;
This simple format makes it possible to easily create .pnd files with the default utility's of most operating systems. Further, it is a fairly fail-safe system -- the PXML is appended, but is also included within the ISO image part of the file so if the appended-PXML is ever lost (unpack and repack poorly, say) the system will still work (the PXML inside the ISO can be found easily, even without mounting the ISO _as_ an ISO, since it is a plaintext uncompressed image format.) &lt;br /&gt;
&lt;br /&gt;
Manually creating a .pnd (or even a PXML) is a pain so there will be a few helper scripts or maybe even a gui app out when we launch.&lt;br /&gt;
&lt;br /&gt;
Included with libpnd are some scripts to create PXML and pndfiles, though it is expected people will create handier utilities. See the tool section of this wiki for some details.&lt;br /&gt;
&lt;br /&gt;
Question from the gp32x forum regarding confusion of PXML location -- remember that in general mot developers will keep a directory that represents the .pnd or PXML-dir application. Their makefile/build-process will drop the executable(s) into that directory, which inludes a PXML.xml description of the application, and possibly an icon (and whatever all else they wish.) To build the .pnd file, a script (say) is used which compresses all this into the pnd format (including appending the PXML.) So yes, the PXML is in two places in the .pnd file and one place in the source directory. You'll get used to it ;)&lt;br /&gt;
&lt;br /&gt;
Rationale --&lt;br /&gt;
&lt;br /&gt;
Several iterations of pnd files have been considered, from zipfiles to cramfs to other formats, to putting in a key/value set of information tags in the file, to table-of-contents indexes, to any number of options to help performance, and so on. In the end we went for a good overall and simple solution and dropped getting fancy -- PXML.xml can be extended to define the type of the file if it cannot be magic'd, so we could using other filesystem types in the future (and this is why people should use libpnd rather than rolling their own solution.) For now however, pnd files are ISO files with the PXML.xml appended and an optional icon. This keeps the PXML and icon easy to locate, and yet a easy file format.&lt;br /&gt;
&lt;br /&gt;
====Recommended layout of a pnd directory structure, ie: how to make a well behaved pnd file====&lt;br /&gt;
&lt;br /&gt;
These are guidelines to make pnd-files 'well behaved', and to help move towards a consistent pnd structure.&lt;br /&gt;
&lt;br /&gt;
* Always include your icon png-file and PXML.xml file in the _Root_ of the pnd-file; this is for reasons that folks may well unpack the pnd-file, and then repack it; in doing so, if the icon and PXML.xml (normally appended to the .iso to become a .pnd) will be lost, unless the user or tool is being careful. Thus, it is wise to include them within the .iso, to make things so the iso is the entire pnd application, in unpacked form.&lt;br /&gt;
&lt;br /&gt;
* Use a 'reasonably unique' unique-id of course (to identify your application.) This is used for many internal uses, so uniqueness is pretty wise.&lt;br /&gt;
&lt;br /&gt;
* Use an 'application relevent' appdata name; make it as unique as you have to, but consider being less unique; a random example could be .. possibly there may be several quake1 ports; they could all share the same appdata (same config files, same data files), but if you intend on having different config or data files than other quake1's, make your appdata named differently. &lt;br /&gt;
&lt;br /&gt;
* Always include a documentation 'info' link, if your app has any setup requirements, has popup help screens that the user needs to know a key to pop up, or other essential trivia; feel free to make the doc link as complete as you like, since its all within the pnd file. (ie: Include the full DosBox documentation if you want to, in your DosBox pnd :)&lt;br /&gt;
&lt;br /&gt;
* Try to set up the appdata directory for the user; if you need a 'roms' or 'image' directory in the appdata (such as in the case of an Atari ST emulator needing a location to house the TOS OS image, say), then do a 'mkdir' in your 'runscript', to create it. Thus the user will find a (example) Hatari appdata directory, and within, any directories he needs (possibly empty.) This just makes it obvious for the user where to put stuff.&lt;br /&gt;
&lt;br /&gt;
* Try using rudimentary zenity scripts to pop up imporant pre-run information, if the application can't do so; ie: Hatari itself has a very fine GUI in it, but if the Atari ST TOS image is not present, it just exits and fails to run, so the GUI doesn't have time to do anything useful. In this case, it could be wise to use a 1 line zenity script that checks before the emu runs for the file in question, then pop up a dialog box saying 'put this file /here', so the user knows what the heck happened&lt;br /&gt;
&lt;br /&gt;
* Always Always Always write your 'state info' to current-working-directory (ie: ./foo, and not ~/foo). The pnd-system will redirect this to the users appdata of course, keeping things clean and predictable. If you're just porting an app, that has ~ all over the darned place, and you don't want to muck up the code.. just have your 'runscript' do something like 'set $HOME=.' and you're good to go!&lt;br /&gt;
&lt;br /&gt;
* Runscripts; the PXML.xml can specify to run your binary, or you can run a .sh script that in turn runs your binary, say. This lets you do various tests, set up LD_LIBRARY_PATH, or other mischief before your binary gets run. Very handy. I often have PXML.xml run 'runfoo.sh', and runfoo.sh in turn runs ./foo after setting things up, making directories, etc.&lt;br /&gt;
&lt;br /&gt;
* For data that is not kept in your appdata directory, try to keep it local to the current SD _or_ better still, search both SD. ie: libpnd uses a basic but really handy system for iterating across a list of directories (including glob type expansion); so you can tell it something like /media/*/foo:/tmp and it'll check every mounted device (including both SD slots) in the 'foo' directory, as well as /tmp; you can have it call your code as it looks through, or you can ask libpnd to find a file for you and report where it was found, across all your searchpaths; you don't have to use libpnd's code to do it, you coudl write oyur own (using libpnd as an example if you need the help), as its pretty easy to build (20 lines of code maybe?) Anyway, the trick is to be multi-SD aware, and bonus marks for handling if theres a USB mounted drive etc as well. (Example; I coded minimenu so that when it caches out a preview picture, it checks for free space first, and tries first on the same SD that the pnd is mounting from, and then across a searchpath of alternate locations to cache to; this way the user can customize the caching, and it can be on various devices.)&lt;br /&gt;
&lt;br /&gt;
====What filesystem types can be contained within a pnd-file?====&lt;br /&gt;
&lt;br /&gt;
The pnd container can really contain a large variety of filesystem types; day-zero we're aiming for ISO since it is simple, easy build across every major OS, and fast to use. But it is not the only supported filesystem type, and more should be added all the time. (Possibly '-auto' can be added to pnd-run and it'll &amp;quot;just work&amp;quot; for dozens of types!)&lt;br /&gt;
&lt;br /&gt;
A compressed filesystem type has always been desirable for file sizing reasons, though it potentially impacts performance (depending on the application operation really.)&lt;br /&gt;
&lt;br /&gt;
Supported types (not an exhaustive list!):&lt;br /&gt;
&lt;br /&gt;
o ISO&lt;br /&gt;
&lt;br /&gt;
o squashfs&lt;br /&gt;
&lt;br /&gt;
====PND generation workflow====&lt;br /&gt;
&lt;br /&gt;
- create a directory to represent the application on SD card; i.e.: ./mame-app&lt;br /&gt;
&lt;br /&gt;
- create a PXML.xml fil and drop it into the dir (./mame-app/PXML.xml); genpxml script can be used, or do it by hand&lt;br /&gt;
&lt;br /&gt;
- drop the executable and data files into this dir (say, ./mame-app/mame.bin, and ./mame-app/artwork/foo, etc.)''' &amp;lt;- note, with a PXML.xml and executabe, it can now be discovered and run without even bundling into .pnd!'''&lt;br /&gt;
&lt;br /&gt;
- invoke pnd-make.sh to produce mame4all-pandora-1.0-arm.pnd or whatever you want to call it (foobearspanky.pnd, we don't care.)&lt;br /&gt;
&lt;br /&gt;
- you're done, distribute it as you see fit&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows / DOS commandline====&lt;br /&gt;
&lt;br /&gt;
There should be a basic GUI along very soon, and more advanced friendlier GUIs in due time. But for now, we thought it prudent to include some basic instructions on the command line for day-zero.&lt;br /&gt;
&lt;br /&gt;
For this command-line tutorial, I will assume you have already created a PXML.xml file; copy one of the templates and then edit it, using notepad or whatever _TEXT_ editor you see fit.&lt;br /&gt;
&lt;br /&gt;
Prepare in advance:&lt;br /&gt;
&lt;br /&gt;
1) Make a PXML.xml file (through whatever means; copy a template, or get a PXML.xml tool when they come available.) Ensure that you've got a reasonably unique-id in that field (ie: say, app-name, your name, and date/time all catenated together.) &lt;br /&gt;
&lt;br /&gt;
2) Get yourself mkisofs tools; for example, grab from here: http://www.student.tugraz.at/thomas.plank/ -- get cdrtools-2.01-win32-bin.zip and DLL version 1.5.25, and extract to somewhere. That lets you run 'mkisofs' to spit out .iso files&lt;br /&gt;
&lt;br /&gt;
2b) If you want to make a compressed image, use squashfs tools here: ftp://ftp.slax.org/useful-binaries/win32/squashfs-tools/&lt;br /&gt;
&lt;br /&gt;
3) Put your application and all needed files into a single directory .. say &amp;quot;myapp&amp;quot;; it doesn't matter what you call it. Might be cool as a Makefile step&lt;br /&gt;
&lt;br /&gt;
4) In your app-dir, put the PXML.xml file in the root&lt;br /&gt;
&lt;br /&gt;
5) Put the icon in the root of that dir as well (make it a .png file)&lt;br /&gt;
&lt;br /&gt;
6) Make sure the PXML.xml names the icon (just its filename.png), and specifies the executable (foo.bin or whatever.)&lt;br /&gt;
&lt;br /&gt;
Generate the actual PND-file, fully manual method:&lt;br /&gt;
&lt;br /&gt;
1) Make yourself the iso; this step produces the iso, but to turn the iso into a pnd you need a couple last steps. You could also use some fancy iso-building tool.&lt;br /&gt;
'''mkisofs -o foo.iso -R /path/to/folder/myapp'''&lt;br /&gt;
&lt;br /&gt;
2) Append PXML.xml to the .iso (yes, the PXML.xml is included in the iso, but we also want to append it for performance reasons.) &lt;br /&gt;
'''copy foo.iso+PXML.xml foo.step2'''&lt;br /&gt;
&lt;br /&gt;
3) Append the icon PNG file to the .iso (if you have an icon; if not, you can leave this step out.)&lt;br /&gt;
'''copy foo.step2+myicon.png foo.pnd'''&lt;br /&gt;
&lt;br /&gt;
4) Clean up: del''' foo.step2 foo.iso'''&lt;br /&gt;
&lt;br /&gt;
5) Profit!&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Linux/BSD/Unix (including on Pandora)====&lt;br /&gt;
&lt;br /&gt;
=====Command-line=====&lt;br /&gt;
&lt;br /&gt;
Tools are included in the libpnd distribution; see below for discussion, but suffice to say they are included int he GIT. Look in testdata/scripts for:&lt;br /&gt;
&lt;br /&gt;
o genpxml - spits out a template PXML.xml for you, and even includes a reasonably unique-id&lt;br /&gt;
o pnd-make.sh - given a directory and some arguments, will spit out a .pnd file; great for use in Makefiles&lt;br /&gt;
&lt;br /&gt;
We're working on others as well, so piece of cake under Unix and Unix-like OSes.&lt;br /&gt;
&lt;br /&gt;
=====GUI=====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows GUI====&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Mac OSX====&lt;br /&gt;
&lt;br /&gt;
===PXML overrides===&lt;br /&gt;
&lt;br /&gt;
There are a couple of ways to effect an override of the PXML, without modifying a pnd-file.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;In-path&amp;quot; override files: .ovr====&lt;br /&gt;
&lt;br /&gt;
The library automatically imports a limited number of overrides from a conf file that can be located in the same location as its matching .pnd file is.&lt;br /&gt;
&lt;br /&gt;
For instance, if /pandora/desktop/awesomegame.pnd exists, then libpnd will automatically also search for /pandora/desktop/awesomegame.ovr&lt;br /&gt;
&lt;br /&gt;
Some menu systems will also be smart enough to watch for an icon override -- /pandora/desktop/awesomegame.png -- and if present, to use it; 'minimenu' (mmenu) is aware of that, as is pndnotifyd daemon when emitting .desktop files. Likely pmenu will also be updated. In effect, the user can override the icon, category and other attributes of the pnd, without needing special tools or to alter the system.&lt;br /&gt;
&lt;br /&gt;
An .ovr file must be named identically to the pnd-file, excepting the 3 character file extension.&lt;br /&gt;
&lt;br /&gt;
NOTE: Given that a pnd may emit multiple applications from its PXML.xml, the ovr will have to be aware of this so it can override the correct application(s) within the pnd. Some menus and information tools will display the application list with 'subapp number' to assist identification. minimenu shows the subapp number in the detail panel, for example. In the case where a pnd-file has only one contained application, that is subapp-number zero. For any additional subapplications, increment by one .. but it can be tricky to know which app is which subapp number. (A careful eye will notice the .desktop filename includes the subapp-number after the pound sign .. foo#3.desktop is subapp_number 3.)&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My note text line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PXML override file -- currently unsupported====&lt;br /&gt;
&lt;br /&gt;
PXML.xml files can have any number of their elements over-ridden by user preferences. &lt;br /&gt;
&lt;br /&gt;
The design goal here was to make it so user-preferences could alter the impact of the PXML.xml in any way, but without requiring the actual PXML.xml in the .pnd (and within the ISO therein) to be altered (could be a 500MB ISO after all!), and further, for these changes to persist. Consider than an SD card could be removed and inserted into the other slot, or the app could be removed entirely and come back another day, or other scenarios.&lt;br /&gt;
&lt;br /&gt;
As such, the PXML-overrides are kept in NAND in the user homedirectory (See the config files to find out where.)&lt;br /&gt;
&lt;br /&gt;
libpnd includes functions to pull in PXML, and also functions to then look for and merge in overrides. It is not always done since you may wish to inspect the PXML or the overrides, so the developers job is to do as they see fit -- pull the XML, and likely also pull in the overrides.&lt;br /&gt;
&lt;br /&gt;
At this time I'm not sure if people will ever use overrides, but the system has been built in should it be needed.&lt;br /&gt;
&lt;br /&gt;
===Included shellscripts to generate files and other sundry duties===&lt;br /&gt;
&lt;br /&gt;
====genpxml====&lt;br /&gt;
&lt;br /&gt;
This tool can spit out a basic but correct PXML.xml, faking up a halfway-useful unique-id in the process. It might be handy in saving you writing up a PXML.xml from scratch.&lt;br /&gt;
&lt;br /&gt;
====pnd_hup.sh====&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will attempt to locate this script and invoke it after an auto-discovery run, if the pnd_hup entry is present (and uncommented) in the config files. It is expected to be commented out in release images, as xfce watches directories for .desktop files and does not need a HUP; some desktop managers need to be HUPped to rescan for .desktop files in a timely fashion, so the pnd_hup config entry can be uncommented and this script will attempt to figure out who to HUP.&lt;br /&gt;
&lt;br /&gt;
====pnd_make.sh====&lt;br /&gt;
&lt;br /&gt;
This is one of the great ones :)&lt;br /&gt;
&lt;br /&gt;
Given a directory with a PXML.xml (see genpxml above) and an executable and any other goo you want in there, this script will spit out a .pnd file you can execute or distribute as an application.&lt;br /&gt;
&lt;br /&gt;
====pnd_run.sh====&lt;br /&gt;
&lt;br /&gt;
This job does a lot of the heavy lifting for libpnd, including setting up the 'union filesystems', doing .pnd and PXML.xml-app-dir execution and mounting, and so on. Generally you will talk to it via libpnd or .desktop files, but you can invoke it dorectly from your apps if you wish to circumvent libpnd or mount .pnd files within a shellscript/perlscript/etc.&lt;br /&gt;
&lt;br /&gt;
==Auto-discovery of applications==&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
==Integration with FreeDesktop .desktop systems==&lt;br /&gt;
&lt;br /&gt;
===dotdesktop (.desktop) files===&lt;br /&gt;
&lt;br /&gt;
===Icons===&lt;br /&gt;
&lt;br /&gt;
There are some rules for Icons in PXML.xml and pnd/directory bundles&lt;br /&gt;
&lt;br /&gt;
- An Icon should be in the root of the directory or .pnd bundle&lt;br /&gt;
&lt;br /&gt;
- An Icon must be specified in the PXML.xml if you expect it to work&lt;br /&gt;
&lt;br /&gt;
- As the PXML.xml is parsed, the icon is sought; if the icon is specified, but not found, it is assumed to be a system default icon and the filename will be placed into the .desktop Icon= line verbatim (ex: Icon=foo.png), and the window manager presumably will know how to locate it. If the icon is specified, and is found, then it will be copied into the configured IconPath, and the full path to it will be used for the Icon= line in the .desktop file ex: Icon=/tmp/myicon.png). If no icon is specified in the PXML file, then no Icon= line will be entered into the .desktop and the WM will presumably apply a default icon based on category or whatever.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==APIs==&lt;br /&gt;
&lt;br /&gt;
Feel free to just go read the .h files; I have tried to comment liberally :)&lt;br /&gt;
&lt;br /&gt;
===Setting and Getting the CPU clock speed===&lt;br /&gt;
&lt;br /&gt;
===Device paramaters - brightness, etc===&lt;br /&gt;
&lt;br /&gt;
===PND files, exec and mount===&lt;br /&gt;
&lt;br /&gt;
===Application discovery===&lt;br /&gt;
&lt;br /&gt;
===Config file parsing===&lt;br /&gt;
&lt;br /&gt;
===Boxing, the singly-linked list container===&lt;br /&gt;
&lt;br /&gt;
===Directory watching===&lt;br /&gt;
&lt;br /&gt;
===Logging api===&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2326</id>
		<title>Libpnd hub</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2326"/>
		<updated>2010-05-17T00:48:27Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Recommended layout of a pnd directory structure, ie: how to make a well behaved pnd file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=libpnd - the Pandora Library=&lt;br /&gt;
&lt;br /&gt;
libpnd is a basic collection of functions and tools to make working Pandora-specific operations easier; to wit, it is hoped multiple applications will make use of this library rather than re-implement similar functionality and lead to problems down the road. (Instead we can run into problems together and thus clobberize them.) &lt;br /&gt;
&lt;br /&gt;
libpnd thus is a collection of ...&lt;br /&gt;
&lt;br /&gt;
* handy system code that hopefully is reusable - IO functions, CPU clock setting, etc.&lt;br /&gt;
* applications for supporting the Pandora unique features, such as pndnotifyd for auto-discovery of PXML and .pnd applicatons&lt;br /&gt;
* libraries for support of the .pnd and PXML systems; i.e.: for locating, executable, mounting and unmounting PXML-directory and .pnd applications, loading PXML and handling overrides&lt;br /&gt;
* hopefully reusable code for support of these things; i.e.: a rudimentary but useful config-file parser, rudimentary singly-linked-list container, etc.&lt;br /&gt;
&lt;br /&gt;
libpnd will/does also include utility functions for setting the CPU clock, reading GPIO inputs without depending on SDL, and other handy bits.&lt;br /&gt;
&lt;br /&gt;
'''You can, nay, are needed - contribute to libpnd!'''&lt;br /&gt;
&lt;br /&gt;
==Design considerations and philosophy==&lt;br /&gt;
&lt;br /&gt;
While much of libpnd is obvious, some decisions had to be made and it may help to know the guiding principle behind it; the Pandora device will be a handheld _computer_, but libpnd is designed to facilitate certain operations with goals towards..&lt;br /&gt;
&lt;br /&gt;
- simplicity - just work right, configuration not generally needed&lt;br /&gt;
&lt;br /&gt;
- obviousness - work as one would expect for this sort of device; i.e.: the user assumes something will work a certain way, and it does&lt;br /&gt;
&lt;br /&gt;
- like other guys - as an extension of the prior point, we have tried to follow UNIX spirit and provide reusable small tools to do the work those bits can be leveraged, but further tried to follow the spirit of other consoles. So while the device is a powerful little computer, it is probably going to be used by gaming and retro enthusiasts and so we color some of our decisions that way. (i.e.: consider that a PS2/xbox/PSP/etc will have save-game or data management as a separate application, for instance. If thats the best multi-million dollar companies can come up with over decades, well, its not so bad for us to fall back on!)&lt;br /&gt;
&lt;br /&gt;
- not over-defined; libpnd and PXML try to define a bunch of things, but we also do not _over define_; we try to lead by providing examples and styles, and while we have designed ahead for many things, we have also not nailed a lot of that down too early. It is better to be simple and shipped, then complex and a mess.. adaptable rather than scary.&lt;br /&gt;
&lt;br /&gt;
The library is of course broken into parts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include     - include these files to make use of the lib&lt;br /&gt;
lib         - the code that produces the lib&lt;br /&gt;
test        - mini tools to test various pieces of the lib in isolation&lt;br /&gt;
bin         - test tools - tools for testing the lib as it is developed, not anticipated to be used by many&lt;br /&gt;
testdata/   - for testing /etc/pandora; will contain 'conf' dir, for example&lt;br /&gt;
apps/       - actual applications people may use, such as pndnotifyd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For now though, here are a couple notes about the design.&lt;br /&gt;
&lt;br /&gt;
- it is straight C code, to be maximumly re-usable (perhaps C++ and other language bindings will tie back to it). I have gone out of my way to limit external references so that bindings are easier to make. &lt;br /&gt;
&lt;br /&gt;
- contrary to the previous comment, we've used a bit of C++ for the tinyxml parser .. hopefully this is not an issue.&lt;br /&gt;
&lt;br /&gt;
- I have tried to keep the API relatively simple and am faking some OO like data hiding to try to keep dev noses out of structures that are subject to change. i.e.: functions for list management and node access are provided, don't dig into the void* cast structs, or you could get burnt.&lt;br /&gt;
&lt;br /&gt;
- the API should be pretty stable; so far very few user-code changes have ever been needed.. lib internal changes should be binary compatible.&lt;br /&gt;
&lt;br /&gt;
- As a result of that decision, 'handles' are used; a handle is a 'black box' type, something you cannot just use 'handle h; h -&amp;gt; foo = 5' type code for. Instead, internally the library will cast the handle to the actual useful type (which may involve pointer arith etc). This way the user can be returned a handle, and pass the handle to various access functions to get useful data/operations.. but the user is not encouraged to look inside the data objects himself&lt;br /&gt;
&lt;br /&gt;
- As another implication, access functions are available aplenty; it is a little unwieldy perhaps, but its all about keeping the API good without the user peeking inside and risking being broken down the road. (By example, consider.. you use ftell() on a FILE object; you don't go looking in FILE for the 'position' member, since it might be platform specific, etc.)&lt;br /&gt;
&lt;br /&gt;
- The lib works pretty well, but there is room for improvement internally; it won't hurt my feelings for you to suggest improvements, and I'm sure we would all be grateful for any patches you provide. We've _started_ this library, but by no means wish to carry it alone!&lt;br /&gt;
&lt;br /&gt;
==Opportunities for improvement==&lt;br /&gt;
&lt;br /&gt;
Certainly nothing is perfect, especially when chasing moving targets.  Some aspects of the library are less efficient, or missing, or buggy, and a few things are noted here should someone have time. The API was designed to be pretty stable so the internal code could be altered without breaking the API interface.&lt;br /&gt;
&lt;br /&gt;
- better ISO lang handling .. due to shift from original PXML spec to new PXML spec with better lang support I've not updated some of the internal code, API uses etc to handle it. (even .desktop files could include all iso-lang titles, and let the WM pick through as the spec suggests.)&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
&lt;br /&gt;
libpnd (including all the apps etc) are released under the LGPL (ie: so there should be no encumbrances that prevent linking to commercial applications.)&lt;br /&gt;
&lt;br /&gt;
   1                   GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
&lt;br /&gt;
   2                        Version 2.1, February 1999&lt;br /&gt;
&lt;br /&gt;
==Obtaining the library==&lt;br /&gt;
&lt;br /&gt;
libpnd is in the Official Pandora GIT repo: [http://git.openpandora.org/cgi-bin/gitweb.cgi]&lt;br /&gt;
&lt;br /&gt;
To obtain yourself a copy, use something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://git.openpandora.org/pandora-libraries.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thats all you normally need. For copy-paste from the private Wiki sake, heres what I had before:&lt;br /&gt;
&lt;br /&gt;
Without going into how to set up a GIT, the summary that I (as a registered dev in the repo) used was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir libpnd&lt;br /&gt;
cd libpnd&lt;br /&gt;
git init&lt;br /&gt;
git remote add libpnd ssh://foo@git.openpandora.org/srv/git/pandora-libraries.git&lt;br /&gt;
git pull libpnd master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building the library==&lt;br /&gt;
&lt;br /&gt;
Standard 'make' should be sufficient here; pull down the directory from the GIT, cd into it, and run make. Thats it.&lt;br /&gt;
&lt;br /&gt;
Note that the make default target is 'everything', which will emit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libpnd.a - the static linked version of the lib&lt;br /&gt;
libpnd.so.1.0.1 - the dynlinked version&lt;br /&gt;
libpnd.so.1 - the stub for the shared lib; i.e.: apps should link against libpnd.so.1 and not the 1.0.1 over-specific version&lt;br /&gt;
bin/* - the 'test' dir and the 'apps' dir builds will end up in bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few additional make targets, however.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make clean - wipes out the object files, the bin files, and *~* (emacs backup files), empties some of the deploy stuff, etc. Do this before committing to GIT or we will beat you with sticks.&lt;br /&gt;
make deploy - populates the deploy/ directory, which is what is used inthe shipping images; i.e.: testdata/conf includes test configs, while deploy/etc/pandora/conf includes the configs we ship with. This make will copy over some of the libs and binaries and such.&lt;br /&gt;
make pnd - create a few sample pnd files for testing the lib on an x86 machine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Included Applications==&lt;br /&gt;
&lt;br /&gt;
===pndnotifyd===&lt;br /&gt;
&lt;br /&gt;
Manages the auto-discovery mechanism and integrating PXML.xml dir-apps and .pnd files into the FreeDesktop standard system (.desktop files). A dedicated libpnd-aware menu could leverage libpnd directly and not need pndnotifyd, though pndnotifyd does offer some handy bits such as HUPping apps to suggest to them that applications may have been added/removed (libpnd includes all the necessary functions for this as well.)&lt;br /&gt;
&lt;br /&gt;
===pndvalidator===&lt;br /&gt;
&lt;br /&gt;
Is mostly a skeleton right now; in the future, it is hoped it will inspect a PXML.xml and then check to ensure the referenced assets are present; the goal to validate the PXML.xml is spec compliant, and the resulting application would be useful.&lt;br /&gt;
&lt;br /&gt;
===discotest===&lt;br /&gt;
&lt;br /&gt;
One of the test tools; it essentially runs an auto-discovery to list off the found apps (be they PXML.xml dir apps or .pnd files), and can dump various data or invoke one or other little tasks; used to test lots of&lt;br /&gt;
bits of libpnd as it was developed.&lt;br /&gt;
&lt;br /&gt;
===rawpxmltest===&lt;br /&gt;
&lt;br /&gt;
Reads a given PXML.xml and spits out some of the fields found within.&lt;br /&gt;
&lt;br /&gt;
===test tools===&lt;br /&gt;
&lt;br /&gt;
See the test/ dir in the libpnd source for assorted goofy little test apps used for testing bits of libpnd over time. They also may serve as source examples for using some of the APIs. They're old and shoddy probably too.&lt;br /&gt;
&lt;br /&gt;
==Distributed PXML.xml-directory and pnd applications, how does running them actually work?==&lt;br /&gt;
&lt;br /&gt;
This is just a quick summary to save you guessing by reading this whole document.&lt;br /&gt;
&lt;br /&gt;
In essence, libpnd includes lots of real code, but in many places it passes heavy lifting off to shellscripts. This is both handy because the scripts are easily modified without recompilation, and further extends our design goals of making the library bindable to any other language.&lt;br /&gt;
&lt;br /&gt;
Remember, PXML.xml directories are just as executable/mountable as .pnd apps.&lt;br /&gt;
&lt;br /&gt;
So while libpnd is mostly straight-C and so easily bound to python or perl or whatever, libpnd itself invokes many scripts. Those scripts can be directly used by other applications, including other shellscripts.. so libnd functionality can even have bindings in other scripts. This is very flexible and powerful, and handy during debugging or SSHing into the Pandora, etc.&lt;br /&gt;
&lt;br /&gt;
The application lifecycle goes like this:&lt;br /&gt;
&lt;br /&gt;
- device is turned on&lt;br /&gt;
&lt;br /&gt;
- during init, pndnotifyd is brought up and inhales the config giles&lt;br /&gt;
&lt;br /&gt;
- pndnotidyd will attempt to auto-discover what PXML.xml directory apps and .pnd-file apps are in the configured searchpaths&lt;br /&gt;
&lt;br /&gt;
- pndnotifyd will set up filesystem watches on the directories in the notify searchpath; if any of those directories are touched, pndnotifyd will wake up and re-auto-discover .. possibly removing .desktop entries or creating new ones. (i.e.: you drop a new app into the app searchpath, or remove one, or mount an SD card, etc. This is how appications immediately show up or vanish from the window manager desktops.)&lt;br /&gt;
&lt;br /&gt;
- a libpnd aware launcher can execute applications direct (using libpnd)&lt;br /&gt;
&lt;br /&gt;
- a libpnd unaware launcher can execute applications via the .desktop standard system; pndnotidyd will emit .desktop files as needed.&lt;br /&gt;
&lt;br /&gt;
- when libpnd or a .desktop file need to execute an application, they do it via pnd_run.sh (which may be leveraged by other applications, but they hould use libpnd if they can instead, for utmost compatiblity down the road.) pnd_run.sh does the mount of the ISO, runs the actual execable and so on, as directed by libpnd or the command-line args from the .desktop. pnd_run.sh will clean up after everything as well.&lt;br /&gt;
&lt;br /&gt;
So it all works like magic, but it is not that complex a system once you've got the hang of what all is going on.&lt;br /&gt;
&lt;br /&gt;
application -&amp;gt; libpnd -&amp;gt; shellscripts -&amp;gt; system&lt;br /&gt;
&lt;br /&gt;
==FAQ: IF you want to make files visible to the apps, do you have to modify the pnd?==&lt;br /&gt;
&lt;br /&gt;
No. When apps write back to themselves, the writes go to their /pandora/appdata on the SD that houses them. The next time the app reads a file in its directory, the OS will ensure they get the newer file, which is the one in the appdata.&lt;br /&gt;
&lt;br /&gt;
Likewise, you can just drop a file into the appdata and the app will see it.&lt;br /&gt;
&lt;br /&gt;
The app doesn't know about appdata and its pnd file.. the OS and libpnd take care of all the magic.. the app sees one directory, but the reality is there is magic merging going on behind the scenes.&lt;br /&gt;
&lt;br /&gt;
==Assumptions about the filesystem and Configuration==&lt;br /&gt;
&lt;br /&gt;
Note that for libpnd to work, it makes certain assumptions about the filesystem and config files. Since libpnd was developed with the images it should work for the Pandora .. but just dropping libpnd onto another Linux distribution and it won't likely 'work out of the box'. Certain config files will need to be set, and certain conventions followed.&lt;br /&gt;
&lt;br /&gt;
===Searchpaths===&lt;br /&gt;
&lt;br /&gt;
libpnd was designed so that most everything is configured in files, and that these files should be easily hackable and easily overriden, without compromising the machine. It should be feasible to add a config file to an SD card, have it take over if available when required, and then 'undo' those configs simply by removal of the SD card and rebooting.&lt;br /&gt;
&lt;br /&gt;
To facilitate this design goal, all config files are 'sought' using a search-path system.&lt;br /&gt;
&lt;br /&gt;
Developers should be mindful of using the libpnd APIs so this behaviour is inherited to interested applications; developers could also reuse the logic for searching for files, if they find it useful.&lt;br /&gt;
&lt;br /&gt;
Searchpaths are colon-delimited list of paths, searched left to right.&lt;br /&gt;
&lt;br /&gt;
ex: foo:bar:/my/baz means to look for a given file in 'foo', then in 'bar', then in '/my/baz'.&lt;br /&gt;
&lt;br /&gt;
The standard config files have a default searchpath, and those config files will define further searchpaths for scripts and such the system uses. This makes the system highly flexible -- default scripts are included, but can be overridden by dropping the right named script on an SD card, or by altering a config file.&lt;br /&gt;
&lt;br /&gt;
See the example config files below for example searchpaths -- i.e.: how pndnotifyd searches for pnd_run, etc.&lt;br /&gt;
&lt;br /&gt;
===Notification paths===&lt;br /&gt;
&lt;br /&gt;
The 'apps' config includes a searchpath that specifies the sub-paths to be 'watched'. Various watch mechanisms exist for various filesystem types, but over the course of Pandora development (various kernels, various k-modules, various DM and WM's, I found the included system most stable, though not most current. After a final device image is settled on, it might be time to alter the notification system, but it should not impact the libpnd API.)&lt;br /&gt;
&lt;br /&gt;
Anyway, watches are placed upon the paths defined, and if anything in those paths changes, the auto-discovery code is kicked off to seek our PXML.xml and .pnd type applications in the search paths.&lt;br /&gt;
&lt;br /&gt;
Note that searchpath and notifypaths are different (and usually very similar, but have the option to be very different.)&lt;br /&gt;
&lt;br /&gt;
===Config files===&lt;br /&gt;
&lt;br /&gt;
libpnd includes a generic simple config file parser and assumes the presence of a few config files. It also includes defaults&lt;br /&gt;
so if a config is missing or broken things should work.&lt;br /&gt;
&lt;br /&gt;
In general, Pandora specific config files should be located in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/pandora/conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The config files are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conf -- this file is generally _not_ included with the Pandora and left to default; its job is to define the basic default searchpath for config files, so should you wish to override things entirely, you may need to alter this file. i.e.: If you wish to switch to test config files on SD or in /tmp, instead of using any other conf files .. you can create this guy. This provides a mechanism to short circuit the entire conf system.&lt;br /&gt;
&lt;br /&gt;
apps -- this config file defines auto-discovery and other application bundle parameters&lt;br /&gt;
&lt;br /&gt;
desktop -- this config defines &amp;quot;dotdesktop&amp;quot; .desktop and FreeDesktop integration paramters -- example is where to spit out icons or .desktop files from discovered PXML.xml or pnd applications&lt;br /&gt;
&lt;br /&gt;
categories -- this config maps PXML.xml spec based categories to FreeDesktop standard categories; in this way a PXML based applicatoin can show up in the appropriate categories of a WM that does not use libpnd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====conf File====&lt;br /&gt;
&lt;br /&gt;
No default is included with the distribution.&lt;br /&gt;
&lt;br /&gt;
The default search path is reasonable and assumes we want the official /etc/pandora/conf near the end, with checks to the SD cards for overrides first. (Likely most people will not override, so the canonical location will be used 99.9% of the time.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_SEARCHPATH &amp;quot;/media/mmcblk0p1/pandora/conf:/media/mmcblk1p1/pandora/conf:/etc/pandora/conf:./testdata/conf&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key for override is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_KEY        &amp;quot;conf.searchpath&amp;quot; /* if not found, use PND_CONF_SEARCHPATH */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which suggests using something like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[conf]&lt;br /&gt;
searchpath   /foo/bar:/baz/bing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====desktop File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Desktop configuration&lt;br /&gt;
&lt;br /&gt;
[dotfiles]&lt;br /&gt;
#(~/Desktop for xfce, /usr/share/applications for WMs that actually follow spec)&lt;br /&gt;
dotdesktoppath  ~/Desktop/      # path for pndnotifyd to spit .desktop files into (run as root)&lt;br /&gt;
iconpath        /tmp    # path for pndnotifyd to drop icons into (can be same as .desktop if WM permits)&lt;br /&gt;
&lt;br /&gt;
[launcher]&lt;br /&gt;
# if hupscript is commented out entirely, pndnotifyd will not try to find/run the hup&lt;br /&gt;
# if it is uncommented, pndnotifyd will attempt to invoke the hupscript after emitting .desktop files&lt;br /&gt;
# (the hupscript exists to hup the WMs to redisplay .desktop apps)&lt;br /&gt;
#hupscript      pnd_hup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====apps File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Application configuration&lt;br /&gt;
&lt;br /&gt;
[autodiscovery]&lt;br /&gt;
# searchpath is a list of paths (colon separated) in which to look for PXML.xml or .pnd-file applications&lt;br /&gt;
searchpath      /media/*/pandora/apps:/usr/pandora/apps&lt;br /&gt;
# notifypath is a list of paths to monitor; if anything in those paths changes, the searchpath is rescanned&lt;br /&gt;
# note that for each path chunk, all current subdirs of that path are also watched)&lt;br /&gt;
notifypath      /media:/media/*/pandora/apps:/usr/pandora/apps:./testdata/app?&lt;br /&gt;
&lt;br /&gt;
# PXMLs may be overridden .. i.e.: overrides are a subset of PXML, where the values are copied over the full PXML&lt;br /&gt;
[overrides]&lt;br /&gt;
# searchpath to look for PXML overrides (which are named by the unique-id)&lt;br /&gt;
searchpath      ~/pxml-overrides&lt;br /&gt;
&lt;br /&gt;
# [pnd] defines where to locate the pnd support scripts, so the user may override pnd_run.sh without clobbering built in&lt;br /&gt;
[pnd]&lt;br /&gt;
searchpath      /media/*/pandora/scripts:/usr/pandora/scripts&lt;br /&gt;
runscript       pnd_run.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====categories File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# dotdesktop configuration&lt;br /&gt;
&lt;br /&gt;
# this config file maps 'PXML' categories to free-desktop standard categories&lt;br /&gt;
# i.e.: category 'Foo' could map to more standard 'Utility', thus making .desktop file&lt;br /&gt;
# emitting a more useful thing&lt;br /&gt;
&lt;br /&gt;
# the standard listing of categories is:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/latest/apa.html&lt;br /&gt;
&lt;br /&gt;
# note that 'map' section in the config is _required_ for a match to be found; this&lt;br /&gt;
# is done to separate categories from (future) top-level directives&lt;br /&gt;
&lt;br /&gt;
default Application;Utility;Network;&lt;br /&gt;
&lt;br /&gt;
[map]&lt;br /&gt;
Development     Development&lt;br /&gt;
Education       Education&lt;br /&gt;
Games   Game&lt;br /&gt;
Graphics        Graphics&lt;br /&gt;
Internet        Network&lt;br /&gt;
Multimedia      AudioVideo&lt;br /&gt;
Office  Office&lt;br /&gt;
Settings        Settings&lt;br /&gt;
System  System&lt;br /&gt;
Utilities       Utility&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SD card layout===&lt;br /&gt;
&lt;br /&gt;
libpnd concerns itself with things in the 'pandora' root folder on SD. We agonized over this decision, but settled on this to avoid cases where someone with a 16GB SDHC card puts 50-million files with &amp;quot;.pnd&amp;quot; on them, and expects reasonable performance. Instead, applications for instance would have to be in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/menu -&amp;gt; apps that will go to /usr/share/applications and should show up in xfce menu by category&lt;br /&gt;
/pandora/desktop -&amp;gt; apps that will go to ~/Desktop and show up on user desktop as icons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following location is used by pmenu (and may get deprecated, but I've not discussed it with cpasjuste yet.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/apps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e.: the searchpath for autodiscovery includes /media/*/pandora/apps (and desktop and menu now)&lt;br /&gt;
&lt;br /&gt;
Also in the /pandora/ folder is a magic 'appdata' folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/appdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a .pndfile or PXML.xml dir get mounted, any writes back to the mounted area are put into appdata, with a subdir by the unique-id. i.e.: With the hypothetical MAME.pnd, it might update its config files after a user changes something, or create new files, or store hiscores or whatever. If it doesn't write them to NAND, and doesn't want ot write them to /mame/some/dir, but instead record it to itself for whatever reason, it would go to /pandora/appdata/MAMEs-ID/ instead. The pnd or PXML.xml app area is never modified during a run, only the appdata. (But when an application reads its own path, it will pick up the appdata version of the file instead of the actual file. Then magic of union-type filesystems!)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
If Myapp with unique-id foo.123 is mounted, then any write-backs are directed to..&lt;br /&gt;
&lt;br /&gt;
/pandora/appdata/foo.123/&lt;br /&gt;
&lt;br /&gt;
On the SD that hosts the application.&lt;br /&gt;
&lt;br /&gt;
===NAND layout===&lt;br /&gt;
&lt;br /&gt;
In addition to seeking applications in SD cards, /usr/pandora/apps is included in the default searchpath, so that 'built in' apps can be listed, or users can drop them there.&lt;br /&gt;
&lt;br /&gt;
It might be a cool addition to put a user homedir into the searchpath as well, so NAND but user-homedir (for on-device browser downloads, say.)&lt;br /&gt;
&lt;br /&gt;
==Command line tools and testing==&lt;br /&gt;
&lt;br /&gt;
A number of scripts and tools are included or built with libpnd, to facilitate testing of the lib as its being developed and to assist in making .pnd files and PXML.xml files.&lt;br /&gt;
&lt;br /&gt;
==PXML.xml and .pnd files==&lt;br /&gt;
&lt;br /&gt;
On most platforms, applications are distributed as an executable and optional datafiles and likely an installer. The installers job is to integrate the application into the filesystem, as the transport mechanism itself is not executable and is considered temporary. In Windows an application might be installed into Program Files, while in Unix an application might be dropped into /usr/local/bin .. data files in various other places.&lt;br /&gt;
&lt;br /&gt;
For the Pandora platform we wanted a very easy to use workflow -- download and run -- and also have a very different operating environment. With multiple SD cards available for expansion (and that space being highly desirable due to a smaller internal store) it is desirable to install applications to SD, and yet SD cards are by definition something users will wish to carry multiple of. With two slots, it could be quite a chore to install an application to SD1, its data to SD2, and then say have only one of them plugged in at a time, or switch which slot they're in, or any number of scenarios. i.e.: Installing onto a medium which may be present or not at any time is very different to how most operating systems work. So we made something new and awesome.&lt;br /&gt;
&lt;br /&gt;
The PXML.xml and .pnd-file approach we came up with attempts to address these issues.&lt;br /&gt;
&lt;br /&gt;
The goals:&lt;br /&gt;
&lt;br /&gt;
- for the user, an application can be a single file download&lt;br /&gt;
&lt;br /&gt;
- furthermore, there is no installation whatsoever, beyond dropping that single file into the right place on the SD card&lt;br /&gt;
&lt;br /&gt;
- using the application should be easy -- stick in the SD card, and tap/launch on the icon.&lt;br /&gt;
&lt;br /&gt;
- for uninstallation, delete the single file. Thats it, no fuss.&lt;br /&gt;
&lt;br /&gt;
- for the developer, creating that single file should be easy to do&lt;br /&gt;
&lt;br /&gt;
- for the system, performance should be high&lt;br /&gt;
&lt;br /&gt;
Remember, an application can be a .pnd 'bundle' (single file containing all the sub-files), or a PXML.xml 'dir application' (an unpacked .pnd esentially.) '''BOTH PXML.xml-dirs and .pnd's ARE EXECUTABLE.'''&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will auto-discover PXML.xml in a directory and consider that an application, emitting a .desktop file, just as well as a .pnd file. i.e.: This can be hand for development or users. Remember that a mounted PXML.xml dir still redirect write-backs to the /pandora/appdata directory, just like a full .pnd application. They are treated the same!&lt;br /&gt;
&lt;br /&gt;
===What are PXML.xml and .pnd files?===&lt;br /&gt;
&lt;br /&gt;
PXML.xml is a file describing an application&lt;br /&gt;
&lt;br /&gt;
A directory containing a PXML.xml _is executable_&lt;br /&gt;
&lt;br /&gt;
A .pnd file is the packaged up version of the directory that is executable.&lt;br /&gt;
&lt;br /&gt;
i.e.: a PXML.xml in a directory is just as executable as a .pnd representation of that directory.&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
mkdir OutcaST&lt;br /&gt;
cp outcast.bin OutcaST/&lt;br /&gt;
cp PXML.xml OutcaST/&lt;br /&gt;
# at this point, the OutcaST directory is now discoverable and executable&lt;br /&gt;
&lt;br /&gt;
pnd_make.sh -this -that OutcaST outcast.pnd&lt;br /&gt;
# at this point, outcast.pnd is executable (as is the OutcaST directory), so upload outcast.pnd to the Open Handhelds Archive and let people enjoy!&lt;br /&gt;
&lt;br /&gt;
===A note on including shared libs===&lt;br /&gt;
A philsophy for packaging that I am advocating is to 'just make applications work' -- avoid dependancy trees.&lt;br /&gt;
&lt;br /&gt;
Some guidelines:&lt;br /&gt;
&lt;br /&gt;
1) you can depend on shared libs included with the firmware to always be there&lt;br /&gt;
&lt;br /&gt;
2) you should include any shared libs you need for your app, that are not in the firmware (yes, this increases app size a little bit, and potentially makes for duplication among apps that use the same shared libs)&lt;br /&gt;
&lt;br /&gt;
3) if a shared lib becomes desirable in the firmware, it can be added there as a firmware patch easily (this has the advantage of gradulaly updating the entire user based, and apps easily saying 'we depend in firmware version X', rather than making for pnd-dependnacies and the equivilent of 'dll hell'&lt;br /&gt;
&lt;br /&gt;
4) You'll have to be careful in linking your application to ensure that the shared libs you are including in the pnd/PXML-dir are to be locatable by your binaries. ie: stick them in a 'lib/' dir in your bundle, and stamp your binary with a library-path './dir/' so they can be found, say. More later.&lt;br /&gt;
&lt;br /&gt;
===Future idea: pnd's for containing system-wide shared libs===&lt;br /&gt;
&lt;br /&gt;
This is something we've bounced around for quite awhile, but not committed to. As it keeps coming up I thought I'd put some notes here in public.&lt;br /&gt;
&lt;br /&gt;
It is possibly desirable to make a special searchpath that is discovered during machine boot, and any pnd's found there are automatically mounted (and left mounted) into a special path (say /usr/local/pandora/lib or somesuch.) This way, collections of handy utilities or shared libraries could be distributed as a pnd, and become available in consistent locations. If 10 applications need a shared lib, and don't want to duplciate it in each of their pnd files, this could be an approach.&lt;br /&gt;
&lt;br /&gt;
I tend to think it is best avoided, however, since it complicates the user experience -- we end up with pnd depandancies, and apps nolonger about to 'just work', and apps that did work and 'suddenly break' when other files are altered. The philosphy we're going for with pnd files is 'drag and drop' -- user downloads a pnd file, and it works.. a self contained application, nice and easy. We start complicating the dependancies, and it turns into 'dll hell' as seen on other platforms.&lt;br /&gt;
&lt;br /&gt;
That said, it is _not_ difficult to add into the existing system and design; we've been mulling it over, but it is best avoided for now. rather than complicate the system up front, let us try to get a functional and as lightweight-as-possible system on the uptake, gather some usage data points and then worry about upgrades :)&lt;br /&gt;
&lt;br /&gt;
===File format - PXML.xml / PXML Specification===&lt;br /&gt;
See the [[PXML_specification|PXML specification]]&lt;br /&gt;
&lt;br /&gt;
Alternatively the spec is included in the docs/ directory of the libpnd distribution, though the wiki version linked above should be considered cannon.&lt;br /&gt;
&lt;br /&gt;
A note on history; the PXML spec was originally created by EvilDragon, and went through a number of revisions as suggestions came in; as these things are wont to do, the target was ever moving and the scope and meaning of PXML changed so at some point a more strategic approach was needed. dflemstr took it upon himself to help recode some of the parse and re-evaluate many of the PXML decisions and hence was born the PXML-version-2 spec.&lt;br /&gt;
&lt;br /&gt;
===File format - .pnd files===&lt;br /&gt;
The pnd file format is pretty straight forward, though most will interact with it through the included (or community supplied) tools.&lt;br /&gt;
&lt;br /&gt;
Basically its just an ISO file (or other filesystem type) with a PXML.xml and an optional PNG icon appended. (example: cat appfolder.iso app.pxml icon.png &amp;gt; app.pnd) For ease of discussion, I refer to ISO but in fact you coudl be using squashfs or other types.&lt;br /&gt;
&lt;br /&gt;
The ISO filesystem portion of the file can include anything the developer wishes, as long as it includes a PXML.xml in its root file and an executable somewhere in there. It can also include images, audio files, data files of any kind. It can be small or large.&lt;br /&gt;
&lt;br /&gt;
Yes, the PXML.xml is included in the ISO portion (in the root directory), and also appended to the end of the .pnd file (for _convenience_ .. it is very easy and fast to locate in this position; we can backseek into the ISO to find the PXML, but if its a 500MB ISO it could take awhile. Hence, we append it and can find it in one seek.)&lt;br /&gt;
&lt;br /&gt;
This simple format makes it possible to easily create .pnd files with the default utility's of most operating systems. Further, it is a fairly fail-safe system -- the PXML is appended, but is also included within the ISO image part of the file so if the appended-PXML is ever lost (unpack and repack poorly, say) the system will still work (the PXML inside the ISO can be found easily, even without mounting the ISO _as_ an ISO, since it is a plaintext uncompressed image format.) &lt;br /&gt;
&lt;br /&gt;
Manually creating a .pnd (or even a PXML) is a pain so there will be a few helper scripts or maybe even a gui app out when we launch.&lt;br /&gt;
&lt;br /&gt;
Included with libpnd are some scripts to create PXML and pndfiles, though it is expected people will create handier utilities. See the tool section of this wiki for some details.&lt;br /&gt;
&lt;br /&gt;
Question from the gp32x forum regarding confusion of PXML location -- remember that in general mot developers will keep a directory that represents the .pnd or PXML-dir application. Their makefile/build-process will drop the executable(s) into that directory, which inludes a PXML.xml description of the application, and possibly an icon (and whatever all else they wish.) To build the .pnd file, a script (say) is used which compresses all this into the pnd format (including appending the PXML.) So yes, the PXML is in two places in the .pnd file and one place in the source directory. You'll get used to it ;)&lt;br /&gt;
&lt;br /&gt;
Rationale --&lt;br /&gt;
&lt;br /&gt;
Several iterations of pnd files have been considered, from zipfiles to cramfs to other formats, to putting in a key/value set of information tags in the file, to table-of-contents indexes, to any number of options to help performance, and so on. In the end we went for a good overall and simple solution and dropped getting fancy -- PXML.xml can be extended to define the type of the file if it cannot be magic'd, so we could using other filesystem types in the future (and this is why people should use libpnd rather than rolling their own solution.) For now however, pnd files are ISO files with the PXML.xml appended and an optional icon. This keeps the PXML and icon easy to locate, and yet a easy file format.&lt;br /&gt;
&lt;br /&gt;
====Recommended layout of a pnd directory structure, ie: how to make a well behaved pnd file====&lt;br /&gt;
&lt;br /&gt;
These are guidelines to make pnd-files 'well behaved', and to help move towards a consistent pnd structure.&lt;br /&gt;
&lt;br /&gt;
* Always include your icon png-file and PXML.xml file in the _Root_ of the pnd-file; this is for reasons that folks may well unpack the pnd-file, and then repack it; in doing so, if the icon and PXML.xml (normally appended to the .iso to become a .pnd) will be lost, unless the user or tool is being careful. Thus, it is wise to include them within the .iso, to make things so the iso is the entire pnd application, in unpacked form.&lt;br /&gt;
&lt;br /&gt;
* Use a 'reasonably unique' unique-id of course (to identify your application.) This is used for many internal uses, so uniqueness is pretty wise.&lt;br /&gt;
&lt;br /&gt;
* Use an 'application relevent' appdata name; make it as unique as you have to, but consider being less unique; a random example could be .. possibly there may be several quake1 ports; they could all share the same appdata (same config files, same data files), but if you intend on having different config or data files than other quake1's, make your appdata named differently. &lt;br /&gt;
&lt;br /&gt;
* Always include a documentation 'info' link, if your app has any setup requirements, has popup help screens that the user needs to know a key to pop up, or other essential trivia; feel free to make the doc link as complete as you like, since its all within the pnd file. (ie: Include the full DosBox documentation if you want to, in your DosBox pnd :)&lt;br /&gt;
&lt;br /&gt;
* Try to set up the appdata directory for the user; if you need a 'roms' or 'image' directory in the appdata (such as in the case of an Atari ST emulator needing a location to house the TOS OS image, say), then do a 'mkdir' in your 'runscript', to create it. Thus the user will find a (example) Hatari appdata directory, and within, any directories he needs (possibly empty.) This just makes it obvious for the user where to put stuff.&lt;br /&gt;
&lt;br /&gt;
* Try using rudimentary zenity scripts to pop up imporant pre-run information, if the application can't do so; ie: Hatari itself has a very fine GUI in it, but if the Atari ST TOS image is not present, it just exits and fails to run, so the GUI doesn't have time to do anything useful. In this case, it could be wise to use a 1 line zenity script that checks before the emu runs for the file in question, then pop up a dialog box saying 'put this file /here', so the user knows what the heck happened&lt;br /&gt;
&lt;br /&gt;
* Always Always Always write your 'state info' to current-working-directory (ie: ./foo, and not ~/foo). The pnd-system will redirect this to the users appdata of course, keeping things clean and predictable. If you're just porting an app, that has ~ all over the darned place, and you don't want to muck up the code.. just have your 'runscript' do something like 'set $HOME=.' and you're good to go!&lt;br /&gt;
&lt;br /&gt;
* Runscripts; the PXML.xml can specify to run your binary, or you can run a .sh script that in turn runs your binary, say. This lets you do various tests, set up LD_LIBRARY_PATH, or other mischief before your binary gets run. Very handy. I often have PXML.xml run 'runfoo.sh', and runfoo.sh in turn runs ./foo after setting things up, making directories, etc.&lt;br /&gt;
&lt;br /&gt;
* For data that is not kept in your appdata directory, try to keep it local to the current SD _or_ better still, search both SD. ie: libpnd uses a basic but really handy system for iterating across a list of directories (including glob type expansion); so you can tell it something like /media/*/foo:/tmp and it'll check every mounted device (including both SD slots) in the 'foo' directory, as well as /tmp; you can have it call your code as it looks through, or you can ask libpnd to find a file for you and report where it was found, across all your searchpaths; you don't have to use libpnd's code to do it, you coudl write oyur own (using libpnd as an example if you need the help), as its pretty easy to build (20 lines of code maybe?) Anyway, the trick is to be multi-SD aware, and bonus marks for handling if theres a USB mounted drive etc as well. (Example; I coded minimenu so that when it caches out a screenshot, it checks for free space first, and tries first on the same SD that minimenu is running on, and then across a searchpath of alternate locations to cache to; this way the user can customize the caching, and it can be on various devices.)&lt;br /&gt;
&lt;br /&gt;
====What filesystem types can be contained within a pnd-file?====&lt;br /&gt;
&lt;br /&gt;
The pnd container can really contain a large variety of filesystem types; day-zero we're aiming for ISO since it is simple, easy build across every major OS, and fast to use. But it is not the only supported filesystem type, and more should be added all the time. (Possibly '-auto' can be added to pnd-run and it'll &amp;quot;just work&amp;quot; for dozens of types!)&lt;br /&gt;
&lt;br /&gt;
A compressed filesystem type has always been desirable for file sizing reasons, though it potentially impacts performance (depending on the application operation really.)&lt;br /&gt;
&lt;br /&gt;
Supported types (not an exhaustive list!):&lt;br /&gt;
&lt;br /&gt;
o ISO&lt;br /&gt;
&lt;br /&gt;
o squashfs&lt;br /&gt;
&lt;br /&gt;
====PND generation workflow====&lt;br /&gt;
&lt;br /&gt;
- create a directory to represent the application on SD card; i.e.: ./mame-app&lt;br /&gt;
&lt;br /&gt;
- create a PXML.xml fil and drop it into the dir (./mame-app/PXML.xml); genpxml script can be used, or do it by hand&lt;br /&gt;
&lt;br /&gt;
- drop the executable and data files into this dir (say, ./mame-app/mame.bin, and ./mame-app/artwork/foo, etc.)''' &amp;lt;- note, with a PXML.xml and executabe, it can now be discovered and run without even bundling into .pnd!'''&lt;br /&gt;
&lt;br /&gt;
- invoke pnd-make.sh to produce mame4all-pandora-1.0-arm.pnd or whatever you want to call it (foobearspanky.pnd, we don't care.)&lt;br /&gt;
&lt;br /&gt;
- you're done, distribute it as you see fit&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows / DOS commandline====&lt;br /&gt;
&lt;br /&gt;
There should be a basic GUI along very soon, and more advanced friendlier GUIs in due time. But for now, we thought it prudent to include some basic instructions on the command line for day-zero.&lt;br /&gt;
&lt;br /&gt;
For this command-line tutorial, I will assume you have already created a PXML.xml file; copy one of the templates and then edit it, using notepad or whatever _TEXT_ editor you see fit.&lt;br /&gt;
&lt;br /&gt;
Prepare in advance:&lt;br /&gt;
&lt;br /&gt;
1) Make a PXML.xml file (through whatever means; copy a template, or get a PXML.xml tool when they come available.) Ensure that you've got a reasonably unique-id in that field (ie: say, app-name, your name, and date/time all catenated together.) &lt;br /&gt;
&lt;br /&gt;
2) Get yourself mkisofs tools; for example, grab from here: http://www.student.tugraz.at/thomas.plank/ -- get cdrtools-2.01-win32-bin.zip and DLL version 1.5.25, and extract to somewhere. That lets you run 'mkisofs' to spit out .iso files&lt;br /&gt;
&lt;br /&gt;
2b) If you want to make a compressed image, use squashfs tools here: ftp://ftp.slax.org/useful-binaries/win32/squashfs-tools/&lt;br /&gt;
&lt;br /&gt;
3) Put your application and all needed files into a single directory .. say &amp;quot;myapp&amp;quot;; it doesn't matter what you call it. Might be cool as a Makefile step&lt;br /&gt;
&lt;br /&gt;
4) In your app-dir, put the PXML.xml file in the root&lt;br /&gt;
&lt;br /&gt;
5) Put the icon in the root of that dir as well (make it a .png file)&lt;br /&gt;
&lt;br /&gt;
6) Make sure the PXML.xml names the icon (just its filename.png), and specifies the executable (foo.bin or whatever.)&lt;br /&gt;
&lt;br /&gt;
Generate the actual PND-file, fully manual method:&lt;br /&gt;
&lt;br /&gt;
1) Make yourself the iso; this step produces the iso, but to turn the iso into a pnd you need a couple last steps. You could also use some fancy iso-building tool.&lt;br /&gt;
'''mkisofs -o foo.iso -R /path/to/folder/myapp'''&lt;br /&gt;
&lt;br /&gt;
2) Append PXML.xml to the .iso (yes, the PXML.xml is included in the iso, but we also want to append it for performance reasons.) &lt;br /&gt;
'''copy foo.iso+PXML.xml foo.step2'''&lt;br /&gt;
&lt;br /&gt;
3) Append the icon PNG file to the .iso (if you have an icon; if not, you can leave this step out.)&lt;br /&gt;
'''copy foo.step2+myicon.png foo.pnd'''&lt;br /&gt;
&lt;br /&gt;
4) Clean up: del''' foo.step2 foo.iso'''&lt;br /&gt;
&lt;br /&gt;
5) Profit!&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Linux/BSD/Unix (including on Pandora)====&lt;br /&gt;
&lt;br /&gt;
=====Command-line=====&lt;br /&gt;
&lt;br /&gt;
Tools are included in the libpnd distribution; see below for discussion, but suffice to say they are included int he GIT. Look in testdata/scripts for:&lt;br /&gt;
&lt;br /&gt;
o genpxml - spits out a template PXML.xml for you, and even includes a reasonably unique-id&lt;br /&gt;
o pnd-make.sh - given a directory and some arguments, will spit out a .pnd file; great for use in Makefiles&lt;br /&gt;
&lt;br /&gt;
We're working on others as well, so piece of cake under Unix and Unix-like OSes.&lt;br /&gt;
&lt;br /&gt;
=====GUI=====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows GUI====&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Mac OSX====&lt;br /&gt;
&lt;br /&gt;
===PXML overrides===&lt;br /&gt;
&lt;br /&gt;
There are a couple of ways to effect an override of the PXML, without modifying a pnd-file.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;In-path&amp;quot; override files: .ovr====&lt;br /&gt;
&lt;br /&gt;
The library automatically imports a limited number of overrides from a conf file that can be located in the same location as its matching .pnd file is.&lt;br /&gt;
&lt;br /&gt;
For instance, if /pandora/desktop/awesomegame.pnd exists, then libpnd will automatically also search for /pandora/desktop/awesomegame.ovr&lt;br /&gt;
&lt;br /&gt;
Some menu systems will also be smart enough to watch for an icon override -- /pandora/desktop/awesomegame.png -- and if present, to use it; 'minimenu' (mmenu) is aware of that, as is pndnotifyd daemon when emitting .desktop files. Likely pmenu will also be updated. In effect, the user can override the icon, category and other attributes of the pnd, without needing special tools or to alter the system.&lt;br /&gt;
&lt;br /&gt;
An .ovr file must be named identically to the pnd-file, excepting the 3 character file extension.&lt;br /&gt;
&lt;br /&gt;
NOTE: Given that a pnd may emit multiple applications from its PXML.xml, the ovr will have to be aware of this so it can override the correct application(s) within the pnd. Some menus and information tools will display the application list with 'subapp number' to assist identification. minimenu shows the subapp number in the detail panel, for example. In the case where a pnd-file has only one contained application, that is subapp-number zero. For any additional subapplications, increment by one .. but it can be tricky to know which app is which subapp number. (A careful eye will notice the .desktop filename includes the subapp-number after the pound sign .. foo#3.desktop is subapp_number 3.)&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My note text line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PXML override file -- currently unsupported====&lt;br /&gt;
&lt;br /&gt;
PXML.xml files can have any number of their elements over-ridden by user preferences. &lt;br /&gt;
&lt;br /&gt;
The design goal here was to make it so user-preferences could alter the impact of the PXML.xml in any way, but without requiring the actual PXML.xml in the .pnd (and within the ISO therein) to be altered (could be a 500MB ISO after all!), and further, for these changes to persist. Consider than an SD card could be removed and inserted into the other slot, or the app could be removed entirely and come back another day, or other scenarios.&lt;br /&gt;
&lt;br /&gt;
As such, the PXML-overrides are kept in NAND in the user homedirectory (See the config files to find out where.)&lt;br /&gt;
&lt;br /&gt;
libpnd includes functions to pull in PXML, and also functions to then look for and merge in overrides. It is not always done since you may wish to inspect the PXML or the overrides, so the developers job is to do as they see fit -- pull the XML, and likely also pull in the overrides.&lt;br /&gt;
&lt;br /&gt;
At this time I'm not sure if people will ever use overrides, but the system has been built in should it be needed.&lt;br /&gt;
&lt;br /&gt;
===Included shellscripts to generate files and other sundry duties===&lt;br /&gt;
&lt;br /&gt;
====genpxml====&lt;br /&gt;
&lt;br /&gt;
This tool can spit out a basic but correct PXML.xml, faking up a halfway-useful unique-id in the process. It might be handy in saving you writing up a PXML.xml from scratch.&lt;br /&gt;
&lt;br /&gt;
====pnd_hup.sh====&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will attempt to locate this script and invoke it after an auto-discovery run, if the pnd_hup entry is present (and uncommented) in the config files. It is expected to be commented out in release images, as xfce watches directories for .desktop files and does not need a HUP; some desktop managers need to be HUPped to rescan for .desktop files in a timely fashion, so the pnd_hup config entry can be uncommented and this script will attempt to figure out who to HUP.&lt;br /&gt;
&lt;br /&gt;
====pnd_make.sh====&lt;br /&gt;
&lt;br /&gt;
This is one of the great ones :)&lt;br /&gt;
&lt;br /&gt;
Given a directory with a PXML.xml (see genpxml above) and an executable and any other goo you want in there, this script will spit out a .pnd file you can execute or distribute as an application.&lt;br /&gt;
&lt;br /&gt;
====pnd_run.sh====&lt;br /&gt;
&lt;br /&gt;
This job does a lot of the heavy lifting for libpnd, including setting up the 'union filesystems', doing .pnd and PXML.xml-app-dir execution and mounting, and so on. Generally you will talk to it via libpnd or .desktop files, but you can invoke it dorectly from your apps if you wish to circumvent libpnd or mount .pnd files within a shellscript/perlscript/etc.&lt;br /&gt;
&lt;br /&gt;
==Auto-discovery of applications==&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
==Integration with FreeDesktop .desktop systems==&lt;br /&gt;
&lt;br /&gt;
===dotdesktop (.desktop) files===&lt;br /&gt;
&lt;br /&gt;
===Icons===&lt;br /&gt;
&lt;br /&gt;
There are some rules for Icons in PXML.xml and pnd/directory bundles&lt;br /&gt;
&lt;br /&gt;
- An Icon should be in the root of the directory or .pnd bundle&lt;br /&gt;
&lt;br /&gt;
- An Icon must be specified in the PXML.xml if you expect it to work&lt;br /&gt;
&lt;br /&gt;
- As the PXML.xml is parsed, the icon is sought; if the icon is specified, but not found, it is assumed to be a system default icon and the filename will be placed into the .desktop Icon= line verbatim (ex: Icon=foo.png), and the window manager presumably will know how to locate it. If the icon is specified, and is found, then it will be copied into the configured IconPath, and the full path to it will be used for the Icon= line in the .desktop file ex: Icon=/tmp/myicon.png). If no icon is specified in the PXML file, then no Icon= line will be entered into the .desktop and the WM will presumably apply a default icon based on category or whatever.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==APIs==&lt;br /&gt;
&lt;br /&gt;
Feel free to just go read the .h files; I have tried to comment liberally :)&lt;br /&gt;
&lt;br /&gt;
===Setting and Getting the CPU clock speed===&lt;br /&gt;
&lt;br /&gt;
===Device paramaters - brightness, etc===&lt;br /&gt;
&lt;br /&gt;
===PND files, exec and mount===&lt;br /&gt;
&lt;br /&gt;
===Application discovery===&lt;br /&gt;
&lt;br /&gt;
===Config file parsing===&lt;br /&gt;
&lt;br /&gt;
===Boxing, the singly-linked list container===&lt;br /&gt;
&lt;br /&gt;
===Directory watching===&lt;br /&gt;
&lt;br /&gt;
===Logging api===&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2325</id>
		<title>Libpnd hub</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=Libpnd_hub&amp;diff=2325"/>
		<updated>2010-05-17T00:39:34Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* What filesystem types can be contained within a pnd-file? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=libpnd - the Pandora Library=&lt;br /&gt;
&lt;br /&gt;
libpnd is a basic collection of functions and tools to make working Pandora-specific operations easier; to wit, it is hoped multiple applications will make use of this library rather than re-implement similar functionality and lead to problems down the road. (Instead we can run into problems together and thus clobberize them.) &lt;br /&gt;
&lt;br /&gt;
libpnd thus is a collection of ...&lt;br /&gt;
&lt;br /&gt;
* handy system code that hopefully is reusable - IO functions, CPU clock setting, etc.&lt;br /&gt;
* applications for supporting the Pandora unique features, such as pndnotifyd for auto-discovery of PXML and .pnd applicatons&lt;br /&gt;
* libraries for support of the .pnd and PXML systems; i.e.: for locating, executable, mounting and unmounting PXML-directory and .pnd applications, loading PXML and handling overrides&lt;br /&gt;
* hopefully reusable code for support of these things; i.e.: a rudimentary but useful config-file parser, rudimentary singly-linked-list container, etc.&lt;br /&gt;
&lt;br /&gt;
libpnd will/does also include utility functions for setting the CPU clock, reading GPIO inputs without depending on SDL, and other handy bits.&lt;br /&gt;
&lt;br /&gt;
'''You can, nay, are needed - contribute to libpnd!'''&lt;br /&gt;
&lt;br /&gt;
==Design considerations and philosophy==&lt;br /&gt;
&lt;br /&gt;
While much of libpnd is obvious, some decisions had to be made and it may help to know the guiding principle behind it; the Pandora device will be a handheld _computer_, but libpnd is designed to facilitate certain operations with goals towards..&lt;br /&gt;
&lt;br /&gt;
- simplicity - just work right, configuration not generally needed&lt;br /&gt;
&lt;br /&gt;
- obviousness - work as one would expect for this sort of device; i.e.: the user assumes something will work a certain way, and it does&lt;br /&gt;
&lt;br /&gt;
- like other guys - as an extension of the prior point, we have tried to follow UNIX spirit and provide reusable small tools to do the work those bits can be leveraged, but further tried to follow the spirit of other consoles. So while the device is a powerful little computer, it is probably going to be used by gaming and retro enthusiasts and so we color some of our decisions that way. (i.e.: consider that a PS2/xbox/PSP/etc will have save-game or data management as a separate application, for instance. If thats the best multi-million dollar companies can come up with over decades, well, its not so bad for us to fall back on!)&lt;br /&gt;
&lt;br /&gt;
- not over-defined; libpnd and PXML try to define a bunch of things, but we also do not _over define_; we try to lead by providing examples and styles, and while we have designed ahead for many things, we have also not nailed a lot of that down too early. It is better to be simple and shipped, then complex and a mess.. adaptable rather than scary.&lt;br /&gt;
&lt;br /&gt;
The library is of course broken into parts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include     - include these files to make use of the lib&lt;br /&gt;
lib         - the code that produces the lib&lt;br /&gt;
test        - mini tools to test various pieces of the lib in isolation&lt;br /&gt;
bin         - test tools - tools for testing the lib as it is developed, not anticipated to be used by many&lt;br /&gt;
testdata/   - for testing /etc/pandora; will contain 'conf' dir, for example&lt;br /&gt;
apps/       - actual applications people may use, such as pndnotifyd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For now though, here are a couple notes about the design.&lt;br /&gt;
&lt;br /&gt;
- it is straight C code, to be maximumly re-usable (perhaps C++ and other language bindings will tie back to it). I have gone out of my way to limit external references so that bindings are easier to make. &lt;br /&gt;
&lt;br /&gt;
- contrary to the previous comment, we've used a bit of C++ for the tinyxml parser .. hopefully this is not an issue.&lt;br /&gt;
&lt;br /&gt;
- I have tried to keep the API relatively simple and am faking some OO like data hiding to try to keep dev noses out of structures that are subject to change. i.e.: functions for list management and node access are provided, don't dig into the void* cast structs, or you could get burnt.&lt;br /&gt;
&lt;br /&gt;
- the API should be pretty stable; so far very few user-code changes have ever been needed.. lib internal changes should be binary compatible.&lt;br /&gt;
&lt;br /&gt;
- As a result of that decision, 'handles' are used; a handle is a 'black box' type, something you cannot just use 'handle h; h -&amp;gt; foo = 5' type code for. Instead, internally the library will cast the handle to the actual useful type (which may involve pointer arith etc). This way the user can be returned a handle, and pass the handle to various access functions to get useful data/operations.. but the user is not encouraged to look inside the data objects himself&lt;br /&gt;
&lt;br /&gt;
- As another implication, access functions are available aplenty; it is a little unwieldy perhaps, but its all about keeping the API good without the user peeking inside and risking being broken down the road. (By example, consider.. you use ftell() on a FILE object; you don't go looking in FILE for the 'position' member, since it might be platform specific, etc.)&lt;br /&gt;
&lt;br /&gt;
- The lib works pretty well, but there is room for improvement internally; it won't hurt my feelings for you to suggest improvements, and I'm sure we would all be grateful for any patches you provide. We've _started_ this library, but by no means wish to carry it alone!&lt;br /&gt;
&lt;br /&gt;
==Opportunities for improvement==&lt;br /&gt;
&lt;br /&gt;
Certainly nothing is perfect, especially when chasing moving targets.  Some aspects of the library are less efficient, or missing, or buggy, and a few things are noted here should someone have time. The API was designed to be pretty stable so the internal code could be altered without breaking the API interface.&lt;br /&gt;
&lt;br /&gt;
- better ISO lang handling .. due to shift from original PXML spec to new PXML spec with better lang support I've not updated some of the internal code, API uses etc to handle it. (even .desktop files could include all iso-lang titles, and let the WM pick through as the spec suggests.)&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
&lt;br /&gt;
libpnd (including all the apps etc) are released under the LGPL (ie: so there should be no encumbrances that prevent linking to commercial applications.)&lt;br /&gt;
&lt;br /&gt;
   1                   GNU LESSER GENERAL PUBLIC LICENSE&lt;br /&gt;
&lt;br /&gt;
   2                        Version 2.1, February 1999&lt;br /&gt;
&lt;br /&gt;
==Obtaining the library==&lt;br /&gt;
&lt;br /&gt;
libpnd is in the Official Pandora GIT repo: [http://git.openpandora.org/cgi-bin/gitweb.cgi]&lt;br /&gt;
&lt;br /&gt;
To obtain yourself a copy, use something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://git.openpandora.org/pandora-libraries.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thats all you normally need. For copy-paste from the private Wiki sake, heres what I had before:&lt;br /&gt;
&lt;br /&gt;
Without going into how to set up a GIT, the summary that I (as a registered dev in the repo) used was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir libpnd&lt;br /&gt;
cd libpnd&lt;br /&gt;
git init&lt;br /&gt;
git remote add libpnd ssh://foo@git.openpandora.org/srv/git/pandora-libraries.git&lt;br /&gt;
git pull libpnd master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Building the library==&lt;br /&gt;
&lt;br /&gt;
Standard 'make' should be sufficient here; pull down the directory from the GIT, cd into it, and run make. Thats it.&lt;br /&gt;
&lt;br /&gt;
Note that the make default target is 'everything', which will emit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libpnd.a - the static linked version of the lib&lt;br /&gt;
libpnd.so.1.0.1 - the dynlinked version&lt;br /&gt;
libpnd.so.1 - the stub for the shared lib; i.e.: apps should link against libpnd.so.1 and not the 1.0.1 over-specific version&lt;br /&gt;
bin/* - the 'test' dir and the 'apps' dir builds will end up in bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are a few additional make targets, however.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make clean - wipes out the object files, the bin files, and *~* (emacs backup files), empties some of the deploy stuff, etc. Do this before committing to GIT or we will beat you with sticks.&lt;br /&gt;
make deploy - populates the deploy/ directory, which is what is used inthe shipping images; i.e.: testdata/conf includes test configs, while deploy/etc/pandora/conf includes the configs we ship with. This make will copy over some of the libs and binaries and such.&lt;br /&gt;
make pnd - create a few sample pnd files for testing the lib on an x86 machine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Included Applications==&lt;br /&gt;
&lt;br /&gt;
===pndnotifyd===&lt;br /&gt;
&lt;br /&gt;
Manages the auto-discovery mechanism and integrating PXML.xml dir-apps and .pnd files into the FreeDesktop standard system (.desktop files). A dedicated libpnd-aware menu could leverage libpnd directly and not need pndnotifyd, though pndnotifyd does offer some handy bits such as HUPping apps to suggest to them that applications may have been added/removed (libpnd includes all the necessary functions for this as well.)&lt;br /&gt;
&lt;br /&gt;
===pndvalidator===&lt;br /&gt;
&lt;br /&gt;
Is mostly a skeleton right now; in the future, it is hoped it will inspect a PXML.xml and then check to ensure the referenced assets are present; the goal to validate the PXML.xml is spec compliant, and the resulting application would be useful.&lt;br /&gt;
&lt;br /&gt;
===discotest===&lt;br /&gt;
&lt;br /&gt;
One of the test tools; it essentially runs an auto-discovery to list off the found apps (be they PXML.xml dir apps or .pnd files), and can dump various data or invoke one or other little tasks; used to test lots of&lt;br /&gt;
bits of libpnd as it was developed.&lt;br /&gt;
&lt;br /&gt;
===rawpxmltest===&lt;br /&gt;
&lt;br /&gt;
Reads a given PXML.xml and spits out some of the fields found within.&lt;br /&gt;
&lt;br /&gt;
===test tools===&lt;br /&gt;
&lt;br /&gt;
See the test/ dir in the libpnd source for assorted goofy little test apps used for testing bits of libpnd over time. They also may serve as source examples for using some of the APIs. They're old and shoddy probably too.&lt;br /&gt;
&lt;br /&gt;
==Distributed PXML.xml-directory and pnd applications, how does running them actually work?==&lt;br /&gt;
&lt;br /&gt;
This is just a quick summary to save you guessing by reading this whole document.&lt;br /&gt;
&lt;br /&gt;
In essence, libpnd includes lots of real code, but in many places it passes heavy lifting off to shellscripts. This is both handy because the scripts are easily modified without recompilation, and further extends our design goals of making the library bindable to any other language.&lt;br /&gt;
&lt;br /&gt;
Remember, PXML.xml directories are just as executable/mountable as .pnd apps.&lt;br /&gt;
&lt;br /&gt;
So while libpnd is mostly straight-C and so easily bound to python or perl or whatever, libpnd itself invokes many scripts. Those scripts can be directly used by other applications, including other shellscripts.. so libnd functionality can even have bindings in other scripts. This is very flexible and powerful, and handy during debugging or SSHing into the Pandora, etc.&lt;br /&gt;
&lt;br /&gt;
The application lifecycle goes like this:&lt;br /&gt;
&lt;br /&gt;
- device is turned on&lt;br /&gt;
&lt;br /&gt;
- during init, pndnotifyd is brought up and inhales the config giles&lt;br /&gt;
&lt;br /&gt;
- pndnotidyd will attempt to auto-discover what PXML.xml directory apps and .pnd-file apps are in the configured searchpaths&lt;br /&gt;
&lt;br /&gt;
- pndnotifyd will set up filesystem watches on the directories in the notify searchpath; if any of those directories are touched, pndnotifyd will wake up and re-auto-discover .. possibly removing .desktop entries or creating new ones. (i.e.: you drop a new app into the app searchpath, or remove one, or mount an SD card, etc. This is how appications immediately show up or vanish from the window manager desktops.)&lt;br /&gt;
&lt;br /&gt;
- a libpnd aware launcher can execute applications direct (using libpnd)&lt;br /&gt;
&lt;br /&gt;
- a libpnd unaware launcher can execute applications via the .desktop standard system; pndnotidyd will emit .desktop files as needed.&lt;br /&gt;
&lt;br /&gt;
- when libpnd or a .desktop file need to execute an application, they do it via pnd_run.sh (which may be leveraged by other applications, but they hould use libpnd if they can instead, for utmost compatiblity down the road.) pnd_run.sh does the mount of the ISO, runs the actual execable and so on, as directed by libpnd or the command-line args from the .desktop. pnd_run.sh will clean up after everything as well.&lt;br /&gt;
&lt;br /&gt;
So it all works like magic, but it is not that complex a system once you've got the hang of what all is going on.&lt;br /&gt;
&lt;br /&gt;
application -&amp;gt; libpnd -&amp;gt; shellscripts -&amp;gt; system&lt;br /&gt;
&lt;br /&gt;
==FAQ: IF you want to make files visible to the apps, do you have to modify the pnd?==&lt;br /&gt;
&lt;br /&gt;
No. When apps write back to themselves, the writes go to their /pandora/appdata on the SD that houses them. The next time the app reads a file in its directory, the OS will ensure they get the newer file, which is the one in the appdata.&lt;br /&gt;
&lt;br /&gt;
Likewise, you can just drop a file into the appdata and the app will see it.&lt;br /&gt;
&lt;br /&gt;
The app doesn't know about appdata and its pnd file.. the OS and libpnd take care of all the magic.. the app sees one directory, but the reality is there is magic merging going on behind the scenes.&lt;br /&gt;
&lt;br /&gt;
==Assumptions about the filesystem and Configuration==&lt;br /&gt;
&lt;br /&gt;
Note that for libpnd to work, it makes certain assumptions about the filesystem and config files. Since libpnd was developed with the images it should work for the Pandora .. but just dropping libpnd onto another Linux distribution and it won't likely 'work out of the box'. Certain config files will need to be set, and certain conventions followed.&lt;br /&gt;
&lt;br /&gt;
===Searchpaths===&lt;br /&gt;
&lt;br /&gt;
libpnd was designed so that most everything is configured in files, and that these files should be easily hackable and easily overriden, without compromising the machine. It should be feasible to add a config file to an SD card, have it take over if available when required, and then 'undo' those configs simply by removal of the SD card and rebooting.&lt;br /&gt;
&lt;br /&gt;
To facilitate this design goal, all config files are 'sought' using a search-path system.&lt;br /&gt;
&lt;br /&gt;
Developers should be mindful of using the libpnd APIs so this behaviour is inherited to interested applications; developers could also reuse the logic for searching for files, if they find it useful.&lt;br /&gt;
&lt;br /&gt;
Searchpaths are colon-delimited list of paths, searched left to right.&lt;br /&gt;
&lt;br /&gt;
ex: foo:bar:/my/baz means to look for a given file in 'foo', then in 'bar', then in '/my/baz'.&lt;br /&gt;
&lt;br /&gt;
The standard config files have a default searchpath, and those config files will define further searchpaths for scripts and such the system uses. This makes the system highly flexible -- default scripts are included, but can be overridden by dropping the right named script on an SD card, or by altering a config file.&lt;br /&gt;
&lt;br /&gt;
See the example config files below for example searchpaths -- i.e.: how pndnotifyd searches for pnd_run, etc.&lt;br /&gt;
&lt;br /&gt;
===Notification paths===&lt;br /&gt;
&lt;br /&gt;
The 'apps' config includes a searchpath that specifies the sub-paths to be 'watched'. Various watch mechanisms exist for various filesystem types, but over the course of Pandora development (various kernels, various k-modules, various DM and WM's, I found the included system most stable, though not most current. After a final device image is settled on, it might be time to alter the notification system, but it should not impact the libpnd API.)&lt;br /&gt;
&lt;br /&gt;
Anyway, watches are placed upon the paths defined, and if anything in those paths changes, the auto-discovery code is kicked off to seek our PXML.xml and .pnd type applications in the search paths.&lt;br /&gt;
&lt;br /&gt;
Note that searchpath and notifypaths are different (and usually very similar, but have the option to be very different.)&lt;br /&gt;
&lt;br /&gt;
===Config files===&lt;br /&gt;
&lt;br /&gt;
libpnd includes a generic simple config file parser and assumes the presence of a few config files. It also includes defaults&lt;br /&gt;
so if a config is missing or broken things should work.&lt;br /&gt;
&lt;br /&gt;
In general, Pandora specific config files should be located in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/pandora/conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The config files are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conf -- this file is generally _not_ included with the Pandora and left to default; its job is to define the basic default searchpath for config files, so should you wish to override things entirely, you may need to alter this file. i.e.: If you wish to switch to test config files on SD or in /tmp, instead of using any other conf files .. you can create this guy. This provides a mechanism to short circuit the entire conf system.&lt;br /&gt;
&lt;br /&gt;
apps -- this config file defines auto-discovery and other application bundle parameters&lt;br /&gt;
&lt;br /&gt;
desktop -- this config defines &amp;quot;dotdesktop&amp;quot; .desktop and FreeDesktop integration paramters -- example is where to spit out icons or .desktop files from discovered PXML.xml or pnd applications&lt;br /&gt;
&lt;br /&gt;
categories -- this config maps PXML.xml spec based categories to FreeDesktop standard categories; in this way a PXML based applicatoin can show up in the appropriate categories of a WM that does not use libpnd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====conf File====&lt;br /&gt;
&lt;br /&gt;
No default is included with the distribution.&lt;br /&gt;
&lt;br /&gt;
The default search path is reasonable and assumes we want the official /etc/pandora/conf near the end, with checks to the SD cards for overrides first. (Likely most people will not override, so the canonical location will be used 99.9% of the time.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_SEARCHPATH &amp;quot;/media/mmcblk0p1/pandora/conf:/media/mmcblk1p1/pandora/conf:/etc/pandora/conf:./testdata/conf&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key for override is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define PND_CONF_KEY        &amp;quot;conf.searchpath&amp;quot; /* if not found, use PND_CONF_SEARCHPATH */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Which suggests using something like this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[conf]&lt;br /&gt;
searchpath   /foo/bar:/baz/bing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====desktop File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Desktop configuration&lt;br /&gt;
&lt;br /&gt;
[dotfiles]&lt;br /&gt;
#(~/Desktop for xfce, /usr/share/applications for WMs that actually follow spec)&lt;br /&gt;
dotdesktoppath  ~/Desktop/      # path for pndnotifyd to spit .desktop files into (run as root)&lt;br /&gt;
iconpath        /tmp    # path for pndnotifyd to drop icons into (can be same as .desktop if WM permits)&lt;br /&gt;
&lt;br /&gt;
[launcher]&lt;br /&gt;
# if hupscript is commented out entirely, pndnotifyd will not try to find/run the hup&lt;br /&gt;
# if it is uncommented, pndnotifyd will attempt to invoke the hupscript after emitting .desktop files&lt;br /&gt;
# (the hupscript exists to hup the WMs to redisplay .desktop apps)&lt;br /&gt;
#hupscript      pnd_hup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====apps File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# Application configuration&lt;br /&gt;
&lt;br /&gt;
[autodiscovery]&lt;br /&gt;
# searchpath is a list of paths (colon separated) in which to look for PXML.xml or .pnd-file applications&lt;br /&gt;
searchpath      /media/*/pandora/apps:/usr/pandora/apps&lt;br /&gt;
# notifypath is a list of paths to monitor; if anything in those paths changes, the searchpath is rescanned&lt;br /&gt;
# note that for each path chunk, all current subdirs of that path are also watched)&lt;br /&gt;
notifypath      /media:/media/*/pandora/apps:/usr/pandora/apps:./testdata/app?&lt;br /&gt;
&lt;br /&gt;
# PXMLs may be overridden .. i.e.: overrides are a subset of PXML, where the values are copied over the full PXML&lt;br /&gt;
[overrides]&lt;br /&gt;
# searchpath to look for PXML overrides (which are named by the unique-id)&lt;br /&gt;
searchpath      ~/pxml-overrides&lt;br /&gt;
&lt;br /&gt;
# [pnd] defines where to locate the pnd support scripts, so the user may override pnd_run.sh without clobbering built in&lt;br /&gt;
[pnd]&lt;br /&gt;
searchpath      /media/*/pandora/scripts:/usr/pandora/scripts&lt;br /&gt;
runscript       pnd_run.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====categories File====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Open Pandora&lt;br /&gt;
# dotdesktop configuration&lt;br /&gt;
&lt;br /&gt;
# this config file maps 'PXML' categories to free-desktop standard categories&lt;br /&gt;
# i.e.: category 'Foo' could map to more standard 'Utility', thus making .desktop file&lt;br /&gt;
# emitting a more useful thing&lt;br /&gt;
&lt;br /&gt;
# the standard listing of categories is:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/latest/apa.html&lt;br /&gt;
&lt;br /&gt;
# note that 'map' section in the config is _required_ for a match to be found; this&lt;br /&gt;
# is done to separate categories from (future) top-level directives&lt;br /&gt;
&lt;br /&gt;
default Application;Utility;Network;&lt;br /&gt;
&lt;br /&gt;
[map]&lt;br /&gt;
Development     Development&lt;br /&gt;
Education       Education&lt;br /&gt;
Games   Game&lt;br /&gt;
Graphics        Graphics&lt;br /&gt;
Internet        Network&lt;br /&gt;
Multimedia      AudioVideo&lt;br /&gt;
Office  Office&lt;br /&gt;
Settings        Settings&lt;br /&gt;
System  System&lt;br /&gt;
Utilities       Utility&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SD card layout===&lt;br /&gt;
&lt;br /&gt;
libpnd concerns itself with things in the 'pandora' root folder on SD. We agonized over this decision, but settled on this to avoid cases where someone with a 16GB SDHC card puts 50-million files with &amp;quot;.pnd&amp;quot; on them, and expects reasonable performance. Instead, applications for instance would have to be in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/menu -&amp;gt; apps that will go to /usr/share/applications and should show up in xfce menu by category&lt;br /&gt;
/pandora/desktop -&amp;gt; apps that will go to ~/Desktop and show up on user desktop as icons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following location is used by pmenu (and may get deprecated, but I've not discussed it with cpasjuste yet.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/apps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e.: the searchpath for autodiscovery includes /media/*/pandora/apps (and desktop and menu now)&lt;br /&gt;
&lt;br /&gt;
Also in the /pandora/ folder is a magic 'appdata' folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/pandora/appdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a .pndfile or PXML.xml dir get mounted, any writes back to the mounted area are put into appdata, with a subdir by the unique-id. i.e.: With the hypothetical MAME.pnd, it might update its config files after a user changes something, or create new files, or store hiscores or whatever. If it doesn't write them to NAND, and doesn't want ot write them to /mame/some/dir, but instead record it to itself for whatever reason, it would go to /pandora/appdata/MAMEs-ID/ instead. The pnd or PXML.xml app area is never modified during a run, only the appdata. (But when an application reads its own path, it will pick up the appdata version of the file instead of the actual file. Then magic of union-type filesystems!)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
If Myapp with unique-id foo.123 is mounted, then any write-backs are directed to..&lt;br /&gt;
&lt;br /&gt;
/pandora/appdata/foo.123/&lt;br /&gt;
&lt;br /&gt;
On the SD that hosts the application.&lt;br /&gt;
&lt;br /&gt;
===NAND layout===&lt;br /&gt;
&lt;br /&gt;
In addition to seeking applications in SD cards, /usr/pandora/apps is included in the default searchpath, so that 'built in' apps can be listed, or users can drop them there.&lt;br /&gt;
&lt;br /&gt;
It might be a cool addition to put a user homedir into the searchpath as well, so NAND but user-homedir (for on-device browser downloads, say.)&lt;br /&gt;
&lt;br /&gt;
==Command line tools and testing==&lt;br /&gt;
&lt;br /&gt;
A number of scripts and tools are included or built with libpnd, to facilitate testing of the lib as its being developed and to assist in making .pnd files and PXML.xml files.&lt;br /&gt;
&lt;br /&gt;
==PXML.xml and .pnd files==&lt;br /&gt;
&lt;br /&gt;
On most platforms, applications are distributed as an executable and optional datafiles and likely an installer. The installers job is to integrate the application into the filesystem, as the transport mechanism itself is not executable and is considered temporary. In Windows an application might be installed into Program Files, while in Unix an application might be dropped into /usr/local/bin .. data files in various other places.&lt;br /&gt;
&lt;br /&gt;
For the Pandora platform we wanted a very easy to use workflow -- download and run -- and also have a very different operating environment. With multiple SD cards available for expansion (and that space being highly desirable due to a smaller internal store) it is desirable to install applications to SD, and yet SD cards are by definition something users will wish to carry multiple of. With two slots, it could be quite a chore to install an application to SD1, its data to SD2, and then say have only one of them plugged in at a time, or switch which slot they're in, or any number of scenarios. i.e.: Installing onto a medium which may be present or not at any time is very different to how most operating systems work. So we made something new and awesome.&lt;br /&gt;
&lt;br /&gt;
The PXML.xml and .pnd-file approach we came up with attempts to address these issues.&lt;br /&gt;
&lt;br /&gt;
The goals:&lt;br /&gt;
&lt;br /&gt;
- for the user, an application can be a single file download&lt;br /&gt;
&lt;br /&gt;
- furthermore, there is no installation whatsoever, beyond dropping that single file into the right place on the SD card&lt;br /&gt;
&lt;br /&gt;
- using the application should be easy -- stick in the SD card, and tap/launch on the icon.&lt;br /&gt;
&lt;br /&gt;
- for uninstallation, delete the single file. Thats it, no fuss.&lt;br /&gt;
&lt;br /&gt;
- for the developer, creating that single file should be easy to do&lt;br /&gt;
&lt;br /&gt;
- for the system, performance should be high&lt;br /&gt;
&lt;br /&gt;
Remember, an application can be a .pnd 'bundle' (single file containing all the sub-files), or a PXML.xml 'dir application' (an unpacked .pnd esentially.) '''BOTH PXML.xml-dirs and .pnd's ARE EXECUTABLE.'''&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will auto-discover PXML.xml in a directory and consider that an application, emitting a .desktop file, just as well as a .pnd file. i.e.: This can be hand for development or users. Remember that a mounted PXML.xml dir still redirect write-backs to the /pandora/appdata directory, just like a full .pnd application. They are treated the same!&lt;br /&gt;
&lt;br /&gt;
===What are PXML.xml and .pnd files?===&lt;br /&gt;
&lt;br /&gt;
PXML.xml is a file describing an application&lt;br /&gt;
&lt;br /&gt;
A directory containing a PXML.xml _is executable_&lt;br /&gt;
&lt;br /&gt;
A .pnd file is the packaged up version of the directory that is executable.&lt;br /&gt;
&lt;br /&gt;
i.e.: a PXML.xml in a directory is just as executable as a .pnd representation of that directory.&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;br /&gt;
mkdir OutcaST&lt;br /&gt;
cp outcast.bin OutcaST/&lt;br /&gt;
cp PXML.xml OutcaST/&lt;br /&gt;
# at this point, the OutcaST directory is now discoverable and executable&lt;br /&gt;
&lt;br /&gt;
pnd_make.sh -this -that OutcaST outcast.pnd&lt;br /&gt;
# at this point, outcast.pnd is executable (as is the OutcaST directory), so upload outcast.pnd to the Open Handhelds Archive and let people enjoy!&lt;br /&gt;
&lt;br /&gt;
===A note on including shared libs===&lt;br /&gt;
A philsophy for packaging that I am advocating is to 'just make applications work' -- avoid dependancy trees.&lt;br /&gt;
&lt;br /&gt;
Some guidelines:&lt;br /&gt;
&lt;br /&gt;
1) you can depend on shared libs included with the firmware to always be there&lt;br /&gt;
&lt;br /&gt;
2) you should include any shared libs you need for your app, that are not in the firmware (yes, this increases app size a little bit, and potentially makes for duplication among apps that use the same shared libs)&lt;br /&gt;
&lt;br /&gt;
3) if a shared lib becomes desirable in the firmware, it can be added there as a firmware patch easily (this has the advantage of gradulaly updating the entire user based, and apps easily saying 'we depend in firmware version X', rather than making for pnd-dependnacies and the equivilent of 'dll hell'&lt;br /&gt;
&lt;br /&gt;
4) You'll have to be careful in linking your application to ensure that the shared libs you are including in the pnd/PXML-dir are to be locatable by your binaries. ie: stick them in a 'lib/' dir in your bundle, and stamp your binary with a library-path './dir/' so they can be found, say. More later.&lt;br /&gt;
&lt;br /&gt;
===Future idea: pnd's for containing system-wide shared libs===&lt;br /&gt;
&lt;br /&gt;
This is something we've bounced around for quite awhile, but not committed to. As it keeps coming up I thought I'd put some notes here in public.&lt;br /&gt;
&lt;br /&gt;
It is possibly desirable to make a special searchpath that is discovered during machine boot, and any pnd's found there are automatically mounted (and left mounted) into a special path (say /usr/local/pandora/lib or somesuch.) This way, collections of handy utilities or shared libraries could be distributed as a pnd, and become available in consistent locations. If 10 applications need a shared lib, and don't want to duplciate it in each of their pnd files, this could be an approach.&lt;br /&gt;
&lt;br /&gt;
I tend to think it is best avoided, however, since it complicates the user experience -- we end up with pnd depandancies, and apps nolonger about to 'just work', and apps that did work and 'suddenly break' when other files are altered. The philosphy we're going for with pnd files is 'drag and drop' -- user downloads a pnd file, and it works.. a self contained application, nice and easy. We start complicating the dependancies, and it turns into 'dll hell' as seen on other platforms.&lt;br /&gt;
&lt;br /&gt;
That said, it is _not_ difficult to add into the existing system and design; we've been mulling it over, but it is best avoided for now. rather than complicate the system up front, let us try to get a functional and as lightweight-as-possible system on the uptake, gather some usage data points and then worry about upgrades :)&lt;br /&gt;
&lt;br /&gt;
===File format - PXML.xml / PXML Specification===&lt;br /&gt;
See the [[PXML_specification|PXML specification]]&lt;br /&gt;
&lt;br /&gt;
Alternatively the spec is included in the docs/ directory of the libpnd distribution, though the wiki version linked above should be considered cannon.&lt;br /&gt;
&lt;br /&gt;
A note on history; the PXML spec was originally created by EvilDragon, and went through a number of revisions as suggestions came in; as these things are wont to do, the target was ever moving and the scope and meaning of PXML changed so at some point a more strategic approach was needed. dflemstr took it upon himself to help recode some of the parse and re-evaluate many of the PXML decisions and hence was born the PXML-version-2 spec.&lt;br /&gt;
&lt;br /&gt;
===File format - .pnd files===&lt;br /&gt;
The pnd file format is pretty straight forward, though most will interact with it through the included (or community supplied) tools.&lt;br /&gt;
&lt;br /&gt;
Basically its just an ISO file (or other filesystem type) with a PXML.xml and an optional PNG icon appended. (example: cat appfolder.iso app.pxml icon.png &amp;gt; app.pnd) For ease of discussion, I refer to ISO but in fact you coudl be using squashfs or other types.&lt;br /&gt;
&lt;br /&gt;
The ISO filesystem portion of the file can include anything the developer wishes, as long as it includes a PXML.xml in its root file and an executable somewhere in there. It can also include images, audio files, data files of any kind. It can be small or large.&lt;br /&gt;
&lt;br /&gt;
Yes, the PXML.xml is included in the ISO portion (in the root directory), and also appended to the end of the .pnd file (for _convenience_ .. it is very easy and fast to locate in this position; we can backseek into the ISO to find the PXML, but if its a 500MB ISO it could take awhile. Hence, we append it and can find it in one seek.)&lt;br /&gt;
&lt;br /&gt;
This simple format makes it possible to easily create .pnd files with the default utility's of most operating systems. Further, it is a fairly fail-safe system -- the PXML is appended, but is also included within the ISO image part of the file so if the appended-PXML is ever lost (unpack and repack poorly, say) the system will still work (the PXML inside the ISO can be found easily, even without mounting the ISO _as_ an ISO, since it is a plaintext uncompressed image format.) &lt;br /&gt;
&lt;br /&gt;
Manually creating a .pnd (or even a PXML) is a pain so there will be a few helper scripts or maybe even a gui app out when we launch.&lt;br /&gt;
&lt;br /&gt;
Included with libpnd are some scripts to create PXML and pndfiles, though it is expected people will create handier utilities. See the tool section of this wiki for some details.&lt;br /&gt;
&lt;br /&gt;
Question from the gp32x forum regarding confusion of PXML location -- remember that in general mot developers will keep a directory that represents the .pnd or PXML-dir application. Their makefile/build-process will drop the executable(s) into that directory, which inludes a PXML.xml description of the application, and possibly an icon (and whatever all else they wish.) To build the .pnd file, a script (say) is used which compresses all this into the pnd format (including appending the PXML.) So yes, the PXML is in two places in the .pnd file and one place in the source directory. You'll get used to it ;)&lt;br /&gt;
&lt;br /&gt;
Rationale --&lt;br /&gt;
&lt;br /&gt;
Several iterations of pnd files have been considered, from zipfiles to cramfs to other formats, to putting in a key/value set of information tags in the file, to table-of-contents indexes, to any number of options to help performance, and so on. In the end we went for a good overall and simple solution and dropped getting fancy -- PXML.xml can be extended to define the type of the file if it cannot be magic'd, so we could using other filesystem types in the future (and this is why people should use libpnd rather than rolling their own solution.) For now however, pnd files are ISO files with the PXML.xml appended and an optional icon. This keeps the PXML and icon easy to locate, and yet a easy file format.&lt;br /&gt;
&lt;br /&gt;
====Recommended layout of a pnd directory structure, ie: how to make a well behaved pnd file====&lt;br /&gt;
&lt;br /&gt;
These are guidelines to make pnd-files 'well behaved', and to help move towards a consistent pnd structure.&lt;br /&gt;
&lt;br /&gt;
* Always include your icon png-file and PXML.xml file in the _Root_ of the pnd-file; this is for reasons that folks may well unpack the pnd-file, and then repack it; in doing so, if the icon and PXML.xml (normally appended to the .iso to become a .pnd) will be lost, unless the user or tool is being careful. Thus, it is wise to include them within the .iso, to make things so the iso is the entire pnd application, in unpacked form.&lt;br /&gt;
&lt;br /&gt;
* Use a 'reasonably unique' unique-id of course (to identify your application.) This is used for many internal uses, so uniqueness is pretty wise.&lt;br /&gt;
&lt;br /&gt;
* Use an 'application relevent' appdata name; make it as unique as you have to, but consider being less unique; a random example could be .. possibly there may be several quake1 ports; they could all share the same appdata (same config files, same data files), but if you intend on having different config or data files than other quake1's, make your appdata named differently. &lt;br /&gt;
&lt;br /&gt;
* Always include a documentation 'info' link, if your app has any setup requirements, has popup help screens that the user needs to know a key to pop up, or other essential trivia; feel free to make the doc link as complete as you like, since its all within the pnd file. (ie: Include the full DosBox documentation if you want to, in your DosBox pnd :)&lt;br /&gt;
&lt;br /&gt;
* Try to set up the appdata directory for the user; if you need a 'roms' or 'image' directory in the appdata (such as in the case of an Atari ST emulator needing a location to house the TOS OS image, say), then do a 'mkdir' in your 'runscript', to create it. Thus the user will find a (example) Hatari appdata directory, and within, any directories he needs (possibly empty.) This just makes it obvious for the user where to put stuff.&lt;br /&gt;
&lt;br /&gt;
* Try using rudimentary zenity scripts to pop up imporant pre-run information, if the application can't do so; ie: Hatari itself has a very fine GUI in it, but if the Atari ST TOS image is not present, it just exits and fails to run, so the GUI doesn't have time to do anything useful. In this case, it could be wise to use a 1 line zenity script that checks before the emu runs for the file in question, then pop up a dialog box saying 'put this file /here', so the user knows what the heck happened&lt;br /&gt;
&lt;br /&gt;
* Always Always Always write your 'state info' to current-working-directory (ie: ./foo, and not ~/foo). The pnd-system will redirect this to the users appdata of course, keeping things clean and predictable. If you're just porting an app, that has ~ all over the darned place, and you don't want to muck up the code.. just have your 'runscript' do something like 'set $HOME=.' and you're good to go!&lt;br /&gt;
&lt;br /&gt;
* Runscripts; the PXML.xml can specify to run your binary, or you can run a .sh script that in turn runs your binary, say. This lets you do various tests, set up LD_LIBRARY_PATH, or other mischief before your binary gets run. Very handy. I often have PXML.xml run 'runfoo.sh', and runfoo.sh in turn runs ./foo after setting things up, making directories, etc.&lt;br /&gt;
&lt;br /&gt;
====What filesystem types can be contained within a pnd-file?====&lt;br /&gt;
&lt;br /&gt;
The pnd container can really contain a large variety of filesystem types; day-zero we're aiming for ISO since it is simple, easy build across every major OS, and fast to use. But it is not the only supported filesystem type, and more should be added all the time. (Possibly '-auto' can be added to pnd-run and it'll &amp;quot;just work&amp;quot; for dozens of types!)&lt;br /&gt;
&lt;br /&gt;
A compressed filesystem type has always been desirable for file sizing reasons, though it potentially impacts performance (depending on the application operation really.)&lt;br /&gt;
&lt;br /&gt;
Supported types (not an exhaustive list!):&lt;br /&gt;
&lt;br /&gt;
o ISO&lt;br /&gt;
&lt;br /&gt;
o squashfs&lt;br /&gt;
&lt;br /&gt;
====PND generation workflow====&lt;br /&gt;
&lt;br /&gt;
- create a directory to represent the application on SD card; i.e.: ./mame-app&lt;br /&gt;
&lt;br /&gt;
- create a PXML.xml fil and drop it into the dir (./mame-app/PXML.xml); genpxml script can be used, or do it by hand&lt;br /&gt;
&lt;br /&gt;
- drop the executable and data files into this dir (say, ./mame-app/mame.bin, and ./mame-app/artwork/foo, etc.)''' &amp;lt;- note, with a PXML.xml and executabe, it can now be discovered and run without even bundling into .pnd!'''&lt;br /&gt;
&lt;br /&gt;
- invoke pnd-make.sh to produce mame4all-pandora-1.0-arm.pnd or whatever you want to call it (foobearspanky.pnd, we don't care.)&lt;br /&gt;
&lt;br /&gt;
- you're done, distribute it as you see fit&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows / DOS commandline====&lt;br /&gt;
&lt;br /&gt;
There should be a basic GUI along very soon, and more advanced friendlier GUIs in due time. But for now, we thought it prudent to include some basic instructions on the command line for day-zero.&lt;br /&gt;
&lt;br /&gt;
For this command-line tutorial, I will assume you have already created a PXML.xml file; copy one of the templates and then edit it, using notepad or whatever _TEXT_ editor you see fit.&lt;br /&gt;
&lt;br /&gt;
Prepare in advance:&lt;br /&gt;
&lt;br /&gt;
1) Make a PXML.xml file (through whatever means; copy a template, or get a PXML.xml tool when they come available.) Ensure that you've got a reasonably unique-id in that field (ie: say, app-name, your name, and date/time all catenated together.) &lt;br /&gt;
&lt;br /&gt;
2) Get yourself mkisofs tools; for example, grab from here: http://www.student.tugraz.at/thomas.plank/ -- get cdrtools-2.01-win32-bin.zip and DLL version 1.5.25, and extract to somewhere. That lets you run 'mkisofs' to spit out .iso files&lt;br /&gt;
&lt;br /&gt;
2b) If you want to make a compressed image, use squashfs tools here: ftp://ftp.slax.org/useful-binaries/win32/squashfs-tools/&lt;br /&gt;
&lt;br /&gt;
3) Put your application and all needed files into a single directory .. say &amp;quot;myapp&amp;quot;; it doesn't matter what you call it. Might be cool as a Makefile step&lt;br /&gt;
&lt;br /&gt;
4) In your app-dir, put the PXML.xml file in the root&lt;br /&gt;
&lt;br /&gt;
5) Put the icon in the root of that dir as well (make it a .png file)&lt;br /&gt;
&lt;br /&gt;
6) Make sure the PXML.xml names the icon (just its filename.png), and specifies the executable (foo.bin or whatever.)&lt;br /&gt;
&lt;br /&gt;
Generate the actual PND-file, fully manual method:&lt;br /&gt;
&lt;br /&gt;
1) Make yourself the iso; this step produces the iso, but to turn the iso into a pnd you need a couple last steps. You could also use some fancy iso-building tool.&lt;br /&gt;
'''mkisofs -o foo.iso -R /path/to/folder/myapp'''&lt;br /&gt;
&lt;br /&gt;
2) Append PXML.xml to the .iso (yes, the PXML.xml is included in the iso, but we also want to append it for performance reasons.) &lt;br /&gt;
'''copy foo.iso+PXML.xml foo.step2'''&lt;br /&gt;
&lt;br /&gt;
3) Append the icon PNG file to the .iso (if you have an icon; if not, you can leave this step out.)&lt;br /&gt;
'''copy foo.step2+myicon.png foo.pnd'''&lt;br /&gt;
&lt;br /&gt;
4) Clean up: del''' foo.step2 foo.iso'''&lt;br /&gt;
&lt;br /&gt;
5) Profit!&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Linux/BSD/Unix (including on Pandora)====&lt;br /&gt;
&lt;br /&gt;
=====Command-line=====&lt;br /&gt;
&lt;br /&gt;
Tools are included in the libpnd distribution; see below for discussion, but suffice to say they are included int he GIT. Look in testdata/scripts for:&lt;br /&gt;
&lt;br /&gt;
o genpxml - spits out a template PXML.xml for you, and even includes a reasonably unique-id&lt;br /&gt;
o pnd-make.sh - given a directory and some arguments, will spit out a .pnd file; great for use in Makefiles&lt;br /&gt;
&lt;br /&gt;
We're working on others as well, so piece of cake under Unix and Unix-like OSes.&lt;br /&gt;
&lt;br /&gt;
=====GUI=====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Windows GUI====&lt;br /&gt;
&lt;br /&gt;
====Making PND files - Mac OSX====&lt;br /&gt;
&lt;br /&gt;
===PXML overrides===&lt;br /&gt;
&lt;br /&gt;
There are a couple of ways to effect an override of the PXML, without modifying a pnd-file.&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;In-path&amp;quot; override files: .ovr====&lt;br /&gt;
&lt;br /&gt;
The library automatically imports a limited number of overrides from a conf file that can be located in the same location as its matching .pnd file is.&lt;br /&gt;
&lt;br /&gt;
For instance, if /pandora/desktop/awesomegame.pnd exists, then libpnd will automatically also search for /pandora/desktop/awesomegame.ovr&lt;br /&gt;
&lt;br /&gt;
Some menu systems will also be smart enough to watch for an icon override -- /pandora/desktop/awesomegame.png -- and if present, to use it; 'minimenu' (mmenu) is aware of that, as is pndnotifyd daemon when emitting .desktop files. Likely pmenu will also be updated. In effect, the user can override the icon, category and other attributes of the pnd, without needing special tools or to alter the system.&lt;br /&gt;
&lt;br /&gt;
An .ovr file must be named identically to the pnd-file, excepting the 3 character file extension.&lt;br /&gt;
&lt;br /&gt;
NOTE: Given that a pnd may emit multiple applications from its PXML.xml, the ovr will have to be aware of this so it can override the correct application(s) within the pnd. Some menus and information tools will display the application list with 'subapp number' to assist identification. minimenu shows the subapp number in the detail panel, for example. In the case where a pnd-file has only one contained application, that is subapp-number zero. For any additional subapplications, increment by one .. but it can be tricky to know which app is which subapp number. (A careful eye will notice the .desktop filename includes the subapp-number after the pound sign .. foo#3.desktop is subapp_number 3.)&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My note text line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PXML override file -- currently unsupported====&lt;br /&gt;
&lt;br /&gt;
PXML.xml files can have any number of their elements over-ridden by user preferences. &lt;br /&gt;
&lt;br /&gt;
The design goal here was to make it so user-preferences could alter the impact of the PXML.xml in any way, but without requiring the actual PXML.xml in the .pnd (and within the ISO therein) to be altered (could be a 500MB ISO after all!), and further, for these changes to persist. Consider than an SD card could be removed and inserted into the other slot, or the app could be removed entirely and come back another day, or other scenarios.&lt;br /&gt;
&lt;br /&gt;
As such, the PXML-overrides are kept in NAND in the user homedirectory (See the config files to find out where.)&lt;br /&gt;
&lt;br /&gt;
libpnd includes functions to pull in PXML, and also functions to then look for and merge in overrides. It is not always done since you may wish to inspect the PXML or the overrides, so the developers job is to do as they see fit -- pull the XML, and likely also pull in the overrides.&lt;br /&gt;
&lt;br /&gt;
At this time I'm not sure if people will ever use overrides, but the system has been built in should it be needed.&lt;br /&gt;
&lt;br /&gt;
===Included shellscripts to generate files and other sundry duties===&lt;br /&gt;
&lt;br /&gt;
====genpxml====&lt;br /&gt;
&lt;br /&gt;
This tool can spit out a basic but correct PXML.xml, faking up a halfway-useful unique-id in the process. It might be handy in saving you writing up a PXML.xml from scratch.&lt;br /&gt;
&lt;br /&gt;
====pnd_hup.sh====&lt;br /&gt;
&lt;br /&gt;
pndnotifyd will attempt to locate this script and invoke it after an auto-discovery run, if the pnd_hup entry is present (and uncommented) in the config files. It is expected to be commented out in release images, as xfce watches directories for .desktop files and does not need a HUP; some desktop managers need to be HUPped to rescan for .desktop files in a timely fashion, so the pnd_hup config entry can be uncommented and this script will attempt to figure out who to HUP.&lt;br /&gt;
&lt;br /&gt;
====pnd_make.sh====&lt;br /&gt;
&lt;br /&gt;
This is one of the great ones :)&lt;br /&gt;
&lt;br /&gt;
Given a directory with a PXML.xml (see genpxml above) and an executable and any other goo you want in there, this script will spit out a .pnd file you can execute or distribute as an application.&lt;br /&gt;
&lt;br /&gt;
====pnd_run.sh====&lt;br /&gt;
&lt;br /&gt;
This job does a lot of the heavy lifting for libpnd, including setting up the 'union filesystems', doing .pnd and PXML.xml-app-dir execution and mounting, and so on. Generally you will talk to it via libpnd or .desktop files, but you can invoke it dorectly from your apps if you wish to circumvent libpnd or mount .pnd files within a shellscript/perlscript/etc.&lt;br /&gt;
&lt;br /&gt;
==Auto-discovery of applications==&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
==Integration with FreeDesktop .desktop systems==&lt;br /&gt;
&lt;br /&gt;
===dotdesktop (.desktop) files===&lt;br /&gt;
&lt;br /&gt;
===Icons===&lt;br /&gt;
&lt;br /&gt;
There are some rules for Icons in PXML.xml and pnd/directory bundles&lt;br /&gt;
&lt;br /&gt;
- An Icon should be in the root of the directory or .pnd bundle&lt;br /&gt;
&lt;br /&gt;
- An Icon must be specified in the PXML.xml if you expect it to work&lt;br /&gt;
&lt;br /&gt;
- As the PXML.xml is parsed, the icon is sought; if the icon is specified, but not found, it is assumed to be a system default icon and the filename will be placed into the .desktop Icon= line verbatim (ex: Icon=foo.png), and the window manager presumably will know how to locate it. If the icon is specified, and is found, then it will be copied into the configured IconPath, and the full path to it will be used for the Icon= line in the .desktop file ex: Icon=/tmp/myicon.png). If no icon is specified in the PXML file, then no Icon= line will be entered into the .desktop and the WM will presumably apply a default icon based on category or whatever.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==APIs==&lt;br /&gt;
&lt;br /&gt;
Feel free to just go read the .h files; I have tried to comment liberally :)&lt;br /&gt;
&lt;br /&gt;
===Setting and Getting the CPU clock speed===&lt;br /&gt;
&lt;br /&gt;
===Device paramaters - brightness, etc===&lt;br /&gt;
&lt;br /&gt;
===PND files, exec and mount===&lt;br /&gt;
&lt;br /&gt;
===Application discovery===&lt;br /&gt;
&lt;br /&gt;
===Config file parsing===&lt;br /&gt;
&lt;br /&gt;
===Boxing, the singly-linked list container===&lt;br /&gt;
&lt;br /&gt;
===Directory watching===&lt;br /&gt;
&lt;br /&gt;
===Logging api===&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:PND]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2289</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2289"/>
		<updated>2010-04-07T14:02:08Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* First Time Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating the Analog Nubs ====&lt;br /&gt;
&lt;br /&gt;
The nubs automatically calibrate with use, and do so every time the unit is freshly powered up. Calibration information is stored inside the nub RAM, so when you power down (full power off, not just low power mode) the calibration information is lost. Calibrating the nubs is as simple as just using them -- do a few left right up down moves or swoosh around, and the nub will know its boundaries and be good thereafter.&lt;br /&gt;
&lt;br /&gt;
So no special effort is required to calibrate or use the nubs, but the first few motions you use of them may be erratic as they self-calibrate.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
With default configuration, preview pictures will be pulled in as you rest the selection on applications (and not during menu load time, since it is too slow to do that, currently.) When pulled in, a preview pic is cached to RAM (so is instant for pulling up this session again). With default configuration, the preview pic will also attempt to cache out to SD card so that even next session of the menu, it will pull up very quickly (partial second.) However, that very first time you pull up any given preview pic, it will take a few seconds to load due to mounting the pnd-application, looking for the preview inside, and unmounting the application.&lt;br /&gt;
&lt;br /&gt;
The Force All Preview option is in the Select menu; this option allows you to take the preview caching hit right away, for all applications. Trigger this option, then ignore your Pandora for a couple minutes while it chugs away.&lt;br /&gt;
&lt;br /&gt;
Upon completion, all pnd-applications containing Previews should have them in their SD cache (assuming you had sufficient space free.) What this means is that pulling up preview pics should be instant for this sesssion, and very fast for future sessions as well.. no more waiting a few seconds for the first time pull up of a preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2287</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2287"/>
		<updated>2010-04-06T18:59:35Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Interesting Menu Items for General Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
With default configuration, preview pictures will be pulled in as you rest the selection on applications (and not during menu load time, since it is too slow to do that, currently.) When pulled in, a preview pic is cached to RAM (so is instant for pulling up this session again). With default configuration, the preview pic will also attempt to cache out to SD card so that even next session of the menu, it will pull up very quickly (partial second.) However, that very first time you pull up any given preview pic, it will take a few seconds to load due to mounting the pnd-application, looking for the preview inside, and unmounting the application.&lt;br /&gt;
&lt;br /&gt;
The Force All Preview option is in the Select menu; this option allows you to take the preview caching hit right away, for all applications. Trigger this option, then ignore your Pandora for a couple minutes while it chugs away.&lt;br /&gt;
&lt;br /&gt;
Upon completion, all pnd-applications containing Previews should have them in their SD cache (assuming you had sufficient space free.) What this means is that pulling up preview pics should be instant for this sesssion, and very fast for future sessions as well.. no more waiting a few seconds for the first time pull up of a preview picture.&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2286</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2286"/>
		<updated>2010-04-06T18:54:32Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Setting up Category Mapping/Merging/Aliasing and Custom Tabs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
An optional conf file may be created to specify 'category mapping' functionality.&lt;br /&gt;
&lt;br /&gt;
This conf file should be called mmcatmap.conf (unless the name has been changed in mmenu.conf), and should be located in one of the following locations (unless an alternate searchpath has been specified in mmenu.conf)&lt;br /&gt;
# On your SD cards in /pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# on device in /etc/pandora/mmenu/mmcatmap.conf&lt;br /&gt;
# ./minimenu (relative to current working directory) as mmcatmap.conf -- really only useful for developers&lt;br /&gt;
&lt;br /&gt;
The goals of the mmcatmap.conf are a few..&lt;br /&gt;
# Allow renaming or aliasing categories (from what developers specify in pnd-applications PXML.xml)&lt;br /&gt;
# Allow merging categories (so you can put apps that would be across 5 catrgories, into 3 of your own design)&lt;br /&gt;
# Allow order of tabs to be specified (rather than be 'random' as determined from applications)&lt;br /&gt;
&lt;br /&gt;
Applications are _encouraged_ (but not forced) to stick to Freedesktop Category Standards (and should stick to syntax standard.. ie: no spaces, etc.) So in general you should encounter a limited number of categories (not &amp;quot;Foofy123!&amp;quot; but things like &amp;quot;Games&amp;quot; with subcategory &amp;quot;Emulator&amp;quot;. See PXML.xml specification for guidelines.) However, developers may specify whatever they like into the PXML.xml and perhaps you disagree or wish to use your own category/tab assignments.&lt;br /&gt;
&lt;br /&gt;
==== Note on category overrides ====&lt;br /&gt;
&lt;br /&gt;
There are two main kinds of overrides in this context:&lt;br /&gt;
# A per-pnd (and per-subapplication) override; see .ovr files above and below for how to override a category of a specific application&lt;br /&gt;
# A per-category override; that is what mmcatmap.conf is for, read on!&lt;br /&gt;
&lt;br /&gt;
==== Example mmcatmap.conf ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[categories]&lt;br /&gt;
# Normally for mmenu, an encountered category is just used as is. 5 cats exist, you get 5 tabs.&lt;br /&gt;
# If map_on is &amp;gt;0, then category transforms will occur&lt;br /&gt;
#   @NEWCAT oldcat1:oldcat2      &amp;lt;- means oldcat1, if found, will map to NEWCAT. &amp;quot;@&amp;quot; is discarded.&lt;br /&gt;
#   NOTE: FreeDesktop rules do not allow categories with spaces in the name; if needed, I can add it with quoting.&lt;br /&gt;
# If map_default_on is set (&amp;gt;0), then any unmapped categories will be forced into the default category bucket (map_default_cat.)&lt;br /&gt;
#   If map_default_on is off (=0), then unmapped categories will become their own categories as normal.&lt;br /&gt;
#   Should probably still have an @ line to create the default category, since creating the cats comes before assigning defaults&lt;br /&gt;
# NOTE: Individual app overrides occur at the time of app scanning, so before this category mapping occurs and thus is effected&lt;br /&gt;
map_on                  0               # if &amp;gt;0, will do category mapping at all; if 0, don't do any of this.&lt;br /&gt;
map_default_on          0               # if &amp;gt;0, any unmapped category will get forced to map_default_cat; set to 0 to leave unmapped cats alone&lt;br /&gt;
map_default_cat         Spam            # see map_default_on&lt;br /&gt;
# NOTE: List the categories in reverse order to how you wish them in the tab list; last one shows up as first tab&lt;br /&gt;
@Woogle                 Audio&lt;br /&gt;
@Jimmy                  Game&lt;br /&gt;
@Spam&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* map_on -- if &amp;gt;0, will turn category magic on; by default, this file and section is ignored.&lt;br /&gt;
* map_default_on -- if &amp;gt;0, means that any category not otherwise mapped will be sent to the map_default_cat category. ie: So you must now define mappings for all tabs to _keep_&lt;br /&gt;
* map_default_cat -- the name of the category that all not-explicitly-mapped categories will be sent to, if map_default_on is set (similar to how &amp;quot;All&amp;quot; tab works)&lt;br /&gt;
&lt;br /&gt;
The main goods are the config entries starting with &amp;quot;@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NOTE: The tabs in the config should be listed in reverse order to how you wish them displayed. In the example above, you will get tabs &amp;quot;Spam&amp;quot;, &amp;quot;Jimmy&amp;quot;, &amp;quot;Woogle&amp;quot;, even though they are listed Woogle, then Jimmy, then Spam.&lt;br /&gt;
&lt;br /&gt;
The format is:&lt;br /&gt;
@TABNAME&amp;lt;whitespace&amp;gt;category1:category2:category-etc-etc&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Audio&amp;quot; to be instead called &amp;quot;Woogle&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Woogle Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Map the category &amp;quot;Game&amp;quot; and &amp;quot;Audio&amp;quot; to instead be called &amp;quot;Multimedia&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@Multimedia Game:Audio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: In the large example above, note that the &amp;quot;default&amp;quot; is specified to be &amp;quot;Spam&amp;quot;, and if enabled, you then need to define &amp;quot;@Spam&amp;quot; tab for it to refer to (even if nothing is mapped to it in the @Spam line itself.)&lt;br /&gt;
&lt;br /&gt;
NOTE: The categories will at first come from the pnd-applications (in their PXML.xml as specified by the developer), and then possibly be overriden by the .ovr file. This is at the libpnd level before minimenu ever catches wind of the application. Then during application discovery, minimenu will get a list of categories and applications, and pass them through mmcatmap.conf to determine the final list of tabs and categories to use.&lt;br /&gt;
&lt;br /&gt;
Consider: If two pnd-files ezist, as in AwesomeGame in category Game, and SoundOff in Audio, you will normally get two tabs (Game and Audio), plus an All tab, plus a /media/mmcblk1p1 tab for SD1 (say.) If you then put in mmcatmap.conf a line &amp;quot;@Foo Audio&amp;quot;, then you will essentially rename Audio to &amp;quot;Foo&amp;quot;, and still get two tabs - Game and Foo. You could create a new tab with &amp;quot;@Whizzo Audio:Game&amp;quot; to merge those two categories into one new one called Whizzo, instead.&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2285</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2285"/>
		<updated>2010-04-06T18:25:52Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* [previewpic] Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
==== [categories] Section ====&lt;br /&gt;
&lt;br /&gt;
* catmap_searchpath -- the searchpath to be looked through to find the mmcatmap.conf file (which need not exist at all.)&lt;br /&gt;
* catmap_confname -- should you wish to rename the mmcatmap.conf file for some reason&lt;br /&gt;
* do_all_cat -- if &amp;gt;0, will show an &amp;quot;All&amp;quot; tab to which all applications will be sent (in addition to their other categories as defined in [tabs] above&lt;br /&gt;
&lt;br /&gt;
==== [filesystem] Section ====&lt;br /&gt;
&lt;br /&gt;
* do_browser == if &amp;gt;0, the directory browser will be enabled&lt;br /&gt;
* tab_searchpaths == the list of directories that will be opened for browsers, and each will have its own tab&lt;br /&gt;
&lt;br /&gt;
Note the examples:&lt;br /&gt;
NOTE: to keep from having a million tabs, minimenu will only show directory browser tabs that are non-empty&lt;br /&gt;
# if tab_searchpaths is just &amp;quot;/media&amp;quot;, then one tab (&amp;quot;/media&amp;quot;) will be created, and you can browse that&lt;br /&gt;
# if you put &amp;quot;/media/*&amp;quot;, then one tab will be created for each subdir in /media (one per SD, plus USB and other mounts)&lt;br /&gt;
# you could make the browser point to many locations, such as &amp;quot;/media/*:/:/home&amp;quot; which would show one for each /media subdir, as well as a tab for / (root of filesystem), as well as /home (show one to contain all home directories.)&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2284</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2284"/>
		<updated>2010-04-06T18:20:44Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* = Preview picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture =====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2283</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2283"/>
		<updated>2010-04-06T18:20:00Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Minimenu - Comprehensive Configuration Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See the example below; http://pandorawiki.org/User_manual#If_I_want_to_override_the_.PND_icon.2C_name.2C_or_other_settings.2C_how.3F_.28Slightly_advanced_topic.29&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture ====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2282</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2282"/>
		<updated>2010-04-06T18:18:57Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Force all preview caching now */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==== Overriding application details ====&lt;br /&gt;
&lt;br /&gt;
===== Icon =====&lt;br /&gt;
&lt;br /&gt;
===== Category =====&lt;br /&gt;
&lt;br /&gt;
===== Clockspeed =====&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
An .ovr file may be created in the same location as a pnd-application, with the same name except for .ovr at the end -- an application named &amp;quot;Foo.pnd&amp;quot; could have an override file named &amp;quot;Foo.ovr&amp;quot;; that file is mostly handled by libpnd (See above for details), but minimenu extends it to support &amp;quot;Notes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Preview picture ====&lt;br /&gt;
&lt;br /&gt;
libpnd does not handle preview picture overrides, so minimenu does this on its own.&lt;br /&gt;
&lt;br /&gt;
In the same location as a pnd file, a preview override may be specified.&lt;br /&gt;
&lt;br /&gt;
If the pnd-file is named &amp;quot;Foo.pnd&amp;quot;, minimenu will look for Foo_pvw#0.png for &amp;quot;subapp 0&amp;quot;'s preview. &amp;quot;Subapp 1&amp;quot;'s preview would be checked for as &amp;quot;Foo_pvw#1.png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2281</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2281"/>
		<updated>2010-04-06T18:15:43Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Default configuration is.. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
* Will honour icon overrides and icon name, category overrides (this is handled by libpnd before minimenu sees it.) However, will also look in the ovr file for 'notes' to show in the Detail panel, and will also look for &amp;quot;preview overrides&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2280</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2280"/>
		<updated>2010-04-06T18:14:53Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* [grid[ Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid] Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
==== [previewpic] Section ====&lt;br /&gt;
&lt;br /&gt;
* defer_timer_ms -- the amoung of time (milliseconds) that the user most leave the selection in one place before the menu goes to pull up the preview pic (either from RAM cache, SD cache or pnd-file if not yet cached)&lt;br /&gt;
* do_cache -- if set to &amp;gt;0, will attempt to cache preview pics from pnd apps out to SD for faster loading next session (ie: in first release of the device, pulling preview from pnd may take 3-4 seconds, but pulling from SD cache may take half-second)&lt;br /&gt;
* cache_searchpath -- the list of locations to attempt to _cache to_ -- after pulling a preview pic, try to stick the preview here for faster retrieval; note that it will always try the same drive as the app came from first, to try to keep the preview in the same SD as the pnd is.&lt;br /&gt;
* cache_minfree -- the amount of space required to make the SD usable for caching too; ie: this is designed so the cache will not use up your vary last amount of space on an SD. If space is insufficient, the next location in cache_searchpath will be checked&lt;br /&gt;
* cache_path -- the location to write the cached preview pics out to, relative to the matching searchpath; ie: If a pnd-file is on SD2, it will first try SD2, and then check SD1 and go across the searchpath; once a candidate is found (if!), then the cache_path on that device will be used&lt;br /&gt;
* cache_findpath -- the searchpath that helps the menu find the previews; should work out to the same locations as covered by cache_searchpath but include the full cache_path as well, but could also include other locations should you have downloaded pre-cached previews or preview overrides&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2279</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2279"/>
		<updated>2010-04-06T18:06:38Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Global/User Preferences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Users will generally not have to touch mmenu.conf at all -- hopefully the defaults are sensible. Still, it can be tweaked.&lt;br /&gt;
&lt;br /&gt;
Skinners will generally touch mmskin.conf in their skin's directory, and WILL NOT put options in their that belong in the other conf files. Thus we achieve separation -- user can change skins and still have their settings applied, and the skin can change its appearance its own way without depending on user mucking with files.&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid[ Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2278</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2278"/>
		<updated>2010-04-06T18:05:12Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* [utility] Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
==== [display] Section ====&lt;br /&gt;
&lt;br /&gt;
* fullscreen -- if &amp;gt;0, will attempt to grab the full screen and have no window decorations when in X11; if 0, will be a normal window that you can flip to other windows&lt;br /&gt;
* screen_width -- used for calculation of a few defaults; don't mess with it.&lt;br /&gt;
&lt;br /&gt;
==== [tabs] Section ====&lt;br /&gt;
&lt;br /&gt;
* wraparound -- if &amp;gt;0, will wrap from leftmost tab to rightmost tab and vice-versa, when trying to switch tabs using the triggers. Normally will just stop at left/rightmost tabs&lt;br /&gt;
* top_maincat -- if &amp;gt;0, will include apps in the tab for their main category&lt;br /&gt;
* top_maincat1 -- if &amp;gt;0, will include apps in the tab for their main categories first subcategory&lt;br /&gt;
* top_maincat2 -- if &amp;gt;0, will include apps in the tab for their main categories second subcategory&lt;br /&gt;
* top_altcat -- if &amp;gt;0, will include apps in the tab for their alternate category&lt;br /&gt;
* top_altcat1 -- if &amp;gt;0, will include apps in the tab for their alternate categories first subcategory&lt;br /&gt;
* top_altcat2 -- if &amp;gt;0, will include apps in the tab for their alternate categories second subcategory&lt;br /&gt;
&lt;br /&gt;
==== [grid[ Section ====&lt;br /&gt;
&lt;br /&gt;
* scroll_increment -- when scrolling the grid up/down, how many rows to scroll by&lt;br /&gt;
* wrap_horiz_samerow -- when wrapping left/right on the grid, stay on same row or go to next/previous row?&lt;br /&gt;
* wrap_vert_stop -- if set &amp;gt;0, will not wrap top/bottom when user pressing up/down&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2277</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2277"/>
		<updated>2010-04-06T18:00:15Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Minimenu - Comprehensive Configuration Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Interesting Menu Items for General Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Force all preview caching now ====&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
* Runs without X, and with X.&lt;br /&gt;
* Look for applications in the Pandora normal places; your SD cards, in /pandora/desktop and /pandora/menu and /pandora/apps&lt;br /&gt;
* Look for additional apps in /pandora/mmenu (say, if you want to have minimenu-only applications, for some reason)&lt;br /&gt;
* Look for skins in /etc/pandora/mmenu/skins (on Pandora), but also in SD in /pandora/mmenu/skins/ -- so you can develope skins, or download them and drop them there on your SD.&lt;br /&gt;
* Will show pnd-applications in their Main Category tab, and in their Main Sub Category 1 tab. (But not in Main Sub 2, or Alt Category, Alt Sub 1, or Alt Sub 2)&lt;br /&gt;
* Will show an &amp;quot;All&amp;quot; tab&lt;br /&gt;
* Will show a tab for each non-empty directory in /media -- ie: your SD cards (or USB devices, or other mounts)&lt;br /&gt;
* Will not wrap tabs -- when you hit right-trigger to switch to the next right tab, and there are no more, it won't go to the first tab&lt;br /&gt;
* Will use DaveC's skin&lt;br /&gt;
* Will load application icons when the menu starts up (its pretty fast, so this is usually okay)&lt;br /&gt;
* Will load preview pics after the selection rests on an application in the grid for a second or two (ie: not on startup, since it is _very slow_)&lt;br /&gt;
* Will try to cache preview pics onto SD card (firstly on the same SD as the application, but will also search other SDs/devices until it finds one with at least 500KB free space)&lt;br /&gt;
* Will load preview pics in real time (make you wait while it loads, not do it in background while you do other stuff.)&lt;br /&gt;
* Will scroll whole page of the grid up and down&lt;br /&gt;
* Will wrap around left/right of grid, staying on same row&lt;br /&gt;
* Will wrap around top/bottom of the grid&lt;br /&gt;
* Will look for 'category conf' file in /pandora/mmenu on your SDs as mmcatmap.conf; most people will never create this file&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
Minimenu will search for mmenu.conf in a sequence of locations, so that you may override it without clobbering the built in system defaults.&lt;br /&gt;
# /pandora/mmenu/mmenu.conf - so you can override it on your SD cards&lt;br /&gt;
# /etc/pandora/conf/mmenu.conf - the system default&lt;br /&gt;
# ./minimenu/mmenu.conf - so you can run from 'current directory' while doing development. Most people can ignore this.&lt;br /&gt;
&lt;br /&gt;
Options in minumenu are broken up into config file sections.&lt;br /&gt;
&lt;br /&gt;
Most options have internal defaults, but many do not, so the conf files are needed; if you break a conf file, it will often still work.. but you can make minimenu crash, so be careful and keep conf file backups. It is probably wise to edit conf files via the override on SD cards, and put skins on SD cards, so that worst case.. pop out your SD and you're good to go with default system again.&lt;br /&gt;
&lt;br /&gt;
==== [minimenu] section ====&lt;br /&gt;
&lt;br /&gt;
* skin_searchpath -- defines the directories that will be searched to find skin-directories. A skin directory is a _directory containing mmskin.conf_ so searchpath may include /media/*/pandora/mmenu/skins to mean that SD cards will be searched in /pandora/mmenu/skins - a skin named &amp;quot;Foo&amp;quot; will then be /pandora/mmenu/skins/Foo/ and contain mmskin.conf&lt;br /&gt;
* skin_selected -- defines where to store the name of the activated skin; if this file does not exist, or the named skin cannot be found, the skin named 'default' will be searched for in skin_searchpath&lt;br /&gt;
* skin_confname -- the name of the conf file to look for in skins; if you change this, everything will break :)&lt;br /&gt;
* load_previews_new -- if set to &amp;gt;0, will attempt to load preview pics _at startup of menu every time_ -- EXTREMELY SLOW for un-cached previews; if, however, you have recently done a &amp;quot;force cache all previews&amp;quot;, and thus are fully cached, it might not be too bad. Highly unadvisable.&lt;br /&gt;
* load_previews_later -- if set to &amp;gt;0, will want to load preview pics later; if set to 0, will not even try to load preview pictures, ever.&lt;br /&gt;
* load_icons_later -- if set to &amp;gt;0, will attempt to load icons after menu starts; normally set to 0, meaning load icons during menu startup (advisable, since its pretty fast.)&lt;br /&gt;
* defer_icon_us -- when load_icons_later is activated, this is the microseconds delay between loading icons. (ie: background thread will load icon, then another icon, then another .. with this delay between)&lt;br /&gt;
* threaded_preview -- if set to &amp;gt;0, will load preview pics in background; not advisable. Normally will make you wait while preview happens. First releases of Pandora will probably take a few seconds to load each preview, and doing it in background chugs the user experience too much. (A later improvement to pnd_run.sh or creating a fast-mount script that skips the Union Filesystem Mount will make preview loading MANY times faster, at which point this might be a good option.)&lt;br /&gt;
* loglevel -- if you wish to turn up or down the logging&lt;br /&gt;
* x11_present_sh -- define the command used to figure out if X is present or not; some apps require X, or require no X, or don't care; the menu may decide to filter out apps depending on their requirements and whethor X is running or not&lt;br /&gt;
* desktop_apps -- if set to &amp;gt;0, will look in the desktop searchpath for apps (/pandora/desktop say; see /etc/pandora/conf/desktop)&lt;br /&gt;
* menu_apps -- if set to &amp;gt;0, will look in menu searchpath too -- see /etc/pandora/conf/desktop&lt;br /&gt;
* aux_searchpath -- if you wish to look somewhere else for applications entirely (such as for minimenu specific apps? or another pile of apps?) then look in this searchpath&lt;br /&gt;
&lt;br /&gt;
==== [utility] Section ====&lt;br /&gt;
&lt;br /&gt;
* terminal -- specifies the command to run when the Select menu is used and user requests to run a Terminal; ie: you could set it to Xterm, or Konsole, or Terminal, or whatever you prefer.&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=User_manual&amp;diff=2276</id>
		<title>User manual</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=User_manual&amp;diff=2276"/>
		<updated>2010-04-06T17:21:06Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Oops! I Borked My Pandora! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''This page is an unofficial community project, and Open Pandora Ltd. is not responsible for its content.''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:PandoraFront.jpg|Right|thumb|360px|Pandora FTW!]]&lt;br /&gt;
So your Pandora just arrived after being in the post for two months. Jolly good! But now that it's actually here, what on earth do you do with it? '''Don't panic!''' Let's take a look at what's included in the box(so you don't miss anything!) and then hop on over to setting it up for that extended Ms. Pacman marathon you've been waiting for!&lt;br /&gt;
&lt;br /&gt;
Also, don't forget to hit up [http://www.gp32x.com/board/index.php?/forum/61-pandora/ GP32X] for questions/info/apps/fun/discussion!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Safety Information ==&lt;br /&gt;
Warning: Choking Hazard, do not let children under the age of 3 come close to your Pandora console.&lt;br /&gt;
The Pandora contains small parts that can be eaten by those children.&lt;br /&gt;
&lt;br /&gt;
The battery of Pandora must be charged by the charger included with the Pandora (see package contents). [[Open Pandora Ltd.]] will not be responsible for damage arising from the use of third party chargers. Please be aware that &amp;quot;cheap&amp;quot; third party chargers often carry fake CE logos. These can damage your Pandora or burst horribly into FLAMES.&lt;br /&gt;
&lt;br /&gt;
Keep the Pandora in normal temperatures under 140F/60C (Recommended temperatures are in the range between -10C and 40C){{Citation needed}}. The battery is a standard Lithium Polymer battery. Do not keep near fire or water. Do not disassemble, destroy or damage the battery, or it may explode! Do not short circuit external contacts! Dispose of it properly, please. &lt;br /&gt;
&lt;br /&gt;
Modifications to hardware can damage your Pandora. [[Open Pandora Ltd]] cannot be held responsible for any resulting damage.&lt;br /&gt;
&lt;br /&gt;
Malicious software can do horrible things to your Pandora. Only download Pandora software from trusted locations such as the Pandora [[App Store]], or the websites of trusted developers. See the [[OP-Team Trusted]] image in the [[App Store]] to see if the software application can be trusted.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
The Pandora has a 4.3-inch touch screen. You can touch the screen to trigger an action. That's right, a touch screen - not a stab screen, punch screen, or solid mahogany workbench. Always touch the screen gently – this will be more than enough to trigger the action you want.&lt;br /&gt;
&lt;br /&gt;
The casing of the Pandora has been designed for maximum strength, making it quite hard to break. Please do not consider this a challenge. Do not drop, throw, clamp, launch, tumble dry, or place anvils on the Pandora. This will void your warranty.&lt;br /&gt;
&lt;br /&gt;
== Warranty Information ==&lt;br /&gt;
A one year warranty applies as required by law, and the device will be replaced/repaired if it is faulty. LCDs with numerous/excessive dead pixels will also be replaced.{{Citation needed}}&lt;br /&gt;
&lt;br /&gt;
== Box Contents ==&lt;br /&gt;
When you first open Pandora's box, a slew of demons and raging emotions may forcibly leave the box. This is normal. After that, you should find the following items:&lt;br /&gt;
*Pandora console&lt;br /&gt;
*Stylus (located in stylus slot on the side of the Pandora)&lt;br /&gt;
*Battery&lt;br /&gt;
*Mains power adapter (charger)&lt;br /&gt;
The following items should also be present if you ordered them separately:&lt;br /&gt;
*TV-Out Cable&lt;br /&gt;
*Carrying Case&lt;br /&gt;
*Extra Battery&lt;br /&gt;
After you take those things out, you may find a sliver of Hope left over. It's best to keep it, as you never know when you could use some Hope.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
==== Highlights ====&lt;br /&gt;
{{citation needed}}&lt;br /&gt;
* ARM® Cortex™-A8 600Mhz+ CPU running Linux*&lt;br /&gt;
* 430-MHz TMS320C64x+™ DSP Core&lt;br /&gt;
* PowerVR SGX OpenGL 2.0 ES compliant 3D hardware&lt;br /&gt;
* 800x480 4.3&amp;quot; 16.7 million colours touchscreen LCD&lt;br /&gt;
* Wifi 802.11b/g, Bluetooth &amp;amp; High Speed USB 2.0 Host&lt;br /&gt;
* Dual SDHC card slots &amp;amp; SVideo TV output&lt;br /&gt;
* Dual Analogue and Digital gaming controls&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* Around 10+ Hours battery life**&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;The 600Mhz+ can be higher or lower. This can be controlled by software designed for the device.&amp;lt;/small&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;Is affected by use. (example turn bluetooth on or off during play time)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Advanced Specifications ====&lt;br /&gt;
* Texas Instruments OMAP3530 processor at 600MHz (officially)&lt;br /&gt;
* 256MB DDR-333 SDRAM&lt;br /&gt;
* 512MB NAND FLASH memory&lt;br /&gt;
* IVA2+ audio and video processor using TI's DaVinci™ technology (430MHz C64x DSP)&lt;br /&gt;
* ARM® Cortex™-A8 superscalar microprocessor core&lt;br /&gt;
* PowerVR SGX530 (110MHz officially) OpenGL ES 2.0 compliant 3D hardware&lt;br /&gt;
* integrated Wifi 802.11b/g (up to 18dBm output)&lt;br /&gt;
* integrated Bluetooth 2.0 + EDR (3Mbps) (Class 2, + 4dBm)&lt;br /&gt;
* 800x480 resolution LTPS LCD with resistive touch screen, 4.3&amp;quot; widescreen, 16.7 million colors (300 cd/m2 brightness, 450:1 contrast ratio)&lt;br /&gt;
* Dual analog controllers&lt;br /&gt;
* Full gamepad controls plus shoulder buttons&lt;br /&gt;
* Dual SDHC card slots (up to 64GB of storage currently)&lt;br /&gt;
* headphone output up to 150mW/channel into 16 ohms, 99dB SNR (up to 24 bit/48KHz)&lt;br /&gt;
* TV output (composite and S-Video)&lt;br /&gt;
* Internal microphone plus ability to connect external microphone through headset&lt;br /&gt;
* Stereo line level inputs and outputs&lt;br /&gt;
* 43 button QWERTY and numeric keypad&lt;br /&gt;
* USB 2.0 OTG port (1.5/12/480Mbps) with capability to charge device&lt;br /&gt;
* USB 2.0 HOST port (480Mbps) capable of providing the full 500mA to attached devices (examples include USB memory, keyboard, mouse, 3G modem, GPS)&lt;br /&gt;
* up to two externally accessible UARTs and/or four PWM signals for hardware hacking, robot control, debugging, etc.&lt;br /&gt;
* un-brickable design with integrated boot loader for safe code experimentation&lt;br /&gt;
* Power and hold switch useful for &amp;quot;instant on&amp;quot; and key lockout to aid in media player applications on the go&lt;br /&gt;
* Runs on the Linux operating system (2.6.x)&lt;br /&gt;
* Dimensions: 140x83.4x27.5mm&lt;br /&gt;
* Weight: 335g (with 4200mAh battery)&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
The Pandora is a mixture between a PC and a gaming console (similar to classic computers such as the Amiga). That's why it has gaming controls (ABXY buttons, d-pad, and analogue nubs). It is fast enough to emulate many other systems, run a full desktop, access the internet with Firefox and play games such as Quake III. However, it is not as big as a netbook. Believe it or not, it will fit in your pocket. It's a bit bigger than the Nintendo DS. (See Applications section of this manual to see what applications your Pandora will come with.)&lt;br /&gt;
Remember that your Pandora console will get better with every application installed!&lt;br /&gt;
&lt;br /&gt;
== First Time Use ==&lt;br /&gt;
Now that you've opened the box, let's set this thing up! Place the battery inside the battery compartment on the back of the Pandora, making sure the contacts touch(the little silvery metal bits, it's easy). Snap on the battery cover and you're all set!&lt;br /&gt;
==== Charging ====&lt;br /&gt;
Charge your Pandora 8 hours before disconnecting it from the wall charger. This will improve the lifetime of your battery. To charge the Pandora, insert the power cable end in the Pandora and the other end into your wall socket.&lt;br /&gt;
&lt;br /&gt;
The battery comes pre-charged at 40%, and that level might have decreased during shipping. To be on the safe side, we recommend that you charge the Pandora before you use it. Simply plug in your wall charger into an outlet, or optionally use a mini-USB cable connected to a computer or wall adapter. For extreme silliness, plug your Pandora into an ''already charged Pandora,'' and charge it from that! But not really.&lt;br /&gt;
&lt;br /&gt;
==== First Boot ====&lt;br /&gt;
Once your Pandora is ready, turn it on. The OS will take some time to boot up for the first time (about 10 minutes, this is only for the first boot, and is normal). After it has booted, a series of settings dialogs will pop up in the shape of a &amp;quot;Boot Wizard&amp;quot; allowing you to alter your Pandora's settings to your liking.&lt;br /&gt;
&lt;br /&gt;
There are a total of 3 parts to the Boot Wizard guide:&lt;br /&gt;
===== System configuration =====&lt;br /&gt;
The first thing you will have to do is to calibrate the Pandora's touch screen. Only do this if the screen isn't calibrated already.&lt;br /&gt;
You will have the option for touchscreen calibration the first time you boot up your Pandora console.&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;Calibrating the touch screen&amp;quot; is a term used to describe the process of matching coordinates given by the touch layer with the underlying screen. A badly calibrated screen will register your push elsewhere on the screen, perhaps half a centimeter to one side. As there are sometimes slight variations in the production of the touch layer, you the user can improve the accuracy by matching the two layers manually.&lt;br /&gt;
&lt;br /&gt;
===== User setup =====&lt;br /&gt;
After calibrating your screen, you will have to enter your full name. This is what you will see in any user selection dialogs or when the system needs to address you, so enter whatever you are most comfortable with. Then follows your username. It is recommended to choose an all-lowercase, one-word username here, since you will have to enter this name every time you log in. Once you've entered your username, a password input dialog appears. You will have to enter the password you want to use twice here. If you don't want to have a password for your device, simply leave both fields empty. If, however, you decide to enter a password, something hard to guess and between 8 and 16 characters long is preferred.&lt;br /&gt;
&lt;br /&gt;
===== Network and security settings =====&lt;br /&gt;
You will now have to enter a name for your Pandora. This will be the Pandora's host name, so you have two options in this situation:&lt;br /&gt;
&lt;br /&gt;
# If you don't have a domain you want to connect to, simply enter any name here. It should not contain any spaces.&lt;br /&gt;
# If you ''do'' have a domain you want to connect to, enter a name in the form of &amp;quot;pandoraname.domainname.tld&amp;quot;. Note that you may never have a use for this.&lt;br /&gt;
&lt;br /&gt;
Then, you'll have to choose whether you want to automatically log in on your Pandora when it boots, or if you should be given the opportunity to log in as a different user, or enter your password. It is recommended to disable auto login if you want to protect your user data, but if you're often in a hurry, then you can enable auto login here.&lt;br /&gt;
&lt;br /&gt;
The final thing you will have to choose, is whether you want to use the full desktop Xfce environment or the gaming-oriented PMenu environment as your default environment in the Pandora. It is recommended to choose Xfce here if you want to gain access to the Pandora's full potential. This option can be changed later at any point.&lt;br /&gt;
&lt;br /&gt;
==== Calibrating The Touchscreen ====&lt;br /&gt;
The touchscreen in your new Pandora device isn't psychic! You have to tell it what to do, and in order to do that effectively, you need to calibrate it. Simply navigate to settings→screen→calibration wizard{{Verify credibility}} and follow the onscreen instructions. You may have to recalibrate the screen from time to time as well.&lt;br /&gt;
&lt;br /&gt;
During the first boot wizard, you will be offered the option to calibrate the touchscreen. By default it may well work okay, but the option is there. If calibration is far off, use the keyboard to select the calibration option.&lt;br /&gt;
&lt;br /&gt;
===== Mouse (stylus/pointer) settings =====&lt;br /&gt;
When done with the calibration and you are back in the Pandora Xfce desktop environment you might also want to change some other touch screen settings to make navigation with the stylus work according to your preferences. Two recommended settings to experiment with for easier navigation are:&lt;br /&gt;
&lt;br /&gt;
#  The double-click Time setting&lt;br /&gt;
#  The double-click  Distance (valid touch-screen double-click area)&lt;br /&gt;
&lt;br /&gt;
In the first setting, i.e. Time, you will be setting the interval between double-clicks where such clicks will be accepted as valid.&lt;br /&gt;
Ex. if you set the time to 250ms, the second click (or screen-tap in our case) must occur within 250ms of the first to be valid.&lt;br /&gt;
&lt;br /&gt;
In the second setting, Distance, you will be setting the radius of screen area where the second click (tap) must fall into to be considered as a valid second tap. This means that if, for example, you set the distance to 5, your second tap must fall within a circle radius of 5 pixels from the point where the first tap occurred.&lt;br /&gt;
&lt;br /&gt;
These two settings can be found under:  Desktop ---&amp;gt; Xfce menu ---&amp;gt; Settings ---&amp;gt; Mouse ---&amp;gt; Behaviour tab.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
&lt;br /&gt;
===Pmenu===&lt;br /&gt;
&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
===minimenu / mmenu===&lt;br /&gt;
&lt;br /&gt;
minimenu is designed as a fast and easy to use launcher, without a lot of fancy frills. A grid of icons to launch, and use the d-pad or touchscreen to fire one off. It is fairly configurable and skinnable and is fully featured, and very fast. If you recall the interface on the gp32, gp2x, wiz, and gmenu2x you will be right at home and then some!&lt;br /&gt;
&lt;br /&gt;
====The main grid====&lt;br /&gt;
&lt;br /&gt;
The main grid with the default skin has most of the screen realestate showing a grid of available 'auto discovered' applications, with a detail panel on the right. A list of tabs is across the top of the screen, with some short help message on the bottom.&lt;br /&gt;
&lt;br /&gt;
Pressing Start or B will invoke the pnd-application. Presseing Select will switch to a basic menu, providing shutdown or some advanced options.&lt;br /&gt;
&lt;br /&gt;
Pressing &amp;quot;Y&amp;quot; (think &amp;quot;Why?&amp;quot;) will bring up pnd-application documentation, if that pnd-file has defined any.&lt;br /&gt;
&lt;br /&gt;
The left and right shoulder triggers will switch categories of applications; by default, minimenu includes an All category and defaults to showing it.&lt;br /&gt;
&lt;br /&gt;
The applications are auto-discovered in the same means as the xfce desktop and pmenu and other pnd-supporting systems, however you may add additional minimenu-specific searchpaths into the configuration should you wish to. It is likely a basic file browser will also be added, letting you launch applications manually placed on your SD cards.&lt;br /&gt;
&lt;br /&gt;
The standard overrides are supported -- .ovr files for icon title, clockspeed setting and categories, as well as a .pnd for icon override.&lt;br /&gt;
&lt;br /&gt;
====Configuration and tricks====&lt;br /&gt;
&lt;br /&gt;
minimenu has a fairly comprehensive configuration file for its minimalistic design; most options may be enabled or disabled or fiddled with, and the skin can reasonably be altered.&lt;br /&gt;
&lt;br /&gt;
The All category can be removed if undesired.&lt;br /&gt;
&lt;br /&gt;
Expert conf hackers can specify what categories they'd like and in what order, and have multiple app categories dumped into one tab, and other tricks.&lt;br /&gt;
&lt;br /&gt;
pnd-application icons may be all loaded during the menu setup, or deferred until later and loaded in the background.&lt;br /&gt;
&lt;br /&gt;
Preview pics may be loaded up front (not advised, as it can be slow), or deferred until later. (When deferred, they may load when you rest the selection, or load in background.)&lt;br /&gt;
&lt;br /&gt;
You may choose to have auto-discovered applications registered into any of their 6 categories (Main, Sub1, Sub2, Alt, AltSub1, AltSub2).&lt;br /&gt;
&lt;br /&gt;
Etc and so on.&lt;br /&gt;
&lt;br /&gt;
Additional keys are supported: Q to quit the menu (not really useful for most people), and Space to invoke the application.&lt;br /&gt;
&lt;br /&gt;
===Desktop style environment===&lt;br /&gt;
&lt;br /&gt;
====On the Desktop====&lt;br /&gt;
&lt;br /&gt;
The desktop will contain icons for numerous locations (such as each mounted SD card), as well as any auto-discovered pnd-applications located on SD cards or internal NAND.&lt;br /&gt;
&lt;br /&gt;
====In the menu====&lt;br /&gt;
On the bottom left you have your applications menu, similar to the Windows start menu. Clicking it brings up a list of all installed applications and pnd-applications in the appropriate location on your SD cards.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
To the right may be some icons, these serve as shortcuts to commonly used applications. Next to that you have your taskbar which, as you might have guessed, lists all running applications in your current workspace. To the right of the taskbar you have your workspaces, think of these as multiple desktops. By default you have two to switch between. Applications running in one workspace will not be visible in the other, so you can effectively hide your Ms. Pacman game from your boss at work, because there's no way you're not going to go for the gold, even at work! Finally there are a few more icons that deal with TV-Out, network connectivity, etc. and some running applications may place an icon there as well. And to the right of THOSE, you have your time. Because time flies when you're using your Pandora! Badum tsh. And to the right of that, you have a little icon which, when clicked, displays all running applications.&lt;br /&gt;
&lt;br /&gt;
Finally, I'd just like to reiterate this--EVERYTHING is customizable! We'll get to that section later, but for now, let's just check out the applications on your Pandora.&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
&lt;br /&gt;
====Xfce menu====&lt;br /&gt;
&lt;br /&gt;
The Pandora button will bring up the applications menu, letting you quickly enter a search to locate an application to run or perform operations against running applications.&lt;br /&gt;
&lt;br /&gt;
===Power Modes===&lt;br /&gt;
&lt;br /&gt;
Without switching the device entirely off, it may be placed into low power mode or regular power mode; simply pressing the power button will toggle modes.&lt;br /&gt;
&lt;br /&gt;
Consider low power mode to be akin to turning off a PDA or cellphone -- the screen is off, the CPU is clocked down and so on, but the device is still silently on, allowing for alarms to go off or it to be turned on again instantly. Regular power mode is for normal usage.&lt;br /&gt;
&lt;br /&gt;
Low power mode is probably going to be used as the normal &amp;quot;off&amp;quot; for most people, with true off (device powered down entirely, unable to respond to alarms or wake up quickly) available to conserve battery power. Turning the Pandora off completely is the best option if you don't plan on using it for few weeks or longer. &lt;br /&gt;
&lt;br /&gt;
Closing the lid will turn off the display but otherwise leave the device operating - handy for audio playing; turning off the display lowers power use.&lt;br /&gt;
&lt;br /&gt;
The actual behaviour of buttons and events can be customized.&lt;br /&gt;
&lt;br /&gt;
== Basic Linux user guide ==&lt;br /&gt;
New to the wonderful world of Linux? No problem! You don't need mad terminal skills to open a web browser, but it can be nice to know what you're doing once in a while.&lt;br /&gt;
==== The structure of the file system ====&lt;br /&gt;
If you're used to the file system of e.g. MS Windows, you will find that a Linux file system is rather different from what you're used to. In this section, we will go through everything you have to know in order to feel comfortable with using the Pandora's file system.&lt;br /&gt;
===== Basic philosophy =====&lt;br /&gt;
In Windows, you have multiple file system roots, called &amp;quot;drives&amp;quot;, that are labeled with different letters, like &amp;quot;C:&amp;quot; or &amp;quot;D:&amp;quot;. In Linux, there aren't multiple root directories, but rather just one root directory, called &amp;quot;/&amp;quot;. All other directories are inside of this directory, including other drives.&lt;br /&gt;
&lt;br /&gt;
===== Common directories =====&lt;br /&gt;
Inside of the root directory (&amp;quot;/&amp;quot;) are quite a lot of other directories. Here are the most important ones:&lt;br /&gt;
* &amp;quot;/home&amp;quot; - This is where all of the files that are owned by all users are stored. Users do not generally have write-access to anything outside of this directory.&lt;br /&gt;
* &amp;quot;/home/username&amp;quot; - Here are the personal files of user &amp;quot;username&amp;quot;. In this directory, you will find a directory called &amp;quot;Documents&amp;quot;, &amp;quot;Pictures&amp;quot;, &amp;quot;Desktop&amp;quot; etc. that correspond to that users personal directories. This directory is also called &amp;quot;username&amp;quot;'s home directory, and can be abbreviated with &amp;quot;~/&amp;quot; (if you're currently logged in as username) or &amp;quot;~username/&amp;quot;.&lt;br /&gt;
* &amp;quot;/boot&amp;quot; - This is the directory where the Linux kernel is stored, and other files that are needed at boot time can be accessed. Do not touch this directory (You can't even do it if you wanted to)!&lt;br /&gt;
* &amp;quot;/bin&amp;quot;, &amp;quot;/lib&amp;quot; - System binaries and libraries are stored here. Most of the terminal commands mentioned below can be found inside of &amp;quot;/bin&amp;quot;. You should generally never have to touch this directory, either.&lt;br /&gt;
* &amp;quot;/usr&amp;quot; - Here is where you'll find programs and files installed by the user. Core applications such as the web browser, media player, and other applications that are available the first time you start your Pandora are stored here. If you decide to install anything via the &amp;quot;ipkg&amp;quot; command (covered later), this is where the files needed by those installations will end up.&lt;br /&gt;
* &amp;quot;/etc&amp;quot; - System-wide configuration. Should only be touched by power-users.&lt;br /&gt;
* &amp;quot;/media/*&amp;quot; - If you connect USB drives, SD cards or other external media, you will find that the contents of that media have been placed here.&lt;br /&gt;
&lt;br /&gt;
Don't worry if this doesn't make any sense; It was thought up by bearded engineers back in the seventies. They liked the idea that everything would be in a predictable place, but this is no longer completely the case.&lt;br /&gt;
&lt;br /&gt;
==== The File Manager ====&lt;br /&gt;
==== Killing Applications ====&lt;br /&gt;
==== Basic Terminal Commands ====&lt;br /&gt;
Note: Linux is case sensitive. This applies to filenames and directories too. &amp;quot;/home/me/stuff&amp;quot; is a different folder than &amp;quot;/home/me/STUFF&amp;quot;, you can actually have both. You can have &amp;quot;/home/me/Stuff&amp;quot; too if you like, and all three are separately recognised directories.&lt;br /&gt;
&lt;br /&gt;
=====Navigation=====&lt;br /&gt;
In the terminal, you are always in some folder. Think of it like being in a file manager: you can see the contents of the directory you're in, you can do things with those files, or you may decide to go to some other folder and continue your work there.&lt;br /&gt;
&lt;br /&gt;
There are a few essential commands that are used to navigate around your system via the terminal:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;pwd&amp;quot; - Print the current working directory (will print e.g. &amp;quot;/home/user&amp;quot;)&lt;br /&gt;
* &amp;quot;ls&amp;quot; - List directory contents (similar to &amp;quot;Dir&amp;quot; in Dos, and the Linux command &amp;quot;dir&amp;quot; will actually emulate the DOS command if you want to!)&lt;br /&gt;
* &amp;quot;cd &amp;lt;directory name&amp;gt;&amp;quot; - Change to a different directory, eg. &amp;quot;cd music&amp;quot; or &amp;quot;cd /home/me/music&amp;quot;&lt;br /&gt;
* &amp;quot;cd ..&amp;quot; - Go up one directory level (similar to &amp;quot;cd..&amp;quot; in Dos)&lt;br /&gt;
* &amp;quot;cd&amp;quot; - Go back to your home directory (similar to My Documents in Windows)&lt;br /&gt;
* &amp;quot;cd -&amp;quot; - Go back to the previous directory you were in (handy if you forget)&lt;br /&gt;
&lt;br /&gt;
=====Controlling Running Apps=====&lt;br /&gt;
* &amp;quot;top&amp;quot; - View running processes (like the Task Manager in Windows) press &amp;quot;q&amp;quot; to quit&lt;br /&gt;
* &amp;quot;killall [program name] - Stops running process (use with care)&lt;br /&gt;
&lt;br /&gt;
=====File Manipulation=====&lt;br /&gt;
* &amp;quot;rm &amp;lt;filename&amp;gt;&amp;quot; - Remove a file, eg. &amp;quot;rm somefile.txt&amp;quot; or &amp;quot;rm /home/me/randomfiles/somefile.txt&amp;quot;&lt;br /&gt;
* &amp;quot;rmdir &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, but **only** if it is empty!&lt;br /&gt;
* &amp;quot;rm -r &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory and its contents (&amp;quot;-r&amp;quot; means recursive)&lt;br /&gt;
* &amp;quot;rm -rf &amp;lt;directory&amp;gt;&amp;quot; - Will remove a directory, all of its contents, without asking you first. Use with extreme care. (&amp;quot;-f&amp;quot; means force)&lt;br /&gt;
* &amp;quot;mv &amp;lt;original filename&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Moves a file to a new place, also used for renaming, eg. &amp;quot;mv somefile.txt somefile_backup.txt&amp;quot; will rename it, but &amp;quot;mv somefile.txt /home/me/backup/somefile.txt&amp;quot; will move it. This will also work for directories.&lt;br /&gt;
* &amp;quot;cp &amp;lt;file to copy&amp;gt; &amp;lt;new filename&amp;gt;&amp;quot; - Copy a file, eg. &amp;quot;cp twoweeks.txt twomonths.txt&amp;quot; copies into current directory, while &amp;quot;cp twomonths.txt /home/me/ihaveadream/twoweeks.txt&amp;quot; copies to another directory.&lt;br /&gt;
* &amp;quot;cp -r &amp;lt;directory to copy&amp;gt; &amp;lt;new directory name&amp;gt;&amp;quot; - Copy a directory and all of its contents to another location.&lt;br /&gt;
* &amp;quot;touch &amp;lt;new file name&amp;gt;&amp;quot; - Makes a new (empty) file&lt;br /&gt;
* &amp;quot;mkdir &amp;lt;new directory name&amp;gt;&amp;quot; - Makes a directory&lt;br /&gt;
&lt;br /&gt;
=====Misc.=====&lt;br /&gt;
* &amp;quot;cat &amp;lt;filename&amp;gt;&amp;quot; - Prints the contents of a file, eg. &amp;quot;cat hellolo.txt&amp;quot;&lt;br /&gt;
* &amp;quot;clear&amp;quot; - Clears screen, terminal input begins at the top again&lt;br /&gt;
* &amp;quot;date&amp;quot; - Your friend, the terminal will tell you the date&lt;br /&gt;
* &amp;quot;cal [month] [year]&amp;quot; - Makes a pretty calendar, eg. &amp;quot;cal 12 2009&amp;quot; or &amp;quot;cal * 2010&amp;quot; or &amp;quot;cal 1 2010 &amp;gt; fingers_crossed.txt&amp;quot; sends output to file&lt;br /&gt;
* &amp;quot;history&amp;quot; - Gives a list of the recent commands you have run.  Running !number (e.g. !15) will rerun that numbered command in the history list&lt;br /&gt;
* &amp;quot;vi &amp;lt;filename&amp;gt;&amp;quot; - Opens the file for editing in vi [http://pandorawiki.org/Vi]&lt;br /&gt;
&lt;br /&gt;
History Search: Press CTRL-R.  As you type, BASH will try and find the command in your recent history that most closely matches what you are typing.  To get back to the prompt, press CTRL-C.&lt;br /&gt;
&lt;br /&gt;
Autocompletion: Press TAB. The terminal (also called the shell) will attempt to intelligently figure out what you're trying to type. It needs something to work with however, so try pressing TAB half way through a command or location.&lt;br /&gt;
&lt;br /&gt;
eg. &amp;quot;cd /home/me/pandora_suc&amp;quot; *TAB* will complete it as &amp;quot;cd /home/me/pandora_success&amp;quot; or with a filename &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fa&amp;quot; *TAB* will turn into &amp;quot;cat /home/me/letters/i_want_the_pandora_to_fall_into_my_hands&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Directory aliases: There are some special directory names you can use to refer to a directory that would be too long to type otherwise, or that you simply don't know the name of.&lt;br /&gt;
* &amp;quot;~&amp;quot; - Refers to your home directory e.g. &amp;quot;/home/user&amp;quot;.&lt;br /&gt;
* &amp;quot;~seconduser&amp;quot; - Refers to someone else's home directory.&lt;br /&gt;
* &amp;quot;.&amp;quot; - Refers to the current directory, or the &amp;quot;same directory&amp;quot; in a path. What this means, is that if you type &amp;quot;cd .&amp;quot;, nothing will happen since you already are in &amp;quot;.&amp;quot;, and if you type &amp;quot;cd somedir/././././././.&amp;quot;, you will simply go to &amp;quot;somedir&amp;quot;, since the &amp;quot;.&amp;quot;-directories that come after it are the &amp;quot;same directory&amp;quot; as the one before them.&lt;br /&gt;
* &amp;quot;..&amp;quot; - Refers to the directory in which the current directory is, or the &amp;quot;parent directory&amp;quot; in a path. If you type &amp;quot;cd ..&amp;quot; you will come to the parent directory of your current directory, and if you type &amp;quot;cd s1/s2/s3/../../..&amp;quot;, nothing will happen, since the path you specified cancels itself out.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
Many applications will come preinstalled into the internal NAND; these will be regular Linux applications (not packaged into pnd files, since they do not need to be redistributed to anyone.)&lt;br /&gt;
&lt;br /&gt;
Additional applications may be found as pnd-files (see below, a packaged up single file representing an entire application) or as regular Linux files (an application likely being made up of many files and possibly needing installation.)&lt;br /&gt;
&lt;br /&gt;
==== What Is Included? ====&lt;br /&gt;
* Ångström Linux: Lightweight beautiful Linux-based operating system for the Pandora.&lt;br /&gt;
* Xfce: A full featured window manager for Linux.&lt;br /&gt;
* Midori: A full features web browser, designed to be lighter and faster than a full desktop style browser.&lt;br /&gt;
* Lightweight office utilities including Abiword, Gnumeric, and ClawsMail.&lt;br /&gt;
{{Volume needed}}&lt;br /&gt;
&lt;br /&gt;
==== Where Can I Get More Apps? ====&lt;br /&gt;
There are many ways to get more applications onto your Pandora.&lt;br /&gt;
&lt;br /&gt;
*The easiest way is to browse the [[Pandora App Store]], where you can download a selection of free or commercial applications. To download, navigate to an app, pay for it if you must, and hit the 'download' button. Select where you want to save it, and you're done!&lt;br /&gt;
&lt;br /&gt;
*There is the good ol' [http://dl.openhandhelds.org/cgi-bin/pandora.cgi Pandora File Archive].&lt;br /&gt;
&lt;br /&gt;
*There are nice repositories, such as the [http://www.angstrom-distribution.org/repo Angstrom ARM Repository], or...&lt;br /&gt;
&lt;br /&gt;
*The Pandora includes the package manager [http://en.wikipedia.org/wiki/Ipkg ipkg].&lt;br /&gt;
&lt;br /&gt;
*Also, people may upload their apps to weird crevices in the net, so be on the lookout! (or use a search engine)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid gray; border-bottom:1px solid gray; padding-top:5px; padding-bottom:5px; margin-bottom:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Pandora's internal memory (NAND) will be at close to capacity when you receive your Pandora. All new programs should be installed to SD card. Downloads from the Angstrom Repo, or use of the Ipkg package manager, should only be done by advanced users or when instructed by Open Pandora Ltd (for example, firmware updates).''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction To .PNDs ==&lt;br /&gt;
==== What Are .PNDs? ====&lt;br /&gt;
&lt;br /&gt;
A .pnd (&amp;quot;pandora&amp;quot;) file is an application (game, word processor, emulator, whatever.) More accurately, it is a full application bundled up into a single file; think of it like a zip, with a relatively well defined internal structure.&lt;br /&gt;
&lt;br /&gt;
The pnd-file system was designed so you could use an application without the hassle of installation or uninstallation, or even having to organize it yourself if you don't want to. You just download or obtain the pnd-file, and use it. &lt;br /&gt;
&lt;br /&gt;
If you remember classic computers such as the Amiga - where you inserted a disk and then launched the applications read by Workbench (the Amiga's operating system) - then this is similar: when you insert an SD card into one of the two slots, the (Linux based) Pandora OS will scan it for your PND program files. Any program it finds will either turn up on the desktop or the application menu (just like in Windows).&lt;br /&gt;
&lt;br /&gt;
More details can be found in the &amp;quot;libpnd hub&amp;quot; part of the wiki, but that is more oriented to techies and developers.&lt;br /&gt;
&lt;br /&gt;
==== How do I run a PND-application? ====&lt;br /&gt;
&lt;br /&gt;
Put your pnd-files in your SD (see below for some suggestions where.)&lt;br /&gt;
&lt;br /&gt;
A pnd-file is usually invoked in one of the following ways&lt;br /&gt;
&lt;br /&gt;
* browse to the file using the directory browser, and click to run it. (.pnd files are file-associated to another program, pnd_run which knows how to run them.) This lets you organize pnd-files in directories of your choice on the device NAND or SD.&lt;br /&gt;
&lt;br /&gt;
* in PMenu, the applications will be shown by name; you can just select and run them from the menu&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/menu on SD, the application will be shown in the Start menu on the device; use your stylus or buttons to invoke it&lt;br /&gt;
&lt;br /&gt;
* for pnd-files placed into /pandora/desktop or /pandora/apps on SD, they will show up automatically on your desktop; invoke them with the stylus, your finger, or controls as you see fit&lt;br /&gt;
&lt;br /&gt;
==== Where Do .PNDs Go? ====&lt;br /&gt;
&lt;br /&gt;
Put .pnd-files into specific directories if you want them to show up in the Start menu or on your Pandora desktop, or in Pmenu. &lt;br /&gt;
&lt;br /&gt;
You can put them anywhere you like in internal NAND or SD, if you wish to organize them yourself and launch them with taps.&lt;br /&gt;
&lt;br /&gt;
/pandora/desktop -&amp;gt; pnd files show up on the desktop&lt;br /&gt;
&lt;br /&gt;
/pandora/menu -&amp;gt; show up in the Applications menu (by the developers suggested categories.)&lt;br /&gt;
&lt;br /&gt;
/pandora/apps -&amp;gt; show up in the desktop, and in Pmenu&lt;br /&gt;
&lt;br /&gt;
These locations are not written in stone. The &amp;quot;libpnd&amp;quot; config files are in /etc/pandora/conf in the NAND. Generally you will never need to alter these files, but you certainly can if you wish. In theory, obliterating the files will still leave the system working, and they are easily restored. One file, /etc/pandora/conf/desktop defines the &amp;quot;search paths&amp;quot; to look for .pnd files, and where to put &amp;quot;.desktop&amp;quot; files when they are found. The searchpaths says where to find them (such as /pandora/desktop), and where to put the application link - /usr/share/applications is where the menu items are pulled from. IF you wish to put pnd files somewhere not in the searchpath, just add the directory to the search-path and you're good to go.&lt;br /&gt;
&lt;br /&gt;
==== If I want to override the .PND icon, name, or other settings, how? (Slightly advanced topic)====&lt;br /&gt;
&lt;br /&gt;
The easiest way right now is via the &amp;quot;override&amp;quot; (or &amp;quot;overlay&amp;quot;) system -- .ovr files.&lt;br /&gt;
&lt;br /&gt;
An .ovr is just a text file you create, with the same name as the pnd-file and in the same location, but with a different file extension. Piece of cake.&lt;br /&gt;
&lt;br /&gt;
If your pnd-file is Hatari.pnd, and you're putting it into /pandora/desktop, then you might create an ovr file for it as: /pandora/desktop/Hatari.ovr&lt;br /&gt;
If you wish to provide your own icon, create it with the same location and filename, but as a .pnd file: /pandora/desktop/Hatari.png&lt;br /&gt;
&lt;br /&gt;
.ovr files are automatically supported by the system so should work across all pnd-application aware applications and desktops. .png icon overrides have to be handled by the menus, but are already handled by minimenu and anythign using the .desktop system (such as xfce full desktop or other standard desktop environments.)&lt;br /&gt;
&lt;br /&gt;
An ovr-file simply looks like this:&lt;br /&gt;
&lt;br /&gt;
The ovr file may (at this time) override the icon title, the CPU clock speed to set on launch, the main category, and the first subcategory for the main category. Additional fields will become overridable.&lt;br /&gt;
&lt;br /&gt;
Minimenu honors up to 3 lines of 'notes', pulled from the .ovr file. (Make sure they are in the right subapp group). note-1, note-2, note-3, see example below. The notes in minimenu are shown at the bottom of the detail text panel. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
[Application-0]&lt;br /&gt;
title                   HatariHack0&lt;br /&gt;
maincategory            Audio&lt;br /&gt;
maincategorysub1        Emulator&lt;br /&gt;
[Application-1]&lt;br /&gt;
title                   HatariHack1&lt;br /&gt;
clockspeed              200&lt;br /&gt;
note-1                  My text for note line 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the Application-0 and Application-1 -- any given .pnd file may include multiple applications, so you need to assign your overrides to the correct &amp;quot;sub application&amp;quot;. It can be tricky to figure out which subapp you wish to override, but there are some tricks. minimenu, for example, shows the subapp-number in the detail panel. When looking at a .desktop filename, you'll notice #0.desktop .. some number after the # is the subapp-number.&lt;br /&gt;
&lt;br /&gt;
==== Where does my data go? How do I make files visible to the applications? ====&lt;br /&gt;
&lt;br /&gt;
An application normally will see what is contained within the pnd-file, or your personal data created with the tool; it can of course look anywhere on the SD or device internal memory. For example a Quake port might expect to see extra level files in /quake, or give you a way of selecting a path to put files in.. or it might just expect it to be in your personal data folders, or in the pnd-file itself. Its up to the application, with suggestions in the pnd-guidelines for developers.&lt;br /&gt;
&lt;br /&gt;
The first time a pnd-application is run, an &amp;quot;app data&amp;quot; directory is created for it; anything that app data folder contains will be visible to the application as if it was in the pnd-file (and in fact, this lets you override files in the pnd-file without modifying the .pnd itself, which could be handy.) If your app creates a file &amp;quot;foo&amp;quot;, it'll show up in /pandora/appdata/appname-id as &amp;quot;foo&amp;quot;. The actual appdata folder name depends on the name used by the developer, but should generally look like application-name and some funny number afterwards. It should be easy to spot.&lt;br /&gt;
&lt;br /&gt;
ex: Quake 1 will probably put score or save data in /pandora/appdata/quake1-123/ or somesuch.&lt;br /&gt;
&lt;br /&gt;
It will always be helpful to read the description or readme file included.&lt;br /&gt;
&lt;br /&gt;
===== Example: Hatari =====&lt;br /&gt;
&lt;br /&gt;
Hatari (Atari ST emulator) by default is set to look in &amp;quot;./disks&amp;quot; for the disk images (ROMs) to use. What this means is within the pnd-file (where no disks are supplied), and in the appdata directory. With Hatari, you can browse anywhere from the UI and pick a disk anywhere on your SD cards, but by default it'll look into the ./disks directory.&lt;br /&gt;
&lt;br /&gt;
So you might put Hatari into the menu (/pandora/menu/Hatari131.pnd), or into the desktop (/pandora/desktop/Hatari131.pnd), or somewhere else. Regardless, the appdata will be (with the version I'm building now), /pandora/appdata/hatari.skeezix and thus you would put your .ST or .MSA disk images into /pandora/appdata/hatari.skeezix/disks to make them visible to the emulator. However, given it features its own UI, you can put them into /roms/atarist or /disks or whatever, and use them from there.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make ROMs available to an emulator? =====&lt;br /&gt;
&lt;br /&gt;
For something like ROMs, hopefully a developer consensus will lead either to a canonical location, or a convention of having a directory picker or browser present, so that ROMs can be stored in SD locations of your choice; doesn't strike me as something that should be in a pnd-file, or to be pretended to be in a pnd-file with appdata tricks.&lt;br /&gt;
&lt;br /&gt;
===== Q: How do I make pak-files available to Quake? =====&lt;br /&gt;
&lt;br /&gt;
For some add-ons or data needed for a game, the developer may require it to be 'in the main application path'; as mentioned above, just drop it into the appdata folder and the app will just see it.&lt;br /&gt;
&lt;br /&gt;
==== How Do I Make .PNDs? ====&lt;br /&gt;
==== More Info About .PNDs ====&lt;br /&gt;
Visit [[libpnd_hub]] for more information!&lt;br /&gt;
== Configuration ==&lt;br /&gt;
==== Updating The Firmware ====&lt;br /&gt;
&lt;br /&gt;
Given a working firmware, you might wish to patch it with official Open Pandora patches; you might also wish to just grab an application from the Angstrom repository, say. &lt;br /&gt;
&lt;br /&gt;
In both of these cases, an ipk file will be made available. (In the future, an automated system may offer to patch up your device or auto-download patches. TBD.)&lt;br /&gt;
&lt;br /&gt;
An ipk file is a compressed installable package.&lt;br /&gt;
&lt;br /&gt;
It should be easily used, but from the Terminal if you wish to manually apply an ipk to patch the firmware, install or update an Angstrom application, it is simple: '''opkg install foo.ipk'''&lt;br /&gt;
&lt;br /&gt;
==== Replacing the Firmware ====&lt;br /&gt;
&lt;br /&gt;
Rather than patch the firmware, the firmware may be replaced wholesale with a freshly downloaded firmware.&lt;br /&gt;
&lt;br /&gt;
==== Booting a Firmware from SD ====&lt;br /&gt;
&lt;br /&gt;
The hardware is capable of booting entirely from SD; if the device is bricked or otherwise has a blank NAND, this could be an option. furthermore you're able to try out alternative operating systems without needing to reinstall your primary operating system.&lt;br /&gt;
&lt;br /&gt;
Steps include:&lt;br /&gt;
&lt;br /&gt;
* Preparing the SD card(s)&lt;br /&gt;
* Setting up the firmware on the SD card&lt;br /&gt;
&lt;br /&gt;
=====Preparing the SD card=====&lt;br /&gt;
&lt;br /&gt;
There are two main approaches:&lt;br /&gt;
&lt;br /&gt;
* Setting up the firmware on on SD card (meaning you need two partitions - a boot partition, and a firmware partition), and&lt;br /&gt;
* Setting things up across two SD cards - meaning you boot from one SD card, and have the firmware on the other.&lt;br /&gt;
&lt;br /&gt;
Operating from one SD card provides you the option of still being able to use the other; operating across two cards provides you he option to have a regular boot-SD, and flip between multiple other SDs for the actual firmware, should you wish to cycle between many operating systems (say.)&lt;br /&gt;
&lt;br /&gt;
The boot partition generally must be FAT32, and then the kernel, MLO and other files need to be unpacked upon it.&lt;br /&gt;
&lt;br /&gt;
The firmware partition must be either ext2fs or ext3fs; under Linux, such a partition can be easily created:&lt;br /&gt;
&lt;br /&gt;
'''mkfs.ext2 -L LABELNAME /dev/mmcblk0p2'''&lt;br /&gt;
- assuming LABELNAME for the partition&lt;br /&gt;
- assuming /dev/mmcblk0p2 for your SD device; you'd better check this carefully ;)&lt;br /&gt;
&lt;br /&gt;
==== Setting Up WiFi ====&lt;br /&gt;
==== Setting Up Blutooth ====&lt;br /&gt;
==== Adjusting Brightness/Contrast ====&lt;br /&gt;
==== Changing Your Theme ====&lt;br /&gt;
== Minimenu - Comprehensive Configuration Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Default configuration is.. ===&lt;br /&gt;
&lt;br /&gt;
=== Global/User Preferences ===&lt;br /&gt;
&lt;br /&gt;
=== Setting up Category Mapping/Merging/Aliasing and Custom Tabs ===&lt;br /&gt;
&lt;br /&gt;
=== Skinning the Interface ===&lt;br /&gt;
&lt;br /&gt;
==== Setting up a skin you download ====&lt;br /&gt;
&lt;br /&gt;
==== Creating new skins ====&lt;br /&gt;
&lt;br /&gt;
== Oops! I Borked My Pandora! ==&lt;br /&gt;
Fear not, young netizen! Your Pandora was designed to be unbrickable, so unless you used the ancient art of alchemy to physically turn your Pandora into a brick (or you just broke the hardware inside), you should be okay!&lt;br /&gt;
==== Restore The Original Firmware ====&lt;br /&gt;
==== Boot From SD or USB ====&lt;br /&gt;
&lt;br /&gt;
== Pandora FAQ ==&lt;br /&gt;
Silly goose, go to the [[FAQ]] page for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
	<entry>
		<id>https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=2266</id>
		<title>PXML specification</title>
		<link rel="alternate" type="text/html" href="https://pandorawiki.org/index.php?title=PXML_specification&amp;diff=2266"/>
		<updated>2010-03-26T15:48:30Z</updated>

		<summary type="html">&lt;p&gt;Skeezix: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Attention:''' at the present time, the PXML file format isn't set in stone, and is therefore subject to change. There is no guarantee that the format or the schema are bug-free or will be changed at any time. Please wait until this standard is finished before writing a PXML file.&lt;br /&gt;
&lt;br /&gt;
This is the human-readable specification for the PXML file format. The PXML file format is used in your applications for the OpenPandora® that you package in &amp;quot;.pnd&amp;quot;-files or distribute otherwise, to make it possible for menus and launchers to use your applications and their properties.&lt;br /&gt;
&lt;br /&gt;
A PXML file should be appended to your &amp;quot;.pnd&amp;quot;-file, using the tools provided for that purpose, or put in a directory that you want to serve as a redistributable package, to make it possible for launchers and menus to find it. It should have the name &amp;quot;PXML.xml&amp;quot; not case sensitive, and there should only be one such file. The contents of the PXML file should also comply to this specification without exception, to guarantee that everyone will be able to read it.&lt;br /&gt;
&lt;br /&gt;
== XML compatibility ==&lt;br /&gt;
The PXML format is XML-based and fully XML-compliant, which means that it can be read and written by any XML reader or writer. Included with this specification should also be a &amp;quot;.xsd&amp;quot;-file, which is used by XML tools to validate PXML files. A &amp;quot;.xsd&amp;quot;-file is also known as a XML schema, and can be called the &amp;quot;computer-readable&amp;quot; version of this document. It is very good practice to validate your PXML-files with that schema before publishing them.&lt;br /&gt;
&lt;br /&gt;
To write a PXML file, you also need to know the basics of writing a XML file. It boils down to the following:&lt;br /&gt;
&lt;br /&gt;
# If an element contains text or other elements, it needs a start-tag and an end-tag. This looks like (1)&lt;br /&gt;
# If an element does not contain other elements or text, but only attributes, it looks like (2)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement someattribute=&amp;quot;something&amp;quot;&amp;gt;something inside it&amp;lt;/exampleelement&amp;gt; &amp;lt;!-- (1) --&amp;gt;&lt;br /&gt;
&amp;lt;exampleelement2 someattribute=&amp;quot;something&amp;quot; /&amp;gt; &amp;lt;!-- (2) --&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The PXML-file is split up into multiple so-called elements, each of which specify one property of the &amp;quot;.pnd&amp;quot;-package. All of these elements are surrounded with a &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag, which tells the readers of the file that the data within that tag belongs to a PXML file. The tag and elements should be defined as follows:&lt;br /&gt;
=== The PXML-tag ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
The PXML-tag serves as the container for all PXML elements. It is the first thing that should occur in your PXML file. An example &amp;quot;&amp;lt;PXML&amp;gt;&amp;quot;-tag would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot; id=&amp;quot;uniqueID&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, the PXML tag accepts a few attributes, namely the &amp;quot;id&amp;quot; and &amp;quot;xmlns&amp;quot; attributes.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;xmlns&amp;quot; attribute is required by the XML standard, and guarantees that this file will be identified as a PXML file. You must include the xmlns attribute, exactly as shown, in your PXML file, with the URL as specified. Only then can it be guaranteed that the file will be read at all by launchers and menu apps.&lt;br /&gt;
* '''DEPRECATED; SEE &amp;quot;application&amp;quot; tag.''' The &amp;quot;id&amp;quot; attribute specifies an identifier for your PND package, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
=== The Application-tag ===&lt;br /&gt;
====Description====&lt;br /&gt;
The Application-tag permits the PXML.xml container to have multiple applications within it; you should have at least one application tag-pair (for one app), though you may have many.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;application id=&amp;quot;uniqueID&amp;quot; appdata=&amp;quot;dirname&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--All of the PXML elements should be put here--&amp;gt;&lt;br /&gt;
&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;id&amp;quot; attribute specifies an identifier for your PND package, and should be something globally unique so that no two PND packages have the same id. This can be achieved by appending some random number to your application name, and to use that as your id; or to simply generate a completely random, very long id. If this id already is used in another PND file, those two PND files will conflict with each other, and unforseeable errors will occur. Please put effort into generating an unique id for your PXML-file.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;appdata&amp;quot; permits a directory name (NOT PATH) to be specified as preferred; if not present, the unique-id will be used. For example, we may want a unique-id of &amp;quot;Battlejewels.skeezix.3216836217382163.v001&amp;quot;, but a appdata path of &amp;quot;battlejewels&amp;quot; to make it easier on the user, or to have multiple different battlejewels sharing one appdata.&lt;br /&gt;
&lt;br /&gt;
A good unique-id is the application name, developer name, and some key you may wish to update on occasion (should state-data become incompatible between updates, say.)&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
battlejewels.skeezix.001&lt;br /&gt;
quake-1.pickle.001&lt;br /&gt;
&lt;br /&gt;
unique-id formatting: '''Should not include directory or filename invalid characters, such as ?, &amp;gt;, /, etc. Any of those will cause the pnd-file to not function.'''&lt;br /&gt;
&lt;br /&gt;
Note on Uniqueness: The unique-id should be unique against other pnd-files, but may be re-used by other 'application' tags within the pnd; for example, you may have multiple subapps that want to share the same appdata path (which is formed based on unique-id!), so use the same unique-id. You might then have a utility application in that same pnd, which needs its own appdata, and so gets its own unique-id.&lt;br /&gt;
&lt;br /&gt;
=== The title element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The title element specifies the text that is shown to the users of your PND file as the application title. This element can be specified multiple times in multiple languages (the language is indicated by the lang attribute).&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;title&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Your application name&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;Dein Programmname&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The description element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The description element specifies the text that is shown to the users of your PND file as the application description. This element can be specified multiple times in multiple languages the language is indicated by the lang attribute.&lt;br /&gt;
&lt;br /&gt;
At least one &amp;quot;description&amp;quot;-element is required, in the &amp;quot;en_US&amp;quot; American English language.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;Your long description of this application, describing its purpose and highlighting its features.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;Deine etwas längere Programmbeschreibung, die den Sinn des Programmes und seine wichtigsten Features beschreiben sollte.&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The exec element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The exec element should specify all the information needed to execute your application.&lt;br /&gt;
An exec element must be included in every PXML file. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The command attribute specifies the path to the executable file. This should be a relative path to a file within the PND package. Must contain no arguments! One strategy you may need is to point to a sh-script in your pnd-file, which in turn sets up LD_LIBRARY_PATH, determines arguments to pass, uses zenity to pop up a pre-run menu, or other trickery.&lt;br /&gt;
* The arguments attribute may be not present, or present with 1 or more arguments to the executable.&lt;br /&gt;
* The startdir attribute specifies the starting directory (Also known as the working directory) that the application should start in. This should be a relative path to a directory within the PND package, or to a well-known directory in the Pandora file system.&lt;br /&gt;
* The standalone attribute specifies whether or not this application can run on its own, or if it needs parameters to run. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can be run without parameters. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run with parameters (Meaning that no icon will appear for it in a launcher; it will only be run via file associations or via the terminal).&lt;br /&gt;
* The background attribute specifies whether or not this application should run in the background, and it should be possible to switch to other apps while it is running, or if it is the only application that should be running. A value of &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot; means that the application can run in the background. A value of &amp;quot;false&amp;quot; or &amp;quot;0&amp;quot; means that the application must be run as the only application.&lt;br /&gt;
* The x11 attribute may be missing; values are one of &amp;quot;req&amp;quot;, &amp;quot;stop&amp;quot;, and &amp;quot;ignore&amp;quot;. If &amp;quot;req&amp;quot; is set, it means the application requires X11 (and possibly could be filtered out of users display in a menu if X is not running, or perhaps such a menu would have to start X.) If &amp;quot;stop&amp;quot; is set, it means X must be not running, or temporarily shut down, for the app. If &amp;quot;ignore&amp;quot; is set, the app doesn't care if X is running or not (such as an SDL app, or a sh-script, etc.)&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;exec background=&amp;quot;true&amp;quot; startdir=&amp;quot;/usr/share/icons/&amp;quot; standalone=&amp;quot;true&amp;quot; command=&amp;quot;myprogram&amp;quot; arguments=&amp;quot;arg1 arg2&amp;quot; x11=&amp;quot;option&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The icon element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The icon element should specify a nice icon for your program.&lt;br /&gt;
An icon element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The src attribute specifies the path to the image file used as the icon.&lt;br /&gt;
&lt;br /&gt;
NOTE: Current implementation will use the pnd-file's appended icon; for a PXML-app-directory, it will try to use the icon mentioned in the PXML. So for a pnd-file, all subapps will show the appended-icon, regardless of the &amp;lt;icon&amp;gt; tag within the PXML.xml&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;icon src=&amp;quot;images/icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The info element ===&lt;br /&gt;
====Description====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;info&amp;quot; element allows the PXML.xml to suggest to the desktop environment or menu a file that may be shown to the user when they want to know more - be it an About, a Install Guide, a User Guide, or all of the above.&lt;br /&gt;
&lt;br /&gt;
The file can be a txt-file or an html-file, and as the PXML-app-dir or .pnd-application will be mounted, the file may in turn branch to other files should it wish to.&lt;br /&gt;
&lt;br /&gt;
Developers do not need to have this element, if their app is nice and simple and just runs. If the application requires additional set up (such as Quake requiring separate pak files that cannot be included in the pnd), or if you wish to include sample config files or config guidelines for something complex like DosBox, or include Pandora-specific notes.. those are all good things. But the developer is encouraged to be tasteful and not go hog-wild!&lt;br /&gt;
&lt;br /&gt;
* name → the name to be shown in the menu; should be obvious that it belongs to the pnd .. Quake's game pnd could have &amp;quot;Quake 1 Setup&amp;quot;.&lt;br /&gt;
* type → the mime type for the file; in the event the consuming application can map mimetypes to an appropriate executable, this would be a good way of letting the user's preferred reader come up. Should be one of &amp;quot;text/html&amp;quot; (for an html file) or &amp;quot;text/plain&amp;quot; (for a .txt file)&lt;br /&gt;
* src → '''required''' A file (including path relative to the pnd; ie: ./index.html would be the root of the pnd) in the pnd to open up; by default, the web browser will likely be used to open it.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;text/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The previewpics element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The previewpics element is an element that contains multiple other elements.&lt;br /&gt;
A previewpics element is optional.&lt;br /&gt;
&lt;br /&gt;
It contains multiple pic-elements. Every pic-element represents one preview picture. If the previewpics element is specified, it must contain at least one pic element.&lt;br /&gt;
&lt;br /&gt;
* The src attribute on a pic element specifies the path to the image file used as the preview picture.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;previewpics&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The author element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The author element is an element that is used by the author to introduce him/herself.&lt;br /&gt;
An author element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The name attribute specifies the name of the author.&lt;br /&gt;
* The website attribute specifies the website of the author.&lt;br /&gt;
* The email attribute specifies the e-mail of the author. This attribute is not yet supported by libpnd, but please specify it anyways.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;author name=&amp;quot;Bjornhild Andersson&amp;quot; website=&amp;quot;http://some.website.with.author.info&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The version element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The version element specifies the application version.&lt;br /&gt;
A version element is required. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The major attribute specifies the major version number. This number should be 0 or more.&lt;br /&gt;
* The minor attribute specifies the minor version number. This number should be 0 or more.&lt;br /&gt;
* The release attribute specifies the release number. This number should be 0 or more.&lt;br /&gt;
* The build attribute specifies what build the application is at. This number should be 0 or more.&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The osversion element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The osversion element specifies the minimal OS version that supports the PND file. The PND file will not be loaded by an OS that has an older version than the one specified here.&lt;br /&gt;
An osversion element is optional. It accepts the same attributes as the version element.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The categories element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The categories element is an element that contains multiple other elements.&lt;br /&gt;
A categories element is required, and must contain at least one category.&lt;br /&gt;
&lt;br /&gt;
Menus that use your PXML in any shape or form will use the category information to sort your application entry into the tree or sub menus. Depending on the menu system, this will be done differently every time. It is therefore advisable to specify as many categories and subcategories as possible (and as suitable; don't specify that your application belongs in a category if it doesn't).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;categories&amp;quot; element contains multiple category-elements. Every category-element represents one category that this app can be sorted into. Valid top-level categories are (among others):&lt;br /&gt;
&lt;br /&gt;
# AudioVideo&lt;br /&gt;
# Audio&lt;br /&gt;
# Video&lt;br /&gt;
# Development&lt;br /&gt;
# Education&lt;br /&gt;
# Game&lt;br /&gt;
# Graphics&lt;br /&gt;
# Network&lt;br /&gt;
# Office&lt;br /&gt;
# Settings&lt;br /&gt;
# System&lt;br /&gt;
# Utility&lt;br /&gt;
&lt;br /&gt;
Please see [http://standards.freedesktop.org/menu-spec/latest/apa.html the FreeDesktop specification] for more information. In it, you will also find valid subcategories for your top-level categories.&lt;br /&gt;
&lt;br /&gt;
The category-element takes one attribute: The name-attribute. This attribute represents the category name, which preferrably should be one of the above.&lt;br /&gt;
&lt;br /&gt;
A category-element can contain further child-elements: subcategory-elements. These represent the subcategories of a category that the app will be sorted into.&lt;br /&gt;
&lt;br /&gt;
The subcategory-element also takes a name-attribute; this attibute can contain a name for your subcategory.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;categories&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app belongs in the &amp;quot;Game/StrategyGame&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
  &amp;lt;!-- This app also belongs in the &amp;quot;Graphics/ImageProcessing&amp;quot; category --&amp;gt;&lt;br /&gt;
  &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/categories&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== The associations element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The associations element is an element that contains multiple other elements.&lt;br /&gt;
An associations element is optional, except if exec.standalone is false.&lt;br /&gt;
&lt;br /&gt;
It contains multiple association-elements. Every association-element represents one file action association.&lt;br /&gt;
&lt;br /&gt;
* The name attribute on an association element specifies the user-friendly action name for the association.&lt;br /&gt;
* The filetype attribute on an association element specifies what file types (in MIME format) that this association should apply to.&lt;br /&gt;
* The exec attribute on an association element specifies the command-line arguments that should be given to the program, when this action is performed. The exec can contain a &amp;quot;%s&amp;quot;, which indicates where the file name of the file, that the action is performed on, should be inserted. For example, if the exec-line is &amp;quot;--file %s --type lol&amp;quot;, and you have a file &amp;quot;lol.bmp&amp;quot; that the action is performed on, the exec-line is transformed into &amp;quot;--file &amp;quot;lol.bmp&amp;quot; --type lol&amp;quot;&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;associations&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Deinterlaced Bitmap Image&amp;quot; filetype=&amp;quot;image/bmp&amp;quot; exec=&amp;quot;-f %s --no-deinterlacing&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;association name=&amp;quot;Style sheet system crasher&amp;quot; filetype=&amp;quot;text/css&amp;quot; exec=&amp;quot;-f %s --crash-on-success&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/associations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The clockspeed element ===&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The clockspeed element specifies what clockspeed this app should run at. Please do only specify this element if your application *needs* to run at the specified clock speed.&lt;br /&gt;
A clockspeed element is optional. It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* The frequency attribute specifies the wanted frequency, in megahertz (MHz).&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The mkdir element ===&lt;br /&gt;
&lt;br /&gt;
==== Description ====&lt;br /&gt;
&lt;br /&gt;
The PXML may request creation of directories on the SD card.&lt;br /&gt;
&lt;br /&gt;
'''This should be used sparingly.'''&lt;br /&gt;
&lt;br /&gt;
There are a number of scenarios in which this may be useful; should an application wish to attempt to establish a canonicle location for a file, it can request a path be created. This can avoid user confusion -- user merely plugs in SD, waits a few moments, pulls out SD, and inspects it to see what directories he may populate. Consider 'id' files for Quake -- the user might have many ports of the game, such as Quake, or ioquake, or others. They could all share the same id pak files, but the user may not know where to put them. (Especially since the pnd-file itself does not have user documentation available perhaps.) Consider ROM-paths for emulators .. perhaps the emulator expects ROMs in a specific location? If so, the author may wish to have that location created, to make it obvious.&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
The paths are created on the SD that contains the pnd.&lt;br /&gt;
The paths may not include &amp;quot;..&amp;quot; or wildcards.&lt;br /&gt;
&lt;br /&gt;
It accepts the following attributes:&lt;br /&gt;
&lt;br /&gt;
* dir -&amp;gt; the name of the path to be created; it may not be multiple levels deep - to effect that, include multiple &amp;lt;dir path=&amp;quot;...&amp;quot;/&amp;gt; entries&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mkdir&amp;gt;&lt;br /&gt;
  &amp;lt;dir path=&amp;quot;/foo/bar&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/mkdir&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this is in /pandora/desktop on SD1 (/media/mmcblk0p1 say), then /media/mmcblk0p1/foo/bar will be created.&lt;br /&gt;
&lt;br /&gt;
== Example file ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;application id=&amp;quot;youruniqueID&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;title lang=&amp;quot;en_US&amp;quot;&amp;gt;Program Title&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;title lang=&amp;quot;de_DE&amp;quot;&amp;gt;German Program Title&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;exec background=&amp;quot;true&amp;quot; command=&amp;quot;program&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;info name=&amp;quot;AwesomeGame Setup&amp;quot; type=&amp;quot;txt/html&amp;quot; src=&amp;quot;index.html&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;icon src=&amp;quot;program.png&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;en_US&amp;quot;&amp;gt;This is the English Description of the file.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;description lang=&amp;quot;de_DE&amp;quot;&amp;gt;This would be the German description.&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;previewpics&amp;gt;&lt;br /&gt;
      &amp;lt;pic src=&amp;quot;preview/pic1.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;pic src=&amp;quot;preview/pic2.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/previewpics&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;author name=&amp;quot;Some Dudeson&amp;quot; website=&amp;quot;http://a.bc.de&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;version major=&amp;quot;1&amp;quot; minor=&amp;quot;1&amp;quot; release=&amp;quot;1&amp;quot; build=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;osversion major=&amp;quot;1&amp;quot; minor=&amp;quot;0&amp;quot; release=&amp;quot;0&amp;quot; build=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;categories&amp;gt;&lt;br /&gt;
      &amp;lt;category name=&amp;quot;Game&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;subcategory name=&amp;quot;StrategyGame&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/category&amp;gt;&lt;br /&gt;
      &amp;lt;category name=&amp;quot;Graphics&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;subcategory name=&amp;quot;ImageProcessing&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/category&amp;gt;&lt;br /&gt;
    &amp;lt;/categories&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;clockspeed frequency=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PXML&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
&lt;br /&gt;
To validate a PXML file, you need a XSD (XML schema) validator, and you have to know how to use it.&lt;br /&gt;
&lt;br /&gt;
You will also need to put the XML schema for the PXML format in the same folder as your PXML file. Note that the current PXML schema is horribly out of date.&lt;br /&gt;
&lt;br /&gt;
When you have done that, and know how to use it, you need to change a few things in your PXML file. In your PXML tag, change the contents from this...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot;&amp;gt; ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...to this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PXML xmlns=&amp;quot;http://openpandora.org/namespaces/PXML&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:noNamespaceSchemaLocation=&amp;quot;PXML_schema.xsd&amp;quot;&amp;gt; ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the PXML file can be validated.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Skeezix</name></author>
		
	</entry>
</feed>