diff --git a/pkg/display/display.go b/pkg/display/display.go index ba126d7..0966c2c 100644 --- a/pkg/display/display.go +++ b/pkg/display/display.go @@ -946,7 +946,14 @@ func (s *Service) handleTrayAction(actionID string) { _, _, _ = s.Core().PERFORM(window.TaskFocus{Name: info.Name}) } case "close-desktop": - // Hide all windows — future: add TaskHideWindow + // Hide all tracked windows using the existing visibility task. + infos := s.ListWindowInfos() + for _, info := range infos { + _, _, _ = s.Core().PERFORM(window.TaskSetVisibility{ + Name: info.Name, + Visible: false, + }) + } case "env-info": // Query environment info via IPC and show as dialog result, handled, _ := s.Core().QUERY(environment.QueryInfo{}) diff --git a/pkg/display/display_test.go b/pkg/display/display_test.go index 05df901..67d7787 100644 --- a/pkg/display/display_test.go +++ b/pkg/display/display_test.go @@ -1049,6 +1049,14 @@ func TestHandleWSMessage_Extended_Good(t *testing.T) { assert.True(t, handled) }) + t.Run("tray close desktop", func(t *testing.T) { + svc.handleTrayAction("close-desktop") + + for _, info := range svc.ListWindowInfos() { + assert.False(t, info.Visible, "window should be hidden after close-desktop") + } + }) + t.Run("tray tooltip", func(t *testing.T) { _, handled, err := svc.handleWSMessage(WSMessage{ Action: "tray:set-tooltip",