diff --git a/gui/action.cpp b/gui/action.cpp
index f7f29e8..7d34da8 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -62,7 +62,6 @@
 std::set<string> GUIAction::setActionsRunningInCallerThread;
 static string zip_queue[10];
 static int zip_queue_index;
-static pthread_t terminal_command;
 pid_t sideload_child_pid;
 
 static void *ActionThread_work_wrapper(void *data);
@@ -861,7 +860,6 @@
 int GUIAction::getpartitiondetails(std::string arg)
 {
 	string List, part_path;
-	int count = 0;
 
 	if (arg.empty())
 		arg = "tw_wipe_list";
@@ -1078,7 +1076,7 @@
 		else if (arg == "DATAMEDIA") {
 			ret_val = PartitionManager.Format_Data();
 		} else if (arg == "INTERNAL") {
-			int has_datamedia, dual_storage;
+			int has_datamedia;
 
 			DataManager::GetValue(TW_HAS_DATA_MEDIA, has_datamedia);
 			if (has_datamedia) {
@@ -1097,7 +1095,6 @@
 			string Wipe_List, wipe_path;
 			bool skip = false;
 			ret_val = true;
-			TWPartition* wipe_part = NULL;
 
 			DataManager::GetValue("tw_wipe_list", Wipe_List);
 			LOGINFO("wipe list '%s'\n", Wipe_List.c_str());
@@ -1384,7 +1381,7 @@
 		if (fp == NULL) {
 			LOGERR("Error opening command to run (%s).\n", strerror(errno));
 		} else {
-			int fd = fileno(fp), has_data = 0, check = 0, keep_going = -1, bytes_read = 0;
+			int fd = fileno(fp), has_data = 0, check = 0, keep_going = -1;
 			struct timeval timeout;
 			fd_set fdset;
 
@@ -1425,8 +1422,6 @@
 
 int GUIAction::killterminal(std::string arg __unused)
 {
-	int op_status = 0;
-
 	LOGINFO("Sending kill command...\n");
 	operation_start("KillCommand");
 	DataManager::SetValue("tw_operation_status", 0);
@@ -1883,7 +1878,6 @@
 
 int GUIAction::checkforapp(std::string arg __unused)
 {
-	int op_status = 1;
 	operation_start("Check for TWRP App");
 	if (!simulate)
 	{
diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp
index fa4ed82..a992b80 100644
--- a/gui/fileselector.cpp
+++ b/gui/fileselector.cpp
@@ -305,7 +305,6 @@
 void GUIFileSelector::RenderItem(size_t itemindex, int yPos, bool selected)
 {
 	size_t folderSize = mShowFolders ? mFolderList.size() : 0;
-	size_t fileSize = mShowFiles ? mFileList.size() : 0;
 
 	ImageResource* icon;
 	std::string text;
diff --git a/gui/keyboard.cpp b/gui/keyboard.cpp
index 4a78ad7..849cf19 100644
--- a/gui/keyboard.cpp
+++ b/gui/keyboard.cpp
@@ -346,7 +346,6 @@
 		void* fontResource = mLongpressFont->GetResource();
 		gr_color(mLongpressFontColor.red, mLongpressFontColor.green, mLongpressFontColor.blue, mLongpressFontColor.alpha);
 		string text(1, keychar);
-		int textH = mLongpressFont->GetHeight();
 		int textW = gr_ttf_measureEx(text.c_str(), fontResource);
 		int textX = keyX + keyW - longpressOffsetX - textW;
 		int textY = keyY + longpressOffsetY;
diff --git a/gui/partitionlist.cpp b/gui/partitionlist.cpp
index dca3904..c853391 100644
--- a/gui/partitionlist.cpp
+++ b/gui/partitionlist.cpp
@@ -99,8 +99,6 @@
 	GUIScrollList::Update();
 
 	if (updateList) {
-		int listSize = 0;
-
 		// Completely update the list if needed -- Used primarily for
 		// restore as the list for restore will change depending on what
 		// partitions were backed up
diff --git a/gui/text.cpp b/gui/text.cpp
index 49e27a1..61940ff 100644
--- a/gui/text.cpp
+++ b/gui/text.cpp
@@ -114,9 +114,6 @@
 
 	mVarChanged = 0;
 
-	int x = mRenderX, y = mRenderY;
-	int width = gr_ttf_measureEx(mLastValue.c_str(), fontResource);
-
 	if (isHighlighted)
 		gr_color(mHighlightColor.red, mHighlightColor.green, mHighlightColor.blue, mHighlightColor.alpha);
 	else
