Safari Developer Menu Disabled

Sep 14 2020

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

2 user3439894 Sep 16 2020 at 10:14

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 :

  1. Abra o Terminal e execute o seguinte comando composto :

    touch sdmcb; chmod u+x sdmcb; open -e sdmcb
    
  2. Copie e cole o código de script de shell de exemplo no documento sdmcb aberto , salve e feche-o.

  3. 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"