diff --git a/unix_test_app/DrawBlueSample.cpp b/unix_test_app/DrawBlueSample.cpp
new file mode 100644
index 0000000..83e6fd5
--- /dev/null
+++ b/unix_test_app/DrawBlueSample.cpp
@@ -0,0 +1,34 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "SampleCode.h"
+#include "SkCanvas.h"
+#include "SkColor.h"
+#include "SkEvent.h"
+#include "SkView.h"
+
+class DrawBlue : public SkView {
+
+public:
+     DrawBlue() {}
+protected:
+    virtual void onDraw(SkCanvas* canvas) {
+        canvas->drawColor(SK_ColorBLUE);
+    }
+    virtual bool onQuery(SkEvent* evt) {
+        if (SampleCode::TitleQ(*evt)) {
+            SampleCode::TitleR(evt, "DrawBlue");
+            return true;
+        }
+        return this->INHERITED::onQuery(evt);
+    }
+private:
+    typedef SkView INHERITED;
+};
+
+static SkView* MyFactory() { return new DrawBlue; }
+static SkViewRegister reg(MyFactory);
diff --git a/unix_test_app/main.cpp b/unix_test_app/main.cpp
new file mode 100644
index 0000000..108e9ac
--- /dev/null
+++ b/unix_test_app/main.cpp
@@ -0,0 +1,62 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "X11/Xlib.h"
+#include "X11/keysym.h"
+
+#include "SkApplication.h"
+#include "SkEvent.h"
+#include "SkWindow.h"
+#include "SkTypes.h"
+
+#include <signal.h>
+#include <sys/time.h>
+
+SkOSWindow* gWindow;
+
+static void catch_alarm(int sig)
+{
+    SkEvent::ServiceQueueTimer();
+}
+
+int main(int argc, char** argv){
+    signal(SIGALRM, catch_alarm);
+
+    gWindow = create_sk_window(NULL, argc, argv);
+
+    // drain any events that occurred before gWindow was assigned.
+    while (SkEvent::ProcessEvent());
+
+    // Start normal Skia sequence
+    application_init();
+
+    gWindow->loop();
+
+    delete gWindow;
+    application_term();
+    return 0;
+}
+
+// SkEvent handlers
+
+void SkEvent::SignalNonEmptyQueue()
+{
+    if (gWindow) {
+        gWindow->post_linuxevent();
+    }
+}
+
+void SkEvent::SignalQueueTimer(SkMSec delay)
+{
+    itimerval newTimer;
+    newTimer.it_interval.tv_sec = 0;
+    newTimer.it_interval.tv_usec = 0;
+    newTimer.it_value.tv_sec = 0;
+    newTimer.it_value.tv_usec = delay * 1000;
+
+    setitimer(ITIMER_REAL, &newTimer, NULL);
+}
diff --git a/unix_test_app/makefile b/unix_test_app/makefile
new file mode 100644
index 0000000..7b28203
--- /dev/null
+++ b/unix_test_app/makefile
@@ -0,0 +1,48 @@
+# Build the unix test app
+
+C_INCLUDES := -I../include/core \
+              -I../include/config \
+              -I../include/effects \
+              -I../include/images \
+              -I../include/utils \
+              -I../include/views \
+              -I../include/xml \
+              -I../include/gpu \
+              -I../gpu/include \
+              -I../include/utils/unix \
+              -I../samplecode \
+              -I../src/core
+
+VPATH = libs:../src/ports:../samplecode:../src/core:../src/utils/unix
+
+#generate debugging info
+CFLAGS = -g
+
+SRC_LIST := main.cpp SkOSWindow_Unix.cpp SkXMLParser_empty.cpp SkDebug.cpp ../gpu/src/unix/GrGLDefaultInterface_unix.cpp
+
+#views files
+include ../src/views/views_files.mk
+SRC_LIST += $(addprefix ../src/views/, $(SOURCE))
+
+#xml
+include ../src/xml/xml_files.mk
+SRC_LIST += $(addprefix ../src/xml/, $(SOURCE))
+
+#include the samples
+include ../samplecode/samplecode_files.mk
+SRC_LIST += $(addprefix ../samplecode/, $(SOURCE))
+
+
+out/output: $(SRC_LIST) out/keysym2ucs.o ../out/libskia.a -lX11 -lpthread -lz -lfreetype -lGL -lpng
+	g++ $(C_INCLUDES) $(CFLAGS) $^ -o $@
+
+out/keysym2ucs.o: ../src/utils/unix/keysym2ucs.c
+	@mkdir -p $(dir $@)
+	@gcc -c $(C_INCLUDES) $(CFLAGS) $^ -o $@
+
+../out/libskia.a:
+	@$(MAKE) -C ../ SKIA_SAMPLES_FOR_X=true
+
+clean:
+	rm -rf ../out # Copied from ../Makefile
+	rm -rf out
