diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index b470007..2ae2b58 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -212,8 +212,6 @@
     <string name="navigation_bar_show_summary">Force enable navigation bar</string>
     <string name="hardware_keys_disable_title">Disable keys</string>
     <string name="hardware_keys_disable_summary">Force disable hardware keys</string>
-    <string name="use_bottom_gesture_title">Use swipe up gestures for navigation</string>
-    <string name="use_bottom_gesture_summary">Works only with navigation bar disable</string>
 
     <string name="navbar_title">Navigation bar</string>
     <string name="navbar_recents_style_title">Recents style</string>
@@ -796,4 +794,9 @@
 
     <string name="splitscreen_force_systembar_enabled_title">Force show system bars in splitscreen</string>
     <string name="splitscreen_force_systembar_enabled_summary"></string>
+
+    <string name="gesture_settings_title">Gestures</string>
+    <string name="gesture_settings_info">Available gestures:\n\nBack\n- Swipe up on left or right side\n\nHome\n- Swipe up center\n\nRecent apps\n- Swipe up center and hold\n\nLong press home\n- Short swipe up and hold in the center\n\n\nWorks best with navigation bar disabled.</string>
+    <string name="use_bottom_gesture_title">Navigation gestures</string>
+    <string name="use_bottom_gesture_summary">Use bottom swipe up gestures for navigation</string>
 </resources>
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 12466d1..94684b1 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -58,11 +58,6 @@
             android:title="@string/navigation_bar_show_title"
             android:summary="@string/navigation_bar_show_summary"
             android:persistent="false" />
-        <org.omnirom.omnilib.preference.SystemSettingSwitchPreference
-            android:key="use_bottom_gesture_navigation"
-            android:title="@string/use_bottom_gesture_title"
-            android:summary="@string/use_bottom_gesture_summary"
-            android:defaultValue="false" />
         <SwitchPreference
             android:key="hardware_keys_disable"
             android:title="@string/hardware_keys_disable_title"
diff --git a/res/xml/gesture_settings.xml b/res/xml/gesture_settings.xml
new file mode 100644
index 0000000..1cbce8a
--- /dev/null
+++ b/res/xml/gesture_settings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--  Copyright (C) 2018 The OmniROM Project
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ -->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:key="gesture_settings"
+        android:title="@string/gesture_settings_title" >
+
+        <org.omnirom.omnilib.preference.SystemSettingSwitchPreference
+            android:key="use_bottom_gesture_navigation"
+            android:title="@string/use_bottom_gesture_title"
+            android:summary="@string/use_bottom_gesture_summary"
+            android:defaultValue="false" />
+
+</PreferenceScreen>
diff --git a/res/xml/omni_dashboard_fragment.xml b/res/xml/omni_dashboard_fragment.xml
index 9a9d4e5..c63c1ed 100644
--- a/res/xml/omni_dashboard_fragment.xml
+++ b/res/xml/omni_dashboard_fragment.xml
@@ -72,16 +72,6 @@
             android:targetClass="org.omnirom.omnibrain.OmniBrainActivity" />
     </Preference>
 
-    <!--<Preference
-        android:key="weather_service_settings"
-        android:icon="@drawable/ic_qs_weather_default_on"
-        android:title="@string/weather_config_title"
-        android:summary="@string/weather_config_summary" >
-        <intent android:action="android.intent.action.MAIN"
-                android:targetPackage="org.omnirom.omnijaws"
-                android:targetClass="org.omnirom.omnijaws.SettingsActivityService" />
-    </Preference>-->
-
     <Preference
         android:key="omnijaws_settings"
         android:icon="@drawable/ic_qs_weather_default_on"
@@ -89,9 +79,15 @@
         android:fragment="org.omnirom.omnigears.moresettings.OmniJawsSettings" />
 
     <Preference
+        android:key="gesture_settings"
+        android:icon="@drawable/ic_settings_gestures"
+        android:title="@string/gesture_settings_title"
+        android:fragment="org.omnirom.omnigears.GestureSettings" />
+
+    <Preference
         android:key="more_settings"
         android:title="@string/more_settings_title"
         android:icon="@drawable/ic_settings_more"
         android:fragment="org.omnirom.omnigears.moresettings.MoreSettings"
-        android:order="10" />
+        android:order="11" />
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/GestureSettings.java b/src/org/omnirom/omnigears/GestureSettings.java
new file mode 100644
index 0000000..23bee74
--- /dev/null
+++ b/src/org/omnirom/omnigears/GestureSettings.java
@@ -0,0 +1,72 @@
+/*
+ *  Copyright (C) 2018 The OmniROM Project
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.omnirom.omnigears;
+
+import com.android.settings.SettingsPreferenceFragment;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.provider.SearchIndexableResource;
+
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+
+import java.util.List;
+import java.util.Arrays;
+
+public class GestureSettings extends SettingsPreferenceFragment implements Indexable {
+    private static final String TAG = "GestureSettings";
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.OMNI_SETTINGS;
+    }
+
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.gesture_settings);
+        mFooterPreferenceMixin.createFooterPreference().setTitle(R.string.gesture_settings_info);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        return super.onPreferenceTreeClick(preference);
+    }
+
+    /**
+     * For Search.
+     */
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+        new BaseSearchIndexProvider() {
+
+            @Override
+            public List<SearchIndexableResource> getXmlResourcesToIndex(
+                    Context context, boolean enabled) {
+                final SearchIndexableResource sir = new SearchIndexableResource(context);
+                sir.xmlResId = R.xml.gesture_settings;
+                return Arrays.asList(sir);
+            }
+	};
+}
+
