Yandex-Music icon indicating copy to clipboard operation
Yandex-Music copied to clipboard

Скрытие приложения по нажатию на кнопку "Закрыть"

Open Davvie opened this issue 3 years ago • 3 comments

Отличное приложение, спасибо!

Единственное, что было неожиданно для меня - полное закрытие по нажатию на кнопку "Закрыть". Большинство приложений на Маке скрываются, включая Music.app

В этом PR сделал скрытие вместо закрытия

Davvie avatar May 30 '22 08:05 Davvie

Привет! Логика автозавершения обычно используется в приложениях, не поддерживающих многооконность — когда всё равно нельзя создать более чем одно окно. Наглядным системным примером такого паттерна является App Store, он тоже автоматически полностью завершается при закрытии пользователем его единственного окна.

Вообще говоря, фича закрытия окон в macOS предназначена для их удаления из памяти и высвобождения таким образом ресурсов системы. То есть когда вы попытаетесь снова воспользоваться тем или иным приложением после закрытия последнего его окна, для вас будет автоматически создано уже новое окно, с полностью новым внутренним его состоянием, включая сброшенный скролл и так далее. К слову, частое пересоздание окон таким образом — это относительно тяжеловесная история, не очень рациональная в плане производительности и экономии заряда аккумулятора ноутбука.

Системная «Музыка» действительно почему-то оверрайдит дефолтное поведение, по крестику сворачивая окно вместо его удаления. Однако в таком случае остаётся неотвеченным следующий логичный вопрос к разработчикам сего приложения — зачем подобным образом дублируется функциональность, если скрытие и так уже реализовано для всех окон в системе как отдельная самостоятельная фича? Налицо довольно странный UX-антипаттерн.

Возвращаясь к нашей теме, рекомендую пользоваться сворачиванием окна (Command + M) либо его скрытием (Command + H) в зависимости от того, что лично вам удобнее. А оверрайдить крестик на скрытие окна вместо его поведения по умолчанию (закрытия) — слишком уж сомнительный, я считаю, подход с точки зрения адекватности UX и собственных же гайдлайнов Apple. 🤷‍♂️

debug45 avatar May 31 '22 09:05 debug45

Привет! Вообще хороший аргумент, про App Store забыл :)

Про Музыку - там это поведение досталось от iTunes, который тоже так работал. Подозреваю, что такое исключение сделали, потому что пользователь не ожидает, что музыка перестанет играть, когда он закроет окно. И в Spotify тоже так

Из одноэкранных приложений, которые сворачиваются, а не закрываются, смог найти еще системный Календарь и Заметки. Похоже, Apple не строго следует этому правилу

Davvie avatar May 31 '22 14:05 Davvie

Я тут кабанчиком пробегал, кхм. Было бы здорово при нажатии на закрытие приложения убирать его из дока (но не завершать), например в строку меню. Не вижу смысла особого в иконке в доке, если работают кнопки на клавиатуре по переключению треков и постановке на паузу, а если уж очень надо открыть приложение чтобы поискать трек, можно это сделать из меню состояния, или быстро открыв его через спотлайт. В общем я говорю об аналогичном поведении приложения бартендер, или какой-нибудь скриншотер типа shottr

Если в сборку это добавлять не хочется, может умные люди подскажут как исходник пересобрать нужным мне образом?

IlyaShorin avatar Dec 21 '22 12:12 IlyaShorin