Configuración de mi MacBook

jun. 29, 2017·
Julio Batista Silva
Julio Batista Silva
· 11 min de lectura

Desactivar el [rootless]

System Integrity Protection (“rootless”) impide que algunos directorios y archivos sean modificados incluso por el usuario root.

Algunos programas no funcionan bien con el SIP activado. Haz lo siguiente para desactivarlo:

  • Entra en el Modo Recuperación: Inicia presionando Command ⌘ + R
  • Abre el Terminal: Utilities » Terminal
  • Ejecuta el comando csrutil disable
El SIP es un mecanismo de seguridad y debe reactivarse cuando sea posible.

Contraseña para 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

Arrastrar con tres dedos

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

Escáner

Xsane, que uso en Linux, también funciona en Mac. Es open source y bastante completo:

brew install sane-backends
brew install xsane

Vuescan es una app nativa y funciona muy bien, pero es de pago.

Zoom

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

Xcode

La última versión de Xcode puede descargarse desde la Apple Store o en https://developer.apple.com/downloads/, donde también están disponibles las versiones beta.

Si aparece que el archivo .xip bajado desde el sitio de Apple está corrupto, intenta abrirlo con otro programa. Aquí The Unarchiver mostró “Data Corrupted”, pero con Archive Utility funcionó perfectamente.

Instala las herramientas de línea de comandos:

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

Abre Xcode y acepta la licencia o escribe “agree” en sudo xcodebuild -license para aceptar.

Desactiva Gatekeeper para permitir instalar aplicaciones descargadas de Internet

Soluciona el mensaje “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.

Activa de nuevo con: sudo spctl --master-enable.

Dotfiles

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

cd dotfiles

git submodule update --init --recursive

Homebrew

Descarga e instala 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

Descarga Karabiner-Elements

Algunas modificaciones avanzadas pueden encontrarse en https://ke-complex-modifications.pqrs.org/.

Cambiar Caps Lock por ESC

La configuración está en los dotfiles.

Usar Enter en el Finder para entrar en un directorio

Usar F2 para renombrar

Zplug + Zprezto

Zplug gestiona los plugins de ZSH. Se instala automáticamente.

Enlaces a los dotfiles

ln -s ~/dotfiles/.gitconfig ~
ln -s ~/dotfiles/.config ~
ln -s ~/dotfiles/.zsh ~
ln -s ~/dotfiles/.zshrc ~

Copia de los dotfiles que no pueden ser enlaces

sudo cp ~/dotfiles/fstab /etc/fstab

Zsh como shell por defecto

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

Autocompletado de Zsh

Instala la fórmula zsh_completions:

brew install zsh-completions

Añade $(brew --prefix)/share/zsh-completions al $FPATH:

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

Montar disco

Crea la carpeta indicada en /etc/fstab y márcala como no modificable

para que macOS no la elimine después de desmontar el disco:

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

Monta el disco:

diskutil mount disk2s1

Vim

Vundle

Abre Vim y descarga los plugins: :PluginInstall

Corrector ortográfico

Escribe :setlocal spell spelllang=pt_br en Vim y sigue las instrucciones.

Finder

  • En la Home (~)
    • View » Show View Options (Cmd+J):
      • Calculate all sizes,
      • Show Library Folder,
      • Show item info
  • En el Escritorio
    • Botón derecho » Show View Options (Cmd+J):
      • Show item info,
      • Aumenta el Grid spacing

Evitar reposo automático

Existen varias apps para esta función:

  • InsomniaX
  • Caffeine
  • Amphetamine
  • KeepingYouAwake

Estoy usando KeepingYouAwake, que es muy simple y gratuito.

Por línea de comandos existe caffeinate:

Evita el reposo por 1 hora (3600 segundos):

caffeinate -u -t 3600

Evita el reposo hasta que el comando termine:

caffeinate -s command

Evita el reposo hasta Ctrl-C:

caffeinate -I

Evitar reposo al bajar la tapa

sudo pmset -a disablesleep 1

Desactivar reposo del disco duro

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

Enlace a /Volumes en el Escritorio

ln -s /Volumes ~/Desktop/

Desactivar usuario invitado

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

SSH

Copia tus claves del backup y dales los permisos adecuados:

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

Spotlight

System Preferences » Spotlight

Spotlight devuelve cosas poco útiles en los resultados. Desactiva Bookmarks & History, Fonts, Movies, Music, Other, Presentations, etc.

Desmarca “Allow Spotlight Suggestion in Look up”.

NTFS

NTFS-3g

OSXFuse y NTFS-3g pueden instalarse con Homebrew gratuitamente.

Enlaza mount_ntfs a ntfs-3g:

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

Paragon y Tuxera

Usé NTFS-3g por muchos años (tanto en Linux como en Mac), pero su rendimiento deja que desear.

Pasé a Paragon cuando necesité hacer backup de varios terabytes de datos. La diferencia en la tasa de transferencia fue bastante significativa.

Considera Paragon (R$ 34,95) o [Tuxera] (R$ 107,13) si utilizas discos formateados en NTFS.

Python

Virtualenv

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

(Otras opciones –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

El soporte a framework (--enable-framework) es necesario para herramientas como YouCompleteMe.

Bibliotecas de Python

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 y ratón

Desplazamiento natural

defaults write NSGlobalDomain com.apple.swipescrolldirection -bool true

Clic con toque

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

Botón derecho

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

Activar Tab en diálogos modales

defaults write NSGlobalDomain AppleKeyboardUIMode -int 3

Idioma

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

Activar el menú de Depuración en la App Store

defaults write com.apple.appstore ShowDebugMenu -bool true

Carpeta donde se guardarán las capturas de pantalla

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

Activar repetición de caracteres al mantener una tecla pulsada (requiere reiniciar)

    $ defaults write -g ApplePressAndHoldEnabled -bool false

Velocidad de repetición de teclas más rápida

    $ defaults write NSGlobalDomain KeyRepeat -int 2

Abrir Finder en la carpeta de inicio (~/)

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

Mostrar barra de ruta en Finder

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

Mostrar barra de estado en Finder

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

No avisar sobre cambio de extensión

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

Buscar actualizaciones diariamente (por defecto: una semana)

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

Mostrar icono de discos duros internos en el Escritorio

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

Mostrar icono de discos duros externos en el Escritorio

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

Mostrar icono de medios extraíbles en el Escritorio

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

Mostrar icono de servidores en el Escritorio

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

No crear .DS_Store en volúmenes de red

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

Activar el menú de desarrollo y el Web Inspector en 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

Mostrar ruta absoluta en la barra de título del Finder

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

Mostrar ~/Library

    $ chflags nohidden ~/Library

Aplicaciones por defecto

A mano

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

Duti

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

Activar interfaz web de CUPS

    $ sudo cupsctl WebInterface=yes

El servidor estará disponible en http://localhost:631/admin.

Bloquear pantalla

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

Bloquear: Control + Shift + Power Reposo: Command ⌘ + Option ⌥ + Power

Atajo: System Preferences » Keyboard » Shortcuts » + » Lock Screen » Atajo

iTerm2

Esquema de colores del terminal

Aplica 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.

Fuente

El paquete Nerd Fonts fue instalado con Homebrew. Para usarlo en iTerm2 sigue esto:

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

Ítems de inicio

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

Dejar solo:

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

Chrome como navegador predeterminado

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

Silenciar Chrome

En la barra de direcciones: chrome://flags/#enable-tab-audio-muting

Hosts

Tengo un script que descarga el archivo de hosts de someonewhocares.org y lo instala automáticamente:

sudo ~/dotfiles/hosts.sh

Una app que ayuda a gestionar el archivo de hosts es GasMask:

brew cask install gas-mask

Dock

Deja solo programas útiles en el Dock:

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

Spotify

Además de iniciar sesión en Spotify, también es necesario configurar el scrobble para Last.fm: Preferences » Connect to Last.fm

Preferences: Desactiva “Local Files”

Consejos

No dejar portada separada en Two Page view en Preview

Siempre que muestres un PDF de dos páginas a la vez, Preview mostrará la primera página por separado como si fuera la portada de un libro. A veces no es lo que queremos y no hay forma de desactivar esta “feature”, pero hay un truco: inserta una página en blanco y muévela a la primera posición: Edit » Insert » Blank Page; View » Contact Sheet y arrastra la página en blanco a la primera posición.

Desplazamiento en el terminal

Shift+fn+UP y Shift+fn+DOWN

Mail

Configurar correos de Gmail es trivial, pero además uso un correo de mi propio host.

Si Mail no reconoce automáticamente la función de cada carpeta IMAP, habrá que definirla manualmente. Ej.:

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

PATH

Verifica si el orden de los directorios en /etc/paths es el correcto y si todos los directorios están presentes.

Programas instalados sin Homebrew

  • Adobe Acrobat Pro o PDF Expert: Visualización y edición de PDFs
  • Adobe Lightroom: Organizar galería de fotos
  • Adobe Photoshop: Edición de imágenes
  • CleanMyMac: Mantenimiento del sistema
  • Dash: API Documentation Browser
  • iStat Menu: Barra de menú con estado de CPU/Memoria/Red/etc
  • LittleSnitch: Bloquea conexiones no deseadas. Alternativa gratuita: Lulu
  • MacPaw Gemini: Elimina archivos duplicados
  • Microsoft Office
  • Many Tricks Moom: Gestiona ventanas
  • Parallels: Virtualización
  • SideSync: Para gestionar dispositivos Samsung
  • SwitchResX: Resolución de pantalla
  • Vuescan: escáner (alternativa gratis: xsane)
  • Wunderlist

Firewall

macOS viene con pfctl. LittleSnitch y Lulu también permiten gestionar las conexiones de salida.

Certificados SSL

En mi caso, tengo que añadir los certificados de la universidad: 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 nombre_del_esquema;
$ mysql.server stop

MySQL Workbench

brew cask install mysqlworkbench

Apache

Descomenta las siguientes líneas en /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
Carpeta de usuario

Descomenta las siguientes líneas en /etc/apache2/httpd.conf:

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

Descomenta la siguiente línea en /etc/apache2/extra/httpd-userdir.conf:

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

Crea el archivo /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>

Reinicia Apache con sudo apachectl restart.

Crea la carpeta ~/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

Google verifica actualizaciones cada hora. Cambia esto a 7 días:

defaults write com.google.Keystone.Agent checkInterval 604800

O desactiva la verificación por completo:

defaults write com.google.Keystone.Agent checkInterval 0

iTerm2 + tmux

iTerm2 está integrado con tmux, un multiplexor de terminal.

Instalar con Homebrew:

brew install tmux

Control mode:

tmux -CC

Byobu

Mejor que screen y tmux

Actualización: considera también Zellij.

Fecha

Date & Time:

  • Usar reloj de 24 horas,
  • Mostrar el día de la semana,
  • Mostrar la fecha

iBooks

Cada vez que abres un .epub, iBooks lo copia al directorio /Users/julio/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks.

El original se mantiene donde estaba. Puede ser útil borrar los archivos (desde el propio iBooks) para ahorrar espacio.

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

Esto ya está configurado en ~/.gitconfig.

Diccionarios

Dict.cc

Descarga desde 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.

Reordena los ítems de la barra arrastrándolos mientras presionas la tecla Command (⌘).

Skype

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

Telegram

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


Enlaces

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus