diff --git a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
index cd069b5..05ee9ba 100644
--- a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
@@ -17,15 +17,19 @@
  */
 package org.omnirom.control
 
+import android.graphics.Rect
 import android.os.Bundle
-import android.provider.Settings
-import androidx.appcompat.app.AppCompatActivity
+import android.util.DisplayMetrics
+import android.view.WindowManager
 import androidx.preference.Preference
-import androidx.preference.PreferenceFragmentCompat
+import androidx.preference.PreferenceCategory
+import kotlin.math.min
 
 
 class BarsSettingsFragment : AbstractSettingsFragment() {
 
+    private val TABLET_MIN_DPS = 600
+
     override fun getFragmentTitle(): String {
         return resources.getString(R.string.bars_settings_title)
     }
@@ -40,9 +44,31 @@
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
         setPreferencesFromResource(R.xml.bars_settings_preferences, rootKey)
+
+        val taskbarCategory:PreferenceCategory? = findPreference("category_taskbar")
+        if (taskbarCategory != null){
+            if (!isTablet()) {
+                preferenceScreen.removePreference(taskbarCategory)
+            }
+        }
     }
 
     override fun onPreferenceTreeClick(preference: Preference?): Boolean {
         return super.onPreferenceTreeClick(preference)
     }
+
+    private fun dpiFromPx(size: Int, densityDpi: Int): Float {
+        val densityRatio = densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT
+        return size / densityRatio
+    }
+
+    private fun isTablet(): Boolean {
+        val windowManager: WindowManager = requireContext().getSystemService(WindowManager::class.java)
+        val bounds: Rect = windowManager.currentWindowMetrics.bounds
+        val smallestWidth: Float = dpiFromPx(
+            min(bounds.width(), bounds.height()),
+            resources.configuration.densityDpi
+        )
+        return smallestWidth >= TABLET_MIN_DPS
+    }
 }
\ 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 8be464f..b27786f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,9 @@
 
     <string name="status_bar_bt_battery_title">Show Bluetooth battery level</string>
     <string name="status_bar_bt_battery_summary">For supported devices show battery level also in status bar</string>
+    <string name="taskbar_title">Taskbar</string>
+    <string name="taskbar_disable_title">Disable taskbar</string>
+    <string name="taskbar_disable_summary">Show legacy navigation bar instead of taskbar. Needs reboot.</string>
 
     <string name="qs_settings_title">Quick settings</string>
     <string name="qs_settings_summary">Layout options</string>
diff --git a/app/src/main/res/xml/bars_settings_preferences.xml b/app/src/main/res/xml/bars_settings_preferences.xml
index e646ab2..f15ab9d 100644
--- a/app/src/main/res/xml/bars_settings_preferences.xml
+++ b/app/src/main/res/xml/bars_settings_preferences.xml
@@ -36,6 +36,18 @@
             android:defaultValue="false"/>
 
     </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="category_taskbar"
+        android:title="@string/taskbar_title">
+
+        <org.omnirom.omnilib.preference.SystemSettingSwitchPreference
+            android:key="taskbar_disable"
+            android:title="@string/taskbar_disable_title"
+            android:summary="@string/taskbar_disable_summary"
+            android:defaultValue="false"/>
+
+    </PreferenceCategory>
 </PreferenceScreen>
 
 
diff --git a/build.gradle b/build.gradle
index 2b14126..70fc287 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.0.4'
+        classpath 'com.android.tools.build:gradle:7.1.2'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0-RC"
 
         // NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 35a7a8c..92e79a1 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 #Wed Oct 20 14:49:44 CEST 2021
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
