From 483c40849786f6a00839029c884b31c279e82d7c Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 19:03:11 +0000 Subject: [PATCH] Implement tray close-desktop action --- pkg/display/display.go | 9 ++++++++- pkg/display/display_test.go | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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",