diff --git a/README.md b/README.md
index af30c9cc3e..c3a72886ef 100755
--- a/README.md
+++ b/README.md
@@ -45,6 +45,7 @@ List of Definitions
* [Cheerio](https://github.com/MatthewMueller/cheerio) (by [Bret Little](https://github.com/blittle))
* [Chosen](http://harvesthq.github.com/chosen/) (by [Boris Yankov](https://github.com/borisyankov))
* [Chrome](http://developer.chrome.com/extensions/) (by [Matthew Kimber](https://github.com/matthewkimber))
+* [Chrome App](http://developer.chrome.com/apps/) (by [Adam Lay](https://github.com/AdamLay))
* [CodeMirror](http://codemirror.net) (by [François de Campredon](https://github.com/fdecampredon))
* [Commander](http://github.com/visionmedia/commander.js) (by [Marcelo Dezem](https://github.com/mdezem))
* [d3.js](http://d3js.org/) (from TypeScript samples)
diff --git a/chrome/chrome-app-tests.ts b/chrome/chrome-app-tests.ts
new file mode 100644
index 0000000000..0ae0ae2af4
--- /dev/null
+++ b/chrome/chrome-app-tests.ts
@@ -0,0 +1,27 @@
+///
+
+import runtime = chrome.app.runtime;
+import cwindow = chrome.app.window;
+
+var createOptions: cwindow.CreateOptions = {
+ id: "My Window",
+ bounds: {
+ left: 0,
+ top: 0,
+ width: 640,
+ height: 480
+ },
+ resizable: true
+};
+
+//Create new window on app launch
+chrome.app.runtime.onLaunched.addListener(function (launchData: runtime.LaunchData) {
+ chrome.app.window.create('app/url', createOptions, function (created_window: cwindow.AppWindow) {
+ return;
+ });
+});
+
+chrome.app.runtime.onRestarted.addListener(function () { return; });
+
+// Get Current Window
+var currentWindow: cwindow.AppWindow = chrome.app.window.current();
\ No newline at end of file
diff --git a/chrome/chrome-app.d.ts b/chrome/chrome-app.d.ts
new file mode 100644
index 0000000000..c8dd2e6d46
--- /dev/null
+++ b/chrome/chrome-app.d.ts
@@ -0,0 +1,95 @@
+// Type definitions for Chrome packaged application development.
+// Project: http://developer.chrome.com/apps/
+// Definitions by: Adam Lay
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+////////////////////
+// App Runtime
+////////////////////
+declare module chrome.app.runtime {
+ interface LaunchData {
+ id?: string;
+ items?: LaunchDataItem[];
+ url?: string;
+ referrerUrl?: string;
+ isKioskSession?: boolean;
+ }
+
+ interface LaunchDataItem {
+ entry: File;
+ type: string;
+ }
+
+ interface LaunchedEvent {
+ addListener(callback: (launchData: LaunchData) => void);
+ }
+
+ interface RestartedEvent {
+ addListener(callback: () => void);
+ }
+
+ var onLaunched: LaunchedEvent;
+ var onRestarted: RestartedEvent;
+}
+
+////////////////////
+// App Window
+////////////////////
+declare module chrome.app.window {
+ interface Bounds {
+ left?: number;
+ top?: number;
+ width?: number;
+ height?: number;
+ }
+
+ interface AppWindow {
+ focus: () => void;
+ fullscreen: () => void;
+ isFullscreen: () => boolean;
+ minimize: () => void;
+ isMinimized: () => boolean;
+ maximize: () => void;
+ isMaximized: () => boolean;
+ restore: () => void;
+ moveTo: (left: number, top: number) => void;
+ resizeTo: (width: number, height: number) => void;
+ drawAttention: () => void;
+ clearAttention: () => void;
+ close: () => void;
+ show: () => void;
+ hide: () => void;
+ getBounds: () => Bounds;
+ setBounds: (bounds: Bounds) => void;
+ contentWindow: Window;
+ }
+
+ interface CreateOptions {
+ id?: string;
+ minWidth?: number;
+ minHeight?: number;
+ maxWidth?: number;
+ maxHeight?: number;
+ frame?: string; // "none", "chrome"
+ bounds?: Bounds;
+ transparentBackground?: boolean;
+ state?: string; // "normal", "fullscreen", "maximized", "minimized"
+ hidden?: boolean;
+ resizable?: boolean;
+ singleton?: boolean;
+ }
+
+ export function create(url: string, options?: CreateOptions, callback?: (created_window: AppWindow) => void): void;
+ export function current(): AppWindow;
+
+ interface WindowEvent {
+ addListener(callback: () => void): void;
+ }
+
+ var onBoundsChanged: WindowEvent;
+ var onClosed: WindowEvent;
+ var onFullscreened: WindowEvent;
+ var onMaximized: WindowEvent;
+ var onMinimized: WindowEvent;
+ var onRestored: WindowEvent;
+}
\ No newline at end of file