Application:Terminal
Terminal - Version: Pre-Alpha 0.1.5
(7/28/2009) (fifth public release)
Summary
Terminal is a mojo applicaton for the Pre which runs a full VT-100 or Linux terminal in a mojo scene. Terminal relies on a custom written plugin developed from community research which allows the mojo app to talk to the back end. It can be used for local operation to run your Pre, or can reach out from the Pre to other computers.
Status
This is early-alpha software. Consider yourself lucky if it works at all. Many people have put many hours of hard work in to get just this far - respect that effort when making comments and suggestions.
Repository
Terminal is housed in the Applications section of the Webos-internals repository at Gitorious. http://gitorious.org/webos-internals.
Source code for the Mojo app can be browsed at http://gitorious.org/webos-internals/applications/trees/master/org.webosinternals.terminal
Source code for the plugin can be browsed at http://gitorious.org/webos-internals/applications/trees/master/termplugin
For commit permission to the project, contact destinal on #webos-internals or email [predestinal@gmail.com]
License
Please be aware that org.webosinternals.terminal and x-webosinternals-termplugin are licensed under the GPLv2.
They cannot be used by a closed source application. If you want to use them in a non-GPLv2 but otherwise open source application, please contact the authors.
Operating notes
Non-obvious keys:
Desired | On Pre |
Delete | Gesture area - . |
Insert | Gesture area - 0 |
Home | Gesture area - 1 |
Up | Gesture area - 2 |
PgUp | Gesture area - 3 |
Left | Gesture area - 4 |
Right | Gesture area - 6 |
End | Gesture area - 7 |
Down | Gesture area - 8 |
PgDn | Gesture area - 9 |
Control | Sym |
Esc | Orange-Space |
Pipe | Orange-Period ("." key) |
Tab | Sym-I |
- (Sym is Control and Control I is the standard tab code)
Rotating the pre will take the terminal to landscape mode. The keyboard will not rotate with you. Attempting to physically force the keyboard to rotate to the proper orientation for landscape mode is known to bork a Pre. :)
Support for both "linux" and "vt100" term types should now be supported, so an export TERM line should no longer be needed. If you find your screen filling with gibberish that looks like ANSI codes, however, make sure you're using 0.1.4 or later version, and report here or in the IRC channel what you were running in the terminal that caused the issue.
If you do see odd behavior, you can force the more compatible vt100 terminal type by typing:
export TERM=vt100
(followed by enter) Note that the case of that command is important.
Recent enhancements
- Prompt for login to enhance security / protect against rogue applications embedding termplugin (more convenient and equally secure method being developed for future release)
- Color!
- Arrow keys, hold a finger on the gesture area so that the white LED lights up, and use the numbers area as if it were a direction pad (ie 2, 4, 6, 8, correspond to up, left, right, down, respectively)
- Several performance enhancements
- Screen scrolls automagically (no more flicking to keep up)
- Comma / underscore key bugs fixed
Known bugs
- The command 'reset' does not work; running it actually messed up the state of the terminal (ex. backspace no longer works).
- Some ansiFlags are not being used (ex. dim/bright, blink, bold, italics etc. don't have any visual effect)
- The keybindings need to be redefinable.
Remember, this is early alpha software. You're lucky it works at all.
Reported issues:
- Doesn't display a return in nano properly unless the screen is rotated
- No action after running exit in session should restart and ask for a new login
Some limitations: Many keys are not implemented. We're working on it, maybe even as you read this. :)
Y and U: Y and U in the emulator return the same raw keycode due to a bug in the emulator. However we're obtaining the key values a better way now so terminal should no longer be susceptible to this flaw.
Installation
Do not stray from or vary these instructions. If you don't do it all, in precisely the right order, with zero mistakes, it's not going to work. Copy & Paste will be your friend.
You need to be logged in as root with a writeable filesystem. Instructions for both those things can be found elsewhere on this wiki.
The first time you install terminal you must do all these steps:
<source lang="text"> mkdir -p /var/etc/ipkg/ ln -s /etc/ipkg/arch.conf /var/etc/ipkg/ echo "src/gz all http://ipkg.preware.org/feeds/preware/all" > /var/etc/ipkg/preware.conf </source>
If you are on the Pre, type:
<source lang="text"> echo "src/gz armv7 http://ipkg.preware.org/feeds/preware/armv7" >> /var/etc/ipkg/preware.conf </source>
If you are on the Emulator, type:
<source lang="text"> echo "src/gz i686 http://ipkg.preware.org/feeds/preware/i686" >> /var/etc/ipkg/preware.conf </source>
Then type:
<source lang="text"> /usr/bin/ipkg -o /var update /usr/bin/ipkg -o /var install x-webosinternals-termplugin ln -s /var/usr/lib/BrowserPlugins/termplugin.so /usr/lib/BrowserPlugins/ /usr/bin/ipkg -o /var install org.webosinternals.terminal </source>
Then refresh the GUI to show your new app:
<source lang="text"> luna-send -n 1 palm://com.palm.applicationManager/rescan {} </source>
If you performed an upgrade and aren't seeing the changes, restart the GUI service:
<source lang="text"> initctl stop LunaSysMgr && initctl start LunaSysMgr </source>
If the above two fail to show the results you're expecting, reboot the device.
Updating
After your first install, only the following is required to upgrade to a new version.
You need to be logged in as root with a writeable filesystem. Instructions for both those things can be found elsewhere on this wiki.
From a shell:
<source lang="text"> /usr/bin/ipkg -o /var update /usr/bin/ipkg -o /var upgrade reboot </source>
Other PreWare Applications
You need to be logged in as root with a writeable filesystem. Instructions for both those things can be found elsewhere on this wiki.
Note that you can use the same commands to install other applications from PreWare:
<source lang="text"> /usr/bin/ipkg -o /var update /usr/bin/ipkg -o /var list /usr/bin/ipkg -o /var install <package> # choose a package from the list /usr/bin/ipkg -o /var remove <package> </source>
Removal
You need to be logged in as root with a writeable filesystem. Instructions for both those things can be found elsewhere on this wiki.
<source lang="text"> rm /usr/lib/BrowserPlugins/termplugin.so /usr/bin/ipkg -o /var remove org.webosinternals.terminal /usr/bin/ipkg -o /var remove x-webosinternals-termplugin rm /var/etc/ipkg/preware.conf </source>
Then refresh the GUI to remove the icon:
<source lang="text"> luna-send -n 1 palm://com.palm.applicationManager/rescan {} </source>
If you aren't seeing the icon removed, restart the GUI service:
<source lang="text"> initctl stop LunaSysMgr && initctl start LunaSysMgr </source>
If the above two fail to show the results you're expecting, reboot the device.