5

У кого-нибудь есть способ добавить контактную информацию на панель разблокировки Mac? Что-то вроде:

Если найдено, пожалуйста, свяжитесь с Мое Имя по телефону (555) 555-555 или myname@example.com

Так что, если бы я потерял свой ноутбук, он был бы представлен при открытии.

Разблокировать после заставки

У меня тоже есть визитка, приклеенная ко дну, но это будет дополнительная мера.

Награда за определение того, как отредактировать файл разблокировки .nib, чтобы добавить контактную информацию

5 ответов5

3

Для 10.6 единственным способом изменить панель разблокировки, кажется, является изменение пера, как очень хорошо описано в ответе wfaulk.

Таким образом, этот ответ полезен только для тех, кто на 10.5, или для тех, кто хочет изменить сообщение в окне входа в систему (а не на панели разблокировки). Окно входа в систему также используется при быстром переключении пользователей, но не для экранной заставки, защищенной паролем.

Для 10.5 это на самом деле очень просто. Как добавить текстовое сообщение в окно входа в систему (после пробуждения из спящего режима) на macosxhints.com объясняет:

Вы можете отредактировать последнее [первое, AvB] предложение этого диалога, отредактировав файл «loginwindow.strings», расположенный в /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj. Вам нужно будет щелкнуть по кнопке loginwindow.app, чтобы "Показать содержимое пакета" («.app» обычно скрыт).

Область для редактирования выглядит так:

/********** Пароль блокировки экрана ********** //* Сообщение о разблокировке модального диалогового окна блокировки экрана * //* В нем ничего не должно упоминаться о МЕТОДЕ аутентификации * //* например, ввод в качестве пароля. SecurityAgent добавит инструкции относительно метода * //* для аутентификации * /"Введите пароль, чтобы разблокировать экран." = "Вы должны [..] экран.";

Текст синим [«Вы должны авторизоваться, чтобы разблокировать экран.», AvB] - это то, что вы хотите изменить. Пожалуйста, позаботьтесь о том, чтобы работать только с копией приложения loginwindow, чтобы вы могли легко восстановить его в случае ошибки.

Действительно, это работает нормально на 10.5.8. (Убедитесь, что сохранены как UTF-16 с прямым порядком байтов. Выход из системы необходим после внесения изменений, и OS X всегда будет добавлять текст «Mac OS X требует, чтобы вы вводили свой пароль» или любую другую строку.)

Не так много в 10.6.

Строка все еще там, но не используется, так как диалоговое окно теперь говорит только:«Чтобы получить доступ к этому компьютеру, вам нужно ввести свой пароль». Смело добавление такой строки не работает:

"To access this computer, you need to enter your password."="Call me! Doug.";

Используя strings или hexdump -C , текст можно найти в (скомпилированном) keyedobjects.nib , в /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj/BuiltInAuth.nib/ Создание совершенно нового Файл BuiltInAuth.strings с вышеприведенной строкой не помогает. И для других локализаций скомпилированный кончик также отличается:

cd /System/Library/CoreServices/loginwindow.app/Contents/Resources/ 

grep -iR \
  "U moet uw wachtwoord opgeven om toegang te krijgen tot deze computer." *
Binary file Dutch.lproj/BuiltInAuth.nib/keyedobjects.nib matches

Как отмечено выше: см . Ответ wfaulk, чтобы изменить тексты в перьях.

Для версии 10.6 можно изменить образ Security.icns в той же папке ресурсов. (Проверено в 10.6.1. Опять же, выход необходим после внесения изменений.) К сожалению, значок масштабируется, чтобы соответствовать его первоначальному месту, и это оставляет одну очень маленькую комнату для игры:

      Разблокировать экран с пользовательским элементом

Однако это нарушает подписывание кода, что может повлиять на настройки брандмауэра и, возможно, также обновление программного обеспечения. Я не знаю, действительно ли это проблема; подробнее см. в разделе « Подделка кода Mac», что может привести к сбою?

codesign -vvv /System/Library/CoreServices/loginwindow.app

/[..]/loginwindow.app: a sealed resource is missing or invalid
/[..]/Contents/Resources/Security.icns: resource modified

Когда один из них используется для ручной блокировки экрана, то в 10.6 можно обойти это решение - использовать быстрое переключение пользователей. Как для 10.5, так и для 10.6 текст легко добавляется в окно входа в систему (которое отличается от панели разблокировки):

sudo defaults write /Library/Preferences/com.apple.loginwindow \
  LoginwindowText -string \
  'If found, please contact My Name at (555) 555-555 or myname@example.com'

А в 10.6 быстрое переключение пользователей можно легко добавить в меню «Службы» и назначить сочетание клавиш. Тем не менее, это будет работать только при ручной блокировке компьютера.

3

Редактировать текст окна разблокировки в Mac OS X 10.6 Snow Leopard

Текст по умолчанию для окна разблокировки «Чтобы получить доступ к этому компьютеру, вам необходимо ввести свой пароль.» Содержится в одном из файлов .nib в файле loginwindow.app и может быть изменен с некоторыми ограничениями.

Сначала cd в соответствующий каталог:

cd /System/Library/CoreServices/loginwindow.app/\
Contents/Resources/English.lproj/BuiltInAuth.nib

.Nib, который мы хотим редактировать, это keyedobjects.nib . Есть два способа отредактировать файл.

Редактирование файла .nib с помощью редактора открытого текста

Сначала мы должны преобразовать двоичный кодированный файл .nib в XML:

sudo plutil -convert xml1 keyedobjects.nib

Теперь отредактируйте файл keyedobjects.nib в любом текстовом редакторе; Я использовал vi. Не забудьте иметь права root при редактировании через sudo или что-то еще:

sudo vi keyedobjects.nib

К сожалению, нет хорошего способа окончательно перейти непосредственно к правильной записи. Нас интересует пункт 40, но объекты просто вводятся последовательно без индексов. К счастью, то, что мы ищем, является первым появлением строки "пароль". Так что просто ищите "пароль". Вы найдете текущий текст внутри тегов <string> .

На самом деле, если вы хотите быть vi-гиком, вы можете ввести следующую последовательность команд vi:

1G41/^\t\t<[^/]

(Не нажимайте кнопку возврата, кроме как в конце.)

Для этого перейдите в начало документа и затем найдите 41-е вхождение строки, которая начинается с двух вкладок и левой угловой скобки, за которой не следует косая черта. Это работает только потому, что plutil форматировал XML определенным образом. Мы ищем 41-й, а не 40-й, потому что это массив с нулями.

Редактирование файла .nib с помощью Xcode

Вы также можете редактировать файлы .nib напрямую с XCode, но, IMO, на самом деле это не так уж и намного проще в этом случае и труднее работать с правами root, хотя это выполнимо, если вы боитесь vi:

sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode \
/System/Library/CoreServices/loginwindow.app/Contents/Resources/\
English.lproj/BuiltInAuth.nib/keyedobjects.nib

Как указано выше, нас интересует пункт 40, и XCode показывает вам индексы элементов, так что вы можете просто прокрутить вниз до пункта 40, и вы нашли его.

Xcode требует, чтобы .nib был в формате binary1, хотя для того, чтобы он интерпретировал его как .nib и предоставил вам необычный интерфейс, поэтому, если вы хотите сделать это таким образом, опустите все « plutil -convert направления.

Редактирование файла без получения root-прав

Ну, у вас все еще должны быть права доступа root, но вы можете изменить права доступа к файлу, и вам не нужно давать разрешения root вашему редактору, если вы считаете, что с этим проще иметь дело.

Либо измените (а затем измените обратно) права доступа к файлу из командной строки:

chmod o+w keyedobjects.nib
chmod o-w keyedobjects.nib

Или измените их с помощью панели "Найти" в Finder. Вам нужно будет щелкнуть правой кнопкой мыши и "Показать содержимое" в loginwindow и BuiltInAuth.nib, чтобы получить доступ к файлу через Finder.

Затем вы можете использовать редактор, Xcode, vi или что-то еще, без необходимости иметь права root.

Изменение текста

Изменение самого текста довольно очевидно. Просто измени это.

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

Кроме того, если текстовая строка слишком длинная, кажется, что она полностью блокируется; окно разблокировки вообще не будет отображаться. Например, строка из 447 символов сделала это для меня. Я не знаю, где начинается поломка, хотя.

Если вы хотите начать новую строку в определенном месте, здесь нет escape-кода или чего-либо еще; просто вставьте туда новую строку:

        <string>line1
line2</string>

Доказательство в пудинге, или некоторых таких:

Изменение шрифта (необязательно)

Вы даже можете изменить шрифт и размер шрифта по умолчанию 13pt LucidaGrande-Bold. Измените пункт 42 (для текстового редактора найдите «LucidaGrande-Bold»), чтобы назвать любой шрифт, который вы хотите. (Приложение Font Book покажет вам доступные шрифты; похоже, формат TypeFace-Weight с пропущенными пробелами.) Размер точки содержится в ключе NSSize непосредственно перед объявлением шрифта, в пункте 41.

Вот пример в 8pt Futura-CondensedMedium:

Это изображение будет означать, что предел высоты на самом деле не две линии, а конкретная высота пикселя. (Похоже, около 34 пикселей.) Итак, условно, если вы можете найти шрифт с меньшей высотой и меньшим начальным шрифтом, вы сможете разместить больше полных строк. (Возможно, в файле .nib даже есть ключ для изменения высоты области отображения. Я не смотрел, хотя.)

Последние мысли

Это оно; все готово Это не обязательно, но если вы преобразовали его в xml и действительно хотите, вы можете преобразовать .nib обратно в двоичную форму:

sudo plutil -convert binary1 keyedobject.nib

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

проверка codesign

Это изменение влияет на проверку кодового знака, хотя:

% codesign -vvvv /System/Library/CoreServices/loginwindow.app
/[...]/loginwindow.app: a sealed resource is missing or invalid
/[...]/loginwindow.app/[...]/keyedobjects.nib: resource modified

Я не знаю, какой эффект это будет иметь, в конечном счете, но я дублирую ссылку Арджана на возможные последствия неудачной проверки приложения.

2

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

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

1

Вдобавок ко всему, я думаю, что должна быть возможность отредактировать фон по умолчанию экрана входа в систему (он находится в /System/Library/CoreServices/DefaultDesktop.jpg) и добавить к нему контактную информацию. Я думаю, что это будет работать в крайнем случае.

0

Да, это определенно выполнимо (то есть, если мы думаем об одном и том же).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .