Mi configuración de MacBook

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

Desactivar el [rootless]

System Integrity Protection ("rootless") impide que algunos directorios y archivos se modifiquen ni siquiera desde root.

Algunos programas no funcionan bien con el SIP activado. Para desactivarlo haz lo siguiente:

  • Entra en Recovery Mode: arranca pulsando Command ⌘ + R
  • Abre el terminal: Utilities » Terminal
  • Ejecuta el comando csrutil disable
El SIP es un mecanismo de seguridad y conviene reactivarlo en cuanto sea posible.

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

Scanner

Xsane, que uso en Linux, también funciona en el Mac. Es de código abierto 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 se puede descargar desde la Apple Store o en https://developer.apple.com/downloads/, donde también están las versiones beta.

Si te dice que el archivo .xip descargado de la web de Apple está corrupto, prueba a abrirlo con otro programa. A mí The Unarchiver me 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 aceptarla.

Desactiva Gatekeeper para poder instalar aplicaciones descargadas de internet

Resuelve el “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.

Vuelve a activarlo 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

Encontrarás algunas modificaciones avanzadas en https://ke-complex-modifications.pqrs.org/.

Cambiar Bloq Mayús por ESC

La configuración está en los dotfiles.

Usar Intro 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 default shell

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

Zsh completions

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 un disco

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

que macOS no la borre al 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=es_es 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 o Grid spacing

Impedir la suspensión automática

Hay varios programas para esto:

  • InsomniaX
  • Caffeine
  • Amphetamine
  • KeepingYouAwake

Yo uso KeepingYouAwake, que es muy sencillo y gratuito.

Desde la línea de comandos está caffeinate:

Impide la suspensión durante 1 hora (3600 segundos):

caffeinate -u -t 3600

Impide la suspensión hasta que termine el comando:

caffeinate -s command

Impide la suspensión hasta pulsar Ctrl-C:

caffeinate -I

Impedir la suspensión al cerrar la tapa

sudo pmset -a disablesleep 1

Desactivar la suspensión del disco

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

Enlace a /Volumes en el escritorio

ln -s /Volumes ~/Desktop/

Desactivar el usuario invitado

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

SSH

Copia tus claves de la copia de seguridad y ponles 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 bastante inútiles en las búsquedas. Desactiva Bookmarks & History, Fonts, Movies, Music, Other, Presentations, etc.

Desmarca “Allow Spotlight Suggestion in Look up”.

NTFS

NTFS-3g

OSXFuse y NTFS-3g se pueden instalar gratis con Homebrew.

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 e Tuxera

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

Me pasé a Paragon cuando tuve que hacer copia de varios terabytes de datos. La diferencia en la velocidad de transferencia fue muy notable.

Plantéate Paragon (34,95 R$) o [Tuxera] (107,13 R$) si usas 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 de framework (--enable-framework) hace falta para herramientas como 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

Hacer clic tocando

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

Activa el tabulador en los 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

Activa el menú de Debug 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}"

Activa la repetición de caracteres al mantener una tecla pulsada (hay que reiniciar)

    $ defaults write -g ApplePressAndHoldEnabled -bool false

Repetición de teclas más rápida

    $ defaults write NSGlobalDomain KeyRepeat -int 2

Abre el Finder en la home (~/)

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

Muestra la barra de ruta en el Finder

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

Muestra la barra de estado en el Finder

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

No avisa al cambiar la extensión

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

Busca actualizaciones a diario (por defecto: una semana)

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

Muestra el icono de los discos (internos) en el escritorio

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

Muestra el icono de los discos externos en el escritorio

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

Muestra el icono de los medios extraíbles en el escritorio

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

Muestra el icono de los servidores en el escritorio

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

No crea .DS_Store en volúmenes de red

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

Activa 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

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

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

Muestra ~/Library

    $ chflags nohidden ~/Library

Default Apps

A mano

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

Duti

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

Activa la interfaz web de CUPS

    $ sudo cupsctl WebInterface=yes

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

Lock screen

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

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

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

iTerm2

Terminal colorscheme

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 se instaló con Homebrew. Para usarlo en iTerm2 basta con hacer esto:

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

Login Items

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

Deja solo:

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

Chrome como navegador por defecto

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

Mute 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 aplicación que ayuda a gestionar el archivo de hosts es GasMask:

brew cask install gas-mask

Dock

Deja en el Dock solo los programas útiles:

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

Spotify

Además de iniciar sesión en Spotify, hay que configurar el scrobbling a Last.fm: Preferences » Connect to Last.fm

Preferences: desactiva “Local Files”

Trucos

Que la portada no quede suelta en la vista de dos páginas de Preview

Siempre que veas un PDF a dos páginas, Preview mostrará la primera página suelta, como si fuera la portada de un libro. A veces no es lo que queremos y no hay forma de desactivar esa “función”, pero hay un truco: inserta una página en blanco y ponla como primera página: Edit » Insert » Blank Page; View » Contact Sheet y arrastra la página en blanco a la primera posición.

Scroll en el terminal

Shift+fn+UP e 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 a mano. Por ejemplo:

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

PATH

Comprueba que el orden de los directorios en /etc/paths es correcto y que están todos.

Programas instalados sin Homebrew

  • Adobe Acrobat Pro o PDF Expert: ver y editar PDF
  • Adobe Lightroom: organizar la 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 el 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 de Samsung
  • SwitchResX: resolución de pantalla
  • Vuescan: escáner (alternativa gratuita: xsane)
  • Wunderlist

Firewall

OS X trae pfctl. LittleSnitch y Lulu también permiten gestionar las conexiones salientes.

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 nome_do_esquema;
$ mysql.server stop

MySQL Workbench

brew cask install mysqlworkbench

Apache

Descomenta estas 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 estas líneas en /etc/apache2/httpd.conf:

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

Descomenta esta 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 busca actualizaciones cada hora. Cámbialo a 7 días:

defaults write com.google.Keystone.Agent checkInterval 604800

O desactiva la comprobación por completo:

defaults write com.google.Keystone.Agent checkInterval 0

iTerm2 + tmux

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

Instálalo con homebrew:

brew install tmux

Control mode:

tmux -CC

Byobu

Mejor que screen y tmux

Actualización: plantéate también Zellij.

Date

Date & Time:

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

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 queda donde estaba. Puede venir bien 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 se configura en el ~/.gitconfig.

Diccionarios

Dict.cc

Descárgalos de http://www.dict.cc/?s=about%3Awordlist

iStat Menus

Settings » Date & Time:

  • Desmarca Show date and time in menu bar.

Settings » Energy Saver:

  • Desmarca Show battery status in menu bar.

Reordena los elementos del menú arrastrándolos mientras pulsas la tecla Command (⌘).

Skype

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

Telegram

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


Julio Batista Silva
Autores
Senior Cloud Developer

Soy un ingeniero informático brasileño radicado en Alemania, apasionado por la tecnología, la ciencia, la fotografía y los idiomas.

Llevo programando cerca de dos décadas, explorando desde apps móviles y desarrollo web hasta aprendizaje automático. Hoy me enfoco en SRE en la nube e ingeniería de datos.

Soy voluntario en las comunidades de open source y Python, ayudando a organizar PyCon DE y PyData Berlin, dando mentorías y contribuyendo con código y traducciones.

En mi blog comparto consejos de Linux, guías de configuración y notas personales que escribí como referencia futura. Espero que también sean útiles para otras personas. El contenido está disponible en varios idiomas.

Visita mi galería para ver algunas de mis fotografías.

Fuera del teclado, me encontrarás en conciertos, tocando el clarinete, en bicicleta, buceando o explorando nuevos lugares, culturas y cocinas.

¡Siempre feliz de conectar! 🙂

comments powered by Disqus