Informazioni di contatto sul pannello di sblocco per Mac


5

Qualcuno ha un modo per includere le informazioni di contatto sul pannello di sblocco del Mac? Qualcosa di simile a:

Se trovato, si prega di contattare il mio nome al (555) 555-555 o myname@example.com

Quindi, se dovessi smarrire il mio portatile, questo sarebbe presentato all'apertura.

Unlock after screensaver

Ho anche un biglietto da visita registrato in fondo, ma questa sarebbe una misura aggiuntiva.

generosità per identificare come modificare il file .nib di sblocco per aggiungere le informazioni di contatto


Solo per i motori di ricerca: in 10.6 "Per accedere a questo computer, è necessario inserire la password."; in 10.5 "È necessario autenticarsi per sbloccare lo schermo. Mac OS X richiede che si digiti la password." (Quindi, @Doug, potrebbe davvero importare se sei su 10.5 o 10.6.)
Arjan

Qualcuno della Apple ha fatto un buon lavoro con le parole. Il nuovo è molto meglio.
Doug Harris

Per 10.6, invece di soluzioni alternative nelle risposte qui sotto, forse qualcuno lo sa alcuni defaults write opzione aggiungere del testo al pannello di sblocco? (Proprio come c'è a defaults write per la finestra di accesso). O forse qualcuno sa come fare in modo che lo screensaver invochi Cambio rapido utente anziché...? (Sarebbe comunque una soluzione alternativa). O come mostra l'immagine di sfondo mentre il pannello di sblocco è visibile ?
Arjan

Sarebbe bello aggiungere la funzione su Ubuntu che consente a un passante di "lasciare un messaggio" per l'utente :)
Sable

Sì, sarebbe bello.
Doug Harris

Risposte:


3

Per modificare il testo della finestra di sblocco in Mac OS X 10.6 Snow Leopard

Il testo predefinito della finestra di sblocco, "Per accedere al computer, è necessario inserire la password.", È contenuto in uno dei file .nib in loginwindow.app e può essere modificato con alcune limitazioni.

Primo, cd nella directory corretta:

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

Il .nib che vogliamo modificare è keyedobjects.nib. Esistono due modi per modificare il file.

Modifica del file .nib con un editor di testo in chiaro

Per prima cosa dobbiamo convertire il file .nib codificato in binario in XML:

sudo plutil -convert xml1 keyedobjects.nib

Ora modifica keyedobjects.nib con qualsiasi editor di testo in chiaro; Ho usato vi. Ricorda di avere i permessi di root durante la modifica, tramite sudo o qualsiasi altra cosa:

sudo vi keyedobjects.nib

Sfortunatamente, non c'è un ottimo modo per andare direttamente alla voce corretta. Ci interessa l'articolo 40, ma gli oggetti sono inseriti in modo sequenziale senza indici. Fortunatamente, quello che stiamo cercando sembra essere la prima occorrenza della stringa "password". Quindi cerca solo "password". Troverai il testo corrente all'interno <string> tag.

In realtà, se vuoi essere un geek vi, puoi inserire la seguente sequenza di comandi vi:

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

(Non premere return ovunque ma alla fine.)

Ciò che fa è andare all'inizio del documento e quindi cercare la quarantunesima occorrenza di una riga che inizia con due schede e una parentesi angolare sinistra che non è seguita da una barra. Funziona solo perché plutil formattato l'xml in un modo particolare. Stiamo cercando il 41 ° invece del 40 perché è un array a base zero.

Modifica del file .nib con Xcode

Puoi anche modificare i file .nib direttamente con Xcode, ma, in questo caso, IMO non è molto più semplice in questo caso, e più difficile da eseguire con i permessi di root, anche se è fattibile se hai paura di vi:

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

Come detto sopra, siamo interessati all'articolo 40, e Xcode ti mostra gli indici degli articoli, quindi puoi semplicemente scorrere fino all'elemento 40 e lo hai trovato.

Xcode richiede che il file .nib sia in formato binario1, tuttavia, per poterlo interpretare come .nib e fornire l'interfaccia di fantasia, quindi se vuoi farlo in quel modo, ometti tutti i " plutil -convert " indicazioni.

Modifica del file senza ottenere i permessi di root

Bene, devi ancora avere i permessi di root, ma puoi cambiare i permessi del file e non devi dare i permessi di root al tuo editor, se lo trovi più facile da gestire.

Cambiare (e successivamente modificare) i permessi del file dalla riga di comando:

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

Oppure modificali con il pannello Ottieni informazioni del Finder. Dovrai fare clic con il tasto destro del mouse e "Mostra contenuti" sulla finestra di login e su BuiltInAuth.nib per arrivare al file attraverso il Finder, comunque.

Quindi puoi utilizzare un editor, Xcode, vi o qualsiasi altra cosa, senza che sia necessario disporre dei permessi di root.

Cambiare il testo

Cambiare il testo stesso è abbastanza ovvio. Basta cambiarlo.

Sembra esserci un limite alla quantità di testo che verrà visualizzata nella finestra di sblocco - non andrà oltre le due linee che vedi con il default, anche se tu può riempire la seconda riga - quindi essere conciso.

Inoltre, se la stringa di testo è troppo lunga, sembra che interrompa del tutto lo sblocco; non visualizzerà affatto la finestra di sblocco. Ad esempio, una stringa di 447 caratteri mi ha fatto questo. Non so dove inizia la rottura, però.

Se si desidera iniziare una nuova riga in un punto particolare, non esiste alcun codice di escape o altro; metti una newline direttamente qui:

        <string>line1
line2</string>

La prova è nel budino, o alcuni di questi:

enter image description here

Modifica del carattere (facoltativo)

È anche possibile modificare il carattere e la dimensione del punto dal valore predefinito di 13pt LucidaGrande-Bold. Cambia l'elemento 42 (per un editor di testo, cerca "LucidaGrande-Bold") per nominare qualsiasi font che desideri. (L'applicazione Libro Font mostrerà i caratteri disponibili, il formato sembra essere TypeFace-Weight con spazi spogliati.) La dimensione del punto è contenuta nella chiave NSSize appena prima della dichiarazione del font, nella voce 41.

Ecco un esempio in 8pt Futura-CondensedMedium:

enter image description here

Questa immagine tende a implicare che il limite di altezza non è in realtà due linee, ma una particolare altezza del pixel. (Sembra circa 34 pixel.) Quindi, se si riesce a trovare un font con un'altezza minore e un lead più piccolo, si potrebbe essere in grado di inserire più linee piene. (Potrebbe anche esserci una chiave nel file .nib per modificare l'altezza dell'area di visualizzazione.

Pensieri finali

Questo è tutto; hai finito. Non è obbligatorio, ma se lo hai convertito in xml e lo vuoi veramente, puoi convertire il .nib in formato binario:

sudo plutil -convert binary1 keyedobject.nib

Dovrai disconnetterti e rientrare per farlo diventare effettivo.

codesign verifica

Questa modifica influisce sulla verifica del codesign, tuttavia:

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

Non so quale effetto avrà, in definitiva, ma duplicherò il collegamento di Arjan con possibili effetti della mancata verifica dell'applicazione .


Buona scoperta, questo renderà felice Doug! E non ho mai saputo che si potrebbe semplicemente usare le utilità delle liste di proprietà per sbirciare in quei pennini. L'unica cosa di cui mi sto chiedendo: perché Apple ha inserito le traduzioni nei pennini? Sembra un vero incubo per la manutenzione per me.
Arjan

1
OOOPS, mio codesign il comando era sbagliato! utilizzando --display non convalida nulla; l'eliminazione di quell'opzione trova persino la mia icona modificata. Ho cambiato il codesign comando nella mia risposta; Guarda anche superuser.com/questions/47504/... che spero chiarisca le cose, se rispondo. In questo momento, NON so se questo è un problema. (E, naturalmente, la tua risposta è ancora ciò che Doug ha chiesto!)
Arjan

Oh, wow, questo è un ottimo test che hai fatto: Inoltre, se è troppo lungo, sembra rompere lo sblocco del tutto; non visualizzerà affatto la finestra di sblocco. Immagino che usando Xcode si possa ridimensionare del tutto la finestra di dialogo? (Non è necessario eseguire Xcode come root quando si cambiano temporaneamente le autorizzazioni del file.)
Arjan

Eh. Stavo solo cercando di testare il font e ho copiato alcuni lorem ipsum da qualche parte. Dovevo andare fino in fondo per accedere da remoto e uccidere la finestra di login. :( Odio lo spazio
wfaulk

Aha, stai parlando di eseguire Xcode per modificare il pennino in un elenco di proprietà (che in effetti non è molto meglio dell'utilizzo di vi). Quando ho citato Xcode, ho immaginato che il pennino convertito potesse essere aperto in Interface Builder (che prima del tuo plutil -magic si lamenterebbe che non può aprire pennini compilati. Ma non è il caso, immagino.
Arjan

3

Per 10.6, l'unico modo per cambiare il pannello di sblocco sembra essere cambiando il pennino, come descritto molto bene nella risposta di Wfaulk .

Quindi, questa risposta è utile solo per quelli su 10.5, o per coloro che vogliono cambiare il messaggio nella finestra di login (piuttosto che nel pannello di sblocco). La finestra di login viene anche utilizzata in Cambio rapido utente, ma non per uno screensaver protetto da password.

Per 10.5, in realtà è molto facile. Come aggiungere un messaggio di testo alla finestra di login (dopo il risveglio dal sonno) su macosxhints.com spiega:

È possibile modificare il scorso [prima, AvB] frase di quella finestra di dialogo modificando il file "loginwindow.strings" che si trova in /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj. Avrai bisogno di control-clic su loginwindow.app su "Mostra contenuto pacchetto" (la ".app" è normalmente nascosta).

L'area da modificare ha questo aspetto:

/********** Screen Lock Password **********/
/* Message for unlocking the screen lock modal dialog */
/* It should not mention anything about the METHOD for authentication */
/* such as entering as password. Instructions regarding the method for */
/* for authentication will be appended by the SecurityAgent */
"Enter your password to unlock the screen."="You must [..] screen.";

Il testo in blu ["È necessario autenticare per sbloccare lo schermo.", AvB] è ciò che si desidera modificare. Si prega di fare attenzione a lavorare solo con una copia dell'applicazione di login, in modo da poterla ripristinare facilmente nel caso in cui si commetta un errore.

Effettivamente, questo funziona bene su 10.5.8. (Assicurati di salvare come big-endian UTF-16. La disconnessione è necessaria dopo aver apportato le modifiche, e OS X aggiungerà sempre il testo "Mac OS X richiede che tu digiti la tua password" o qualunque linea sia applicabile.)

Non tanto in 10.6.

La stringa è ancora lì, ma non viene utilizzata poiché la finestra di dialogo ora dice solo "Per accedere a questo computer, è necessario inserire la password." Aggiunge coraggiosamente una linea come la seguente non lavoro:

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

utilizzando strings o hexdump -C, il testo può essere trovato nel pennino (compilato) keyedobjects.nib, all'interno di /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj/BuiltInAuth.nib/ Creazione di un file nuovo di zecca BuiltInAuth.strings con la linea sopra non aiuta. E per altre localizzazioni, il pennino compilato è diverso:

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

Come notato sopra: vedi la risposta di wfaulk per cambiare i testi nei pennini.

Per 10.6, si può cambiare l'immagine Security.icns all'interno della stessa cartella Risorse. (Testato in 10.6.1 Ancora una volta, è necessario disconnettersi dopo aver apportato le modifiche.) Sfortunatamente, l'icona viene ridimensionata per adattarsi alla sua posizione originale e lascia uno spazio molto piccolo in cui giocare:

Unlock screen with custom item

Tuttavia, questo si rompe Firma del codice , quale potrebbe influenzare impostazioni del firewall , e può essere anche l'aggiornamento del software. Non so se questo è davvero un problema; vedere maggiori dettagli a Se la firma del codice Mac viene manomessa, cosa potrebbe fallire?

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

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

Quando si è utilizzati per bloccare manualmente lo schermo, quindi in 10.6, una soluzione alternativa potrebbe essere quella di utilizzare Cambio rapido utente . Per entrambi 10.5 e 10.6, il testo viene facilmente aggiunto alla finestra di accesso (che non è lo stesso del pannello di sblocco):

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

E, in 10.6, Fast User Switching può essere facilmente aggiunto al menu Servizi e viene assegnata una scorciatoia da tastiera. Eppure, questo sarebbe solo funziona quando si blocca manualmente il computer.


2

Potrebbe essere meglio mettere tali informazioni sulla macchina stessa (nastro una scheda sul fondo o qualcosa del genere). La schermata di sblocco potrebbe non essere visibile alla persona che la trova, a seconda dell'ultimo stato del portatile. Se la batteria è morta, non sarà in grado di vedere nulla sullo schermo. Anche se lo collegassero, potrebbe semplicemente avviarsi alla schermata di accesso (a seconda se è stato ibernato con successo, cosa che non sempre accade).

Dovresti mettere le informazioni in più posti se lo fai nel software. Sarà molto più affidabile fare una soluzione "hardware".


2
Ho già una linguetta con la linguetta sul fondo.
Doug Harris

Devo aver digitato quell'ultima sul mio iPhone. Dovresti leggere "Ho già una scheda registrata sul fondo".
Doug Harris

hah. Non ho assolutamente notato l'errore di battitura finché non l'hai menzionato. :)
Herms

Come puoi vedere, mi ci sono volute alcune settimane per notarlo.
Doug Harris

questo è l'errore più incredibile su SU :)
warren

1

In cima alla mia testa, penso che dovrebbe essere possibile modificare lo sfondo predefinito della schermata di login (è in /System/Library/CoreServices/DefaultDesktop.jpg) e aggiungere le informazioni di contatto ad esso. Penso che funzionerebbe in un pizzico.


Bella idea, ma quando blocco lo schermo (tramite screen saver) il pannello di sblocco ha un semplice sfondo nero - non lo screensaver, non il desktop predefinito.
Doug Harris

0

Sì, questo è sicuramente fattibile (cioè se stiamo pensando alla stessa cosa).

Puoi usare VisageLogin per personalizzare molti aspetti diversi della schermata di accesso, incluso il testo visualizzato.


Scaricherò questo, ma non è chiaro dal sito se funziona per il blocco dello schermo o solo per il login. Il 99% delle volte che il mio MacBook è chiuso, è bloccato - non spento, non disconnesso.
Doug Harris

Scusate. Il programma è solo per la schermata di accesso, non per la schermata di blocco. L'unico modo in cui posso pensare di personalizzare la schermata di blocco è cercare di trovare il file .nib Interface Builder e cambiare manualmente l'interfaccia utente (a condizione che tu abbia gli Strumenti per sviluppatori)
Josh Hunt

Oh, buon punto. Ero abituato a fare quel genere di cose nell'era NextStep. Sono tornato su un mac solo l'anno scorso e mezzo. Ho dimenticato i piccoli trucchi.
Doug Harris

La mia ipotesi è che questo in /System/Library/Frameworks/ScreenSaver.framework/Versions/Current/Resources/ScreenSaverEngine.app/Contents/Resources/English.lproj/ScreenSaverEngine.nib ma quando provo ad aprirlo, IB dice "Interfaccia Il costruttore non può aprire i pennini compilati. " Ci sono alcuni hack per aggirare questo, ma non so se mi interessa abbastanza.
Doug Harris
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.