Initial commit
diff --git a/Picker/Android.mk b/Picker/Android.mk
new file mode 100644
index 0000000..0e694bb
--- /dev/null
+++ b/Picker/Android.mk
@@ -0,0 +1,10 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_PACKAGE_NAME := HardwareOverlayPicker
+
+include $(BUILD_PACKAGE)
diff --git a/Picker/AndroidManifest.xml b/Picker/AndroidManifest.xml
new file mode 100644
index 0000000..b5f85da
--- /dev/null
+++ b/Picker/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="me.phh.treble.overlaypicker">
+
+	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <application
+	    android:label="@string/app_label">
+
+	    <receiver android:name=".Starter">
+		    <intent-filter>
+			    <action android:name="android.intent.action.BOOT_COMPLETED"/>
+		    </intent-filter>
+	    </receiver>
+    </application>
+
+</manifest>
diff --git a/Picker/res/values/strings.xml b/Picker/res/values/strings.xml
new file mode 100644
index 0000000..1bd9b00
--- /dev/null
+++ b/Picker/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_label">Hardware Overlay Picker</string>
+</resources>
diff --git a/Picker/src/me/phh/treble/overlaypicker/Starter.java b/Picker/src/me/phh/treble/overlaypicker/Starter.java
new file mode 100644
index 0000000..8232671
--- /dev/null
+++ b/Picker/src/me/phh/treble/overlaypicker/Starter.java
@@ -0,0 +1,45 @@
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.om.IOverlayManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
+import android.util.Log;
+
+public class Starter extends BroadcastReceiver {
+	private final static String TAG = "OverlayPicker";
+	private IOverlayManager om;
+	private void setOverlayEnabled(String s, boolean enabled) {
+		try {
+			om.setEnabled("me.phh.treble.overlay.navbar", true, 0);
+		} catch(RemoteException e) {
+			Log.d(TAG, "Failed to set overlay", e);
+		}
+	}
+	private void handleHtc(Context ctxt) {
+		//HTC U11+
+		String fp = SystemProperties.get("ro.vendor.build.fingerprint");
+		if(fp == null) return;
+
+		if(fp.contains("ocmdugl"))
+			setOverlayEnabled("me.phh.treble.overlay.navbar", true);
+	}
+
+	private void handleMsm8937(Context ctxt) {
+		Log.d("OverlayPicker", "Testing msm8937");
+		if("msm8937".equals(SystemProperties.get("ro.board.platform"))) {
+			Log.d("OverlayPicker", "Enabling nightmode");
+			setOverlayEnabled("me.phh.treble.overlay.nightmode", true);
+		}
+	}
+
+	@Override
+	public void onReceive(Context ctxt, Intent intent) {
+		om = IOverlayManager.Stub.asInterface(
+				ServiceManager.getService(Context.OVERLAY_SERVICE));
+
+		handleHtc(ctxt);
+		handleMsm8937(ctxt);
+	}
+}