Как выборочно скрыть значки на рабочем столе macOS

Краткое содержание
- Скрипт выборочно скрывает элементы рабочего стола, при этом оставляет подключённые диски и тома видимыми.
- Настройте поведение через массивы переменных для файлов и папок, которые нужно всегда показывать или всегда скрывать.
- Запускайте из приложения Shortcuts или как самостоятельный исполняемый файл для удобного управления рабочим столом.
Рабочий стол macOS легко превращается в цифровой ящик с хламом: файлы, папки, скриншоты. Но можно аккуратно убрать видимый беспорядок, сохранив при этом функциональность и доступ к подключённым устройствам. Ниже — продуманное решение для этой задачи.
Почему не стоит использовать «ядерный» метод по умолчанию
Самый простой способ мгновенно очистить рабочий стол — команда в Терминале:
defaults write com.apple.finder CreateDesktop -bool false && killall Finder
Этот подход работает, но он слишком радикален: он скрывает все элементы, включая подключённые внешние диски и тома, и требует перезапуска Finder. В результате вы теряете быстрый доступ к важным ресурсам и прерываете текущие окна Finder.
Мой скрипт более аккуратный: он помечает ненужные элементы как скрытые (chflags hidden) и не трогает тома. Файлы не переименовываются, что снижает риск поломки автоматизаций и ссылок.
Принцип работы скрипта
Кратко: скрипт проходит по содержимому папки ~/Desktop, определяет, какие элементы являются томами/дисками, проверяет списки исключений («всегда показать» и «всегда скрыть») и переключает атрибут скрытости через chflags без перезапуска Finder.
Определения в одну строку:
- Том: смонтированный диск или том, видимый системе как отдельный ресурс (например, внешний HDD или сетевой том).
- Скрытый файл: файл с атрибутом hidden в macOS, который Finder по умолчанию не показывает.
Преимущества этого подхода
- Сохраняется доступ к подключённым дискам и томам.
- Файлы не переименовываются, поэтому автоматизации и скрипты продолжают работать.
- Не нужно перезапускать Finder: нет потерянных окон и прерываний рабочего процесса.
- Скрипт легко настраивается через массивы в начале файла.
Когда этот метод не подойдёт
- Если вы хотите полностью отключить отображение всех элементов рабочего стола, включая тома — тогда CreateDesktop=false остаётся самым простым решением.
- Если вы используете нестандартные файловые менеджеры вместо Finder, видимость может управляться иначе и chflags не даст ожидаемого результата.
- При системных ограничениях безопасности (например, строгие политики MDM) скрипт может не получить права на изменение атрибутов файлов без дополнительной настройки.
Как использовать скрипт в Apple Shortcuts

- Откройте приложение Shortcuts и создайте новый пустой ярлык.
- Добавьте действие Run Shell Script.
- Удалите стандартный «Hello World» и вставьте скрипт целиком.

Ниже приведён исходный скрипт — вставляйте его без изменений в кодовой части действия:
#!/bin/bash
# Path to the Desktop directory
DESKTOP_PATH="$HOME/Desktop" # Don't edit this line
# List of files and folders to always SHOW
ALWAYS_SHOWN=(
# Add filenames/folders here as needed (examples below)
# "Always Visible Folder" # placeholder/example folder
# "Always Visible File.txt" # placeholder/example file
)
# List of files and folders to always HIDE
ALWAYS_HIDDEN=(
"\$RECYCLE.BIN"# Don't edit this line
# "Always Hidden Folder" # placeholder/example folder
# "Always Hidden File.txt" # placeholder/example file
)
# Function to check if an item is in the ALWAYS_SHOWN array
is_in_always_shown() {
local item_basename="$1"
for shown_item in "${ALWAYS_SHOWN[@]}"; do
if [[ "$item_basename" == "$shown_item" ]]; then
return 0# Match found
fi
done
return 1# No match
}
# Function to check if an item is in the ALWAYS_HIDDEN array
is_in_always_hidden() {
local item_basename="$1"
for hidden_item in "${ALWAYS_HIDDEN[@]}"; do
if [[ "$item_basename" == "$hidden_item" ]]; then
return 0# Match found
fi
done
return 1# No match
}
# Check if any visible non-volume item exists
has_visible_non_volumes=false
for item in "$DESKTOP_PATH"/*; do
if [[ -e "$item" ]]; then
item_basename=$(basename "$item")
# Ignore items in ALWAYS_SHOWN
if is_in_always_shown "$item_basename"; then
continue
fi
# Ignore items in ALWAYS_HIDDEN
if is_in_always_hidden "$item_basename"; then
continue
fi
# Check if the item is not a volume and is not hidden
if [ ! -d "$item" ] || [[ $(diskutil list | grep "$item_basename") == "" ]]; then
if ! ls -ldO "$item" | grep -q "hidden"; then
has_visible_non_volumes=true
break
fi
fi
fi
done
# Toggle visibility accordingly
if $has_visible_non_volumes; then
echo "Hiding all non-volume items (excluding specified exceptions)..."
for item in "$DESKTOP_PATH"/*; do
if [[ -e "$item" ]]; then
item_name=$(basename "$item")
# Check if the item is in the ALWAYS_SHOWN list
if is_in_always_shown "$item_name"; then
continue
fi
# If it's not an exception, hide it
chflags hidden "$item"
fi
done
echo "Non-volume items hidden (except exceptions)."
else
echo "Unhiding all items (excluding specified exceptions)..."
for item in "$DESKTOP_PATH"/*; do
if [[ -e "$item" ]]; then
item_name=$(basename "$item")
# Check if the item is in the ALWAYS_HIDDEN list
if is_in_always_hidden "$item_name"; then
continue
fi
# If it's not an exception, unhide it
chflags nohidden "$item"
fi
done
echo "All items unhidden (except exceptions)."
fi
read more
Запустите ярлык кнопкой Play или сочетанием Command+R, когда окно Shortcuts активно. Первый запуск может запросить разрешение на выполнение скриптов; подтвердите его и запустите снова.

Совет: закрепите ярлык в строке меню для быстрого доступа.
Для продвинутых пользователей: добавьте в массивы ALWAYS_SHOWN и ALWAYS_HIDDEN имена файлов/папок, которые нужно всегда показывать или скрывать. Скрипт работает как переключатель — второй запуск вернёт элементы в исходное состояние.
Использование скрипта как самостоятельного инструмента
Если вы предпочитаете запускать скрипт напрямую:
- Сохраните код в файл, например hide_desktop.sh.
- Сделайте файл исполняемым:
chmod +x /path/to/hide_desktop.sh
- Запускайте из терминала, задавайте хоткей через Alfred или конвертируйте в приложение через Automator.

Быстрые сценарии использования
- Ведение публичных презентаций или стримов: скрываете личные файлы, оставляя подключённые носители видимыми.
- Регулярная уборка: лёгкий переключатель, который возвращает порядок без удаления файлов.
- Рабочие профили: храните в ALWAYS_SHOWN ярлыки на активные проекты для быстрого доступа.
Альтернативные подходы
- Полное отключение рабочего стола через CreateDesktop=false — самый радикальный метод, но он прячет всё.
- Папка-ящик: храните всё в одной папке и показывайте только её. Проще, но требует дисциплины.
- Сторонние утилиты для управления рабочим столом — дают графический интерфейс и дополнительные функции, но могут быть платными или требовать полного диска доступа.
Модель принятия решения: когда использовать этот скрипт
Если вас устраивает, что:
- Вы хотите сохранить видимость томов и внешних дисков.
- Вы не хотите ломать имена файлов или автоматизации.
- Вам нужен быстрый и обратимый способ скрыть визуальный беспорядок.
То этот скрипт — подходящий выбор.
Используйте CreateDesktop=false, если:
- Вам нужно полностью скрыть рабочий стол, включая все тома, и вы готовы к перезапуску Finder.
Критерии приёмки
- При первом запуске видимые файлы (кроме томов и элементов из ALWAYS_SHOWN) получают атрибут hidden и исчезают из Finder на рабочем столе.
- При повторном запуске файлы становятся видимыми (кроме элементов из ALWAYS_HIDDEN).
- Подключённые внешние диски остаются видимыми в любом состоянии.
- Скрипт не переименовывает никаких файлов.
- Finder не перезапускается автоматически и открытые окна Finder сохраняют состояние.
Чек-листы по ролям
Для рядового пользователя:
- Сохранить скрипт в удобное место.
- Сделать исполняемым через chmod.
- Запустить и проверить, что личные файлы исчезают.
Для администратора системы:
- Проверить совместимость с политиками MDM.
- Добавить скрипт в автоматические задания, если нужно.
- Проверить логирование и уведомления об ошибках.
Для разработчика/автоматизатора:
- Убедиться, что автоматизации не зависят от изменения имён файлов.
- Добавить тестовые файлы в Desktop и проверить поведение массивов исключений.
Мини‑методология настройки
- Скопируйте скрипт.
- Добавьте в ALWAYS_SHOWN ключевые ярлыки и папки.
- Добавьте в ALWAYS_HIDDEN временные файлы или мусор.
- Протестируйте в отдельной учетной записи, если не уверены.
Возможные риски и способы их смягчения
Риск: скрипт не имеет прав на изменение атрибутов.
- Смягчение: подтвердите разрешения в Security & Privacy, или запустите от пользователя с нужными правами.
Риск: сторонние менеджеры файлов игнорируют атрибут hidden.
- Смягчение: проверьте совместимость с используемым файловым менеджером.
Риск: MDM/корпоративная политика блокирует выполнение.
- Смягчение: согласуйте с ИТ и используйте утверждённые инструменты.
Однострочный глоссарий
- chflags hidden / nohidden — утилита macOS для установки/снятия флага “скрытый” у файла или папки.
- CreateDesktop — настройка Finder, управляющая видимостью всех элементов рабочего стола.
Заключение
Этот скрипт даёт гибкий, обратимый и безопасный способ поддерживать рабочий стол macOS в порядке, не жертвуя доступом к подключённым томам и не ломая автоматизации. Он удобен как для повседневного использования через Shortcuts, так и для интеграции в рабочие процессы через Alfred, Automator или скриптовые инструменты.
Важно: перед массовым развёртыванием протестируйте поведение в вашей среде и настройте массивы исключений под свои привычки.
Это решение помогает сохранить эстетичность и функциональность рабочего стола — аккуратность без жертв.
Похожие материалы
Kaspersky Password Manager: как исправить ошибки
Как исправить ошибку Usbupdate.exe на Dell
Включение командной панели в Firefox и Edge
Резервное копирование в Windows 11 — настройка и советы
Postman — руководство по API-тестированию