<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eain</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eain"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/Eain"/>
	<updated>2026-04-18T08:46:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=User_talk:Eain&amp;diff=3017</id>
		<title>User talk:Eain</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=User_talk:Eain&amp;diff=3017"/>
		<updated>2009-07-29T20:06:35Z</updated>

		<summary type="html">&lt;p&gt;Eain: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey your edit doesn't work because the straight linux pkg doesn't have the required install file or else you would have to use make. so i fixed it&lt;br /&gt;
&lt;br /&gt;
[[User:Epyon22|Epyon22]] 19:49, 29 July 2009 (UTC)Epyon22&lt;br /&gt;
&lt;br /&gt;
Whoops!  Sorry about that!&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Browser_Global_Search_Addons&amp;diff=3010</id>
		<title>Patch Browser Global Search Addons</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Browser_Global_Search_Addons&amp;diff=3010"/>
		<updated>2009-07-29T19:35:41Z</updated>

		<summary type="html">&lt;p&gt;Eain: added clarification at the end to include reboot mention&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this example I am going to add a reddit.com option to the global search.  Feel free to use whatever site you want -- just make sure to change the names accordingly :)&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' Make sure you put all your addons BEFORE twitter, if they are after it will not work properly!!&lt;br /&gt;
&lt;br /&gt;
'''0. [[Portal:Accessing_Linux|Access Linux]], then enable write access:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mount -o remount,rw /&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''1. Edit the following file:'''&lt;br /&gt;
/usr/lib/luna/system/luna-applauncher/app/controllers/global-search-assistant.js&lt;br /&gt;
&lt;br /&gt;
Find this code and modify it as such (be sure to use the correct search link):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 this.URLs = {&lt;br /&gt;
                'google':$L(&amp;quot;www.google.com/m/search?client=ms-palm-webOS&amp;amp;channel=iss&amp;amp;q=&amp;quot;),&lt;br /&gt;
                'wikipedia':$L(&amp;quot;http://en.wikipedia.org/wiki/Special:Search/&amp;quot;),&lt;br /&gt;
                'reddit': $L(&amp;quot;http://www.reddit.com/search?q=&amp;quot;),&lt;br /&gt;
                'twitter': $L(&amp;quot;http://search.twitter.com/search?q=&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to note the comma at the end of the line beginning with 'twitter'. URL codes for additional search engines found [[global-search-addons-collection | here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. In the same file -- you must also add &amp;quot;$('reddit').removeClassName('selected');&amp;quot; to this function:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 clearSearch: function() {&lt;br /&gt;
                if (this.delayShowAppsConatactsTimeout)&lt;br /&gt;
                        window.clearTimeout(this.delayShowAppsConatactsTimeout);&lt;br /&gt;
                this.currentFilter = &amp;quot;&amp;quot;;&lt;br /&gt;
                this.searchExplicitlyExpanded = false;&lt;br /&gt;
                this.noMatches = false;&lt;br /&gt;
                this.hideContactsDiv();&lt;br /&gt;
                this.launcherIconsDiv.hide();&lt;br /&gt;
                this.dialDiv.hide();&lt;br /&gt;
                this.numberDiv.hide();&lt;br /&gt;
                this.webDrawer.showWeb =  false ;&lt;br /&gt;
                this.controller.modelChanged(this.webDrawer);&lt;br /&gt;
                this.expandedSearchDrawer.showExpanded = false;&lt;br /&gt;
                this.controller.modelChanged(this.expandedSearchDrawer);&lt;br /&gt;
                this.searchApps.clear();&lt;br /&gt;
                $('google').removeClassName('selected');&lt;br /&gt;
                $('map').removeClassName('selected');&lt;br /&gt;
                $('wikipedia').removeClassName('selected');&lt;br /&gt;
                $('reddit').removeClassName('selected');&lt;br /&gt;
                $('twitter').removeClassName('selected');&lt;br /&gt;
                $('web').removeClassName('selected');&lt;br /&gt;
                if (this.controller.get('searchterm')) {&lt;br /&gt;
                        this.controller.get('searchterm').mojo.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
                        this.controller.get('searchterm').mojo.blur();&lt;br /&gt;
                }&lt;br /&gt;
                this.gpsInfo = undefined;&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''3. Edit the following file:'''&lt;br /&gt;
/usr/lib/luna/system/luna-applauncher/app/views/global-search/expanded-searches-div.html&lt;br /&gt;
&lt;br /&gt;
Modify the code to add a new div:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div id='expanded_searches_drawer' x-mojo-element=&amp;quot;Drawer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;palm-row&amp;quot; id=&amp;quot;google&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;search-google&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;palm-row&amp;quot; id=&amp;quot;map&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;search-maps&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;palm-row&amp;quot; id=&amp;quot;wikipedia&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;search-wikipedia&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;palm-row&amp;quot; id=&amp;quot;reddit&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;search-reddit&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;palm-row&amp;quot; id=&amp;quot;twitter&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;search-twitter&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div id='web_drawer' x-mojo-element=&amp;quot;Drawer&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;palm-row last&amp;quot; id=&amp;quot;web&amp;quot; name=&amp;quot;search-identifier&amp;quot; x-mojo-tap-highlight=&amp;quot;persistent&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;palm-row-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;div class=&amp;quot;title search-url truncating-text&amp;quot; id=&amp;quot;webtext&amp;quot;&amp;gt;#{filterText}&amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''4. Edit the following file:'''&lt;br /&gt;
/usr/lib/luna/system/luna-applauncher/stylesheets/global-search.css&lt;br /&gt;
&lt;br /&gt;
Add the following class to the css file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
.palm-group.search .search-reddit {&lt;br /&gt;
                width: 100%;&lt;br /&gt;
                height: 52px;&lt;br /&gt;
                background: url(../images/search-reddit.png) center center no-repeat;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''5. Finally, you need to create a png image (ideally 200x44, but any size up to 300x44 should work) with a transparent background and the logo of your choice. Add it to the path below making sure the name matches the css class, reboot, and enjoy!'''&lt;br /&gt;
/usr/lib/luna/system/luna-applauncher/images&lt;br /&gt;
&lt;br /&gt;
'''6. Remount file system as read-only:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;mount -o remount,ro /	&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''7. Disconnect and reboot your Pre with Orange-Sym-R&lt;br /&gt;
&lt;br /&gt;
Here is the image I used:&lt;br /&gt;
&lt;br /&gt;
[[Image:Reddit.png]]&lt;br /&gt;
&lt;br /&gt;
(See [[Global Search Addons Collection | all available 'universal search' images and search links]].)&lt;br /&gt;
&lt;br /&gt;
And here is the end result!&lt;br /&gt;
&lt;br /&gt;
[[Image:global-search.jpg]]&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2830</id>
		<title>Next steps</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2830"/>
		<updated>2009-07-28T23:54:35Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* Finishing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''&lt;br /&gt;
&lt;br /&gt;
=Automated Setup of Optware, Users and Access=&lt;br /&gt;
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software  to ensure everyone has the necessary tools in place to use the resources the community is providing.&lt;br /&gt;
&lt;br /&gt;
In particular, this includes the Optware package manager.  Palm's webOS uses the ''ipkg'' package manager internally.  The community has a version of ''ipkg''  called  ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. &lt;br /&gt;
&lt;br /&gt;
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten  by future Palm software upgrades. &lt;br /&gt;
&lt;br /&gt;
In addition, the standard package  creates a non-root user, installs ''sudo'', and includes an SSH program (''dropbear'') and an sftp program. &lt;br /&gt;
&lt;br /&gt;
For your convenience, we've packaged all this up into a simple script.&lt;br /&gt;
&lt;br /&gt;
==Optware Setup==&lt;br /&gt;
&lt;br /&gt;
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''&lt;br /&gt;
&lt;br /&gt;
After completing the process of obtaining access to your Pre, do the following: &lt;br /&gt;
&lt;br /&gt;
'''Type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note to Windows Putty users:  To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh&lt;br /&gt;
 sh optware-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the on-screen instructions.  &lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Quilt setup==&lt;br /&gt;
&lt;br /&gt;
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches.  (Yes, the pun was intentional. Quilt manages multiple patches.)  This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository. [[Applying_Patches | Applying Patches]] provides a more thorough guide on the use of quilt.&lt;br /&gt;
&lt;br /&gt;
'''Again, type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh&lt;br /&gt;
 sh quilt-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Finishing==&lt;br /&gt;
&lt;br /&gt;
To finish off, turn Developer Mode back to &amp;quot;Off&amp;quot; (which will reboot your Pre).&lt;br /&gt;
&lt;br /&gt;
Once you are finished, you may SSH into your Pre with an SSH client like [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty]:&lt;br /&gt;
*Find your IP address with [http://checkmyip.com/ CheckMyIP.com]&lt;br /&gt;
*SSH to that IP address on port 222&lt;br /&gt;
**If you're doing this over EVDO, there may be a lot of latency.  Be patient.&lt;br /&gt;
*Log in with the username and password you created during the Optware installation&lt;br /&gt;
**Many operations cannot be carried out with the permissions of that username.  You'll need to [[Basic_Linux_Use#sudo|sudo]] those operations with the new username's password&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2829</id>
		<title>Next steps</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2829"/>
		<updated>2009-07-28T23:51:20Z</updated>

		<summary type="html">&lt;p&gt;Eain: Changed font size to fit properly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''&lt;br /&gt;
&lt;br /&gt;
=Automated Setup of Optware, Users and Access=&lt;br /&gt;
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software  to ensure everyone has the necessary tools in place to use the resources the community is providing.&lt;br /&gt;
&lt;br /&gt;
In particular, this includes the Optware package manager.  Palm's webOS uses the ''ipkg'' package manager internally.  The community has a version of ''ipkg''  called  ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. &lt;br /&gt;
&lt;br /&gt;
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten  by future Palm software upgrades. &lt;br /&gt;
&lt;br /&gt;
In addition, the standard package  creates a non-root user, installs ''sudo'', and includes an SSH program (''dropbear'') and an sftp program. &lt;br /&gt;
&lt;br /&gt;
For your convenience, we've packaged all this up into a simple script.&lt;br /&gt;
&lt;br /&gt;
==Optware Setup==&lt;br /&gt;
&lt;br /&gt;
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''&lt;br /&gt;
&lt;br /&gt;
After completing the process of obtaining access to your Pre, do the following: &lt;br /&gt;
&lt;br /&gt;
'''Type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note to Windows Putty users:  To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh&lt;br /&gt;
 sh optware-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the on-screen instructions.  &lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Quilt setup==&lt;br /&gt;
&lt;br /&gt;
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches.  (Yes, the pun was intentional. Quilt manages multiple patches.)  This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository. [[Applying_Patches | Applying Patches]] provides a more thorough guide on the use of quilt.&lt;br /&gt;
&lt;br /&gt;
'''Again, type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh&lt;br /&gt;
 sh quilt-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Finishing==&lt;br /&gt;
&lt;br /&gt;
To finish off, turn Developer Mode back to &amp;quot;Off&amp;quot; (which will reboot your Pre).&lt;br /&gt;
&lt;br /&gt;
Once you are finished, you may SSH into your Pre with an SSH client like [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty]:&lt;br /&gt;
*Find your IP address with [http://checkmyip.com/ CheckMyIP.com]&lt;br /&gt;
*SSH to that IP address on port 222&lt;br /&gt;
**If you're doing this over EVDO, there may be a lot of latency.  Be patient.&lt;br /&gt;
*Log in with the username and password you created during the Optware installation&lt;br /&gt;
**Many operations cannot be carried out with the permissions of that username.  You'll need to [[Basic_Linux_Use#sudo|sudo]] those operations&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2828</id>
		<title>Next steps</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Next_steps&amp;diff=2828"/>
		<updated>2009-07-28T23:47:48Z</updated>

		<summary type="html">&lt;p&gt;Eain: Added formatting, finishing steps, clarified SSHing in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''&lt;br /&gt;
&lt;br /&gt;
=Automated Setup of Optware, Users and Access=&lt;br /&gt;
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software  to ensure everyone has the necessary tools in place to use the resources the community is providing.&lt;br /&gt;
&lt;br /&gt;
In particular, this includes the Optware package manager.  Palm's webOS uses the ''ipkg'' package manager internally.  The community has a version of ''ipkg''  called  ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. &lt;br /&gt;
&lt;br /&gt;
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten  by future Palm software upgrades. &lt;br /&gt;
&lt;br /&gt;
In addition, the standard package  creates a non-root user, installs ''sudo'', and includes an SSH program (''dropbear'') and an sftp program. &lt;br /&gt;
&lt;br /&gt;
For your convenience, we've packaged all this up into a simple script.&lt;br /&gt;
&lt;br /&gt;
==Optware Setup==&lt;br /&gt;
&lt;br /&gt;
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''&lt;br /&gt;
&lt;br /&gt;
After completing the process of obtaining access to your Pre, do the following: &lt;br /&gt;
&lt;br /&gt;
'''Type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note to Windows Putty users:  To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:140%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh&lt;br /&gt;
 sh optware-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the on-screen instructions.  &lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Quilt setup==&lt;br /&gt;
&lt;br /&gt;
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches.  (Yes, the pun was intentional. Quilt manages multiple patches.)  This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository. [[Applying_Patches | Applying Patches]] provides a more thorough guide on the use of quilt.&lt;br /&gt;
&lt;br /&gt;
'''Again, type each line exactly as it appears.  Copying and pasting is probably a good idea.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:140%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh&lt;br /&gt;
 sh quilt-bootstrap.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to review the script before you run it, you can look here: &lt;br /&gt;
&lt;br /&gt;
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]&lt;br /&gt;
&lt;br /&gt;
==Finishing==&lt;br /&gt;
&lt;br /&gt;
To finish off, turn Developer Mode back to &amp;quot;Off&amp;quot; (which will reboot your Pre).&lt;br /&gt;
&lt;br /&gt;
Once you are finished, you may SSH into your Pre with an SSH client like [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty]:&lt;br /&gt;
*Find your IP address with [http://checkmyip.com/ CheckMyIP.com]&lt;br /&gt;
*SSH to that IP address on port 222&lt;br /&gt;
**If you're doing this over EVDO, there may be a lot of latency.  Be patient.&lt;br /&gt;
*Log in with the username and password you created during the Optware installation&lt;br /&gt;
**Many operations cannot be carried out with the permissions of that username.  You'll need to [[Basic_Linux_Use#sudo|sudo]] those operations&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Basic_Linux_Use&amp;diff=2826</id>
		<title>Basic Linux Use</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Basic_Linux_Use&amp;diff=2826"/>
		<updated>2009-07-28T23:38:53Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* sudo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Tux-pre.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
Linux at its core runs a command line shell similar to that of DOS and the Windows Command Prompt, and like the Windows/DOS Command Line, you can seriously harm your OS if you just go poking around without any idea as to what it is you're doing. The commands and programs below are the most used commands and programs throughout the tutorials on this site.  Please bear in mind that Linux commands and file names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
== Command Line Commands ==&lt;br /&gt;
=== cd ===&lt;br /&gt;
'''Dos Eqiv:''' cd&lt;br /&gt;
Used to change directories. To go up a level use '..' &lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cd hello&amp;quot;'' would move one directory down to /hello/&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cd ..&amp;quot;'' would take you to the directory that is parent to your Present Working Directory.  If you are in /usr/lib, this command will take you to /usr&lt;br /&gt;
&lt;br /&gt;
=== pwd ===&lt;br /&gt;
'''Dos Eqiv:''' cd (with no parameters)&lt;br /&gt;
Used to show the Present Working Directory&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;pwd&amp;quot;'' would display your current location in the filesystem tree&lt;br /&gt;
&lt;br /&gt;
=== ls ===&lt;br /&gt;
'''Dos Eqiv:''' dir&lt;br /&gt;
Used to list the contents of a directory. &lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;ls&amp;quot;'' would list the contents of where you currently are. &lt;br /&gt;
''Ex: &amp;quot;ls /hello/&amp;quot;'' would list the contents of /hello/ no matter where you are.&lt;br /&gt;
&lt;br /&gt;
=== cp ===&lt;br /&gt;
'''Dos Eqiv:'''  copy&lt;br /&gt;
Used to copy files from one spot to another.  Adding the -i flag will cause cp to ask if you want to overwrite the destination file if it already exists.  Use of this flag is recommended to prevent accidental overwriting of previous backups.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cp -i test test.bak&amp;quot;'' would copy test to test.bak&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cp -i test /var/test.bak&amp;quot;'' would copy test to /var/test.bak&lt;br /&gt;
&lt;br /&gt;
=== mv ===&lt;br /&gt;
'''Dos Eqiv:''' move / rename&lt;br /&gt;
Used to move or rename files from one spot to another.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;mv oldname.file newname.file&amp;quot;'' will rename the file oldname.file to newname.file&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;mv test /var/test&amp;quot;'' would move test to the /var/ folder without leaving a copy in the current directory.&lt;br /&gt;
&lt;br /&gt;
=== rm ===&lt;br /&gt;
'''Dos Eqiv:''' del&lt;br /&gt;
Used to delete files and directories. Must use the -r option to delete directories.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm test.file&amp;quot;'' would delete the test.file&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm test*&amp;quot;'' would delete all files whose name starts with 'test'&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm /test -r&amp;quot;'' would delete the folder named 'test'&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Adding '''-rf''' or '''-Rf''' to the rm command will &amp;quot;force&amp;quot; deletion of files, folders, and folder contents without confirmation. Please be very mindful of any instructions that suggest doing this, and '''don't rm -Rf anything unless you know what you're doing.'''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
Many functions cannot be carried out unless the logged-in username has proper permissions.  sudo will run a command or series of commands as root, although it may require a password.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;sudo mount -o remount,rw /&amp;quot;'' would mount the file system as read-write (needed for many changes, and needs root permissions).&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;sudo vi &amp;lt;locked filename&amp;gt;&amp;quot;'' would edit a file whose permissions are locked-down for the current user.&lt;br /&gt;
&lt;br /&gt;
== Editing Files using vi ==&lt;br /&gt;
&lt;br /&gt;
The Pre's Linux operating system comes installed with a text editing program called vi.  It's a very simple to use text editor.&lt;br /&gt;
&lt;br /&gt;
To start with your start vi using the command 'vi' followed by the file you would like to edit.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;vi test.html&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;vi /var/test.html&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
Once you start vi you will notice that you can't just start typing and have it show up in the file. vi has two modes, an Editing and a Command mode. vi always starts in the command mode. The keys you can use to switch between the two modes are show below:&lt;br /&gt;
&lt;br /&gt;
===Switch to Editing Mode===&lt;br /&gt;
 '''i'''	Insert text before the cursor&lt;br /&gt;
 '''I'''	Insert text at the beginning of the current line&lt;br /&gt;
 '''a'''	Append text after the cursor&lt;br /&gt;
 '''A'''	Append text to the end of the current line&lt;br /&gt;
 '''o'''	Append text to new line after current line&lt;br /&gt;
 '''O'''	Append text to new line above current line&lt;br /&gt;
 '''cw'''	Delete from the cursor to the end of the current word and begin inserting text&lt;br /&gt;
 '''c$'''	Delete from the cursor to the end of the current line and begin appending text&lt;br /&gt;
&lt;br /&gt;
===Switch back to Command Mode===&lt;br /&gt;
 '''esc'''&lt;br /&gt;
&lt;br /&gt;
Command mode is where you can chose to save a file or close it without saving along with some other various commands that are listed below. You almost always start a command in vi by using the ':' symbol, though sometimes a single character will also perform an action while in command mode.&lt;br /&gt;
&lt;br /&gt;
===Saving and Quitting===&lt;br /&gt;
 ''':q'''	Quit (only use if no changes have been made since the last save)&lt;br /&gt;
 ''':q!'''	Quit without saving changes&lt;br /&gt;
 ''':w'''	Save the file without quitting vi&lt;br /&gt;
 ''':wq'''	Save the file and then quits vi&lt;br /&gt;
&lt;br /&gt;
===Moving Around Within the File===&lt;br /&gt;
 ''':1'''	Move to the first line.  Replace 1 with any line number to jump to that line.&lt;br /&gt;
 '''G'''	Move to the last line.&lt;br /&gt;
 '''0'''	Move to the beginning of the current line.&lt;br /&gt;
 '''$'''	Move to the end of the current line.&lt;br /&gt;
&lt;br /&gt;
===Special Edit Commands (use while in command mode)===&lt;br /&gt;
 '''yy'''	''Yank'' the current line into the buffer (similar to Windows' ''copy'') or yank X number of lines ('4yy' will yank 4 lines)&lt;br /&gt;
 '''p'''	Paste the contents of the buffer below the current line (similar to Windows' ''paste'')&lt;br /&gt;
 '''P'''	Paste the contents of the buffer above the current line (similar to Windows' ''paste'')&lt;br /&gt;
 '''dd'''	Delete the current line, or delete X number of lines ('4dd' will delete 4 lines)&lt;br /&gt;
 '''d$'''	Delete everything from the cursor to the end of the current line&lt;br /&gt;
 '''dw'''	Delete everything from the cursor to the end of the current word&lt;br /&gt;
 '''x'''	Delete the character under the cursor&lt;br /&gt;
&lt;br /&gt;
===Search for Text Within the File===&lt;br /&gt;
 '''/term'''	Search forward for ''term''&lt;br /&gt;
 '''?term'''	Search backward for ''term''&lt;br /&gt;
 '''n'''	Go to the next instance, if any&lt;br /&gt;
 '''N'''	Go to the previous instance, if any&lt;br /&gt;
&lt;br /&gt;
''Examples:''&lt;br /&gt;
&lt;br /&gt;
''/hello world'' 		Search forward in the file, looking for the phrase 'hello world'&lt;br /&gt;
&lt;br /&gt;
''?hello world''		Search backward in the file, looking for the phrase 'hello world'&lt;br /&gt;
&lt;br /&gt;
Note: For a less powerful but easier to use text editor, install nano from the [[adding-the-ipkg-repository|optware repository]]&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Basic_Linux_Use&amp;diff=2825</id>
		<title>Basic Linux Use</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Basic_Linux_Use&amp;diff=2825"/>
		<updated>2009-07-28T23:37:58Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* Command Line Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Tux-pre.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
Linux at its core runs a command line shell similar to that of DOS and the Windows Command Prompt, and like the Windows/DOS Command Line, you can seriously harm your OS if you just go poking around without any idea as to what it is you're doing. The commands and programs below are the most used commands and programs throughout the tutorials on this site.  Please bear in mind that Linux commands and file names are case sensitive.&lt;br /&gt;
&lt;br /&gt;
== Command Line Commands ==&lt;br /&gt;
=== cd ===&lt;br /&gt;
'''Dos Eqiv:''' cd&lt;br /&gt;
Used to change directories. To go up a level use '..' &lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cd hello&amp;quot;'' would move one directory down to /hello/&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cd ..&amp;quot;'' would take you to the directory that is parent to your Present Working Directory.  If you are in /usr/lib, this command will take you to /usr&lt;br /&gt;
&lt;br /&gt;
=== pwd ===&lt;br /&gt;
'''Dos Eqiv:''' cd (with no parameters)&lt;br /&gt;
Used to show the Present Working Directory&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;pwd&amp;quot;'' would display your current location in the filesystem tree&lt;br /&gt;
&lt;br /&gt;
=== ls ===&lt;br /&gt;
'''Dos Eqiv:''' dir&lt;br /&gt;
Used to list the contents of a directory. &lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;ls&amp;quot;'' would list the contents of where you currently are. &lt;br /&gt;
''Ex: &amp;quot;ls /hello/&amp;quot;'' would list the contents of /hello/ no matter where you are.&lt;br /&gt;
&lt;br /&gt;
=== cp ===&lt;br /&gt;
'''Dos Eqiv:'''  copy&lt;br /&gt;
Used to copy files from one spot to another.  Adding the -i flag will cause cp to ask if you want to overwrite the destination file if it already exists.  Use of this flag is recommended to prevent accidental overwriting of previous backups.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cp -i test test.bak&amp;quot;'' would copy test to test.bak&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;cp -i test /var/test.bak&amp;quot;'' would copy test to /var/test.bak&lt;br /&gt;
&lt;br /&gt;
=== mv ===&lt;br /&gt;
'''Dos Eqiv:''' move / rename&lt;br /&gt;
Used to move or rename files from one spot to another.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;mv oldname.file newname.file&amp;quot;'' will rename the file oldname.file to newname.file&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;mv test /var/test&amp;quot;'' would move test to the /var/ folder without leaving a copy in the current directory.&lt;br /&gt;
&lt;br /&gt;
=== rm ===&lt;br /&gt;
'''Dos Eqiv:''' del&lt;br /&gt;
Used to delete files and directories. Must use the -r option to delete directories.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm test.file&amp;quot;'' would delete the test.file&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm test*&amp;quot;'' would delete all files whose name starts with 'test'&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;rm /test -r&amp;quot;'' would delete the folder named 'test'&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Adding '''-rf''' or '''-Rf''' to the rm command will &amp;quot;force&amp;quot; deletion of files, folders, and folder contents without confirmation. Please be very mindful of any instructions that suggest doing this, and '''don't rm -Rf anything unless you know what you're doing.'''&lt;br /&gt;
&lt;br /&gt;
=== sudo ===&lt;br /&gt;
Many functions cannot be carried out unless the logged-in username has proper permissions.  sudo will run a command or series of commands as root, although it may require a password.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;sudo mount -o remount,rw /&amp;quot;'' would mount the file system as read-write (needed for many changes, and needs root permissions)&lt;br /&gt;
&lt;br /&gt;
== Editing Files using vi ==&lt;br /&gt;
&lt;br /&gt;
The Pre's Linux operating system comes installed with a text editing program called vi.  It's a very simple to use text editor.&lt;br /&gt;
&lt;br /&gt;
To start with your start vi using the command 'vi' followed by the file you would like to edit.&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;vi test.html&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
''Ex: &amp;quot;vi /var/test.html&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
Once you start vi you will notice that you can't just start typing and have it show up in the file. vi has two modes, an Editing and a Command mode. vi always starts in the command mode. The keys you can use to switch between the two modes are show below:&lt;br /&gt;
&lt;br /&gt;
===Switch to Editing Mode===&lt;br /&gt;
 '''i'''	Insert text before the cursor&lt;br /&gt;
 '''I'''	Insert text at the beginning of the current line&lt;br /&gt;
 '''a'''	Append text after the cursor&lt;br /&gt;
 '''A'''	Append text to the end of the current line&lt;br /&gt;
 '''o'''	Append text to new line after current line&lt;br /&gt;
 '''O'''	Append text to new line above current line&lt;br /&gt;
 '''cw'''	Delete from the cursor to the end of the current word and begin inserting text&lt;br /&gt;
 '''c$'''	Delete from the cursor to the end of the current line and begin appending text&lt;br /&gt;
&lt;br /&gt;
===Switch back to Command Mode===&lt;br /&gt;
 '''esc'''&lt;br /&gt;
&lt;br /&gt;
Command mode is where you can chose to save a file or close it without saving along with some other various commands that are listed below. You almost always start a command in vi by using the ':' symbol, though sometimes a single character will also perform an action while in command mode.&lt;br /&gt;
&lt;br /&gt;
===Saving and Quitting===&lt;br /&gt;
 ''':q'''	Quit (only use if no changes have been made since the last save)&lt;br /&gt;
 ''':q!'''	Quit without saving changes&lt;br /&gt;
 ''':w'''	Save the file without quitting vi&lt;br /&gt;
 ''':wq'''	Save the file and then quits vi&lt;br /&gt;
&lt;br /&gt;
===Moving Around Within the File===&lt;br /&gt;
 ''':1'''	Move to the first line.  Replace 1 with any line number to jump to that line.&lt;br /&gt;
 '''G'''	Move to the last line.&lt;br /&gt;
 '''0'''	Move to the beginning of the current line.&lt;br /&gt;
 '''$'''	Move to the end of the current line.&lt;br /&gt;
&lt;br /&gt;
===Special Edit Commands (use while in command mode)===&lt;br /&gt;
 '''yy'''	''Yank'' the current line into the buffer (similar to Windows' ''copy'') or yank X number of lines ('4yy' will yank 4 lines)&lt;br /&gt;
 '''p'''	Paste the contents of the buffer below the current line (similar to Windows' ''paste'')&lt;br /&gt;
 '''P'''	Paste the contents of the buffer above the current line (similar to Windows' ''paste'')&lt;br /&gt;
 '''dd'''	Delete the current line, or delete X number of lines ('4dd' will delete 4 lines)&lt;br /&gt;
 '''d$'''	Delete everything from the cursor to the end of the current line&lt;br /&gt;
 '''dw'''	Delete everything from the cursor to the end of the current word&lt;br /&gt;
 '''x'''	Delete the character under the cursor&lt;br /&gt;
&lt;br /&gt;
===Search for Text Within the File===&lt;br /&gt;
 '''/term'''	Search forward for ''term''&lt;br /&gt;
 '''?term'''	Search backward for ''term''&lt;br /&gt;
 '''n'''	Go to the next instance, if any&lt;br /&gt;
 '''N'''	Go to the previous instance, if any&lt;br /&gt;
&lt;br /&gt;
''Examples:''&lt;br /&gt;
&lt;br /&gt;
''/hello world'' 		Search forward in the file, looking for the phrase 'hello world'&lt;br /&gt;
&lt;br /&gt;
''?hello world''		Search backward in the file, looking for the phrase 'hello world'&lt;br /&gt;
&lt;br /&gt;
Note: For a less powerful but easier to use text editor, install nano from the [[adding-the-ipkg-repository|optware repository]]&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=2686</id>
		<title>HamachiVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=2686"/>
		<updated>2009-07-27T20:42:50Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* Hamachi VPN for Palm Pre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hamachi VPN for Palm Pre =&lt;br /&gt;
&lt;br /&gt;
This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the Pre.  If you're not familiar, there are endless Googlable web pages that describe running Hamachi on desktop linux systems you can use for reference.&lt;br /&gt;
&lt;br /&gt;
Become root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make the filesystem writable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download the hamachi binary to your pre via wget:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/share&lt;br /&gt;
wget http://files.hamachi.cc/linux/hamachi-0.9.9.9-20-lnx.tar.gz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unpack the archive:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
tar zxvf hamachi-0.9.9.9-20-lnx.tar.gz&lt;br /&gt;
cd hamachi-0.9.9.9-20-lnx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hamachi depends on libcrypto.so.0.9.7.  The Palm Pre has libcrypto.so.0.9.8 installed.  I made a symlink, and it worked.  So...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0.9.7&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the &amp;quot;install&amp;quot; script using your favorite editor (like vi) to change the installation locations.&lt;br /&gt;
Also fix line 7 or you'll get an error.&lt;br /&gt;
&lt;br /&gt;
I changed it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
HAMACHI_DST=/opt/bin&lt;br /&gt;
TUNCFG_DST=/opt/sbin&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo Copying hamachi into $HAMACHI_DST ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then follow the instructions in the README under Quick Start, but basically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
./install&lt;br /&gt;
/opt/sbin/tuncfg&lt;br /&gt;
hamachi-init&lt;br /&gt;
hamachi start&lt;br /&gt;
hamachi login&lt;br /&gt;
hamachi set-nick &amp;lt;your nickname&amp;gt;&lt;br /&gt;
hamachi join &amp;lt;network&amp;gt;&lt;br /&gt;
hamachi go-online&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hint ==&lt;br /&gt;
&lt;br /&gt;
If you use Hamachi to connect to web services running on your machines at home or elsewhere, you might make your life easier by adding some entries to the /etc/hosts file.  Then you can access your servers by name instead of having to use the Hamachi 5.x.x.x IP addresses.&lt;br /&gt;
&lt;br /&gt;
A simple sample entry in /etc/hosts which would allow you to access your server &amp;quot;beaker&amp;quot; at 5.1.2.3 would be:&lt;br /&gt;
(Add your servers below the &amp;quot;castle&amp;quot; line.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1       localhost.localdomain           localhost&lt;br /&gt;
127.0.0.1 castle&lt;br /&gt;
5.1.2.3 beaker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, make the filesystem read-only again:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ping Test ==&lt;br /&gt;
&lt;br /&gt;
When you've got hamachi up, you can try pinging one of your servers. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/root# ping beaker&lt;br /&gt;
PING beaker (5.1.2.3): 56 data bytes&lt;br /&gt;
64 bytes from 5.1.2.3: seq=0 ttl=128 time=5.493 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=1 ttl=128 time=32.257 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=2 ttl=128 time=56.976 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=3 ttl=128 time=74.249 ms&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sleep/Wake and Battery Impact ==&lt;br /&gt;
On first testing:&lt;br /&gt;
* When the device went to sleep, the VPN went down.&lt;br /&gt;
* When the device woke up, the VPN came back up and was pingable again.&lt;br /&gt;
&lt;br /&gt;
This morning, while at my workstation, and with the Pre idle in my pocket, I noticed my Pre was available/pingable on Hamachi.  I am not totally sure of what the long-term battery impact might be of running Hamachi on the Pre.  I'm not yet sure if it keeps the device &amp;quot;awake&amp;quot; all the time, which clearly would drain the battery.  I have push GMail IMAP going, so I assume there is some kind of connection either being periodically established or constantly maintained.  But I don't know enough about the networking aspects to determine at this time whether running Hamachi all the time will negatively impact the battery.  Feel free to message me if you learn anything.&lt;br /&gt;
&lt;br /&gt;
== Upstart script ==&lt;br /&gt;
This script will start Hamachi up after a reboot.&lt;br /&gt;
&lt;br /&gt;
Place the following script in /etc/event.d/hamachi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;Hamachi VPN for WebOS&amp;quot;&lt;br /&gt;
version 1.0&lt;br /&gt;
&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
console output&lt;br /&gt;
&lt;br /&gt;
script&lt;br /&gt;
  /opt/bin/hamachi -c /var/home/root/.hamachi start 2&amp;gt;&amp;amp;1 /var/home/root/hamachi.log&lt;br /&gt;
end script&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
  /opt/sbin/tuncfg&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=2685</id>
		<title>HamachiVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=2685"/>
		<updated>2009-07-27T20:37:45Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* Hamachi VPN for Palm Pre */ fixed typo, updated URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hamachi VPN for Palm Pre =&lt;br /&gt;
&lt;br /&gt;
This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the Pre.  If you're not familiar, there are endless Googlable web pages that describe running Hamachi on desktop linux systems you can use for reference.&lt;br /&gt;
&lt;br /&gt;
Become root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make the filesystem writable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download the hamachi binary to your pre via wget:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/share&lt;br /&gt;
wget http://files.hamachi.cc/linux/hamachi-0.9.9.9-20-lnx.tar.gz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unpack the archive:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
tar zxvf hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
cd hamachi-n770-0.9.9.9-20&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hamachi depends on libcrypto.so.0.9.7.  The Palm Pre has libcrypto.so.0.9.8 installed.  I made a symlink, and it worked.  So...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0.9.7&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the &amp;quot;install&amp;quot; script using your favorite editor (like vi) to change the installation locations.&lt;br /&gt;
Also fix line 7 or you'll get an error.&lt;br /&gt;
&lt;br /&gt;
I changed it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
HAMACHI_DST=/opt/bin&lt;br /&gt;
TUNCFG_DST=/opt/sbin&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo Copying hamachi into $HAMACHI_DST ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then follow the instructions in the README under Quick Start, but basically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
./install&lt;br /&gt;
/opt/sbin/tuncfg&lt;br /&gt;
hamachi-init&lt;br /&gt;
hamachi start&lt;br /&gt;
hamachi login&lt;br /&gt;
hamachi set-nick &amp;lt;your nickname&amp;gt;&lt;br /&gt;
hamachi join &amp;lt;network&amp;gt;&lt;br /&gt;
hamachi go-online&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hint ==&lt;br /&gt;
&lt;br /&gt;
If you use Hamachi to connect to web services running on your machines at home or elsewhere, you might make your life easier by adding some entries to the /etc/hosts file.  Then you can access your servers by name instead of having to use the Hamachi 5.x.x.x IP addresses.&lt;br /&gt;
&lt;br /&gt;
A simple sample entry in /etc/hosts which would allow you to access your server &amp;quot;beaker&amp;quot; at 5.1.2.3 would be:&lt;br /&gt;
(Add your servers below the &amp;quot;castle&amp;quot; line.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1       localhost.localdomain           localhost&lt;br /&gt;
127.0.0.1 castle&lt;br /&gt;
5.1.2.3 beaker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, make the filesystem read-only again:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ping Test ==&lt;br /&gt;
&lt;br /&gt;
When you've got hamachi up, you can try pinging one of your servers. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/root# ping beaker&lt;br /&gt;
PING beaker (5.1.2.3): 56 data bytes&lt;br /&gt;
64 bytes from 5.1.2.3: seq=0 ttl=128 time=5.493 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=1 ttl=128 time=32.257 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=2 ttl=128 time=56.976 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=3 ttl=128 time=74.249 ms&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sleep/Wake and Battery Impact ==&lt;br /&gt;
On first testing:&lt;br /&gt;
* When the device went to sleep, the VPN went down.&lt;br /&gt;
* When the device woke up, the VPN came back up and was pingable again.&lt;br /&gt;
&lt;br /&gt;
This morning, while at my workstation, and with the Pre idle in my pocket, I noticed my Pre was available/pingable on Hamachi.  I am not totally sure of what the long-term battery impact might be of running Hamachi on the Pre.  I'm not yet sure if it keeps the device &amp;quot;awake&amp;quot; all the time, which clearly would drain the battery.  I have push GMail IMAP going, so I assume there is some kind of connection either being periodically established or constantly maintained.  But I don't know enough about the networking aspects to determine at this time whether running Hamachi all the time will negatively impact the battery.  Feel free to message me if you learn anything.&lt;br /&gt;
&lt;br /&gt;
== Upstart script ==&lt;br /&gt;
This script will start Hamachi up after a reboot.&lt;br /&gt;
&lt;br /&gt;
Place the following script in /etc/event.d/hamachi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;Hamachi VPN for WebOS&amp;quot;&lt;br /&gt;
version 1.0&lt;br /&gt;
&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
console output&lt;br /&gt;
&lt;br /&gt;
script&lt;br /&gt;
  /opt/bin/hamachi -c /var/home/root/.hamachi start 2&amp;gt;&amp;amp;1 /var/home/root/hamachi.log&lt;br /&gt;
end script&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
  /opt/sbin/tuncfg&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Accessing_Linux_Using_Novaterm&amp;diff=2680</id>
		<title>Accessing Linux Using Novaterm</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Accessing_Linux_Using_Novaterm&amp;diff=2680"/>
		<updated>2009-07-27T19:23:35Z</updated>

		<summary type="html">&lt;p&gt;Eain: Added clarification, removed &amp;quot;rooted&amp;quot;s.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Download the Palm sdk from http://developer.palm.com and run it. &lt;br /&gt;
# Click through the installer.&lt;br /&gt;
#* If you are on windows, download [http://tkgeisel.com/stuff/novaterm-1.zip novaterm for windows] and unzip it into the sdk/bin directory. &lt;br /&gt;
# From the Pre desktop, with no applicatons open on the Pre, type in the Konami code on your Pre's keyboard. ('''upupdowndownleftrightleftrightbastart''') to access the developer mode application.   You do not need to press enter.  When you press the &amp;quot;t&amp;quot; of start, the developer app will become visible. &lt;br /&gt;
# Open the DeveloperMode application on your Pre and enable the developer mode switch, resetting the device when prompted.&lt;br /&gt;
# Connect to your computer via USB cable. There is no need to answer the question on your Pre regarding mounting the drive or just charging.  '''Don't select anything''' (or select &amp;quot;Just Charge&amp;quot; if not selecting anything really bothers you).  '''Warning:  Selecting a USB mode will turn off the Pre's WiFi &amp;amp; Cellular connections and mess up later steps by giving you a &amp;quot;wget: bad address&amp;quot; error when you try and install additional packages.'''&lt;br /&gt;
# Run Novaterm. &lt;br /&gt;
#* on Mac and Linux open a terminal, and type in cd /opt/nova/bin&lt;br /&gt;
#**  Then type ./novaterm&lt;br /&gt;
#* On Mac, if ./novaterm results: in failed to connect to server, do the folllowing&lt;br /&gt;
#** sudo chmod 644 /Library/LaunchDaemons/com.palm.novacomd&lt;br /&gt;
#** sudo launchctl load -w /Library/LaunchDaemons/com.palm.novacomd&lt;br /&gt;
#** ./novaterm&lt;br /&gt;
#* on windows, run novaterm.exe or novaterm-1.exe from the palm/sdk/bin directory. (use explorer or a command line)&lt;br /&gt;
# Click &amp;quot;Connect&amp;quot; with &amp;quot;localhost&amp;quot; in the field next to the button.  You will be asked to log in. &lt;br /&gt;
# Login with username '''root''' and a blank password.  (Note that if dev mode is on, you can use root and a blank password, but you can only do this while dev mode is on - rebooting turns this insecure access off again)&lt;br /&gt;
#* This is what you should see&lt;br /&gt;
#:: &amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#:: root@castle:/#&lt;br /&gt;
#:: &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
#:  Assuming that worked, you are in as root.  You can prove this by typing  '''ls -al'''  and hitting enter.  You should get a directory listing.  &lt;br /&gt;
#:: What You Should See: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@castle:/# ls&lt;br /&gt;
bin         dev         etc         lib         md5sums     mnt sbin        tmp         var&lt;br /&gt;
boot        dspbridge   home        lost+found  media       proc sys         usr&lt;br /&gt;
root@castle:/# uname -a&lt;br /&gt;
Linux castle 2.6.24-palm-joplin-3430 #1 175.1.15 armv7l unknown&lt;br /&gt;
root@castle:/# whoami&lt;br /&gt;
root&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Congrats, you are now in as root.  Tread lightly.&lt;br /&gt;
&lt;br /&gt;
== Next Steps: ==&lt;br /&gt;
&lt;br /&gt;
Your Linux-accessible pre is in a very sensitive and unusual state.  There are several steps you should take immidiately:&lt;br /&gt;
&lt;br /&gt;
* Create a new username and password so that you don't have to connect as root&lt;br /&gt;
* Open up ports in the pre so that you can connect to it.&lt;br /&gt;
* Create a secure connection so that your pre is not open to everyone in the universe.   **If you do not secure the network, your device will be accessible by anyone on the internet until it is rebooted.**&lt;br /&gt;
* Install the Optware package manager so that you can install software onto the Pre.  &lt;br /&gt;
&lt;br /&gt;
All this picks up in [[Next_steps]].&lt;br /&gt;
&lt;br /&gt;
== Enabling Developer Mode As A Button ==&lt;br /&gt;
&lt;br /&gt;
Having to type the Konami code every time is tedious so you can make the developer mode button visible by following the instructions at [[Unhide the DeveloperMode App|Unhide the DeveloperMode App]] - '''Works with 1.1'''&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Accessing_Linux_Using_Novaterm&amp;diff=2678</id>
		<title>Accessing Linux Using Novaterm</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Accessing_Linux_Using_Novaterm&amp;diff=2678"/>
		<updated>2009-07-27T19:20:05Z</updated>

		<summary type="html">&lt;p&gt;Eain: added clarification.s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Download the Palm sdk from http://developer.palm.com and run it. &lt;br /&gt;
# Click through the installer.&lt;br /&gt;
#* If you are on windows, download [http://tkgeisel.com/stuff/novaterm-1.zip novaterm for windows] and unzip it into the sdk/bin directory. &lt;br /&gt;
# From the Pre desktop, with no applicatons open on the Pre, type in the Konami code on your Pre's keyboard. ('''upupdowndownleftrightleftrightbastart''') to access the developer mode application.   You do not need to press enter.  When you press the &amp;quot;t&amp;quot; of start, the developer app will become visible. &lt;br /&gt;
# Open the DeveloperMode application on your Pre and enable the developer mode switch, resetting the device when prompted.&lt;br /&gt;
# Connect to your computer via USB cable. There is no need to answer the question on your Pre regarding mounting the drive or just charging.  '''Don't select anything''' (or select &amp;quot;Just Charge&amp;quot; if not selecting anything really bothers you).  '''Warning:  Selecting a USB mode will turn off the Pre's WiFi &amp;amp; Cellular connections and mess up later steps by giving you a &amp;quot;wget: bad address&amp;quot; error when you try and install additional packages.'''&lt;br /&gt;
# Run Novaterm. &lt;br /&gt;
#* on Mac and Linux open a terminal, and type in cd /opt/nova/bin&lt;br /&gt;
#**  Then type ./novaterm&lt;br /&gt;
#* On Mac, if ./novaterm results: in failed to connect to server, do the folllowing&lt;br /&gt;
#** sudo chmod 644 /Library/LaunchDaemons/com.palm.novacomd&lt;br /&gt;
#** sudo launchctl load -w /Library/LaunchDaemons/com.palm.novacomd&lt;br /&gt;
#** ./novaterm&lt;br /&gt;
#* on windows, run novaterm.exe or novaterm-1.exe from the palm/sdk/bin directory. (use explorer or a command line)&lt;br /&gt;
# Click &amp;quot;Connect&amp;quot; with &amp;quot;localhost&amp;quot; in the field next to the button.  You will be asked to log in. &lt;br /&gt;
# Login with username '''root''' and a blank password.  (Note that if dev mode is on, you can use root and a blank password, but you can only do this while dev mode is on - rebooting turns this insecure access off again)&lt;br /&gt;
#* This is what you should see&lt;br /&gt;
#:: &amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#:: root@castle:/#&lt;br /&gt;
#:: &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
#:  Assuming that worked, you are in as root.  You can prove this by typing  '''ls -al'''  and hitting enter.  You should get a directory listing.  &lt;br /&gt;
#:: What You Should See: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@castle:/# ls&lt;br /&gt;
bin         dev         etc         lib         md5sums     mnt sbin        tmp         var&lt;br /&gt;
boot        dspbridge   home        lost+found  media       proc sys         usr&lt;br /&gt;
root@castle:/# uname -a&lt;br /&gt;
Linux castle 2.6.24-palm-joplin-3430 #1 175.1.15 armv7l unknown&lt;br /&gt;
root@castle:/# whoami&lt;br /&gt;
root&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Congrats, you are now in as root.  Tread lightly.&lt;br /&gt;
&lt;br /&gt;
== Next Steps: ==&lt;br /&gt;
&lt;br /&gt;
Your rooted pre is in a very sensitive and unusual state.  There are several steps you should take immidiately:&lt;br /&gt;
&lt;br /&gt;
* Create a new username and password so that you don't connect as root&lt;br /&gt;
* Open up ports in the pre so that you can connect to it.&lt;br /&gt;
* Create a secure connection so that your pre is not open to everyone in the universe.   **If you do not secure the network, your device will be accessible by anyone on the internet until it is rebooted.**&lt;br /&gt;
* Install the Optware package manager so that you can install software onto the Pre.  &lt;br /&gt;
&lt;br /&gt;
All this picks up in [[Next_steps | Next steps after rooting ]].&lt;br /&gt;
&lt;br /&gt;
== Enabling Developer Mode As A Button ==&lt;br /&gt;
&lt;br /&gt;
Having to type the Konami code every time is tedious so you can make the developer mode button visible by following the instructions at [[Unhide the DeveloperMode App|Unhide the DeveloperMode App]] - '''Works with 1.1'''&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2673</id>
		<title>RTorrent</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2673"/>
		<updated>2009-07-27T17:49:56Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have succsefully installed and configued rTorrent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. [[Portal:Accessing Linux]]&lt;br /&gt;
&lt;br /&gt;
2. [[Next steps]]&lt;br /&gt;
&lt;br /&gt;
3. [[Tutorials Linux DDNS for EVDO]]&lt;br /&gt;
&lt;br /&gt;
'''If you have the prerequisites taken care of, login and do the following.....'''&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
ipkg-opt install rtorrent&lt;br /&gt;
&lt;br /&gt;
plus install the 3 optional components. adduser, screens....&lt;br /&gt;
&lt;br /&gt;
then, create an .rtorrent.rc file.&lt;br /&gt;
i placed mine in my home directory. /var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
here is the config file;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
min_peers = 40&lt;br /&gt;
&lt;br /&gt;
max_peers = 100&lt;br /&gt;
&lt;br /&gt;
min_peers_seed = -1&lt;br /&gt;
&lt;br /&gt;
max_peers_seed = 50&lt;br /&gt;
&lt;br /&gt;
max_uploads = 15&lt;br /&gt;
&lt;br /&gt;
download_rate = 0&lt;br /&gt;
&lt;br /&gt;
upload_rate = 1&lt;br /&gt;
&lt;br /&gt;
directory = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
session = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
schedule = watch_directory,10,10,load_start=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = tied_directory,10,10,start_tied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = untied_directory,10,10,close_untied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
ip = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
bind = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
port_range = 6881-6900&lt;br /&gt;
&lt;br /&gt;
check_hash = yes&lt;br /&gt;
&lt;br /&gt;
use_udp_trackers = yes&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
start it up by running;&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
rtorrent -n -o import=/var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
&lt;br /&gt;
an alternative to issuing the command above is to link or copy the .rtorrent.rc file to the directory where you launch rtorrent from. Since after login and issuing the sudo -i command i always end up at;&lt;br /&gt;
&lt;br /&gt;
root@castle:/var/home/root#&lt;br /&gt;
&lt;br /&gt;
i just did the following;&lt;br /&gt;
&lt;br /&gt;
ln /var/home/s4mb4/.rctorrent.rc .rtorrent.rc &lt;br /&gt;
&lt;br /&gt;
then just run the command;&lt;br /&gt;
&lt;br /&gt;
rtorrent&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
more info on rtorrent and how to make it work is located here;&lt;br /&gt;
&lt;br /&gt;
http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2672</id>
		<title>RTorrent</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2672"/>
		<updated>2009-07-27T17:49:34Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have succsefully installed and configued rTorrent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. [[Portal:Accessing Linux]]&lt;br /&gt;
&lt;br /&gt;
2. [[Next steps]]&lt;br /&gt;
&lt;br /&gt;
3. http://www.webos-internals.org/wiki/Tutorials_Linux_DDNS_for_EVDO&lt;br /&gt;
&lt;br /&gt;
'''If you have the prerequisites taken care of, login and do the following.....'''&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
ipkg-opt install rtorrent&lt;br /&gt;
&lt;br /&gt;
plus install the 3 optional components. adduser, screens....&lt;br /&gt;
&lt;br /&gt;
then, create an .rtorrent.rc file.&lt;br /&gt;
i placed mine in my home directory. /var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
here is the config file;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
min_peers = 40&lt;br /&gt;
&lt;br /&gt;
max_peers = 100&lt;br /&gt;
&lt;br /&gt;
min_peers_seed = -1&lt;br /&gt;
&lt;br /&gt;
max_peers_seed = 50&lt;br /&gt;
&lt;br /&gt;
max_uploads = 15&lt;br /&gt;
&lt;br /&gt;
download_rate = 0&lt;br /&gt;
&lt;br /&gt;
upload_rate = 1&lt;br /&gt;
&lt;br /&gt;
directory = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
session = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
schedule = watch_directory,10,10,load_start=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = tied_directory,10,10,start_tied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = untied_directory,10,10,close_untied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
ip = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
bind = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
port_range = 6881-6900&lt;br /&gt;
&lt;br /&gt;
check_hash = yes&lt;br /&gt;
&lt;br /&gt;
use_udp_trackers = yes&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
start it up by running;&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
rtorrent -n -o import=/var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
&lt;br /&gt;
an alternative to issuing the command above is to link or copy the .rtorrent.rc file to the directory where you launch rtorrent from. Since after login and issuing the sudo -i command i always end up at;&lt;br /&gt;
&lt;br /&gt;
root@castle:/var/home/root#&lt;br /&gt;
&lt;br /&gt;
i just did the following;&lt;br /&gt;
&lt;br /&gt;
ln /var/home/s4mb4/.rctorrent.rc .rtorrent.rc &lt;br /&gt;
&lt;br /&gt;
then just run the command;&lt;br /&gt;
&lt;br /&gt;
rtorrent&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
more info on rtorrent and how to make it work is located here;&lt;br /&gt;
&lt;br /&gt;
http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2671</id>
		<title>RTorrent</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=RTorrent&amp;diff=2671"/>
		<updated>2009-07-27T17:48:56Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I have succsefully installed and configued rTorrent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. [[Portal:Accessing Linux]]&lt;br /&gt;
&lt;br /&gt;
2. http://www.webos-internals.org/wiki/Next_steps&lt;br /&gt;
&lt;br /&gt;
3. http://www.webos-internals.org/wiki/Tutorials_Linux_DDNS_for_EVDO&lt;br /&gt;
&lt;br /&gt;
'''If you have the prerequisites taken care of, login and do the following.....'''&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
ipkg-opt install rtorrent&lt;br /&gt;
&lt;br /&gt;
plus install the 3 optional components. adduser, screens....&lt;br /&gt;
&lt;br /&gt;
then, create an .rtorrent.rc file.&lt;br /&gt;
i placed mine in my home directory. /var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
here is the config file;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
min_peers = 40&lt;br /&gt;
&lt;br /&gt;
max_peers = 100&lt;br /&gt;
&lt;br /&gt;
min_peers_seed = -1&lt;br /&gt;
&lt;br /&gt;
max_peers_seed = 50&lt;br /&gt;
&lt;br /&gt;
max_uploads = 15&lt;br /&gt;
&lt;br /&gt;
download_rate = 0&lt;br /&gt;
&lt;br /&gt;
upload_rate = 1&lt;br /&gt;
&lt;br /&gt;
directory = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
session = /media/internal/ringtones/&lt;br /&gt;
&lt;br /&gt;
schedule = watch_directory,10,10,load_start=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = tied_directory,10,10,start_tied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
schedule = untied_directory,10,10,close_untied=/media/internal/ringtones/*.torrent&lt;br /&gt;
&lt;br /&gt;
ip = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
bind = my.dynamic.hostname&lt;br /&gt;
&lt;br /&gt;
port_range = 6881-6900&lt;br /&gt;
&lt;br /&gt;
check_hash = yes&lt;br /&gt;
&lt;br /&gt;
use_udp_trackers = yes&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
start it up by running;&lt;br /&gt;
&lt;br /&gt;
sudo -i&lt;br /&gt;
&lt;br /&gt;
rtorrent -n -o import=/var/home/s4mb4/.rtorrent.rc&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
&lt;br /&gt;
an alternative to issuing the command above is to link or copy the .rtorrent.rc file to the directory where you launch rtorrent from. Since after login and issuing the sudo -i command i always end up at;&lt;br /&gt;
&lt;br /&gt;
root@castle:/var/home/root#&lt;br /&gt;
&lt;br /&gt;
i just did the following;&lt;br /&gt;
&lt;br /&gt;
ln /var/home/s4mb4/.rctorrent.rc .rtorrent.rc &lt;br /&gt;
&lt;br /&gt;
then just run the command;&lt;br /&gt;
&lt;br /&gt;
rtorrent&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
more info on rtorrent and how to make it work is located here;&lt;br /&gt;
&lt;br /&gt;
http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Tutorials_webOS_Hello_World&amp;diff=2202</id>
		<title>Tutorials webOS Hello World</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Tutorials_webOS_Hello_World&amp;diff=2202"/>
		<updated>2009-07-25T04:15:05Z</updated>

		<summary type="html">&lt;p&gt;Eain: /* A couple of scripts to make development easier */ Corrected a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide assumes you have a rooted Pre, with SFTP access. If you don't, please follow the other guides on this wiki first. This guide also assumes that you have at least a basic knowledge of HTML, CSS, and maybe a little JavaScript.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All of this information was acquired via referencing the applications on the Pre, dissecting the Mojo sources available on the Pre, and possibly other publicly available information. The author of this guide has no access to, or knowledge of Palm's unreleased SDK, aside from what has been made publicly available so far. &lt;br /&gt;
&lt;br /&gt;
I'll start by walking you through building your first “Hello, world!” application for webOS from scratch, without copying an existing application and modifying it. Then we'll slowly get into the cooler, meatier parts of Mojo, so that you can actually start bringing your ideas to life. This guide will also cover how to “install” your newly created webOS application(s) on your [[Portal:Accessing_Linux | rooted]] Pre.&lt;br /&gt;
&lt;br /&gt;
== Building your first webOS application:==&lt;br /&gt;
&lt;br /&gt;
First off, a webOS application requires only three files to become functional:&lt;br /&gt;
&lt;br /&gt;
* '''appinfo.json''' – This is file contains a simple JSON object, describing basic meta information about your application, such as the name, version, vendor, etc...&lt;br /&gt;
* '''index.html''' – This file is really the first file that is run when your application is launched. It doesn't have to be called “index.html” since you specify the name for this file in your appinfo.json file. However, I think index.html fits well, and it seems to be what most (if not, all) of the existing webOS applications are using.&lt;br /&gt;
* '''icon.png''' – This is the icon that will be displayed in the launcher for your application. Like index.html, the filename doesn't have to be “icon.png”, since the filename for the launcher icon is specified in your appinfo.json file.&lt;br /&gt;
&lt;br /&gt;
That's it! Only three files to create a basic webOS/Mojo application... In fact, it would probably work without the launcher icon, but let's be honest... who wants an application without an icon? In a typical application (especially if you follow the Mojo framework's MVC structure) you'll have many more files and directories than this, but for simplicity's sake, we'll start with the basics.&lt;br /&gt;
&lt;br /&gt;
Anyway, now let's get started building our first webOS application.&lt;br /&gt;
&lt;br /&gt;
First, create a new, blank directory for your application. Note: Create this directory on your computer. We'll cover how to install your application on your Pre later.&lt;br /&gt;
&lt;br /&gt;
Now for the first, and arguably the most important part of your webOS application: the appinfo.json file.&lt;br /&gt;
&lt;br /&gt;
Here's the contents of a typical appinfo.json file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;Hello, world!&amp;quot;,&lt;br /&gt;
	&amp;quot;version&amp;quot;: &amp;quot;0.0.1&amp;quot;,&lt;br /&gt;
	&amp;quot;type&amp;quot;: &amp;quot;web&amp;quot;,&lt;br /&gt;
	&amp;quot;main&amp;quot;: &amp;quot;index.html&amp;quot;,&lt;br /&gt;
	&amp;quot;id&amp;quot;: &amp;quot;org.webosinternals.evanpro.app.helloworld&amp;quot;,&lt;br /&gt;
	&amp;quot;icon&amp;quot;: &amp;quot;icon.png&amp;quot;,&lt;br /&gt;
	&amp;quot;vendor&amp;quot;: &amp;quot;Evan Coury&amp;quot;,&lt;br /&gt;
	&amp;quot;vendorurl&amp;quot;: &amp;quot;http://www.evan.pro/&amp;quot;,&lt;br /&gt;
	&amp;quot;visible&amp;quot;: true,&lt;br /&gt;
	&amp;quot;removable&amp;quot;: true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you're not familiar with JSON, I urge you to [*http://en.wikipedia.org/wiki/JSON read up on it]. JSON has many other valuable uses in building web applications. The appinfo.json file is really just a self-explanatory key-value pair file, defining some simple information about your application. Here are some details on each value:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!width=&amp;quot;50&amp;quot;| Key&lt;br /&gt;
!width=&amp;quot;50&amp;quot;| Values&lt;br /&gt;
!width=&amp;quot;50&amp;quot;| Required&lt;br /&gt;
!width=&amp;quot;650&amp;quot;| Description &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| title &lt;br /&gt;
|| String/Text &lt;br /&gt;
|| Y &lt;br /&gt;
|| This is the title used in the launcher, and also in the little gray tab thing that's always at the top left... what's that called, again?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| version &lt;br /&gt;
|| Numbers x.y &lt;br /&gt;
|| Y &lt;br /&gt;
|| Simply put, this is the current version number of your application. This will obviously be used to manage OTA updates of webOS applications, and such.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| type &lt;br /&gt;
|| web &lt;br /&gt;
|| Y &lt;br /&gt;
|| This is the application type... So far, the only value I've seen for  this is “web”, even in more complex, plug-in-based applications such as Classic. This of course hints that there could be other options for this in the future, such as “java” or “native”, or who knows what else. This guide is only going to focus on “web”, though.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| main &lt;br /&gt;
|| index.html &lt;br /&gt;
|| Y &lt;br /&gt;
|| This is the name of the html file you want to be have run when the user launches the application from the launcher. Typically, this will always be “index.html”, but there's nothing that says it has to be.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| id &lt;br /&gt;
|| any String &lt;br /&gt;
|| Y &lt;br /&gt;
||  Now, this is a somewhat important one. This is your “Application ID”. Typically, is what this does, is gives the operating system a programmatic way of identifying your application. This must be completely unique, and it's suggested that you stick with the reverse DNS notation used in the existing applications. (ex. org.webosinternals.evanpro.app.helloworld). As a rule  of thumb, I'd suggest keeping it all lowercase, and not using anything besides a through z, 0 through 9, and dashes for your application ID.  We own the webosinternals.org domain, so you can use that reversed with your IRC nickname appended if you don't own your own domain that you can use here.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| icon &lt;br /&gt;
|| file path &lt;br /&gt;
|| N &lt;br /&gt;
|| This is, of course, the path and file name of the icon you want to appear in the launcher. Simple enough, right?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| vendor &lt;br /&gt;
|| String &lt;br /&gt;
|| N &lt;br /&gt;
||  The name of the person / company who made the application.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| vendorurl &lt;br /&gt;
|| String &lt;br /&gt;
|| N &lt;br /&gt;
||  The URL of the aforementioned vendor.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| visible &lt;br /&gt;
||  boolean, default: true  &lt;br /&gt;
|| N &lt;br /&gt;
||  I'm pretty sure this just indicates whether or not to show the application in the launcher.  (Credit to PreGame for pointing this one out)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| removable &lt;br /&gt;
|| boolean, default: true&lt;br /&gt;
|| N&lt;br /&gt;
|| Tells webOS if this application should removable or not.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| miniicon &lt;br /&gt;
|| path to icon &lt;br /&gt;
|| N &lt;br /&gt;
|| Path to file for icon to be used in notification area&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| category &lt;br /&gt;
|| String &lt;br /&gt;
|| N &lt;br /&gt;
|| Default category for the application &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| noWindow &lt;br /&gt;
|| boolean, default false &lt;br /&gt;
|| N &lt;br /&gt;
|| Indicates that this is a headless application that will be only called by other apps.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
TODO: Finish specifying which values in the appinfo.json are required and which are optional. Also mention what the default values for optional ones are. Additionally, add any new values as they're discovered.&lt;br /&gt;
&lt;br /&gt;
In the empty directory you made, create a new file called appinfo.json... In it, paste my sample from above. Feel free to change the title, version, id, vendor, and vendorurl to whatever you want. (Remember what I said about the characters in the application ID, though.)&lt;br /&gt;
&lt;br /&gt;
Next, either go find or make an application icon. 64 x 64 seems to be a good size for launcher icons, O'Reilly's book states that the icon's image should be about 56 x 56 pixels within the 64 x 64 png bounds. PNG's with alpha transparency obviously will look the best. Note: if your icon is smaller than 64 x 64, I believe the launcher will stretch it to 64 x 64, causing it to look fuzzy or pixelated.&lt;br /&gt;
&lt;br /&gt;
If you're too lazy to find or make an icon, I've made a little hello world icon that you may use:&lt;br /&gt;
&lt;br /&gt;
[[Image:Helloworld-icon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that we have an appinfo.json and an awesome icon, we can move onto the fun part: index.html. If you're familiar with the basics of the web (HTML / CSS / JavaScript), then this will be very simple....&lt;br /&gt;
&lt;br /&gt;
We'll start with the basics... Create an index.html in the directory you created, alongside your appinfo.json and icon.png, and paste the following code into it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&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;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot;&lt;br /&gt;
	&amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xml:lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;Hello, world title!&amp;lt;/title&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Load the Mojo Framework --&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;/usr/palm/frameworks/mojo/mojo.js&amp;quot; type=&amp;quot;text/javascript&amp;quot; x-mojo-version=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Some fancy CSS styles --&amp;gt;&lt;br /&gt;
	&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
		#content { &lt;br /&gt;
			text-align: center;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		#app-footer {&lt;br /&gt;
			margin-top: 25px;&lt;br /&gt;
			font-size: 80%;&lt;br /&gt;
			text-align: center;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Make a fancy Pre-looking header --&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;palm-page-header&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;palm-page-header-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;&lt;br /&gt;
				My First webOS App!&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/div&amp;gt;		&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Make a fancy Pre-looking button --&amp;gt;&lt;br /&gt;
	&amp;lt;button class=&amp;quot;palm-button&amp;quot; id=&amp;quot;my-awesome-button&amp;quot;&amp;gt;I'm an awesome button!&amp;lt;/button&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Just some text --&amp;gt;&lt;br /&gt;
	&amp;lt;div id=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
		Hello, world!&amp;lt;br/&amp;gt;&lt;br /&gt;
		&amp;lt;img src=&amp;quot;icon.png&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Footer --&amp;gt;&lt;br /&gt;
	&amp;lt;div id=&amp;quot;app-footer&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr/&amp;gt;&lt;br /&gt;
		&amp;amp;copy; 2009 &amp;lt;a href=&amp;quot;http://www.evan.pro/&amp;quot;&amp;gt;Evan Coury&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You'll notice that webOS lets you use the exact same HTML / CSS as you would if you were simply developing for a browser.&lt;br /&gt;
&lt;br /&gt;
The only real distinguishing factor of this application is here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Load the Mojo Framework --&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;/usr/palm/frameworks/mojo/mojo.js&amp;quot; type=&amp;quot;text/javascript&amp;quot; x-mojo-version=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This line tells webOS to load all of the components of the Mojo framework, including pre-built CSS classes for UI elements, and the valuable Mojo JavaScript functions, which are what will allow us to access and interact with all of the fun stuff like GPS, messaging, alerts, vibration, etc, etc.&lt;br /&gt;
&lt;br /&gt;
Really, if you're just doing some HTML / CSS stuff, and don't wish to use Palm's pre-built UI styles, then you really don't even need to include Mojo... but then what's the point?&lt;br /&gt;
&lt;br /&gt;
In the example, I use a couple of the pre-built CSS UI styles from Mojo. Firstly, the header...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Make a fancy Pre-looking header --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;palm-page-header&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;palm-page-header-wrapper&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;&lt;br /&gt;
			My First webOS App!&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;		&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I don't have a list of all of the palm-* CSS classes, but they're very easy to find by referencing the existing applications.&lt;br /&gt;
&lt;br /&gt;
The second Mojo style I used was the button:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Make a fancy Pre-looking button --&amp;gt;&lt;br /&gt;
&amp;lt;button class=&amp;quot;palm-button&amp;quot; id=&amp;quot;my-awesome-button&amp;quot;&amp;gt;I'm an awesome button!&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other than that, everything else is just normal HTML and CSS, exactly how you would use it on the web. One thing to note is how I referenced the application icon from within the application using a simple &amp;lt;img&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Some Protips:&lt;br /&gt;
&lt;br /&gt;
* Any files you place in your application's directory are available to you to use from within your application. This includes images, CSS, JavaScript files, etc.&lt;br /&gt;
* You do not have to have your CSS styles in-line like the example. For example, you could create a “css” subdirectory to hold all of your CSS files. Then you can use &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;css/styles.css&amp;quot; /&amp;gt; in the &amp;lt;head&amp;gt; just like normal.&lt;br /&gt;
* Theoretically, the files you include (images, JavaScript, CSS) do not have to be relative paths to files in your application's directory. You can also reference remote files using absolute paths... However, be sure to note that if you reference remote files like this, your application may take longer to load, as the files need to be downloaded over EV-DO or WiFi. Also, if the Pre is unable to get a network connection, there would obviously be problems with this. I'm simply noting that it is possible, and that it does work. However, including remote JavaScript can be extremely helpful with rapid development (TODO: Add example for remote JS development).&lt;br /&gt;
* You may include and use jQuery (and other JS libraries, I'm sure), but make sure to include it before Mojo, and use jQuery.noConflict(); since Mojo uses Prototype (TODO: Add jQuery example).&lt;br /&gt;
&lt;br /&gt;
== Installing your first webOS application:==&lt;br /&gt;
&lt;br /&gt;
Now that the application has been written, you need to install it on the Pre.  Fortunately, installation is quite simple:&lt;br /&gt;
# Rename the source directory to match the &amp;quot;'''id'''&amp;quot; tag defined in the //appinfo.json// file.&lt;br /&gt;
# Copy the source directory (not just the files) to ///usr/palm/applications// on the Pre so that the full path to your appinfo file looks like this: ///usr/palm/applications/YOURAPPID/appinfo.json//&lt;br /&gt;
# Restart the GUI using either of the following methods:&lt;br /&gt;
 * Reboot the Pre ( '''##FF5500|Orange##''' + '''Sym''' + '''R''' ).&lt;br /&gt;
 * Stop/restart LunaSysMgr.&lt;br /&gt;
  * As root, from a shell, execute //initctl stop LunaSysMgr// to stop and //initctl start LunaSysMgr// to restart.&lt;br /&gt;
 * run the following command to refresh the Launcher Cache:&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
luna-send -n 1 palm://com.palm.applicationManager/rescan {}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Screenshots:==&lt;br /&gt;
[[Image:Helloworld-launcher.jpg]]&lt;br /&gt;
[[Image:Helloworld-screenshot.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A couple of scripts to make development easier==&lt;br /&gt;
I use two scripts. Say I am creating the &amp;quot;something&amp;quot; app. I'd want to use something like com.foobar.app.something. When I want to move the app over to my Pre, I run the following script from the directory above com.foobar.app.something by typing &amp;quot;moveapp.sh something&amp;quot;. Here is the moveapp.sh script&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#moveapp.sh&lt;br /&gt;
APP=com.foobar.app.$1&lt;br /&gt;
&lt;br /&gt;
TIMESTAMP=&amp;quot;`date '+%Y%m%d-%H%M'`&amp;quot;&lt;br /&gt;
echo archive $APP to &amp;quot;$APP&amp;quot;_$TIMESTAMP.tgz&lt;br /&gt;
&lt;br /&gt;
echo tar zcvf &amp;quot;$APP&amp;quot;_$TIMESTAMP.tgz $APP&lt;br /&gt;
tar zcvf &amp;quot;$APP&amp;quot;_$TIMESTAMP.tgz $APP &lt;br /&gt;
&lt;br /&gt;
echo scp -P 222 &amp;quot;$APP&amp;quot;_$TIMESTAMP.tgz myaccount@192.168.23.151:new.tgz&lt;br /&gt;
scp -P 222 &amp;quot;$APP&amp;quot;_$TIMESTAMP.tgz myaccount@192.168.23.151:new.tgz&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the pre, I have included adding /media/internal/applicaitons to the application search list in /etc/palm/luna.conf. I use this script on my phone to unzip ~/new.tgz created and copied above, then rescans so you can run the new app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# unpack new app into media internal, reset the command cache, and start watching the log&lt;br /&gt;
MYACCOUNT=myaccount&lt;br /&gt;
# you should sudo this or run as root        &lt;br /&gt;
                                             &lt;br /&gt;
echo &amp;quot;go to /media/internal/applications/...&amp;quot;&lt;br /&gt;
cd /media/internal/applications/&lt;br /&gt;
echo &amp;quot;Unpack new code from ~my  &lt;br /&gt;
unpack $MYACCOUNT/new.tgz   &lt;br /&gt;
tar zxvf ~$MYACCOUNT/new.tgz                                    &lt;br /&gt;
                                                                &lt;br /&gt;
echo &amp;quot;rescan the the launcher's cache&amp;quot;                          &lt;br /&gt;
luna-send -n 1 palm://com.palm.applicationManager/rescan {}&lt;br /&gt;
                                     &lt;br /&gt;
echo &amp;quot;tail the log file just in case&amp;quot;&lt;br /&gt;
tall -f /var/log/messages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To Do List:==&lt;br /&gt;
* Tips for speeding up the development process with remote JS files (while we wait for the SDK).&lt;br /&gt;
* Deeper examples into the Mojo MVC structure (controllers, scenes, etc) and using phone-related functions (GPS, messaging, etc).&lt;br /&gt;
&lt;br /&gt;
== Development notes: ==&lt;br /&gt;
* If you want to interact with the local file system (read text files, etc) you will need to use the serviceRequest of com.palm.applicationManager with an &amp;quot;open&amp;quot; method.  However, application Manager checks the registration in command.resource.handers.json to see what applicatoins are registered to handle a particular mime type.  So, you will need to add YOUR app to the list for that mime type, or some other app may be passed your file.  :-(  --RickB&lt;br /&gt;
&lt;br /&gt;
Can this open method of the appMgr service execute shell cmds and if so how? Can we get some code samples? &lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
 '''Note:''' Despite the //fake// copyright notice in the sample application, the code in the preceding example(s) is released under the MIT license.&lt;/div&gt;</summary>
		<author><name>Eain</name></author>
	</entry>
</feed>