Safari Developer Menu Disabled
Por que minha opção "Mostrar menu de desenvolvimento do Safari" estaria esmaecida e não clicável? Tentei encontrar etapas para habilitá-lo, mas todas elas simplesmente dizem clicar na caixa de seleção. Eu preciso fazer login e alterar as configurações de permissão em algum lugar?
Safari versão 13.1.2 (14609.3.5.1.5) em execução em um Macbook Air macOS Mojave versão 10.14.6 (18G6020)
Respostas
Testando em um macOS Mojave 10.14.6 totalmente atualizado com Safari 13.1.2 ao alternar a caixa de seleção Mostrar menu Develop na barra de menu em Safari > Preferências… > Avançado , há dois arquivos PLIST que são modificados. Um arquivo com uma chave modificada e o outro arquivo com três chaves modificadas, ou seja:
- ~ / Library / Preferences / com.apple.Safari.SandboxBroker.plist
- ShowDevelopMenu
- ~ / Library / Containers / com.apple.Safari / Data / Library / Preferences / com.apple.Safari.plist
- IncludeDevelopMenu
- WebKitDeveloperExtrasEnabledPreferenceKey
- WebKitPreferences.developerExtrasEnabled
O valor de todas essas quatro chaves é um booleano , e quando a caixa de seleção Mostrar menu Desenvolver na barra de menu está marcada, o valor é sim , verdadeiro ou 1 dependendo de como se está lendo as configurações.
No Terminal o defaults read ... comando retornará 1ou 0, ou se a chave não estiver presente, ele apresenta um erro com uma mensagem.
O código de script de shell de exemplo , mais abaixo, foi testado e funciona em circunstâncias normais; no entanto, pode não funcionar em um menu Mostrar Desenvolver inativo na caixa de seleção da barra de menus . Dito isso, você realmente não tem nada a perder além de alguns minutos para experimentar.
Notas:
- Importante! Para que este script de shell de exemplo funcione, você precisará, pelo menos temporariamente, adicionar Terminal a Preferências do sistema > Segurança e privacidade > Privacidade > Acesso total ao disco , e o Terminal deve ser fechado ao fazer isso.
- Quando o script de shell de exemplo é executado, o Safari deve ser fechado também, no entanto, conforme codificado, ele o fechará se estiver aberto. Ele também será aberto depois que as alterações forem feitas.
- Por causa de outras medidas de segurança do sistema operacional ( sandbox ), o arquivo com.apple.Safari.plist precisa ser copiado , modificado lá e, em seguida, movido de volta. O script de shell , conforme codificado , trata disso. O arquivo com.apple.Safari.SandboxBroker.plist é modificado no local.
/tmp/ - Conforme codificados, os dois arquivos PLIST são copiados com uma extensão .bak , no entanto, o script de shell pode ser executado apenas uma vez, a menos que seja removido para ambos os arquivos , o que sobrescreverá os backups originais !
ncp -avn - Conforme codificado, ele produzirá informações de depuração (
set -x) e, caso haja um problema, você pode copiar e colar a saída do Terminal para solucionar problemas, se necessário. Portanto, se houver um problema, não feche a janela até que seja copiado e colado em outro lugar para que eu possa vê-lo.
Para usar o exemplo de código de script de shell :
Abra o Terminal e execute o seguinte comando composto :
touch sdmcb; chmod u+x sdmcb; open -e sdmcbCopie e cole o código de script de shell de exemplo no documento sdmcb aberto , salve e feche-o.
De volta ao Terminal, use o seguinte comando para executar o script de shell :
./sdmcb
É isso, isso vai funcionar ou não, é a única coisa que posso pensar em tentar, sem inicializar o macOS Recovery e excluir os dois arquivos PLIST que podem remover uma configuração que está fazendo com que ele fique inativo para começar, se está até mesmo nesses dois arquivos .
Exemplo de código de script de shell :
#!/bin/bash
set -e
set -x
[[ $(ps x | grep '[S]afari.app') == "" ]] || killall Safari; sleep 2 cd "$HOME/Library/Containers/com.apple.Safari/Data/Library/Preferences/" || exit
cp -v 'com.apple.Safari.plist' '/tmp/' || exit
cp -avn 'com.apple.Safari.plist' 'com.apple.Safari.plist.bak' || exit
defaults write '/tmp/com.apple.Safari.plist' "IncludeDevelopMenu" -bool 'yes'
defaults write '/tmp/com.apple.Safari.plist' "WebKitDeveloperExtrasEnabledPreferenceKey" -bool 'yes'
defaults write '/tmp/com.apple.Safari.plist' "WebKitPreferences.developerExtrasEnabled" -bool 'yes'
mv -v '/tmp/com.apple.Safari.plist' .
cd "$HOME/Library/Preferences/" || exit cp -avn 'com.apple.Safari.SandboxBroker.plist' 'com.apple.Safari.SandboxBroker.plist.bak' || exit defaults write "$HOME/Library/Preferences/com.apple.Safari.SandboxBroker.plist" "ShowDevelopMenu" -bool 'yes'
killall cfprefsd
sleep 3
open -a "/Applications/Safari.app"