diff --git a/src/com/android/terminal/Terminal.java b/src/com/android/terminal/Terminal.java
index 7aa7949..b6e981e 100644
--- a/src/com/android/terminal/Terminal.java
+++ b/src/com/android/terminal/Terminal.java
@@ -58,6 +58,7 @@
         public void onDamage(int startRow, int endRow, int startCol, int endCol);
         public void onMoveRect(int destStartRow, int destEndRow, int destStartCol, int destEndCol,
                 int srcStartRow, int srcEndRow, int srcStartCol, int srcEndCol);
+        public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible);
         public void onBell();
     }
 
@@ -68,6 +69,10 @@
 
     private TerminalClient mClient;
 
+    private boolean mCursorVisible;
+    private int mCursorRow;
+    private int mCursorCol;
+
     private final TerminalCallbacks mCallbacks = new TerminalCallbacks() {
         @Override
         public int damage(int startRow, int endRow, int startCol, int endCol) {
@@ -88,6 +93,17 @@
         }
 
         @Override
+        public int moveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) {
+            mCursorVisible = (visible != 0);
+            mCursorRow = posRow;
+            mCursorCol = posCol;
+            if (mClient != null) {
+                mClient.onMoveCursor(posRow, posCol, oldPosRow, oldPosCol, visible);
+            }
+            return 1;
+        }
+
+        @Override
         public int bell() {
             if (mClient != null) {
                 mClient.onBell();
@@ -149,6 +165,18 @@
         }
     }
 
+    public boolean getCursorVisible() {
+        return mCursorVisible;
+    }
+
+    public int getCursorRow() {
+        return mCursorRow;
+    }
+
+    public int getCursorCol() {
+        return mCursorCol;
+    }
+
     public String getTitle() {
         // TODO: hook up to title passed through termprop
         return mTitle;
diff --git a/src/com/android/terminal/TerminalLineView.java b/src/com/android/terminal/TerminalLineView.java
index fff1301..11a9282 100644
--- a/src/com/android/terminal/TerminalLineView.java
+++ b/src/com/android/terminal/TerminalLineView.java
@@ -81,5 +81,13 @@
 
             col += m.run.colSize;
         }
+
+        if (mTerm.getCursorVisible() && mTerm.getCursorRow() == row) {
+            canvas.save();
+            canvas.translate(mTerm.getCursorCol() * m.charWidth, 0);
+            canvas.drawRect(0, 0, m.charWidth, m.charHeight, m.cursorPaint);
+            canvas.restore();
+        }
+
     }
 }
diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java
index f6794b7..076da80 100644
--- a/src/com/android/terminal/TerminalView.java
+++ b/src/com/android/terminal/TerminalView.java
@@ -68,6 +68,7 @@
 
         final Paint bgPaint = new Paint();
         final Paint textPaint = new Paint();
+        final Paint cursorPaint = new Paint();
 
         /** Run of cells used when drawing */
         final CellRun run;
@@ -202,6 +203,11 @@
         }
 
         @Override
+        public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) {
+            post(mDamageRunnable);
+        }
+
+        @Override
         public void onBell() {
             Log.i(TAG, "DING!");
         }
@@ -277,6 +283,8 @@
             term.setClient(mClient);
             mTermKeys.setTerminal(term);
 
+            mMetrics.cursorPaint.setColor(0xfff0f0f0);
+
             // Populate any current settings
             mRows = mTerm.getRows();
             mCols = mTerm.getCols();
