Index: tiddlers/EditTemplate.tiddler
===================================================================
--- tiddlers/EditTemplate.tiddler	(revision 3679)
+++ tiddlers/EditTemplate.tiddler	(working copy)
@@ -1,6 +1,6 @@
 <div title="EditTemplate">
 <pre><!--{{{-->
-<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
+<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
 <div class='title' macro='view title'></div>
 <div class='editor' macro='edit title'></div>
 <div macro='annotations'></div>
Index: tiddlers/ViewTemplate.tiddler
===================================================================
--- tiddlers/ViewTemplate.tiddler	(revision 3679)
+++ tiddlers/ViewTemplate.tiddler	(working copy)
@@ -1,6 +1,6 @@
 <div title="ViewTemplate">
 <pre><!--{{{-->
-<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
+<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
 <div class='title' macro='view title'></div>
 <div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
 <div class='tagging' macro='tagging'></div>
Index: js/Config.js
===================================================================
--- js/Config.js	(revision 3679)
+++ js/Config.js	(working copy)
@@ -110,6 +110,7 @@
 		touched: {},
 		filter: {}
 	},
+	listCommands: {},
 	closeAll: {},
 	permaview: {},
 	saveChanges: {},
Index: js/Lingo.js
===================================================================
--- js/Lingo.js	(revision 3679)
+++ js/Lingo.js	(working copy)
@@ -402,7 +402,8 @@
 	SiteUrl: "http://www.tiddlywiki.com/",
 	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>',
 	SideBarTabs: '<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>',
-	TabMore: '<<tabs txtMoreTab "Missing" "Missing tiddlers" TabMoreMissing "Orphans" "Orphaned tiddlers" TabMoreOrphans "Shadowed" "Shadowed tiddlers" TabMoreShadowed>>'});
+	TabMore: '<<tabs txtMoreTab "Missing" "Missing tiddlers" TabMoreMissing "Orphans" "Orphaned tiddlers" TabMoreOrphans "Shadowed" "Shadowed tiddlers" TabMoreShadowed>>',
+	ToolbarCommands: "|~ViewToolbar|closeTiddler closeOthers +editTiddler > fields syncing permalink references jump|\n|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|"});
 
 merge(config.annotations,{
 	AdvancedOptions: "This shadow tiddler provides access to several advanced options",
@@ -436,6 +437,7 @@
 	TabMoreShadowed: "This shadow tiddler contains the contents of the 'Shadowed' tab in the right-hand sidebar",
 	TabTags: "This shadow tiddler contains the contents of the 'Tags' tab in the right-hand sidebar",
 	TabTimeline: "This shadow tiddler contains the contents of the 'Timeline' tab in the right-hand sidebar",
+	ToolbarCommands: "This shadow tiddler determines what commands are available in tiddlers' toolbars. \n\n\">\" will be replaced by \"more\", and will show the commands to the right when clicked.\nUse \"+\" before the command to make it the default command.\nUse \"-\" before the command to make it the cancel command.\n\nThe available commands are: <<listCommands>>",
 	ViewTemplate: "The HTML template in this shadow tiddler determines how tiddlers look"
 	});
 
Index: js/Macros.js
===================================================================
--- js/Macros.js	(revision 3679)
+++ js/Macros.js	(working copy)
@@ -68,6 +68,15 @@
 	return results;
 };
 
+config.macros.listCommands.handler = function(place,macroName,params)
+{
+	var text = ["|!Command|!Description|h"];
+	for (var c in config.commands){
+		text.push("|''"+ c +"''|"+ config.commands[c].tooltip +"|");
+	}
+	wikify(text.join("\n"),place);
+}
+
 config.macros.allTags.handler = function(place,macroName,params)
 {
 	var tags = store.getTags(params[0]);

