Как скрыть значок Spotlight на Yosemite, но сохранить функциональность Spotlight?

62

Я использую Spotlight в OS X, и мне давно не нравилось его прикрепление к строке меню.

Теперь в Yosemite Spotlight при вызове отображается как наложение в середине экрана, как и другие утилиты запуска, такие как Quicksilver или Alfred. Но значок «Прожектор» все еще застрял в моей строке меню, хотя при щелчке по нему теперь отображается полностью отделенное наложение.

Традиционный способ отключить значок поиска ( chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search) также полностью отключает Spotlight. Я хочу сохранить функциональность Spotlight, но убить (теперь бесполезный) значок меню, так как я могу вызывать Spotlight с помощью Cmd + Space.

Я также попробовал Bartender, который работает, но он и дорогой (15 долларов, чтобы удалить значок!) И странный (это требует времени для запуска, поэтому моя строка меню в итоге смещается на одну минуту после входа в систему)

Какой лучший способ убрать значок Spotlight?

nneonneo
источник
Не проверял и, кажется, может быть немного устаревшим, но вопрос тот же, и ответ помечен и принят. superuser.com/a/32802/375410
Джерран
1
@jherran: К сожалению, это не решает проблему. Я все еще хочу иметь возможность использовать Cmd + Space для запуска наложения Spotlight.
nneonneo

Ответы:

36

Таким образом, я сыт по горло этим и решил исправить это трудным путем.

Я выяснил, где Spotlight инициализирует элемент строки состояния, и я просто установил размер строки состояния на ноль. Это требует редактирования двоичного файла Spotlight . (Обратите внимание, что Search.bundleэто просто маленькая заглушка, которая загружается, SystemUIServerчтобы позволить Spotlight.appконтролировать строку состояния).

Вам придется использовать Терминал для выполнения некоторых команд.

Для OS X 10.10 (Yosemite):

cd /System/Library/CoreServices/Spotlight.app/Contents/MacOS
sudo cp Spotlight Spotlight.bak
sudo perl -pi -e 's|(\x48\xb8\x00\x00\x00\x00\x00\x00)\x42\x40(\x48\x89\x47\x10\x48\xB8\x00\x00\x00\x00\x00\x00\x36\x40)|$1\x00\x00$2|sg' Spotlight
cmp -l Spotlight Spotlight.bak 
sudo codesign -f -s - Spotlight
sudo killall Spotlight

Для OS X 10.11 (El Capitan):

cd /System/Library/CoreServices/Spotlight.app/Contents/MacOS
sudo cp Spotlight Spotlight.bak
sudo perl -pi -e 's|(\x00\x00\x00\x00\x00\x00\x47\x40\x00\x00\x00\x00\x00\x00)\x42\x40(\x00\x00\x80\x3f\x00\x00\x70\x42)|$1\x00\x00$2|sg' Spotlight
cmp -l Spotlight Spotlight.bak 
sudo codesign -f -s - Spotlight
sudo killall Spotlight

cmp -lЛиния должна напечатать что - то вроде следующего:

248855   0 102
248856   0 100

Если ничего не распечатывается, значит, патч не удался. Я проверил это на OS X 10.10.3 (Yosemite) и OS X 10.11.5 (El Capitan; SIP выключен).

Этот патч заменяет значение ширины строки состояния (36.0 или 0000000000004240 в шестнадцатеричном формате с плавающей точкой) на ноль, поэтому при загрузке элемента строки состояния он просто отображает с нулевой шириной, то есть он невидим и не не влияет на макет панели.

Снимок экрана перед этим взломать:

до взлома

Скриншот после этого хака:

после взлома

Иконка меню пропала, но Cmd + Space продолжает работать.


Чтобы вернуться, сделайте следующее:

cd /System/Library/CoreServices/Spotlight.app/Contents/MacOS
sudo mv Spotlight.bak Spotlight
sudo killall Spotlight
nneonneo
источник
Это выглядит действительно круто, но для менее грамотных в терминале среди нас, пожалуйста, не могли бы вы добавить инструкции о том, как вернуться к нормальной жизни, если мы когда-либо склонны?
user24601
3
Добавил эти инструкции.
nneonneo
1
После этого прожектор больше не начинается. $ codesign -f -s - Spotlight Spotlight: replacing existing signature Spotlight: bundle format unrecognized, invalid, or unsuitable
Rnhmjoj
1
Прожектор: замена существующей подписи. Прожектор: формат пакета не распознан, недопустим или непригоден. Подкомпонент: /System/Library/CoreServices/Spotlight.app/Contents/XPCServices/com.apple.metadata.SpotlightNetHelper.xpc
Jarno
2
Все еще действует для Sierra, хотя мне пришлось временно отключить защиту целостности системы ( stackoverflow.com/a/32661637/1252653 ), чтобы дать мне права на дублирование исполняемого файла Spotlight.
tinystride
16

Я бы порекомендовал использовать служебное приложение под названием Bartender. http://www.macbartender.com

Это удобная утилита для управления и изменения способа отображения значков в строке меню. Вы можете оставить их в строке меню, опустить их на панель бармена, которая сама открывается с помощью небольшого значка в строке меню, но может удерживать любой из значков, обычно находящихся в строке меню, или вообще скрывать значок.

Вы можете увидеть скриншот здесь:

введите описание изображения здесь

Али Самии
источник
6
Я сказал, что не хочу использовать Бармена в своем вопросе, но все равно спасибо за указатель.
nneonneo
5
Больше не работает в последней версии обоих (OSX и Bartender :-(
Strinder
2
Обновление: работает, если вы идете по этому пути stackoverflow.com/questions/31640732/…
Стриндер
Совместим с Сьеррой?
Даниэль Спрингер
Как в мире бармен скрывает это так ...
Дэниел Спрингер,
11

В итоге я удалил значок и функцию Spotlight Search и теперь вместо этого использую Alfred ; это быстрее и бесплатно (с платным расширением, которое вам больше всего не нужно).

При удалении видимого приложения Spotlight (и значка) службы индексации не останавливаются, останавливается только графический интерфейс пользователя, т. Е. И значок в верхней панели верхнего меню, и окно поиска при + Space. Вот почему вам нужно другое приложение для доступа к этим индексам, например, Альфред.

Итак, следующая команда, которая меняет разрешение, чтобы сделать Searchне исполняемым.

sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search

как сказано, он не полностью отключает прожектор, он только удаляет графический интерфейс пользователя Spotlight.

Выйти и войти может быть достаточно, если не просто перезагрузить.


Вы можете вернуть его с помощью этой команды

sudo chmod 755 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search

То же самое здесь вы должны выйти или перезапустить.

Этот метод все еще работает с 10.10.3.


Этот метод, вероятно, не совсем то, что задал вопрос, но имеет смысл ограничить манипуляции с ошибками. Просто изменить права доступа к файлам намного проще, чем изменить двоичный файл программы. просто чтобы не показывать иконку Spotlight, бинарный файл Spotlight.

Brice
источник
4
Я сделал это (в Yosemite), но теперь я не могу активировать прожектор с помощью сочетания клавиш! Я должен был sudo chmod 755 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Searchи killall SystemUIServerвернуться обратно.
Рахул Тхакур
@RahulThakur Да, в этом суть ответа, Альфред становится основным инструментом поиска , но он использует индексы центра внимания. Также с Альфредом есть опция, которая будет запущенаctrl+space
Brice
1
Хорошо, но я хочу удалить только значок, а не функциональность. В любом случае, спасибо.
Рахул Тхакур
ХОРОШО. Бармен, возможно, лучший вариант тогда. Но вы определенно хотите попробовать Альфреда. Особенно в отношении информации, которую Apple пропускает при использовании прожектора.
Брайс
Просто перезвонил, что это полностью убило Spotlight для меня и пришлось использовать sudo chmod 755 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Searchи перезагрузить, чтобы это исправить.
Диллон
4

Простое и более широкое решение этой проблемы - скрыть значки в строке меню с помощью Vanilla , которая является бесплатной утилитой, разработанной Мэтью Палмером, и имеет те же основные функции, что и Bartender, но в более минималистском пакете.

http://matthewpalmer.net/vanilla/

JUIL
источник
2

Dozer - еще одно бесплатное приложение, в отличие от Bartender или Vanilla.

xji
источник