diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 1d46b7a..e3e7a05 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -263,6 +263,9 @@
     <string name="custom_header_provider_title">Header provider</string>
     <string name="custom_header_browse_title">Browse installed headers</string>
     <string name="custom_header_browse_summary">Long press on any image to use for static mode</string>
+    <string name="custom_header_browse_summary_new">Browse all available header packages</string>
+    <string name="custom_header_pick_title">Select header image</string>
+    <string name="custom_header_pick_summary">Select an image to use for static mode</string>
     <string name="style_enabled_summary">Custom header image is ON</string>
     <string name="style_disabled_summary">Custom header image is OFF</string>
 
diff --git a/res/xml/style_settings.xml b/res/xml/style_settings.xml
index 411e920..63723e9 100644
--- a/res/xml/style_settings.xml
+++ b/res/xml/style_settings.xml
@@ -99,13 +99,8 @@
             <PreferenceScreen
                 android:key="custom_header_browse"
                 android:title="@string/custom_header_browse_title"
-                android:summary="@string/custom_header_browse_summary"
                 android:dependency="status_bar_custom_header"
-                android:persistent="false" >
-                <intent android:action="android.intent.action.MAIN"
-                        android:targetPackage="org.omnirom.omnistyle"
-                        android:targetClass="org.omnirom.omnistyle.BrowseHeaderActivity" />
-            </PreferenceScreen>
+                android:persistent="false" />
 
             <org.omnirom.omnigears.preference.SeekBarPreference
                 android:key="status_bar_custom_header_shadow"
diff --git a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
index 28d764b..653d095 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
@@ -148,6 +148,8 @@
 
         mHeaderBrowse = (PreferenceScreen) findPreference(CUSTOM_HEADER_BROWSE);
         mHeaderBrowse.setEnabled(isBrowseHeaderAvailable());
+        mHeaderBrowse.setTitle(valueIndex == 0 ? R.string.custom_header_browse_title : R.string.custom_header_pick_title);
+        mHeaderBrowse.setSummary(valueIndex == 0 ? R.string.custom_header_browse_summary_new : R.string.custom_header_pick_summary);
 
         mWallBrowse = (PreferenceScreen) findPreference(CUSTOM_WALL_BROWSE);
         mWallBrowse.setEnabled(isBrowseWallsAvailable());
@@ -181,6 +183,16 @@
             } else {
                 downloadOmsApp();
             }
+            return true;
+        } else if (preference == mHeaderBrowse) {
+            String providerName = Settings.System.getString(getContentResolver(),
+                Settings.System.STATUS_BAR_CUSTOM_HEADER_PROVIDER);
+            if (providerName == null) {
+                providerName = mDaylightHeaderProvider;
+            }
+            int valueIndex = mHeaderProvider.findIndexOfValue(providerName);
+            startHeaderActivity(valueIndex == 0 ? false : true);
+            return true;
         }
         return super.onPreferenceTreeClick(preference);
     }
@@ -205,6 +217,8 @@
             int valueIndex = mHeaderProvider.findIndexOfValue(value);
             mHeaderProvider.setSummary(mHeaderProvider.getEntries()[valueIndex]);
             mDaylightHeaderPack.setEnabled(value.equals(mDaylightHeaderProvider));
+            mHeaderBrowse.setTitle(valueIndex == 0 ? R.string.custom_header_browse_title : R.string.custom_header_pick_title);
+            mHeaderBrowse.setSummary(valueIndex == 0 ? R.string.custom_header_browse_summary_new : R.string.custom_header_pick_summary);
         } else if (preference == mNightModePreference) {
             try {
                 final int value = Integer.parseInt((String) newValue);
@@ -334,4 +348,10 @@
         omsDownloadIntent.setData(Uri.parse("https://play.google.com/store/apps/details?id=projekt.substratum"));
         startActivity(omsDownloadIntent);
     }
+
+    private void startHeaderActivity(boolean pick) {
+        Intent headerIntent = new Intent();
+        headerIntent.setClassName("org.omnirom.omnistyle", pick ? "org.omnirom.omnistyle.PickHeaderActivity" : "org.omnirom.omnistyle.BrowseHeaderActivity");
+        startActivity(headerIntent);
+    }
 }
