Commits on Dec 13, 2011
  1. fix, again, ics build

    tpruvot committed Dec 13, 2011
    Change-Id: Idde56fd87d686b69aa9d973b35d8834952ef0bff
  2. AndroidTerm: Spanish translation updated

    turl committed with tpruvot Sep 28, 2011
    Change-Id: Iad30d2ff05a577c7a657af2ea0d55d5996d484cb
  3. es_ES: Add missing translations

    djMesias committed with tpruvot Dec 5, 2011
    Final translations for spanish language.
    Change-Id: I7e777b09b03249b923e6c6b5e4f2c208ebaf7271
  4. AndroidTerm: update Simplified Chinese translations

    John Hsing committed with tpruvot Dec 8, 2011
    Change-Id: I523b59205fd40bece394a8ccc7c543fdbf272f52
  5. AndroidTerm: Merge remote branch 'upstream/master' into update

    turl committed with tpruvot Sep 28, 2011
    commit e543ef9
    Author: Jack Palevich <>
    Date:   Sun Sep 18 10:13:05 2011 -0700
        Generate native code for x86 as well as armeabi.
        In theory this will allow Android Terminal Emulator to run on an
        x86 version of Android.
    commit 7165bc8
    Author: Jack Palevich <>
    Date:   Sun Sep 18 10:11:20 2011 -0700
        Update config file for latest Android SDK
    commit 3a738cd
    Author: Jack Palevich <>
    Date:   Sun Sep 18 10:09:24 2011 -0700
        Update private build tool to support NDK r6b
    commit ccfdb92
    Author: jjsan <>
    Date:   Tue Sep 6 21:36:55 2011 +0200
        Updated Slovak Language
        Change-Id: I7de4ff32182bcba7e0379e3316b05e39a2aa50a8
    commit 5238dae
    Author: Jack Palevich <>
    Date:   Mon Aug 29 16:52:45 2011 -0700
        Increment version number.
    commit 811696d
    Author: Jack Palevich <>
    Date:   Sun Aug 28 11:34:21 2011 -0700
        Handle fractional-pixel-width fixed-width fonts.
        This should fix the problems people have been having with text rendering
        when using non-standard fixed-width fonts.
    commit f727e5f
    Author: Jack Palevich <>
    Date:   Sun Aug 28 10:29:52 2011 -0700
        Remove JDK 1.5-incompatible interface method @Override annotations
        Allows building with JDK 1.5.
    commit 62c8611
    Author: Steven Luo <>
    Date:   Sun Aug 28 09:43:09 2011 -0700
        Avoid accessing a finished TranscriptScreen when resuming the terminal activity
        updatePrefs() may ask each terminal session in the list to update its
        size, which requires accessing the TranscriptScreen.  Therefore, we need
        to update the list of running terminal sessions before calling
        updatePrefs(), to preclude the possibility of accessing a finished
        Also, if a window was closed in the WindowList activity, and then the
        user selected a specific window, the window number passed to us in
        onActivityResult() refers to the window list *after* taking window
        closures into account.  We therefore need to defer switching to the
        user's selected window until after the list of running sessions is
        updated (onActivityResult() is called before onResume(), so it can't be
        done there); this avoids calling onResume() on a stale EmulatorView,
        which results in an attempt to access a finished TranscriptScreen.
    commit 6b70a47
    Author: Jack Palevich <>
    Date:   Sat Aug 27 21:43:09 2011 -0700
        Fix resource-related problems when running on Android 1.5 to 2.2
        Hurray for the emulator for making it easy to test older versions
        + Use our own copies of system drawables not available in older versions.
        + Make sure there's a (mdpi resolution) copy of every drawable in the
         plain "drawable" directory, since that's where Android 1.5 looks.
    commit 9c11960
    Author: Steven Luo <>
    Date:   Sat Aug 27 13:33:30 2011 -0700
        Add UI for switching and managing terminal sessions.
        We expose three different ways to manage terminal sessions:
        * Options menu items to open a new window and close the current window.
        * A WindowList activity, reachable from the options menu, which lists
          all the open windows and allows opening, closing, and switching of
          windows.  The behavior is patterned after the window list activity in
          the Android browser.
        * Gestures to change windows -- swipe right-to-left for the next window,
          left-to-right for the previous window.
        The options menu items have been reordered to make what should be the
        five most frequently used items (new window, close window, window list,
        toggle keyboard, special keys reference) appear in the icon menu so that
        the user doesn't have to touch "More" to reach them.
        This patch adds several icons.  btn_close_window and ic_menu_windows
        come from the Android browser source, while the rest come from the
        Android 2.3.3 SDK platform, revision 2 (platforms/android-10/data/res).
    commit 5f41148
    Author: Steven Luo <>
    Date:   Sat Aug 27 13:23:52 2011 -0700
        Support multiple sessions per terminal activity.
        This patch does the following:
        * Replace the EmulatorView widget in the activity layout with a
          TermViewFlipper, which is a ViewFlipper with a couple of added
          conveniences for dealing with EmulatorViews (e.g. pausing/resuming
          them when changing the view).
        * Add an ArrayList in the service to hold TermSessions, and make the
          activity bind to the service so that it can retrieve the list.  This isn't
          strictly necessary for multisession support, but allows us to decouple
          the activity from the sessions, which will (in the future) allow us to
          restart or even close the activity without losing running sessions.
        * Now that EmulatorViews aren't being created automatically when the
          layout is inflated, but are instead created by hand, move a bunch of
          initialization stuff to the EmulatorView constructor.
        * Make the input reader threads for each session exit on EOF.  These
          threads hold a reference to their TermSession objects, which would
          leak otherwise.
        For now, one EmulatorView and TermSession are created as soon as the
        activity binds to the service, if none exist; no UI to create additional
        sessions is included.
    commit f44119c
    Author: Steven Luo <>
    Date:   Sat Aug 27 13:22:21 2011 -0700
        Don't accept input from process after TranscriptScreen is finished.
        This prevents a bunch of noise in the logs.
    commit 4ffcbfd
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:37:47 2011 -0700
        Throw away TranscriptScreen backing store on session finish
        Android's InputMethodManager seems to hold a reference to a finished
        activity object for a while after the activity is destroyed.  This
        keeps everything the activity holds a reference to in memory, which in
        our case includes a fairly significant chunk of memory: the backing
        store to the TranscriptScreen.  Throw this away when it's not needed, to
        reduce the memory impact of this behavior.
    commit 47cc8a2
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:33:24 2011 -0700
        Use TermSession in activity and view instead of old terminal-handling code
        This completes the process of isolating the code for each terminal
        session, which should considerably simplify the task of adding support
        for multiple sessions.
    commit bf017db
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:29:49 2011 -0700
        Add TermSession class to represent a terminal session
        At the moment, the assumption that each terminal activity contains only
        one EmulatorView and hosts only one terminal session is fairly deeply
        embedded into the code.  To help break this assumption, we introduce a
        new TermSession class, which holds the TerminalEmulator and
        TranscriptScreen for a session, and handles the launching and watching
        of the process and the setup of the I/O streams.
    commit be18807
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:24:29 2011 -0700
        Modify the activity and view to use the new TermSettings class.
    commit 972a349
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:20:44 2011 -0700
        For multisession support, we eventually want to keep the terminal
        sessions in the service instead of tying them to the activity.  This
        implies that we have to stop holding SharedPreferences objects in all of
        the classes tied to the session.  To this end, introduce a new
        TermSettings class, which is responsible for reading SharedPreferences
        and holding the current value of config settings.
    commit cbd439b
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:12:54 2011 -0700
        This patch isn't really necessary, but it makes life easier for me.  For
        local builds, I change the package name to, which allows co-installation with the
        Market version; however, if the debug constants stay in the Term class,
        I have to change every file using them to either belong to the new
        package, or else import
    commit ff2dcf6
    Author: Steven Luo <>
    Date:   Sat Aug 27 12:02:31 2011 -0700
        The fact that contains substantially all of the classes of the
        application clashes with Java's model of one class per file, and is
        inconvenient when refactoring the code to allow for multiple terminal
        sessions in the activity.  This patch splits out all of the classes into
        separate files, and groups related classes into packages; no actual
        changes to the code are made.
    commit 56dc959
    Author: Jack Palevich <>
    Date:   Sat Aug 27 11:38:01 2011 -0700
        contains machine-specific information, not useful to save in repo.
    commit 029570a
    Author: Jack Palevich <>
    Date:   Mon Aug 22 20:53:29 2011 -0700
        Shrink market icon to match "safe" bounds
    commit dd43ce4
    Author: Jack Palevich <>
    Date:   Mon Aug 22 20:39:40 2011 -0700
        Improve market icon.
        Shinier, and more like a terminal.
    commit 3f50ffa
    Author: Jack Palevich <>
    Date:   Sun Aug 21 16:44:04 2011 -0700
        Updated translations
        Thanks to
    commit a6f3ac3
    Author: Ondrej Zima <>
    Date:   Tue Aug 16 10:27:44 2011 +0200
        Added Czech translation.
        Change-Id: I42fc8a3c56c5ce7fa457a3f1b7f54c875cb9ce2b
    commit 804f3b5
    Author: Jack Palevich <>
    Date:   Sat Jun 25 20:11:04 2011 +0800
        Increment version number.
    commit 839ac83
    Author: Jack Palevich <>
    Date:   Sat Jun 25 20:09:29 2011 +0800
        Update in-app documentation for special keys
        Contributed by Steven Luo
    commit cb368f0
    Author: Jack Palevich <>
    Date:   Sat Jun 25 20:07:44 2011 +0800
        Add F1-F12 and Ins/Del/Home/End keys
        Contributed by Steven Luo who writes:
        The mapping is as follows:
        Fn-[1-9]: F1-F9
        Fn-0: F10
        Ctrl-9: F11
        Ctrl-0: F12
        Fn-I: Ins
        Fn-X: Del
        Fn-H: Home
        Fn-F: End
        It should be noted that a real VT100 does not have Home/End keys, and as
        such, the terminfo entry for TERM=vt100 doesn't contain escape codes for
        Home and End.  This bothers some applications, but not others.  The
        codes generated match those sent by the Linux console (TERM=linux),
        which appears to work fine as a TERM setting since the emulation fixes
        in 1.0.30.  xterm sends different escape codes, though; I left the
        escape codes at their present values because TERM=xterm causes problems
        with some applications.
        Addresses GitHub issue #9.
        I'm unhappy with the reintroduction of different behaviors for the Ctrl
        key, but I couldn't think of another choice that's guaranteed to make
        sense on any soft keyboard layout.  (Fn-J/K and Fn-(/) are the two other
        possibilities that occurred to me.)  Feel free to change.
    commit 29e95e9
    Author: Jack Palevich <>
    Date:   Sat Jun 25 20:03:30 2011 +0800
        Fix behavior of Ctrl-[0-9]
        Patch contributed by Steven Luo.
        Steven writes:
        In xterm on my Debian system, the Ctrl-[0-9] combinations appear to map
        to the following:
        Ctrl-2: ^@ (NUL)
        Ctrl-3: ^[ (ESC)
        Ctrl-4: ^\
        Ctrl-5: ^]
        Ctrl-6: ^^
        Ctrl-7: ^_
        Ctrl-8: \177 (DEL)
        Ctrl-1, Ctrl-9, and Ctrl-0 appear to send 1, 9, and 0 respectively.
        I have no idea whether anyone actually seriously uses these, but make
        these key combinations behave in that manner, and remove the bogus
        Ctrl-[0-9] and superfluous Fn-[234] combos.
    commit 8928316
    Author: Jack Palevich <>
    Date:   Sat Jun 25 20:00:54 2011 +0800
        Make Ctrl/Fn-[A-Z] work with uppercase as well as lowercase letters
        Patch courtesy Steven Luo
        Steven says:
        For Ctrl-[A-Z], this matches the behavior of xterm running on my Debian
        box; for Fn-[A-Z], there are no possible compatibility issues and it
        seems like the most natural thing to do.
    commit 290aaf2
    Author: Jack Palevich <>
    Date:   Sat Jun 25 19:50:56 2011 +0800
        Add link to Downloads page to README file.
    commit 2802515
    Author: Jack Palevich <>
    Date:   Sat Jun 25 19:45:32 2011 +0800
        Enable an initial command string to be passed as part of the intent.
        Thanks to Christoph Schmidt-Hieber, M.D.,
        for the idea and the patch.
    commit cd9a67a
    Author: Jack Palevich <>
    Date:   Sat Jun 25 19:35:39 2011 +0800
        Update Italian localization
        Thanks to
    commit 9c5e6f7
    Author: Jack Palevich <>
    Date:   Sat Jun 18 19:43:58 2011 +0800
        Increment version number.
    commit a6e99b9
    Author: Jack Palevich <>
    Date:   Sat Jun 18 21:16:32 2011 +0800
        Implement a "None" setting for control and function keys.
        Thanks to Eli Grey <> for the idea.
        Also made the "Special keys" dialog text localizable.
    commit c19d57e
    Author: Jack Palevich <>
    Date:   Sat Jun 18 21:11:42 2011 +0800
        Rename the rt tool to pushAndRun
        This tool is used to build and test the terminal emulator.
    commit 5d499f4
    Author: Jack Palevich <>
    Date:   Sat Jun 18 19:43:22 2011 +0800
        Allow application to be installed on the SD Card.
    commit 81ddd14
    Author: Jack Palevich <>
    Date:   Sat Jun 18 19:40:54 2011 +0800
        Fix insert and delete line code.
        Thanks to Sam Jacobson <> for the
        bug report and fix!
    commit 4f369e5
    Author: Jack Palevich <>
    Date:   Sat Jun 18 19:37:15 2011 +0800
        Implement missing SGR escape codes
        Thanks to Sam Jacobson <> for the bug report!
    commit c66d078
    Author: Jack Palevich <>
    Date:   Sat Jun 18 21:17:09 2011 +0800
        Escape single quote character so string resource compiles.
    commit 6ddda13
    Merge: df515f5 1d8bfb7
    Author: Jack Palevich <>
    Date:   Sat Jun 18 04:02:36 2011 -0700
        Merge pull request #20 from cpasmoi/master
        missing translations
    commit 8568e0d
    Author: Patrik Kullman <>
    Date:   Sun Jun 12 09:48:43 2011 +0200
        Mark non-translatable strings
    Change-Id: I923fa5aafb0345fcfba0ad6d6ae01feb9d0f2c48
Commits on Nov 14, 2011
  1. androidterm: Updated Italian translations

    Eug89 committed Nov 14, 2011
    Change-Id: I1f9ab706fce9b79b792406b298b811cecd5b626b
Commits on Nov 4, 2011
  1. AndroidTerm: Updated German Translation

    AndreasBoehm committed Nov 3, 2011
    Change-Id: I29bc56087bbad169f9fcd0b1ff836d9a6e05bd0a
Commits on Oct 1, 2011
  1. Update Russian translation - Terminal Emulator

    pvolkov committed Oct 1, 2011
Commits on Sep 6, 2011
  1. Updated Slovak Language

    jjsan committed Sep 6, 2011
    Change-Id: I7de4ff32182bcba7e0379e3316b05e39a2aa50a8
Commits on Aug 16, 2011
  1. Added Czech translation.

    Keltek committed Aug 16, 2011
    Change-Id: I42fc8a3c56c5ce7fa457a3f1b7f54c875cb9ce2b
Commits on Jun 12, 2011
  1. Mark non-translatable strings

    nomego committed Jun 12, 2011
    Change-Id: I1ce87fbc016cce8188a29604c69e56e7820b3f47
  2. Updated Swedish translations

    nomego committed Jun 12, 2011
    Change-Id: Ia7753c44dc2cb676d0e481b1796aeeb35c43d1be
Commits on Jun 3, 2011
  1. Merge "Traditional Chinese: Update translations for v1.0.29" into gin…

    cyanogen committed with Gerrit Code Review Jun 3, 2011
Commits on May 30, 2011
  1. AndroidTerm: Build the JNI lib as a dependency rather than packaged

    cuviper committed with cyanogen Jan 9, 2011
    Since it's installed as a system app, AndroidTerm needs its library to
    be located in /system/lib/ rather than within its apk.
    Change-Id: I528325f9745c52bd427e3f861536834270eac6fd
  2. Traditional Chinese: Update translations for v1.0.29

    ladios committed May 30, 2011
    Change-Id: I65659be6590c067f84a10b6c8be7d3f34a1fe997
Commits on May 29, 2011
  1. Merge branch 'master' of…

    cyanogen committed May 29, 2011
    …Emulator into HEAD
    Change-Id: I4eb8df22794c17b490ca5131f10af6f11506891b
Commits on May 28, 2011
  1. Updated german translation. Fixed Typos.

    danez committed May 28, 2011
    Made Email -> E-Mail, which is correct, see
    Change-Id: Idf58a1991173815e1f68bcd05f346e091bce48ea
Commits on May 24, 2011
  1. Increment version number.

    jackpal committed May 24, 2011
  2. Use a global reference to hold onto a class object between JNI calls.

    jackpal committed May 24, 2011
    This bug was detected by using CheckJNI
    (setprop dalvik.vm.checkjni true; stop; start).
  3. Update local properties for building on a new machine.

    jackpal committed May 24, 2011
    (Maybe I shouldn't check this file in at all.)
  4. Increment version number.

    jackpal committed May 24, 2011
  5. Change shared library name (again) to make sure our copy takes preced…

    steven676 committed with jackpal May 24, 2011
    …ence on CyanogenMod
    Commit 28d47b8... ("Fix java.lang.UnsatisfiedLinkError error.") changed
    the name of the shared library from libandroidterm to libandroidterm2,
    to avoid a potential library conflict with API/ABI incompatible versions
    being shipped in some custom firmwares.  Unfortunately, CyanogenMod also
    uses the name libandroidterm2:
    Change the name again, this time to something that should hopefully be
    unique, which should fix the problems that CyanogenMod users have been
    reporting in the Android Market comments.  (A big scary warning to
    firmware distributors that the shared library ABI must not be modified
    without consulting upstream might be appropriate somewhere ...)
    Signed-off-by: Jack Palevich <>
Commits on May 21, 2011
  1. Merge "AndroidTerm: Dutch translation added (re-checked). Completely …

    cyanogen committed with Gerrit Code Review May 21, 2011
    …checked for errors by WGSpoelstra, thank you." into gingerbread
Commits on May 20, 2011
  1. AndroidTerm: Dutch translation added (re-checked).

    ottuh committed May 20, 2011
    Completely checked for errors by WGSpoelstra, thank you.
Commits on May 14, 2011
  1. Added Swedish translation

    elelinux committed May 14, 2011
    Change-Id: Ifb2a082420adbbf271d3a31bcba07b5d5e76c6fe
Commits on Apr 25, 2011
  1. Bump version number.

    jackpal committed Apr 25, 2011
  2. Fix java.lang.UnsatisfiedLinkError error.

    jackpal committed Apr 25, 2011
    Change shared library name from libandroidterm to libandroidterm2
    My theory is that this bug is happening on systems that have
    system versions of the libandroidterm shared library.
    Version 1.0.26 of Android Terminal Emulator added a new API,
    hangupProcessGroup, to the libandroidterm library.
    I think on devices that have libandroidterm in their system library,
    that version takes precedence over the version in the application,
    and so the hangupProcessGroup API is not found.
    By changing the name of the libandroidterm library to libandroidterm2
    we should avoid loading the system version of the
    libandroidterm library.
  3. Housekeeping odds-and-ends.

    jackpal committed Apr 25, 2011
    Make sure the release build is a clean build.
    Regenerate build.xml
    Add script for regenerating build.xml
Commits on Apr 23, 2011
  1. Bump version number.

    jackpal committed Apr 23, 2011
  2. Add commitCorrection() to our InputConnection

    jackpal committed Apr 23, 2011
    Required in order to compile under API level 10.
  3. Add setComposingRegion() and getSelectedText() to our InputConnection

    jackpal committed Apr 23, 2011
    The definition of the InputConnection interface for SDK version >= 9
    includes new functions setComposingRegion() and getSelectedText().  If
    we don't include them in our implementation, the build fails with
       [javac] /home/steven/devel/android-terminal-emulator/src/jackpal/androidterm/ <anonymous jackpal.androidterm.EmulatorView$4> is not abstract and does not override abstract method setComposingRegion(int,int) in android.view.inputmethod.InputConnection
    (at least when building with SDK 10).
  4. Make the Terminal activity singleTask instead of singleInstance

    jackpal committed Apr 23, 2011
    With the Terminal activity's launchMode set to singleInstance, the
    Preferences activity starts a new task, which can lead to some very
    strange back stack behavior.  Set launchMode to singleTask instead,
    which will allow the Preferences activity into the same task.
  5. Add menu options to take WakeLock and WifiLock

    jackpal committed Apr 23, 2011
    It can be very useful to prevent the device from sleeping or from
    turning off the wifi radio -- but in a general terminal application it's
    difficult to guess when this is wanted.  Consider the following:
    (1) Nothing is happening.  We don't want to hold either a WakeLock or
    (2) The user is logged into a remote system via SSH on wifi.  We don't
    need to hold a WakeLock, but should take a WifiLock to prevent the SSH
    session from being disconnected.
    (3) The user is doing some long-running computation (locally on the
    device) in the shell.  We should take a WakeLock, but not a WifiLock.
    (4) The user is doing apt-get dist-upgrade in her Debian chroot on the
    device.  We should hold both a WakeLock and a WifiLock.
    Therefore, assume the user knows best, and add menu options to take/drop
    a WakeLock and a WifiLock.  Note that this requires adding WAKE_LOCK to
    the set of permissions we use.
  6. Add a service to prevent Android from killing our process

    jackpal committed Apr 23, 2011
    By default, an Android process is liable to be killed whenever it's
    not in the foreground.  When this happens to us, it leaves the user
    unable to resume her terminal session, which is still running.
    By starting a service in our process (even one which, like this one,
    does nothing at all) and marking it as a foreground service, we prevent
    the system from killing our process except in out-of-memory situations.