Контактная информация по панели разблокировки Mac

Контактная информация по панели разблокировки Mac

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

Если вы нашли меня, пожалуйста, свяжитесь с My Name по телефону (555) 555-555 или[email protected]

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

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

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

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

решение1

Редактирование текста окна разблокировки в 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, но объекты просто вводятся последовательно без индексов. К счастью, то, что мы ищем, оказывается первым вхождением строки "password". Так что просто ищите "password". Вы найдете текущий текст внутри <string>тегов.

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

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

(Не нажимайте клавишу «Ввод» нигде, кроме конца.)

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

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

Вы также можете редактировать файлы .nib напрямую с помощью Xcode, но, на мой взгляд, в данном случае это не так уж и просто, и сложнее запустить с правами 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

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

Затем вы можете использовать редактор Xcode, vi или любой другой, без необходимости иметь права root.

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

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

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

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

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

        <string>line1
line2</string>

Доказательство в пудинге или чем-то подобном:

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

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

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

Вот пример шрифта Futura-CondensedMedium размером 8pt:

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

Это изображение, как правило, подразумевает, что ограничение высоты на самом деле составляет не две строки, а определенную высоту в пикселях. (Похоже, около 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

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

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

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

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

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

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

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

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

В версии 10.6 все не так уж и много.

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

"Чтобы получить доступ к этому компьютеру, вам необходимо ввести свой пароль."="Позвони мне! Даг.";

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

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

grep -iR \
  «U moet uw wachtwoord opgeven om toegang te krijgen tot deze computer». *
Двоичный файл Dutch.lproj/BuiltInAuth.nib/keyedobjects.nib соответствует

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

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

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

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

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

/[..]/loginwindow.app: запечатанный ресурс отсутствует или недействителен
/[..]/Contents/Resources/Security.icns: ресурс изменен

Если вы привыкли блокировать экран вручную, тов версии 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 [email protected]'

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

решение3

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

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

решение4

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

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

Связанный контент