diff --git a/xtrn/ddfilelister/ddfilelister.js b/xtrn/ddfilelister/ddfilelister.js
index c11bec4ed72c3084ab132e6f3291fcea016f30d0..dad608d769b4a2b9d22eeeaf302a4bdb0ffc8815 100644
--- a/xtrn/ddfilelister/ddfilelister.js
+++ b/xtrn/ddfilelister/ddfilelister.js
@@ -156,7 +156,7 @@
  *                              Now optionally displays the number of files in the directory in the
  *                              header at the top of the list, configurable with the
  *                              displayNumFilesInHeader option in the config file
- * 2025-02-22 Eric Oulashin     Version 2.28
+ * 2025-02-23 Eric Oulashin     Version 2.28
  *                              If extended descriptions are enabled and a filename is too long to
  *                              fully fit in the menu, prepend the full filename (wrapped) to the
  *                              description.
@@ -205,7 +205,7 @@ var gAvatar = load({}, "avatar_lib.js");
 
 // Version information
 var LISTER_VERSION = "2.28";
-var LISTER_DATE = "2025-02-22";
+var LISTER_DATE = "2025-02-23";
 
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -280,7 +280,9 @@ var gColors = {
 	fileNormalBkgTrad: "\x01n\x01w",
 	listNumTrad: "\x01g\x01h",
 	fileAreaDescTrad: "\x01c",
-	fileAreaNumItemsTrad: "\x01b\x01h"
+	fileAreaNumItemsTrad: "\x01b\x01h",
+
+	filenameInDesc: "\x01g" // Filename when used in the description
 };
 
 
@@ -490,18 +492,7 @@ if (gUseLightbarInterface && console.term_supports(USER_ANSI))
 		{
 			currentActionVal = gFileMenuBar.getCurrentSelectedAction();
 			gFileMenuBar.setCurrentActionCode(currentActionVal);
-			if (currentActionVal == TOGGLE_EXTD_DESCS)
-			{
-				// Toggle extended descriptions
-				toggleExtdDescriptionsForUser_Lightbar();
-				drawFileListMenu = true; // Ensure the menu re-draws itself (properly)
-				actionRetObj = null;
-			}
-			else
-			{
-				// Handle actions (other than extended description toggle)
-				actionRetObj = doAction(currentActionVal, gFileList, gFileListMenu);
-			}
+			actionRetObj = doAction(currentActionVal, gFileList, gFileListMenu);
 		}
 		// Allow the delete key as a special key for sysops to delete the selected file(s). Also allow backspace
 		// due to some terminals returning backspace for delete.
@@ -518,18 +509,7 @@ if (gUseLightbarInterface && console.term_supports(USER_ANSI))
 		{
 			currentActionVal = gFileMenuBar.getActionFromChar(lastUserInputUpper, false);
 			gFileMenuBar.setCurrentActionCode(currentActionVal, true);
-			if (currentActionVal == TOGGLE_EXTD_DESCS)
-			{
-				// Toggle extended descriptions
-				toggleExtdDescriptionsForUser_Lightbar();
-				drawFileListMenu = true; // Ensure the menu re-draws itself (properly)
-				actionRetObj = null;
-			}
-			else
-			{
-				// Handle actions (other than extended description toggle)
-				actionRetObj = doAction(currentActionVal, gFileList, gFileListMenu);
-			}
+			actionRetObj = doAction(currentActionVal, gFileList, gFileListMenu);
 		}
 		// If an action was done (actionRetObj is not null), then look at actionRetObj and
 		// do what's needed.  Note that quit (for the Q key) is already handled.
@@ -902,29 +882,24 @@ else
 			//gFileMenuBar.setCurrentActionCode(LAST_PAGE, !refreshWholePromptLine);
 			gFileMenuBar.setCurrentActionCode(LAST_PAGE, true);
 		}
-		else if (userInput == "X")
-		{
-			// Toggle extended descriptions
-			var userCanToggle = (Boolean(user.settings & USER_EXTDESC) ? true : userCanEnableExtendedDescriptions());
-			if (userCanToggle)
-			{
-				user.settings ^= USER_EXTDESC;
-				allFileInfoLines = [];
-				for (var i = 0; i < gFileList.length; ++i)
-					allFileInfoLines = allFileInfoLines.concat(getFileInfoLineArrayForTraditionalUI(gFileList, i, formatInfo));
-				topItemIndexForLastPage = allFileInfoLines.length - numLinesPerPage;
-				drawMenu = true;
-				drawDirHeaderLines = true;
-			}
-		}
 		else
 		{
 			drawDirHeaderLines = true;
 			drawMenu = true;
 			refreshWholePromptLine = true;
 			currentActionVal = gFileMenuBar.getActionFromChar(userInput, false);
+			//if (user.is_sysop) console.print("\x01n\r\nHere - Char:" + userInput + ":, action val: " + currentActionVal + "  \x01p"); // Temporary
 			gFileMenuBar.setCurrentActionCode(currentActionVal, true);
 			actionRetObj = doAction(currentActionVal, gFileList, gFileListMenu);
+			// If the user toggled extended descriptions, then re-generate the array of
+			// filenames & descriptions
+			if (currentActionVal == TOGGLE_EXTD_DESCS)
+			{
+				allFileInfoLines = [];
+				for (var i = 0; i < gFileList.length; ++i)
+					allFileInfoLines = allFileInfoLines.concat(getFileInfoLineArrayForTraditionalUI(gFileList, i, formatInfo));
+				topItemIndexForLastPage = allFileInfoLines.length - numLinesPerPage;
+			}
 		}
 	}
 }
@@ -959,7 +934,7 @@ function doAction(pActionCode, pFileList, pFileListMenu)
 	// (for options that need one)
 	var useANSIInterface = gUseLightbarInterface && console.term_supports(USER_ANSI);
 	var fileIdx = pFileListMenu.selectedItemIdx;
-	if (!useANSIInterface && pActionCode != QUIT && pActionCode != HELP && pActionCode != NEXT_PAGE && pActionCode != PREV_PAGE)
+	if (!useANSIInterface && pActionCode != QUIT && pActionCode != HELP && pActionCode != NEXT_PAGE && pActionCode != PREV_PAGE && pActionCode != TOGGLE_EXTD_DESCS)
 	{
 		console.crlf();
 		console.print(getActionStr(pActionCode) + "\x01n");
@@ -1032,34 +1007,14 @@ function doAction(pActionCode, pFileList, pFileListMenu)
 			if (user.is_sysop)
 				retObj = confirmAndRemoveFilesFromFilebase(pFileList, pFileListMenu);
 			break;
+		case TOGGLE_EXTD_DESCS: // Toggle extended descriptions
+			retObj = toggleExtdDescriptionsForUser(useANSIInterface);
+			break;
 	}
 
 	return retObj;
 }
 
-// Toggles the user's extended descriptions. This is a special action case for the
-// lightbar interface which re-creates the lightbar menu, which will behave differently
-// depending on whether the user's extended descriptions are enabled or not.
-function toggleExtdDescriptionsForUser_Lightbar()
-{
-	// Toggle extended descriptions
-	var userCanToggle = (Boolean(user.settings & USER_EXTDESC) ? true : userCanEnableExtendedDescriptions());
-	if (userCanToggle)
-	{
-		var currentSelectedItemIdx = gFileListMenu.selectedItemIdx;
-		user.settings ^= USER_EXTDESC;
-		var listPopRetObj = populateFileList(gScriptMode);
-		if (listPopRetObj.exitNow) // Shouldn't happen here, but just in case
-			exit(0);
-		gFileListMenu = createFileListMenu(gFileMenuBar.getAllActionKeysStr(true, true) + KEY_LEFT + KEY_RIGHT + KEY_DEL /*+ CTRL_C*/);
-		gFileListMenu.SetSelectedItemIdx(currentSelectedItemIdx);
-		// If the user has enabled extended descriptions, then write the
-		// current selected file's extended description on the screen
-		if (Boolean(user.settings & USER_EXTDESC))
-			displayFileExtDescOnMainScreen(gFileListMenu.selectedItemIdx);
-	}
-}
-
 // Returns a string representing an action code, for relevant actions (not necessarily all actions)
 //
 // Parameters:
@@ -2633,6 +2588,34 @@ function confirmAndRemoveFilesFromFilebase(pFileList, pFileListMenu)
 	return retObj;
 }
 
+// Toggles the user's extended descriptions. This is a special action case for the
+// lightbar interface which re-creates the lightbar menu, which will behave differently
+// depending on whether the user's extended descriptions are enabled or not.
+function toggleExtdDescriptionsForUser(pUsingLightbarInterface)
+{
+	var retObj = getDefaultActionRetObj();
+
+	// Toggle extended descriptions
+	var userCanToggle = (Boolean(user.settings & USER_EXTDESC) ? true : userCanEnableExtendedDescriptions());
+	if (userCanToggle)
+	{
+		user.settings ^= USER_EXTDESC; // Toggle the user's extended descriptions setting
+		// If using the lightbar interface, then re-create the lightbar file list menu
+		if (pUsingLightbarInterface)
+		{
+			var currentSelectedItemIdx = gFileListMenu.selectedItemIdx;
+			var listPopRetObj = populateFileList(gScriptMode);
+			if (listPopRetObj.exitNow) // Shouldn't happen here, but just in case
+				exit(0);
+			gFileListMenu = createFileListMenu(gFileMenuBar.getAllActionKeysStr(true, true) + KEY_LEFT + KEY_RIGHT + KEY_DEL /*+ CTRL_C*/);
+			gFileListMenu.SetSelectedItemIdx(currentSelectedItemIdx);
+			retObj.reDrawMainScreenContent = true;
+		}
+	}
+
+	return retObj;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // DDFileMenuBar stuff
 
@@ -5354,11 +5337,11 @@ function displayFileExtDescOnMainScreen(pFileIdx, pStartScreenRow, pEndScreenRow
 	// filename.
 	var fileDescIsEmptyOrWhitespace = (fileDesc == "" || /^\s+$/.test(fileDesc));
 	if (gUseFilenameIfNoDescription && fileDescIsEmptyOrWhitespace)
-		fileDesc = lfexpand(word_wrap(fileMetadata.name + "\r\n(No description)", maxDescLen, null, false));
+		fileDesc = "\x01n" + gColors.filenameInDesc + lfexpand(word_wrap(fileMetadata.name + "\r\n\x01n(No description)", maxDescLen, null, false));
 	// If there is a description and the filename is too long to fit on the menu, then prepend the
 	// full filename (wrapped) to the the description
 	else if (!fileDescIsEmptyOrWhitespace && fileMetadata.name.length > gFileListMenu.filenameLen)
-		fileDesc = lfexpand(word_wrap(fileMetadata.name, maxDescLen, null, false)) + "\r\n" + fileDesc;
+		fileDesc = "\x01n" + gColors.filenameInDesc + lfexpand(word_wrap(fileMetadata.name, maxDescLen, null, false)) + "\r\n\x01n" + fileDesc;
 	// Display the description on the screen
 	var fileDescArray = fileDesc.split("\r\n");
 	console.attributes = "N";
@@ -5640,7 +5623,7 @@ function getFileInfoLineArrayForTraditionalUI(pFileList, pIdx, pFormatInfo)
 		// There is no description. If the option to use the filename is enabled, then use the filename.
 		if (gUseFilenameIfNoDescription)
 		{
-			var fileDesc = lfexpand(word_wrap(pFileList[pIdx].name + "\r\n(No description)", pFormatInfo.descLen, null, false));
+			var fileDesc = "\x01n" + gColors.filenameInDesc + lfexpand(word_wrap(pFileList[pIdx].name + "\r\n\x01n(No description)", pFormatInfo.descLen, null, false));
 			var fileDescArray = fileDesc.split("\r\n");
 			for (var i = 0; i < fileDescArray.length; ++i)
 				descLines.push(fileDescArray[i]);
@@ -5654,11 +5637,10 @@ function getFileInfoLineArrayForTraditionalUI(pFileList, pIdx, pFormatInfo)
 		// the the description.
 		if (pFileList[pIdx].name.length > gFileListMenu.filenameLen)
 		{
-			var filenameLines = [];
 			var fileDescArray = lfexpand(word_wrap(pFileList[pIdx].name, pFormatInfo.descLen, null, false)).split("\r\n");
 			for (var i = 0; i < fileDescArray.length; ++i)
-				filenameLines.push(fileDescArray[i]);
-			descLines = filenameLines.concat(descLines);
+				fileDescArray[i] = "\x01n" + gColors.filenameInDesc + fileDescArray[i] + "\x01n";
+			descLines = fileDescArray.concat(descLines);
 		}
 	}
 
diff --git a/xtrn/ddfilelister/defaultTheme.cfg b/xtrn/ddfilelister/defaultTheme.cfg
index 8c8c9a77ff788a521c05a92f2fdaf17603a2d771..43651b1684823ee3dd134df5b0ab42f95f7aac65 100644
--- a/xtrn/ddfilelister/defaultTheme.cfg
+++ b/xtrn/ddfilelister/defaultTheme.cfg
@@ -68,3 +68,6 @@ listNumTrad=gh
 fileAreaDescTrad=c
 ; The number of directories/files for 'normal' colors (for moving a file)
 fileAreaNumItemsTrad=bh
+
+; Filename when used in the description
+filenameInDesc=g
diff --git a/xtrn/ddfilelister/readme.txt b/xtrn/ddfilelister/readme.txt
index 56bc50dbe15406671f2ec40db952611a2c40eb18..ac594fe51f4c8a885885f98e8362d7ae7bbb3e69 100644
--- a/xtrn/ddfilelister/readme.txt
+++ b/xtrn/ddfilelister/readme.txt
@@ -372,6 +372,11 @@ fileAreaDescTrad                     The file library/directory description for
 fileAreaNumItemsTrad                 The number of directories/files for
                                      'normal' colors (for moving a file)
 
+filenameInDesc                       The filename when used in the description
+                                     (for instance, if the filename is too long
+                                     to fully fit in the lightbar menu or if
+                                     the file has no description)
+
 
 5. Strings used from text.dat
 =============================
diff --git a/xtrn/ddfilelister/revision_history.txt b/xtrn/ddfilelister/revision_history.txt
index 40a507001d932fd06915a178ed49cad518678322..8b60c07ae2815eadad1f4025bae2589aec2fd259 100644
--- a/xtrn/ddfilelister/revision_history.txt
+++ b/xtrn/ddfilelister/revision_history.txt
@@ -8,6 +8,7 @@ Version  Date         Description
 2.28     2025-02-22   If extended descriptions are enabled and a filename is
                       too long to fully fit in the menu, prepend the full
                       filename (wrapped) to the description.
+                      New color theme option: filenameInDesc
                       New bottom line menu option to toggle extended
                       descriptions on/off
                       Fix: useFilenameIfNoDescription option now used in