Configuração do meu MacBook

jun. 29, 2017·
Julio Batista Silva
Julio Batista Silva
· 11 minutos de leitura
blog

Desativar o [rootless]

System Integrity Protection ("rootless") impede que alguns diretórios e arquivos sejam modificados até mesmo pelo root.

Alguns programas não funcionam bem com o SIP ativado. Faça o seguinte para desativá-lo:

  • Entre em Recovery Mode: Inicie pressionando Command ⌘ + R
  • Abra o terminal: Utilities » Terminal
  • Execute o comando csrutil disable
O SIP é um mecanismo de segurança e deve ser reativado quando possível.

Senha para o root:

sudo passwd

Hostname

sudo scutil --set ComputerName "Air"
sudo scutil --set HostName "Air"
sudo scutil --set LocalHostName "Air"
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server.plist NetBIOSName -string "Air"

Trackpad

Arrastar com três dedos

Accessibility » Mouse & Trackpad » Trackpad Options… » Enable dragging » three finger drag

Scanner

O Xsane, que eu uso no Linux, também funciona no Mac. Ele é open source e bem completo:

brew install sane-backends
brew install xsane

O Vuescan é um app nativo e funciona muito bem, porém é pago.

Zoom

Accessibility » Zoom » Use scroll gesture with modifier keys to zoom: ^ Control

XCode

A última versão do XCode pode ser baixada pela Apple Store ou em https://developer.apple.com/downloads/, onde também está disponível as versões beta.

Se aparecer que o arquivo .xip baixado pelo site da Apple está corrompido, tente abri-lo com outro programa. Aqui o The Unarchiver mostrou “Data Corrupted”, mas com o o Archive Utility funcionou perfeitamente.

Instale as ferramentas de linha de comando:

xcode-select --install
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

Abra o XCode e aceite a licença ou digite “agree” em sudo xcodebuild -license para concordar.

Desative o Gatekeeper para permitir instalar aplicativos baixados da internet

Resolve o “XXX can’t be opened because it is from an unidentified developer”.

sudo spctl --master-disable

System Preferences > Security & Privacy > General » Allow apps downloaded from: Anywhere.

Ative novamente com: sudo spctl --master-enable.

Dotfiles

git clone --recursive https://github.com/jbsilva/dotfiles.git

cd dotfiles

git submodule update --init --recursive

Homebrew

Baixe e instale o Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew tap Homebrew/bundle

brew bundle --file=/Users/julio/dotfiles/Brewfile

Karabiner-Elements

Baixe o Karabiner-Elements

Algumas modificações avançadas podem ser encontradas em https://ke-complex-modifications.pqrs.org/.

Trocar Caps-Lock por ESC

A configuração está nos dotfiles.

Usar Enter no Finder para entrar em um diretório

Usar F2 para renomear

Zplug + Zprezto

O Zplug gerencia os plugins do ZSH. Ele é instalado automaticamente.

ln -s ~/dotfiles/.gitconfig ~
ln -s ~/dotfiles/.config ~
ln -s ~/dotfiles/.zsh ~
ln -s ~/dotfiles/.zshrc ~
sudo cp ~/dotfiles/fstab /etc/fstab

Zsh default shell

command -v zsh | sudo tee -a /etc/shells
sudo chsh -s "$(command -v zsh)" "${USER}"
compaudit | xargs chmod g-w

Zsh completions

Instale a fórmula zsh_completions:

brew install zsh-completions

Adicione $(brew --prefix)/share/zsh-completions ao $FPATH:

FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

Montar HD

Cria a pasta indicada em /etc/fstab e marca ela como não modificável para

que o MacOs não a delete após o disco ser desmontado:

sudo mkdir /Volumes/Elements
sudo chflags uchg /Volumes/Elements/

Monte o disco:

diskutil mount disk2s1

Vim

Vundle

Abra o Vim e baixe os plugins :PluginInstall

Corretor ortográfico

Digite :setlocal spell spelllang=pt_br no Vim e siga as instruções.

Finder

  • Na Home (~)
    • View » Show View Options (Cmd+J):
      • Calculate all sizes,
      • Show Library Folder,
      • Show item info
  • No Desktop
    • Botão direito » Show View Options (Cmd+J):
      • Show item info,
      • Aumenta o Grid spacing

Impedir sleep automático

Existem vários programas para essa função:

  • InsomniaX
  • Caffeine
  • Amphetamine
  • KeepingYouAwake

Estou usando o KeepingYouAwake, que é bem simples e gratuito.

Pela linha de comando existe o caffeinate:

Previne sleep por 1 hora (3600 segundos):

caffeinate -u -t 3600

Previne sleep até comando completar:

caffeinate -s command

Previne sleep até Ctrl-C:

caffeinate -I

Impedir sleep ao abaixar a tampa

sudo pmset -a disablesleep 1

Desativar HD sleep

System Preferences » Energy Saver: desmarcar Put hard disks to sleep when possible

ln -s /Volumes ~/Desktop/

Desativar usuário convidado

System Preferences » Users & Groups: Desmarcar “Allow guest to log in to this computer”.

SSH

Copie suas chaves do backup e dê as permissões adequadas:

cp -r /Volumes/Cofre/.ssh ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/*
chmod 644 ~/.ssh/*.pub

Spotlight

System Preferences » Spotlight

O Spotlight retorna coisas bem inúteis no resultado das buscas. Desative Bookmarks & History, Fonts, Movies, Music, Other, Presentations, etc.

Desmarque “Allow Spotlight Suggestion in Look up”.

NTFS

NTFS-3g

O OSXFuse e o NTFS-3g podem ser instalados pelo Homebrew gratuitamente.

Link mount_ntfs ao ntfs-3g:

sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs

Paragon e Tuxera

Usei o NTFS-3g por muitos anos (tanto no Linux quanto no Mac), mas sua performance realmente deixa a desejar.

Mudei para o Paragon quando precisei fazer o backup de alguns terabytes de dados. A diferença na taxa de transferência foi bem significante.

Considere o Paragon (R$ 34,95) ou o [Tuxera] (R$ 107,13) se você utiliza discos formatados em NTFS.

Python

Virtualenv

$ export PYTHON_CONFIGURE_OPTS="--enable-framework --enable-unicode=ucs4 --enable-ipv6 --enable-loadable-sqlite-extensions"

(Outras opções –enable-shared –with-wide-unicode –with-computed-gotos)

$ pyenv install 2.7-dev
$ pyenv install 3.7-dev
$ pyenv rehash
$ pyenv global 2.7-dev 3.7-dev

O suporte a framework (--enable-framework) é necessário para ferramentas como o YouCompleteMe.

Python libs

pip3 install flake8 ipython matplotlib numpy pep8 pep8-naming pygments scipy unidecode mako coursera awscli neovim

Ruby

Ruby version manager (RVM)

curl -L https://get.rvm.io | bash -s stable --rails

Gems

gem install pygmentize

Defaults

Trackpad e Mouse

Natural scrolling

defaults write NSGlobalDomain com.apple.swipescrolldirection -bool true

Clicar com o toque

defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1

Botão direito

defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 0
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true
defaults -currentHost write NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 0
defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true

Teclado

Ativa tab em modal dialogs

defaults write NSGlobalDomain AppleKeyboardUIMode -int 3

Linguagem

defaults write NSGlobalDomain AppleLanguages -array "en" "de" "pt-BR"

defaults write NSGlobalDomain AppleLocale -string "pt_BR@currency=BRL"

defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters"

defaults write NSGlobalDomain AppleMetricUnits -bool true

Ativa o menu de Debug na App Store

defaults write com.apple.appstore ShowDebugMenu -bool true

Pasta onde as capturas de tela serão salvas

SCREENSHOTS="${HOME}/Desktop/Screenshots" && mkdir "${SCREENSHOTS}" && defaults write com.apple.screencapture location -string "${SCREENSHOTS}"

Ativa repetição de caracteres ao manter uma tecla pressionada (precisa reiniciar)

    $ defaults write -g ApplePressAndHoldEnabled -bool false

Taxa de repetição de teclas mais rápida

    $ defaults write NSGlobalDomain KeyRepeat -int 2

Inicia o Finder na home (~/)

    $ defaults write com.apple.finder NewWindowTarget -string "PfLo"
    $ defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"

Exibe barra de caminho no Finder

    $ defaults write com.apple.finder ShowPathbar -bool true

Exibe barra de status no Finder

    $ defaults write com.apple.finder ShowStatusBar -bool true

Não avisa sobre mudança de extensão

    $ defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false

Verifica atualizações diariamente (default: uma semana)

    $ defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

Exibe ícone de HDs (internos) no desktop

    $ defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true

Exibe ícone de HDs externos no desktop

    $ defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true

Exibe ícone de mídia removível no desktop

    $ defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true

Exibe ícone de servidores no desktop

    $ defaults write com.apple.finder ShowMountedServersOnDesktop -bool true

Não cria .DS_Store em network volumes

    $ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Ativa o menu de desenvovimento e o Web Inspector no Safari

    defaults write com.apple.Safari IncludeInternalDebugMenu -bool true && \
    defaults write com.apple.Safari IncludeDevelopMenu -bool true && \
    defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true && \
    defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true && \
    defaults write NSGlobalDomain WebKitDeveloperExtras -bool true

Mostra caminho absoluto na barra de título do Finder

    $ defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

Exibe ~/Library

    $ chflags nohidden ~/Library

Default Apps

Na mão

    $ vim ~/Library/Preferences/com.apple.LaunchServices.plist

Duti

    $ duti -s org.videolan.vlc .mp4 all

Ativa interface web do CUPS

    $ sudo cupsctl WebInterface=yes

O servidor estará disponível em http://localhost:631/admin.

Lock screen

System Preferences » Security & Privacy » General » Require Password » 5 seconds

Lock: Control + Shift + Power Sleep: Command ⌘ + Option ⌥ + Power

Shortcut: System Preferences » Keyboard » Shortcuts » + » Lock Screen » Atalho

iTerm2

Terminal colorscheme

Aplique o Zenburn

$ wget https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Zenburn.itermcolors

Command ⌘ + i » Colors » Color Presets » Import… » Zenburn.itermcolors » Open General » Copy Current Settings to Selected Profile.

Fonte

O pacote Nerd Fonts foi instalado como Homebrew. Para usá-lo no iTerm2 basta seguir o seguinte:

Preferences » Profiles » Text » Non-ASCII Font » Hack Regular Nerd Font Complete

Login Items

System Preferences » Users & Groups » Current User » Login Items

Deixar apenas:

  • Flux
  • InsomniaX (ou equivalente)
  • SwitchResX Daemon
  • Moom

Chrome como default browser

xdg-mime default chromium.desktop x-scheme-handler/http
xdg-mime default chromium.desktop x-scheme-handler/https

Mute Chrome

Na barra de endereços: chrome://flags/#enable-tab-audio-muting

Hosts

Tenho um script que baixa o arquivo de hosts do someonewhocares.org e o instala automaticamente:

sudo ~/dotfiles/hosts.sh

Um aplicativo que ajuda a gerenciar o arquivo de hosts é o GasMask:

brew cask install gas-mask

Dock

Mantenha apenas programas úteis no Dock:

  • Finder
  • Mail
  • Contacts
  • Calendar
  • iTerm
  • Google Chrome

Spotify

Além de fazer login no Spotify, também é necessário configurar o scrobble para o Last.fm: Preferences » Connect to Last.fm

Preferences: Desativar “Local Files”

Dicas

Não deixar capa separada em Two Page view no Preview

Sempre que você exibir um PDF duas páginas por vez, o Preview irá mostrar a primeira página separadamente como se fosse a capa de um livro. Às vezes não é isso que queremos e não tem como desabilitar essa “feature”, mas há um macete: insira uma página em branco e mova ela como primeira página: Edit » Insert » Blank Page; View » Contact Sheet arraste a página em branco para a primeira posição.

Scroll no terminal

Shift+fn+UP e Shift+fn+DOWN

Mail

Configurar emails do Gmail é trivial, mas além deles eu também uso um email do meu próprio host.

Se o Mail não reconhecer automaticamente a função de cada pasta imap, será preciso definir manualmente. Ex.:

Selecione Deleted Messages » Mailbox » Use This Mailbox As » Trash Mailbox

PATH

Verifique se a ordem dos diretórios em /etc/paths está em ordem e todos os diretórios estão presentes.

Programas instalados sem Homebrew

  • Adobe Acrobat Pro ou PDF Expert: Visualização e edição de PDFs
  • Adobe Lightroom: Organizar galeria de fotos
  • Adobe Photoshop: Edição de imagens
  • CleanMyMac: Manutenção do sistema
  • Dash: API Documentation Browser
  • iStat Menu: Menu bar com status de CPU/Memória/Rede/etc
  • LittleSnitch: Bloqueia conexões indesejadas. Alternativa gratuita: Lulu
  • MacPaw Gemini: Remove arquivos duplicados
  • Microsoft Office
  • Many Tricks Moom: Gerencia janelas
  • Parallels: Virtualização
  • SideSync: Para gerenciar dispositivos da Samsung
  • SwitchResX: Resolução da tela
  • Vuescan: scanner (alternativa free: xsane)
  • Wunderlist

Firewall

O OS X vem com o pfctl. O LittleSnitch e o Lulu também permitem gerenciar as conexões de saída.

Certificados SSL

No meu caso, tenho que adicionar os certificados da universidade: moodle.dc.ufscar.br

MySQL

CLI

brew install mysql
mysql.server start
mysql_secure_installation
mysql_upgrade -u root -p
mysql.server restart
$ mysql -u root -p
  mysql> select host, user, password from mysql.user;
  mysql> CREATE USER 'julio'@'localhost' IDENTIFIED BY '123456';
  mysql> GRANT ALL PRIVILEGES ON *.* TO 'julio'@'localhost' WITH GRANT OPTION;
  mysql> show variables;
  mysql> show databases;
  mysql> use nome_do_esquema;
$ mysql.server stop

MySQL Workbench

brew cask install mysqlworkbench

Apache

Descomente as seguintes linhas em /etc/apache2/httpd.conf:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
Pasta de usuário

Descomente as seguintes linhas em /etc/apache2/httpd.conf:

LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf

Descomente a seguinte linha em /etc/apache2/extra/httpd-userdir.conf:

Include /private/etc/apache2/users/*.conf

Crie o arquivo /etc/apache2/users/julio.conf:

<Directory "/Users/julio/Sites/">
    Options Indexes MultiViews FollowSymLinks
    Require all granted
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Reinicie o Apache com sudo apachectl restart.

Crie a pasta ~/Sites:

mkdir ~/Sites

PHP

sudo cp /etc/php.ini.default /etc/php.ini
sudo -e /etc/php.ini

phpMyAdmin

sudo vim /etc/apache2/httpd.conf
Alias /phpmyadmin /usr/local/share/phpmyadmin
<Directory /usr/local/share/phpmyadmin/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
    </IfModule>
</Directory>

Google KSFetch

O Google verifica updates de hora em hora. Mude isso para 7 dias:

defaults write com.google.Keystone.Agent checkInterval 604800

Ou desative a verificação por completo:

defaults write com.google.Keystone.Agent checkInterval 0

iTerm2 + tmux

O iTerm2 é integrado com o tmux, um terminal multiplexer.

Instale pelo homebrew:

brew install tmux

Control mode:

tmux -CC

Byobu

Melhor que screen e tmux

Update: também considere o Zellij.

Date

Date & Time:

  • Use a 24-hour clock,
  • Show the day of the week,
  • Show date

iBooks

Toda vez que você abre um .epub, o iBooks copia ele para o diretório /Users/julio/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks.

O original é mantido onde estava. Pode ser útil deletar os arquivos (pelo próprio iBooks) para economizar espaço.

Inline attachment viewing type:

defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
defaults write com.apple.mail DisableInlineAttachmentViewing -bool false

Github

git config --global credential.helper osxkeychain

Isso já é configurado no ~/.gitconfig.

Dicionários

Dict.cc

Baixe de http://www.dict.cc/?s=about%3Awordlist

iStat Menus

Settings » Date & Time:

  • Desmarcar Show date and time in menu bar.

Settings » Energy Saver:

  • Desmarcar Show battery status in menu bar.

Rearranje os itens do menu arrastando-os enquanto pressiona a tecla Command (⌘).

Skype

Skype » Preferences… » Save files in: ~/Downloads/Skype

Telegram

Telegram » Preferences… » Advanced Settings » Save documents to: ~/Download/Telegram


Julio Batista Silva
Authors
Senior Cloud Developer

Sou um engenheiro de computação brasileiro baseado na Alemanha, apaixonado por tecnologia, ciência, fotografia e línguas.

Programo há cerca de duas décadas, explorando desde aplicativos móveis e desenvolvimento web até aprendizado de máquina. Atualmente, foco em SRE de nuvem e engenharia de dados.

Sou voluntário nas comunidades de open source e Python, ajudando a organizar a PyCon DE e a PyData Berlin, mentorando e contribuindo com código e traduções.

No meu blog, compartilho dicas de Linux, guias de configuração e notas pessoais que escrevo para referência futura. Espero que outras pessoas também as considerem úteis. O conteúdo está disponível em vários idiomas.

Visite minha galeria para ver algumas das minhas fotografias.

Longe do teclado, você vai me encontrar em shows, tocando clarinete, pedalando, mergulhando ou explorando novos lugares, culturas e culinárias.

Sempre feliz em me conectar! 🙂

comments powered by Disqus