Como posso ocultar / mostrar o item de menu Wi-Fi do Terminal no OS X?

3

Eu quero poder ocultar e mostrar o item de menu Wi-Fi do Terminal. Posso fazer isso com o comando defaults ?

Reduzi para com.apple.systemuiserver . Parece assim:

{
    "NSWindow Frame NoTimeLeft" = "471 437 475 163 0 0 1366 746 ";
    "__NSEnableTSMDocumentWindowLevel" = 1;
    menuExtras =     (
        "/System/Library/CoreServices/Menu Extras/Script Menu.menu",
        "/System/Library/CoreServices/Menu Extras/AirPort.menu",
        "/System/Library/CoreServices/Menu Extras/TimeMachine.menu",
        "/System/Library/CoreServices/Menu Extras/Battery.menu",
        "/System/Library/CoreServices/Menu Extras/Clock.menu"
    );
}

    
por ggustafsson 07.03.2012 / 19:50

4 respostas

2

Uma grande dificuldade aqui é que a chave menuExtras em com.apple.systemuiserver é uma matriz que é reordenada quando você arrasta seus Extras de Menu pela barra de menus (e os adiciona e remove).

No seu caso citado acima, o Extra Menu Wi-Fi é o segundo item (que é o índice de matriz 1, porque esses arrays são indexados como C arrays), então você pode removê-lo com PlistBuddy , isn ' t no seu $PATH porque está oculto em /usr/libexec . Você precisa usar PlistBuddy porque o comando defaults não possui sintaxe para especificar um índice de matriz. Em seguida, mate SystemUIServer para obtê-lo para recarregar:

/usr/libexec/PlistBuddy -c 'Delete :menuExtras:1' ~/Library/Preferences/com.apple.systemuiserver.plist
killall SystemUIServer

Para adicioná-lo de volta, faça algo assim:

/usr/libexec/PlistBuddy -c 'Add :menuExtras:1 string "/System/Library/CoreServices/Menu Extras/AirPort.menu"' ~/Library/Preferences/com.apple.systemuiserver.plist
killall SystemUIServer

Observe que isso será interrompido se você remover ou adicionar o Menu Extras de forma que o Menu Extra do Wi-Fi não seja o segundo Menu Extra da esquerda na barra de menus. Com um pouco mais de trabalho de script, você poderia percorrer o array menuExtras procurando pelo menu adicional AirPort (Wi-Fi), anote seu índice e, em seguida, insira isso no comando PlistBuddy.

    
por 08.03.2012 / 09:50
0

Eu escrevi um script que percorre o menuExtras e exclui o WiFi. Se você souber o nome do item de menu no Menu Extras, poderá modificá-lo para qualquer outro item de menu. Eu não coloquei um SystemUIServer de matar no final do script. Se você deseja satisfação instantânea, pode adicionar isso como a última linha do script. Um logout / login provavelmente deve funcionar também. Tenho certeza de que as linhas sed também poderiam ser limpas. Isso foi testado no 10.8.4, mas não há razão para que não deva voltar pelo menos a 10.6

#!/bin/sh

# Removes the Wifi menu from the menubar.
# This setting is set on a per-user basis, so needs to be run as the user
# Will require a logout. A 'kill SystemUIServer' might work?

OIFS="$IFS"

menutemp=$(defaults read com.apple.systemuiserver menuExtras)
menutemp2=$(echo $menutemp | sed 's/( //')
menutemp3=$(echo $menutemp2 | sed 's/ )//')

IFS=','
read -a menuitems <<< "$menutemp3"
IFS="$OIFS"

for (( i = 0 ; i < ${#menuitems[@]} ; i++ ))
do
    if [ "${menuitems[$i]}" = '"/System/Library/CoreServices/Menu Extras/AirPort.menu"' ]
    then
        /usr/libexec/PlistBuddy -c "Delete :menuExtras:$i" ~/Library/Preferences/com.apple.systemuiserver.plist
    fi
done
    
por 21.06.2013 / 21:39
0

Uma estratégia diferente para ocultar os ícones de todos os outros usuários. Vá para /System/Library/CoreServices/Menu Extras/ , você verá vários arquivos que terminam com o menu. Clique no menu que você deseja ocultar. Uma vez selecionado o menu, use o teclado e segure o comando + I para o menu Info.

Em Compartilhamento & Permissões :, Clique na caixa Mais (talvez seja necessário desbloquear essa área primeiro) e adicione seu nome de usuário à lista, dando a você mesmo Ler & Escreva Privilégios. Em seguida, altere os privilégios em Everyone para No Access. Deixe o sistema e a roda sozinhos. Feche a janela. Faça o logout e faça o login como outro usuário. Você pode ocultar muitos menus.

    
por 18.05.2016 / 18:11
0

Você pode usar o modo defaults no terminal para usá-lo e não se esqueça de usar o killall SystemUIServer ou reiniciar / logout & login.

# Menu bar: hide the Time Machine, Volume, User and AirPort (WiFi) icons
for domain in ~/Library/Preferences/ByHost/com.apple.systemuiserver.*; do
defaults write "${domain}" dontAutoLoad -array \
    "/System/Library/CoreServices/Menu Extras/TimeMachine.menu" \
    "/System/Library/CoreServices/Menu Extras/Volume.menu" \
    "/System/Library/CoreServices/Menu Extras/User.menu" \
    "/System/Library/CoreServices/Menu Extras/AirPort.menu"
done
defaults write com.apple.systemuiserver menuExtras -array \
    "/System/Library/CoreServices/Menu Extras/Bluetooth.menu" \
    "/System/Library/CoreServices/Menu Extras/Battery.menu" \
    "/System/Library/CoreServices/Menu Extras/Clock.menu"
killall SystemUIServer

Então mova a vez que você quiser se esconder na matriz dontAutoLoad e as que você não está visível na matriz menuExtras .

    
por 12.03.2017 / 12:05