From 12e2daaeb92547423949bb5186ec43a0e1b3dbf3 Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Thu, 7 May 2026 13:41:46 -0500 Subject: [PATCH] actions are good for our keyboard inclined --- src/cascadia/TerminalApp/AppActionHandlers.cpp | 10 ++++++++++ src/cascadia/TerminalApp/TerminalPage.cpp | 1 + src/cascadia/TerminalApp/TerminalPage.h | 1 + src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp | 1 + src/cascadia/TerminalSettingsModel/ActionMap.cpp | 1 + .../TerminalSettingsModel/AllShortcutActions.h | 3 ++- .../Resources/en-US/Resources.resw | 3 +++ src/cascadia/TerminalSettingsModel/defaults.json | 1 + 8 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/cascadia/TerminalApp/AppActionHandlers.cpp b/src/cascadia/TerminalApp/AppActionHandlers.cpp index 7737474760..9ec119af08 100644 --- a/src/cascadia/TerminalApp/AppActionHandlers.cpp +++ b/src/cascadia/TerminalApp/AppActionHandlers.cpp @@ -1676,4 +1676,14 @@ namespace winrt::TerminalApp::implementation } } + void TerminalPage::_HandleWorkspaces(const IInspectable& /*sender*/, + const ActionEventArgs& args) + { + if (_workspaceFlyout && _workspaceDropdown) + { + _workspaceFlyout.ShowAt(_workspaceDropdown); + } + args.Handled(true); + } + } diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 338d4f9ffb..718624b400 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -337,6 +337,7 @@ namespace winrt::TerminalApp::implementation auto tabRowImpl = winrt::get_self(_tabRow); _newTabButton = tabRowImpl->NewTabButton(); _workspaceFlyout = tabRowImpl->WorkspaceFlyout(); + _workspaceDropdown = tabRowImpl->WorkspaceDropdown(); // Set the initial workspace name from the window name. // Use raw WindowName() so unnamed windows show no text. diff --git a/src/cascadia/TerminalApp/TerminalPage.h b/src/cascadia/TerminalApp/TerminalPage.h index 5d557d4d35..114b75ea3b 100644 --- a/src/cascadia/TerminalApp/TerminalPage.h +++ b/src/cascadia/TerminalApp/TerminalPage.h @@ -272,6 +272,7 @@ namespace winrt::TerminalApp::implementation Windows::UI::Xaml::Controls::Grid _tabContent{ nullptr }; Microsoft::UI::Xaml::Controls::SplitButton _newTabButton{ nullptr }; Windows::UI::Xaml::Controls::MenuFlyout _workspaceFlyout{ nullptr }; + Windows::UI::Xaml::Controls::Button _workspaceDropdown{ nullptr }; winrt::TerminalApp::ColorPickupFlyout _tabColorPicker{ nullptr }; Microsoft::Terminal::Settings::Model::CascadiaSettings _settings{ nullptr }; diff --git a/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp b/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp index e6246a4ed8..659f8e87cf 100644 --- a/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp +++ b/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp @@ -103,6 +103,7 @@ static constexpr std::string_view OpenScratchpadKey{ "experimental.openScratchpa static constexpr std::string_view OpenAboutKey{ "openAbout" }; static constexpr std::string_view QuickFixKey{ "quickFix" }; static constexpr std::string_view OpenCWDKey{ "openCWD" }; +static constexpr std::string_view WorkspacesKey{ "workspaces" }; static constexpr std::string_view ActionKey{ "action" }; diff --git a/src/cascadia/TerminalSettingsModel/ActionMap.cpp b/src/cascadia/TerminalSettingsModel/ActionMap.cpp index 062d303c33..61f14a2b04 100644 --- a/src/cascadia/TerminalSettingsModel/ActionMap.cpp +++ b/src/cascadia/TerminalSettingsModel/ActionMap.cpp @@ -162,6 +162,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation { ShortcutAction::TogglePaneZoom, USES_RESOURCE(L"TogglePaneZoomCommandKey") }, { ShortcutAction::ToggleShaderEffects, USES_RESOURCE(L"ToggleShaderEffectsCommandKey") }, { ShortcutAction::ToggleSplitOrientation, USES_RESOURCE(L"ToggleSplitOrientationCommandKey") }, + { ShortcutAction::Workspaces, USES_RESOURCE(L"WorkspacesCommandKey") }, }; }(); diff --git a/src/cascadia/TerminalSettingsModel/AllShortcutActions.h b/src/cascadia/TerminalSettingsModel/AllShortcutActions.h index 6ef0e56746..d08d4b7ff5 100644 --- a/src/cascadia/TerminalSettingsModel/AllShortcutActions.h +++ b/src/cascadia/TerminalSettingsModel/AllShortcutActions.h @@ -114,7 +114,8 @@ ON_ALL_ACTIONS(OpenAbout) \ ON_ALL_ACTIONS(QuickFix) \ ON_ALL_ACTIONS(OpenCWD) \ - ON_ALL_ACTIONS(OpenWorkspace) + ON_ALL_ACTIONS(OpenWorkspace) \ + ON_ALL_ACTIONS(Workspaces) #define ALL_SHORTCUT_ACTIONS_WITH_ARGS \ ON_ALL_ACTIONS_WITH_ARGS(AdjustFontSize) \ diff --git a/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw b/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw index acf006a045..b4a9e86e17 100644 --- a/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw +++ b/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw @@ -747,6 +747,9 @@ Open current working directory + + Workspaces... + Close tab diff --git a/src/cascadia/TerminalSettingsModel/defaults.json b/src/cascadia/TerminalSettingsModel/defaults.json index 44efab04ca..8971d3d399 100644 --- a/src/cascadia/TerminalSettingsModel/defaults.json +++ b/src/cascadia/TerminalSettingsModel/defaults.json @@ -542,6 +542,7 @@ { "command": "quickFix", "id": "Terminal.QuickFix" }, { "command": { "action": "showSuggestions", "source": "all"}, "id": "Terminal.Suggestions" }, { "command": "openCWD", "id": "Terminal.OpenCWD" }, + { "command": "workspaces", "id": "Terminal.Workspaces" }, // Tab Management // "command": "closeTab" is unbound by default.