diff --git a/print_db.py b/print_db.py
index 6caa7bb..05237d0 100755
--- a/print_db.py
+++ b/print_db.py
@@ -34,6 +34,10 @@
   shutil.rmtree(DIR, True)
   os.makedirs(DIR)
 
+def adb_root_remount():
+  os.system("adb root")
+  os.system("adb remount")
+
 def pull_file(fn):
   print "pull_file: " + fn
   rv = os.system("adb pull"
@@ -52,6 +56,15 @@
     rows.append(row)
   return columns,rows
 
+def get_screens(conn):
+  c = conn.cursor()
+  c.execute("SELECT * FROM workspaceScreens")
+  columns = [d[0] for d in c.description]
+  rows = []
+  for row in c:
+    rows.append(row)
+  return columns,rows
+
 def print_intent(out, id, i, cell):
   if cell:
     out.write("""<span class="intent" title="%s">shortcut</span>""" % (
@@ -127,13 +140,21 @@
       out.write("<b>unknown type: %d</b>" % itemType)
     out.write("</td>\n")
 
+def render_screen_info(out, screen):
+  out.write("<tr>")
+  out.write("<td>%s</td>" % (screen["_id"]))
+  out.write("<td>%s</td>" % (screen["screenRank"]))
+  out.write("</tr>")
+
 def process_file(fn):
   global SCREENS, COLUMNS, ROWS, HOTSEAT_SIZE
   print "process_file: " + fn
   conn = sqlite3.connect(fn)
   columns,rows = get_favorites(conn)
+  screenCols, screenRows = get_screens(conn)
 
   data = [dict(zip(columns,row)) for row in rows]
+  screenData = [dict(zip(screenCols, screenRow)) for screenRow in screenRows]
 
   # Calculate the proper number of screens, columns, and rows in this db
   screensIdMap = []
@@ -198,6 +219,14 @@
   out.write("""</table>
 """)
 
+  # Screens
+  out.write("<br/><b>Screens</b><br/>\n")
+  out.write("<table class=layout border=1 cellspacing=0 cellpadding=4>\n")
+  out.write("<tr><td>Screen ID</td><td>Rank</td></tr>\n")
+  for screen in screenData:
+    render_screen_info(out, screen)
+  out.write("</table>\n")
+
   # Hotseat
   hotseat = []
   for i in range(0, HOTSEAT_SIZE):
@@ -274,6 +303,7 @@
 def main(argv):
   if len(argv) == 1 or (len(argv) == 2 and updateDeviceClassConstants(argv[1])):
     make_dir()
+    adb_root_remount()
     pull_file(AUTO_FILE)
     process_file(AUTO_FILE)
   elif len(argv) == 2 or (len(argv) == 3 and updateDeviceClassConstants(argv[2])):
