Configuração do meu MacBook

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
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.
Links para os dotfiles
ln -s ~/dotfiles/.gitconfig ~
ln -s ~/dotfiles/.config ~
ln -s ~/dotfiles/.zsh ~
ln -s ~/dotfiles/.zshrc ~
Cópia dos dotfiles que não podem ser links
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
- Botão direito »
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
Link para /Volumes no Desktop
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
- 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
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
Links
- https://gist.github.com/1623487.git
- Rootless: https://en.wikipedia.org/wiki/System_Integrity_Protection
- Segurança: https://github.com/lfit/itpol/blob/master/linux-workstation-security.md
- https://www.reddit.com/r/osx/comments/300chd/what_are_the_most_essential_apps_for_os_x_in/
- https://github.com/monfresh/laptop
- https://gist.github.com/adamstac/822811
- http://mikebuss.com/2014/02/02/a-beautiful-productive-terminal-experience/
- http://www.defaults-write.com/
- http://www.slant.co/topics/526/~window-manager-for-mac
- http://www.sunrisepage.com/computers/osx/osx1011.htm
- http://www.reecefowell.com/2012/11/16/ksfetch-annoyance-on-mac-os-x-10-8-ml-with-hands-off-or-little-snitch-firewall/
- https://gitlab.com/gnachman/iterm2/wikis/TmuxIntegration
- http://www.simononsoftware.com/virtualenv-tutorial-part-2/
- https://www.tekrevue.com/tip/gatekeeper-macos-sierra/
- https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection

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! 🙂