diff --git a/app/src/main/java/org/lineageos/aperture/MainActivity.kt b/app/src/main/java/org/lineageos/aperture/MainActivity.kt
index e66430f..7fadbf5 100644
--- a/app/src/main/java/org/lineageos/aperture/MainActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/MainActivity.kt
@@ -131,7 +131,11 @@
     private val cameraMode: CameraMode
         get() = sharedPreferences.lastCameraMode
 
-    private lateinit var cameraState: CameraState
+    private var cameraState = CameraState.IDLE
+        set(value) {
+            field = value
+            updateSecondaryBarButtons(value)
+        }
 
     private lateinit var camera: PhysicalCamera
 
@@ -841,6 +845,23 @@
         }
     }
 
+    /**
+     * Enable or disable secondary bar buttons
+     */
+    private fun updateSecondaryBarButtons(cameraState: CameraState) {
+        runOnUiThread {
+            timerButton.isEnabled = cameraState == CameraState.IDLE
+            aspectRatioButton.isEnabled = cameraState == CameraState.IDLE
+            videoQualityButton.isEnabled = cameraState == CameraState.IDLE
+            effectButton.isEnabled = cameraState == CameraState.IDLE
+            // Grid mode can be toggled at any time
+            // Torch mode can be toggled at any time
+            flashButton.isEnabled = cameraState == CameraState.IDLE
+            micButton.isEnabled = cameraState == CameraState.IDLE
+            settingsButton.isEnabled = cameraState == CameraState.IDLE
+        }
+    }
+
     private fun cycleAspectRatio() {
         if (!canRestartCamera()) {
             return
@@ -857,7 +878,6 @@
 
     private fun cycleVideoQuality() {
         if (!canRestartCamera()) {
-            updateVideoQualityIcon()
             return
         }
 
@@ -1051,10 +1071,6 @@
      */
     @SuppressLint("MissingPermission")
     private fun setMicrophoneMode(microphoneMode: Boolean) {
-        if (!canRestartCamera()) {
-            return
-        }
-
         audioConfig = AudioConfig.create(microphoneMode)
         updateMicrophoneModeIcon()
 
@@ -1103,10 +1119,6 @@
      * Cycle between supported photo camera effects
      */
     private fun cyclePhotoEffects() {
-        if (!canRestartCamera()) {
-            return
-        }
-
         setExtensionMode(
             if (extensionMode == supportedExtensionModes.last()) supportedExtensionModes.first()
             else supportedExtensionModes[supportedExtensionModes.indexOf(extensionMode) + 1]
@@ -1231,10 +1243,6 @@
     }
 
     private fun openSettings() {
-        if (!canRestartCamera()) {
-            return
-        }
-
         val intent = Intent(this, SettingsActivity::class.java)
         startActivity(intent)
     }
diff --git a/app/src/main/res/color/secondary_bar_button_icon.xml b/app/src/main/res/color/secondary_bar_button_icon.xml
new file mode 100644
index 0000000..dc495f7
--- /dev/null
+++ b/app/src/main/res/color/secondary_bar_button_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/white" android:state_enabled="true" />
+    <item android:color="@color/dark_grey" android:state_enabled="false" />
+</selector>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 173ba14..f65ed53 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -40,10 +40,10 @@
 
     <!-- Secondary bar icons theme -->
     <style name="ApertureSecondaryBarButton">
-        <item name="tint">?attr/colorPrimary</item>
+        <item name="tint">@color/secondary_bar_button_icon</item>
         <item name="backgroundTint">?attr/colorOnPrimary</item>
         <item name="android:padding">0dp</item>
-        <item name="android:textColor">?attr/colorPrimary</item>
+        <item name="android:textColor">@color/secondary_bar_button_icon</item>
     </style>
 
     <!-- Camera mode bar icons theme -->
