diff --git a/fill_screens.py b/fill_screens.py
new file mode 100755
index 0000000..9607c80
--- /dev/null
+++ b/fill_screens.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python2.5
+
+import cgi
+import os
+import shutil
+import sys
+import sqlite3
+
+SCREENS = 5
+COLUMNS = 4
+ROWS = 4
+CELL_SIZE = 110
+
+DIR = "db_files"
+AUTO_FILE = "launcher.db"
+
+APPLICATION_COMPONENTS = [
+  "com.google.android.apps.books/com.google.android.apps.books.app.BooksActivity",
+  "com.android.calculator2/com.android.calculator2.Calculator",
+  "com.google.android.camera/com.android.camera.Camera",
+  "com.google.android.carhome/com.google.android.carhome.CarHome",
+  "com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList",
+  "com.google.android.gallery3d/com.android.gallery3d.app.Gallery",
+  "com.google.android.apps.maps/com.google.android.maps.MapsActivity"
+]
+
+def usage():
+  print "usage: fill_screens.py -- fills up the launcher db"
+
+
+def make_dir():
+  shutil.rmtree(DIR, True)
+  os.makedirs(DIR)
+
+def pull_file(fn):
+  print "pull_file: " + fn
+  rv = os.system("adb pull"
+    + " /data/data/com.android.launcher/databases/launcher.db"
+    + " " + fn);
+  if rv != 0:
+    print "adb pull failed"
+    sys.exit(1)
+
+def push_file(fn):
+  print "push_file: " + fn
+  rv = os.system("adb push"
+    + " " + fn
+    + " /data/data/com.android.launcher/databases/launcher.db")
+  if rv != 0:
+    print "adb push failed"
+    sys.exit(1)
+
+def process_file(fn):
+  print "process_file: " + fn
+  conn = sqlite3.connect(fn)
+  c = conn.cursor()
+  c.execute("DELETE FROM favorites")
+
+  intentFormat = "#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=%s;end"
+
+  id = 0;
+  for s in range(SCREENS):
+    for x in range(ROWS):
+      for y in range(COLUMNS):
+        id += 1
+        insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)"
+        insert = insert % (id, "title", "", -100, s, x, y, 1, 1, 2, -1, 0)
+        c.execute(insert)
+        folder_id = id
+
+        for z in range(15):
+          id += 1
+          intent = intentFormat % (APPLICATION_COMPONENTS[id % len(APPLICATION_COMPONENTS)])
+          insert = "INSERT into favorites (_id, title, intent, container, screen, cellX, cellY, spanX, spanY, itemType, appWidgetId, iconType) VALUES (%d, '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d)"
+          insert = insert % (id, "title", intent, folder_id, 0, 0, 0, 1, 1, 0, -1, 0)
+          c.execute(insert)
+
+  conn.commit()
+  c.close()
+
+def main(argv):
+  if len(argv) == 1:
+    make_dir()
+    pull_file(AUTO_FILE)
+    process_file(AUTO_FILE)
+    push_file(AUTO_FILE)
+  else:
+    usage()
+
+if __name__=="__main__":
+  main(sys.argv)
