layout rework
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..e84ff8f
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="deploymentTargetDropDown">
+    <runningDeviceTargetSelectedWithDropDown>
+      <Target>
+        <type value="RUNNING_DEVICE_TARGET" />
+        <deviceKey>
+          <Key>
+            <type value="SERIAL_NUMBER" />
+            <value value="C86314713FC5" />
+          </Key>
+        </deviceKey>
+      </Target>
+    </runningDeviceTargetSelectedWithDropDown>
+    <timeTargetWasSelectedWithDropDown value="2021-11-07T15:04:02.322808Z" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 60c1d6c..df8a12a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -7,7 +7,6 @@
 
   srcs: [
     "app/src/main/**/*.kt",
-    "app/src/main/**/*.java",
   ],
 
   resource_dirs: [
@@ -19,6 +18,7 @@
     "androidx.appcompat_appcompat",
     "androidx.preference_preference",
     "com.google.android.material_material",
+    "OmniLib",
   ],
 
   kotlincflags: ["-Xjvm-default=enable"],
diff --git a/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt b/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt
new file mode 100644
index 0000000..d318550
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/AbstractSettingsFragment.kt
@@ -0,0 +1,37 @@
+package org.omnirom.control
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.PreferenceFragmentCompat
+import org.omnirom.omnilib.preference.SecureCheckBoxPreference
+import org.omnirom.omnilib.preference.SecureSettingSwitchPreference
+import org.omnirom.omnilib.preference.SystemCheckBoxPreference
+import org.omnirom.omnilib.preference.SystemSettingSwitchPreference
+
+abstract class AbstractSettingsFragment() : PreferenceFragmentCompat() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        // TODO this is just to create some reference to OmniLib
+        val sysSwitch = SystemSettingSwitchPreference(requireContext())
+        val sysCheck = SystemCheckBoxPreference(requireContext())
+        val secSwitch = SecureSettingSwitchPreference(requireContext())
+        val secCheck = SecureCheckBoxPreference(requireContext())
+    }
+
+    abstract fun getFragmentTitle(): String
+
+    abstract fun getFragmentSummary(): String
+
+    abstract fun getFragmentIcon(): Int
+
+    override fun onResume() {
+        super.onResume()
+        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+        (activity as? SettingsActivity)?.updateFragmentTitle(
+            getFragmentTitle(),
+            getFragmentSummary(),
+            getFragmentIcon()
+        )
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/AppListFragment.kt b/app/src/main/java/org/omnirom/control/AppListFragment.kt
index 1ad24f5..f2a513d 100644
--- a/app/src/main/java/org/omnirom/control/AppListFragment.kt
+++ b/app/src/main/java/org/omnirom/control/AppListFragment.kt
@@ -19,21 +19,26 @@
 
 import android.content.Intent
 import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
 import androidx.preference.Preference
 import androidx.preference.PreferenceCategory
-import androidx.preference.PreferenceFragmentCompat
 
-class AppListFragment : PreferenceFragmentCompat() {
+// TODO maybe better to use a GridView
+class AppListFragment : AbstractSettingsFragment() {
     private val KEY_APPS_LIST = "apps_list"
     private val OMNISTORE_APP_PKG = "org.omnirom.omnistore"
     private val OMNISTORE_INSTALL_PKG = "org.omnirom.omnistoreinstaller"
     lateinit var appManager: ApplicationManager
 
-    override fun onResume() {
-        super.onResume()
-        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.applist_settings_title))
+    override fun getFragmentTitle(): String {
+        return resources.getString(R.string.applist_settings_title)
+    }
+
+    override fun getFragmentSummary(): String {
+        return resources.getString(R.string.applist_settings_summary)
+    }
+
+    override fun getFragmentIcon(): Int {
+        return R.drawable.applist_icon
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
index dd475bb..cd069b5 100644
--- a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
@@ -24,12 +24,18 @@
 import androidx.preference.PreferenceFragmentCompat
 
 
-class BarsSettingsFragment : PreferenceFragmentCompat() {
+class BarsSettingsFragment : AbstractSettingsFragment() {
 
-    override fun onResume() {
-        super.onResume()
-        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.bars_settings_title))
+    override fun getFragmentTitle(): String {
+        return resources.getString(R.string.bars_settings_title)
+    }
+
+    override fun getFragmentSummary(): String {
+        return resources.getString(R.string.bars_settings_summary)
+    }
+
+    override fun getFragmentIcon(): Int {
+        return R.drawable.ic_bars_tile
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt b/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
index ebb9a9e..bdfc2ee 100644
--- a/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
@@ -24,12 +24,18 @@
 import androidx.preference.PreferenceFragmentCompat
 
 
-class ButtonSettingsFragment : PreferenceFragmentCompat() {
+class ButtonSettingsFragment : AbstractSettingsFragment() {
 
-    override fun onResume() {
-        super.onResume()
-        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.button_settings_title))
+    override fun getFragmentTitle(): String {
+        return resources.getString(R.string.button_settings_title)
+    }
+
+    override fun getFragmentSummary(): String {
+        return resources.getString(R.string.button_settings_summary)
+    }
+
+    override fun getFragmentIcon(): Int {
+        return R.drawable.ic_settings_buttons
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/org/omnirom/control/LockscreenSettingsFragment.kt b/app/src/main/java/org/omnirom/control/LockscreenSettingsFragment.kt
index 730dadc..ec4b370 100644
--- a/app/src/main/java/org/omnirom/control/LockscreenSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/LockscreenSettingsFragment.kt
@@ -18,18 +18,21 @@
 package org.omnirom.control
 
 import android.os.Bundle
-import android.provider.Settings
-import androidx.appcompat.app.AppCompatActivity
 import androidx.preference.Preference
-import androidx.preference.PreferenceFragmentCompat
 
 
-class LockscreenSettingsFragment : PreferenceFragmentCompat() {
+class LockscreenSettingsFragment : AbstractSettingsFragment() {
 
-    override fun onResume() {
-        super.onResume()
-        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.lockscreen_item_title))
+    override fun getFragmentTitle(): String {
+        return resources.getString(R.string.lockscreen_item_title)
+    }
+
+    override fun getFragmentSummary(): String {
+        return resources.getString(R.string.lockscreen_item_summary)
+    }
+
+    override fun getFragmentIcon(): Int {
+        return R.drawable.ic_lockscreen_tile
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt b/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt
index 77a337c..9d72993 100644
--- a/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt
@@ -18,18 +18,21 @@
 package org.omnirom.control
 
 import android.os.Bundle
-import android.provider.Settings
-import androidx.appcompat.app.AppCompatActivity
 import androidx.preference.Preference
-import androidx.preference.PreferenceFragmentCompat
 
 
-class MoreSettingsFragment : PreferenceFragmentCompat() {
+class MoreSettingsFragment : AbstractSettingsFragment() {
 
-    override fun onResume() {
-        super.onResume()
-        (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
-        (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.more_settings_title))
+    override fun getFragmentTitle(): String {
+        return resources.getString(R.string.more_settings_title)
+    }
+
+    override fun getFragmentSummary(): String {
+        return resources.getString(R.string.more_settings_summary)
+    }
+
+    override fun getFragmentIcon(): Int {
+        return R.drawable.ic_settings_more
     }
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
diff --git a/app/src/main/java/org/omnirom/control/SettingsActivity.kt b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
index c628e9e..848abd2 100644
--- a/app/src/main/java/org/omnirom/control/SettingsActivity.kt
+++ b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
@@ -19,6 +19,8 @@
 
 import android.os.Bundle
 import android.view.MenuItem
+import android.view.View
+import android.widget.ImageView
 import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.widget.Toolbar
@@ -27,7 +29,6 @@
 
 class SettingsActivity : AppCompatActivity() {
 
-    lateinit var titleView: TextView
     private val CURRENT_FRAGMENT = "current_fragment"
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -48,8 +49,6 @@
         val toolbar: Toolbar = findViewById(R.id.toolbar)
         toolbar.title = ""
         setSupportActionBar(toolbar)
-
-        titleView = findViewById(R.id.fragment_title)
     }
 
     override fun onOptionsItemSelected(item: MenuItem): Boolean {
@@ -59,8 +58,22 @@
         return super.onOptionsItemSelected(item)
     }
 
+    fun updateFragmentTitle(title: String, summary: String, icon: Int) {
+        (findViewById<TextView>(R.id.fragment_title)).text = title
+        if (summary.isNotEmpty()) {
+            (findViewById<TextView>(R.id.fragment_summary)).visibility = View.VISIBLE
+            (findViewById<TextView>(R.id.fragment_summary)).text = summary
+        } else {
+            (findViewById<TextView>(R.id.fragment_summary)).visibility = View.GONE
+        }
+        (findViewById<ImageView>(R.id.fragment_icon)).visibility = View.VISIBLE
+        (findViewById<ImageView>(R.id.fragment_icon)).setImageResource(icon)
+    }
+
     fun updateFragmentTitle(title: String) {
-        titleView.text = title
+        (findViewById<TextView>(R.id.fragment_title)).text = title
+        (findViewById<TextView>(R.id.fragment_summary)).visibility = View.GONE
+        (findViewById<ImageView>(R.id.fragment_icon)).visibility = View.GONE
     }
 
     override fun onSaveInstanceState(outState: Bundle) {
diff --git a/app/src/main/java/org/omnirom/control/Utils.kt b/app/src/main/java/org/omnirom/control/Utils.kt
index bb4e9bf..6759f88 100644
--- a/app/src/main/java/org/omnirom/control/Utils.kt
+++ b/app/src/main/java/org/omnirom/control/Utils.kt
@@ -10,7 +10,7 @@
                     val enabled = pm.getApplicationEnabledSetting(packageName)
                     enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED &&
                             enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
-            } catch (e: PackageManager.NameNotFoundException) {
+            } catch (e: Exception) {
                     false
             }
     }
diff --git a/app/src/main/res/drawable/grid_item_background_shape.xml b/app/src/main/res/drawable/grid_item_background_shape.xml
index 5321c0e..ba480c8 100644
--- a/app/src/main/res/drawable/grid_item_background_shape.xml
+++ b/app/src/main/res/drawable/grid_item_background_shape.xml
@@ -17,5 +17,5 @@
 
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
     <corners android:radius="@dimen/grid_item_corner_radius" />
-    <solid android:color="@color/colorPrimary" />
+    <solid android:color="@color/grid_shape_background" />
 </shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_info_outline.xml b/app/src/main/res/drawable/ic_info_outline.xml
new file mode 100644
index 0000000..35f7f5f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_info_outline.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
+</vector>
diff --git a/app/src/main/res/layout/grid_fragment.xml b/app/src/main/res/layout/grid_fragment.xml
index a5f25e3..ee2303f 100644
--- a/app/src/main/res/layout/grid_fragment.xml
+++ b/app/src/main/res/layout/grid_fragment.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_marginStart="30dp">
+    android:layout_height="match_parent">
 
     <GridView
         android:id="@+id/grid_view"
diff --git a/app/src/main/res/layout/grid_item.xml b/app/src/main/res/layout/grid_item.xml
index a3e4c62..2ea5762 100644
--- a/app/src/main/res/layout/grid_item.xml
+++ b/app/src/main/res/layout/grid_item.xml
@@ -6,20 +6,20 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_margin="20dp"
+        android:layout_margin="@dimen/grid_item_border"
         android:orientation="horizontal">
 
         <ImageView
             android:id="@+id/grid_item_icon"
-            android:layout_width="48dp"
-            android:layout_height="48dp"
+            android:layout_width="@dimen/grid_item_icon_size"
+            android:layout_height="@dimen/grid_item_icon_size"
             android:layout_gravity="center_vertical" />
 
         <LinearLayout
             android:layout_width="0dp"
-            android:layout_height="match_parent"
+            android:layout_height="wrap_content"
             android:layout_gravity="start|center_vertical"
-            android:layout_marginStart="20dp"
+            android:layout_marginStart="@dimen/fragment_icon_margin_start"
             android:layout_weight="1"
             android:orientation="vertical">
 
@@ -27,18 +27,16 @@
                 android:id="@+id/grid_item_title"
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
-                android:text="foo"
                 android:layout_weight="1"
                 android:gravity="center_vertical"
-                android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"/>
+                android:textAppearance="@style/Theme.OmniControl.GridItem.TitleTextStyle"/>
 
             <TextView
                 android:id="@+id/grid_item_summary"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:text="bar"
                 android:gravity="center_vertical"
-                android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"/>
+                android:textAppearance="@style/Theme.OmniControl.GridItem.SummaryTextStyle"/>
 
         </LinearLayout>
     </LinearLayout>
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
index e403696..8d2b0f8 100644
--- a/app/src/main/res/layout/settings_activity.xml
+++ b/app/src/main/res/layout/settings_activity.xml
@@ -8,18 +8,53 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
-    <TextView
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:id="@+id/fragment_title"
-        android:textAppearance="@style/Theme.OmniControl.TitleTextStyle"
-        android:layout_marginStart="30dp"/>
+        android:layout_gravity="center_vertical"
+        android:layout_marginStart="@dimen/fragment_side_margin"
+        android:orientation="horizontal">
+
+        <ImageView
+            android:id="@+id/fragment_icon"
+            android:layout_width="@dimen/grid_item_icon_size"
+            android:layout_height="@dimen/grid_item_icon_size"
+            android:layout_gravity="center_vertical"
+            android:layout_marginStart="@dimen/fragment_icon_margin_start" />
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="start|center_vertical"
+            android:layout_marginStart="@dimen/fragment_icon_margin_start"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/fragment_title"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:gravity="center_vertical"
+                android:textAppearance="@style/Theme.OmniControl.TitleTextStyle" />
+
+            <TextView
+                android:id="@+id/fragment_summary"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:textAppearance="@style/Theme.OmniControl.GridItem.SummaryTextStyle" />
+
+        </LinearLayout>
+    </LinearLayout>
 
     <FrameLayout
         android:id="@+id/settings"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="1"
-        android:layout_marginTop="20dp"/>
+        android:layout_marginStart="@dimen/fragment_side_margin"
+        android:layout_marginTop="20dp"
+        android:layout_marginEnd="@dimen/fragment_side_margin"
+        android:layout_weight="1" />
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml
index 55344e5..33ffafa 100644
--- a/app/src/main/res/values-land/dimens.xml
+++ b/app/src/main/res/values-land/dimens.xml
@@ -1,3 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
+    <dimen name="fragment_side_margin">30dp</dimen>
+    <dimen name="fragment_icon_margin_start">20dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 672af4a..9f5a30e 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <color name="colorPrimary">@color/material_blue_grey_950</color>
-    <color name="colorPrimaryDark">@color/material_blue_grey_950</color>
-    <color name="main_background_light">@color/material_blue_grey_950</color>
+    <color name="colorPrimary">@color/system_neutral1_900</color>
+    <color name="colorPrimaryDark">@color/system_neutral1_900</color>
+    <color name="main_background_light">@color/system_neutral1_900</color>
+    <color name="grid_shape_background">@color/main_background_light</color>
+
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3a44432..26ef2e9 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -8,7 +8,12 @@
     <color name="black">#FF000000</color>
     <color name="white">#FFFFFFFF</color>
     <color name="omni_logo_color">#a1c729</color>
-    <color name="colorPrimary">@android:color/white</color>
-    <color name="colorPrimaryDark">@android:color/white</color>
-    <color name="main_background_light">@android:color/white</color>
+    <color name="colorPrimary">@color/system_neutral1_50</color>
+    <color name="colorPrimaryDark">@color/system_neutral1_50</color>
+    <color name="main_background_light">@color/system_neutral1_50</color>
+    <color name="grid_shape_background">@color/main_background_light</color>
+    <color name="material_grey_950">#ff101010</color>
+    <color name="system_neutral1_800">#2E3133</color>
+    <color name="system_neutral1_900">#191C1E</color>
+    <color name="system_neutral1_50">#F0F0F3</color>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index afbe64f..1de6ecd 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,6 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <dimen name="applist_icon_size">108dp</dimen>
-    <dimen name="grip_view_spacing">8dp</dimen>
+    <dimen name="grip_view_spacing">0dp</dimen>
     <dimen name="grid_item_corner_radius">16dp</dimen>
+    <dimen name="fragment_side_margin">10dp</dimen>
+    <dimen name="grid_item_border">10dp</dimen>
+    <dimen name="fragment_icon_margin_start">10dp</dimen>
+    <dimen name="grid_item_icon_size">36dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6dbd34b..b38495e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,7 +5,6 @@
 
     <string name="weather_config_title">Weather service</string>
     <string name="weather_config_summary">System service settings</string>
-
     <string name="omni_remote_title">OmniRemote</string>
     <string name="omni_remote_summary">VNC server to allow remote connection to device</string>
     <string name="matlog_title">MatLog</string>
@@ -49,4 +48,5 @@
     <string name="lockscreen_item_summary">Configure visibility of lock screen items</string>
     <string name="lockscreen_weather_title">Show weather condition</string>
     <string name="lockscreen_weather_summary">Show current weather condition and temperature</string>
+    <string name="lockscreen_weather_enabled_info">Requires enablement of weather service</string>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 10abf5a..788bc59 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -9,8 +9,14 @@
         <item name="windowActionBar">false</item>
     </style>
 
-    <style name="Theme.OmniControl.TitleTextStyle" parent="TextAppearance.MaterialComponents.Body1">
-        <item name="android:textSize">32dp</item>
-        <item name="android:color">?android:textColorPrimary</item>
+    <style name="Theme.OmniControl.TitleTextStyle" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
+        <item name="android:textSize">24sp</item>
+    </style>
+
+    <style name="Theme.OmniControl.GridItem.TitleTextStyle" parent="@style/TextAppearance.MaterialComponents.Subtitle1">
+        <item name="android:textSize">18sp</item>
+    </style>
+
+    <style name="Theme.OmniControl.GridItem.SummaryTextStyle" parent="@style/TextAppearance.MaterialComponents.Body2">
     </style>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/xml/applist_preferences.xml b/app/src/main/res/xml/applist_preferences.xml
index 4d01696..f337b07 100644
--- a/app/src/main/res/xml/applist_preferences.xml
+++ b/app/src/main/res/xml/applist_preferences.xml
@@ -3,5 +3,4 @@
     <PreferenceCategory android:key="apps_list">
     </PreferenceCategory>
 
-
 </PreferenceScreen>
\ No newline at end of file
diff --git a/app/src/main/res/xml/lockscreen_settings_preferences.xml b/app/src/main/res/xml/lockscreen_settings_preferences.xml
index fc09e06..2215dac 100644
--- a/app/src/main/res/xml/lockscreen_settings_preferences.xml
+++ b/app/src/main/res/xml/lockscreen_settings_preferences.xml
@@ -1,13 +1,22 @@
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:title="@string/lockscreen_item_title"
-    android:key="lockscreen_item">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    android:key="lockscreen_item"
+    android:title="@string/lockscreen_item_title">
 
     <org.omnirom.omnilib.preference.SystemSettingSwitchPreference
+        android:defaultValue="false"
         android:key="lockscreen_weather_enabled"
-        android:title="@string/lockscreen_weather_title"
         android:summary="@string/lockscreen_weather_summary"
-        android:defaultValue="false" />
+        android:title="@string/lockscreen_weather_title" />
+
+    <Preference
+        android:icon="@drawable/ic_info_outline"
+        android:persistent="false"
+        android:summary="@string/lockscreen_weather_enabled_info">
+        <intent
+            android:action="android.intent.action.MAIN"
+            android:targetClass="org.omnirom.omnijaws.SettingsActivityService"
+            android:targetPackage="org.omnirom.omnijaws" />
+    </Preference>
 
 </PreferenceScreen>