Редактировать текст окна разблокировки в 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
Я не знаю, какой эффект это будет иметь, в конечном счете, но я дублирую ссылку Арджана на возможные последствия неудачной проверки приложения.