Mein MacBook-Setup

[rootless] deaktivieren
System Integrity Protection ("rootless") verhindert, dass bestimmte Verzeichnisse und Dateien selbst von root geändert werden.
Manche Programme laufen mit aktiviertem SIP nicht gut. So schaltest du es ab:
- Geh in den Recovery Mode: starte mit gedrücktem
Command ⌘+R - Öffne das Terminal: Utilities » Terminal
- Führe den Befehl
csrutil disableaus
Passwort für 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
Ziehen mit drei Fingern
Accessibility » Mouse & Trackpad » Trackpad Options… » Enable dragging » three finger drag
Scanner
Xsane, das ich unter Linux benutze, läuft auch auf dem Mac. Es ist quelloffen und sehr
vollständig:
brew install sane-backends
brew install xsane
Vuescan ist eine native App und funktioniert sehr gut, kostet aber Geld.
Zoom
Accessibility » Zoom » Use scroll gesture with modifier keys to zoom: ^ Control
XCode
Die neueste XCode-Version bekommst du über den Apple Store oder unter https://developer.apple.com/downloads/, wo es auch die Beta-Versionen gibt.
Wenn die von Apples Seite geladene .xip-Datei als beschädigt gemeldet wird, öffne sie mit einem anderen Programm. Bei mir zeigte The Unarchiver “Data Corrupted”, mit dem Archive Utility lief es dagegen einwandfrei.
Installiere die Kommandozeilenwerkzeuge:
xcode-select --install
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Öffne XCode und akzeptiere die Lizenz, oder tippe bei sudo xcodebuild -license „agree“.
Gatekeeper abschalten, um aus dem Internet geladene Programme installieren zu können
Behebt “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.
Wieder einschalten mit: sudo spctl --master-enable.
Dotfiles
git clone --recursive https://github.com/jbsilva/dotfiles.git
cd dotfiles
git submodule update --init --recursive
Homebrew
Lade Homebrew herunter und installiere es:
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
Lade Karabiner-Elements herunter
Einige fortgeschrittene Anpassungen findest du unter https://ke-complex-modifications.pqrs.org/.
Feststelltaste gegen ESC tauschen
Die Konfiguration liegt in den Dotfiles.
Im Finder mit Enter in ein Verzeichnis wechseln
Mit F2 umbenennen
Zplug + Zprezto
Zplug verwaltet die ZSH-Plugins. Es wird automatisch installiert.
Links auf die Dotfiles
ln -s ~/dotfiles/.gitconfig ~
ln -s ~/dotfiles/.config ~
ln -s ~/dotfiles/.zsh ~
ln -s ~/dotfiles/.zshrc ~
Kopie der Dotfiles, die keine Links sein können
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
Installiere die Formel zsh_completions:
brew install zsh-completions
Ergänze $FPATH um $(brew --prefix)/share/zsh-completions:
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
Eine Platte einhängen
Legt den in /etc/fstab angegebenen Ordner an und markiert ihn als unveränderlich, damit
macOS ihn nach dem Aushängen der Platte nicht löscht:
sudo mkdir /Volumes/Elements
sudo chflags uchg /Volumes/Elements/
Hänge die Platte ein:
diskutil mount disk2s1
Vim
Vundle
Öffne Vim und lade die Plugins mit :PluginInstall
Rechtschreibprüfung
Tippe in Vim :setlocal spell spelllang=de_de und folge den Anweisungen.
Finder
- Im Home-Ordner (
~)View»Show View Options(Cmd+J):- Calculate all sizes,
- Show Library Folder,
- Show item info
- Auf dem Desktop
- Rechtsklick »
Show View Options(Cmd+J):- Show item info,
- Grid spacing erhöhen
- Rechtsklick »
Automatischen Ruhezustand verhindern
Dafür gibt es mehrere Programme:
- InsomniaX
- Caffeine
- Amphetamine
- KeepingYouAwake
Ich benutze KeepingYouAwake: sehr schlicht und kostenlos.
Auf der Kommandozeile gibt es caffeinate:
Verhindert den Ruhezustand für 1 Stunde (3600 Sekunden):
caffeinate -u -t 3600
Verhindert den Ruhezustand, bis der Befehl fertig ist:
caffeinate -s command
Verhindert den Ruhezustand bis Ctrl-C:
caffeinate -I
Ruhezustand beim Schließen des Deckels verhindern
sudo pmset -a disablesleep 1
Ruhezustand der Platte abschalten
System Preferences » Energy Saver: Haken bei Put hard disks to sleep when possible entfernen
Link auf /Volumes auf dem Desktop
ln -s /Volumes ~/Desktop/
Gastbenutzer abschalten
System Preferences » Users & Groups: Haken bei „Allow guest to log in to this computer“
entfernen.
SSH
Kopiere deine Schlüssel aus dem Backup und setze die passenden Berechtigungen:
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 liefert reichlich unbrauchbare Suchergebnisse. Schalte Bookmarks & History, Fonts, Movies, Music, Other, Presentations usw. ab.
Entferne den Haken bei “Allow Spotlight Suggestion in Look up”.
NTFS
NTFS-3g
OSXFuse und NTFS-3g lassen sich kostenlos über Homebrew installieren.
Verlinke mount_ntfs auf 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
Ich habe NTFS-3g viele Jahre benutzt (unter Linux wie auf dem Mac), aber die Geschwindigkeit lässt wirklich zu wünschen übrig.
Als ich einige Terabyte sichern musste, bin ich zu Paragon gewechselt. Der Unterschied bei der Übertragungsrate war deutlich.
Wenn du NTFS-formatierte Platten benutzt, schau dir Paragon (R$ 34,95) oder [Tuxera] (R$ 107,13) an.
Python
Virtualenv
$ export PYTHON_CONFIGURE_OPTS="--enable-framework --enable-unicode=ucs4 --enable-ipv6 --enable-loadable-sqlite-extensions"
(Weitere Optionen: –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
Die Framework-Unterstützung (--enable-framework) wird für Werkzeuge wie YouCompleteMe gebraucht.
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
Tippen zum Klicken
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
Rechte Maustaste
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
Tastatur
Tab in modalen Dialogen aktivieren
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
Sprache
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
Das Debug-Menü im App Store aktivieren
defaults write com.apple.appstore ShowDebugMenu -bool true
Ordner, in dem Bildschirmfotos gespeichert werden
SCREENSHOTS="${HOME}/Desktop/Screenshots" && mkdir "${SCREENSHOTS}" && defaults write com.apple.screencapture location -string "${SCREENSHOTS}"
Zeichenwiederholung beim Gedrückthalten einer Taste aktivieren (Neustart nötig)
$ defaults write -g ApplePressAndHoldEnabled -bool false
Schnellere Tastenwiederholrate
$ defaults write NSGlobalDomain KeyRepeat -int 2
Finder im Home-Ordner starten (~/)
$ defaults write com.apple.finder NewWindowTarget -string "PfLo"
$ defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"
Pfadleiste im Finder anzeigen
$ defaults write com.apple.finder ShowPathbar -bool true
Statusleiste im Finder anzeigen
$ defaults write com.apple.finder ShowStatusBar -bool true
Nicht vor Änderung der Dateiendung warnen
$ defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
Täglich nach Updates suchen (Standard: eine Woche)
$ defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
Symbole interner Platten auf dem Desktop anzeigen
$ defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
Symbole externer Platten auf dem Desktop anzeigen
$ defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
Symbole von Wechselmedien auf dem Desktop anzeigen
$ defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
Serversymbole auf dem Desktop anzeigen
$ defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
Keine .DS_Store auf Netzlaufwerken anlegen
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
Entwicklermenü und Web Inspector in Safari aktivieren
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
Absoluten Pfad in der Titelleiste des Finders anzeigen
$ defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
~/Library anzeigen
$ chflags nohidden ~/Library
Default Apps
Von Hand
$ vim ~/Library/Preferences/com.apple.LaunchServices.plist
Duti
$ duti -s org.videolan.vlc .mp4 all
Die Weboberfläche von CUPS aktivieren
$ sudo cupsctl WebInterface=yes
Der Server ist dann unter http://localhost:631/admin erreichbar.
Lock screen
System Preferences » Security & Privacy » General » Require Password » 5 seconds
Lock: Control + Shift + Power Sleep: Command ⌘ + Option ⌥ + Power
Kürzel: System Preferences » Keyboard » Shortcuts » + » Lock Screen » Tastenkürzel
iTerm2
Terminal colorscheme
Wende Zenburn an
$ 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.
Schriftart
Das Paket Nerd Fonts wurde über Homebrew installiert. Um es in iTerm2 zu benutzen, gehst du so vor:
Preferences » Profiles » Text » Non-ASCII Font » Hack Regular Nerd Font Complete
Login Items
System Preferences » Users & Groups » Current User » Login Items
Nur diese behalten:
- Flux
- InsomniaX (oder gleichwertig)
- SwitchResX Daemon
- Moom
Chrome als Standardbrowser
xdg-mime default chromium.desktop x-scheme-handler/http
xdg-mime default chromium.desktop x-scheme-handler/https
Mute Chrome
In der Adressleiste: chrome://flags/#enable-tab-audio-muting
Hosts
Ich habe ein Skript, das die hosts-Datei von someonewhocares.org lädt und automatisch installiert:
sudo ~/dotfiles/hosts.sh
Beim Verwalten der hosts-Datei hilft die App GasMask:
brew cask install gas-mask
Dock
Behalte nur nützliche Programme im Dock:
- Finder
- Contacts
- Calendar
- iTerm
- Google Chrome
Spotify
Neben der Anmeldung bei Spotify musst du auch das Scrobbeln zu Last.fm einrichten: Preferences »
Connect to Last.fm
Preferences: “Local Files” abschalten
Tipps
In der Zwei-Seiten-Ansicht von Preview kein separates Titelblatt
Wenn du ein PDF zweiseitig anzeigst, stellt Preview die erste Seite immer einzeln dar, als wäre sie
ein Buchcover. Manchmal will man das nicht, und abschalten lässt sich dieses “Feature” nicht — es
gibt aber einen Trick: füge eine leere Seite ein und zieh sie an die erste Position:
Edit » Insert » Blank Page; View » Contact Sheet, dann die leere Seite nach vorn ziehen.
Im Terminal scrollen
Shift+fn+UP e Shift+fn+DOWN
Gmail-Konten einzurichten ist trivial; daneben benutze ich aber auch eine Adresse auf meinem eigenen Host.
Erkennt Mail die Funktion der einzelnen IMAP-Ordner nicht automatisch, musst du sie von Hand festlegen. Zum Beispiel:
Wähle Deleted Messages » Mailbox » Use This Mailbox As » Trash Mailbox
PATH
Prüfe, ob die Reihenfolge der Verzeichnisse in /etc/paths stimmt und alle Verzeichnisse vorhanden
sind.
Ohne Homebrew installierte Programme
- Adobe Acrobat Pro oder PDF Expert: PDFs ansehen und bearbeiten
- Adobe Lightroom: Fotogalerie organisieren
- Adobe Photoshop: Bildbearbeitung
- CleanMyMac: Systempflege
- Dash: API Documentation Browser
- iStat Menu: Menüleiste mit Status von CPU/Speicher/Netzwerk usw.
- LittleSnitch: blockiert unerwünschte Verbindungen. Kostenlose Alternative: Lulu
- MacPaw Gemini: entfernt doppelte Dateien
- Microsoft Office
- Many Tricks Moom: Fensterverwaltung
- Parallels: Virtualisierung
- SideSync: zum Verwalten von Samsung-Geräten
- SwitchResX: Bildschirmauflösung
- Vuescan: Scanner (kostenlose Alternative: xsane)
- Wunderlist
Firewall
OS X bringt pfctl mit. Auch LittleSnitch und Lulu verwalten ausgehende Verbindungen.
SSL-Zertifikate
In meinem Fall muss ich die Zertifikate der Universität hinzufügen: 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
Kommentiere die folgenden Zeilen in /etc/apache2/httpd.conf ein:
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
Benutzerordner
Kommentiere die folgenden Zeilen in /etc/apache2/httpd.conf ein:
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Kommentiere die folgende Zeile in /etc/apache2/extra/httpd-userdir.conf ein:
Include /private/etc/apache2/users/*.conf
Lege die Datei /etc/apache2/users/julio.conf an:
<Directory "/Users/julio/Sites/">
Options Indexes MultiViews FollowSymLinks
Require all granted
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Starte Apache mit sudo apachectl restart neu.
Lege den Ordner ~/Sites an:
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 sucht stündlich nach Updates. Stell das auf 7 Tage um:
defaults write com.google.Keystone.Agent checkInterval 604800
Oder schalte die Suche ganz ab:
defaults write com.google.Keystone.Agent checkInterval 0
iTerm2 + tmux
iTerm2 ist mit tmux, einem Terminal-Multiplexer, integriert.
Über Homebrew installieren:
brew install tmux
Control mode:
tmux -CC
Byobu
Besser als screen und tmux
Update: schau dir auch Zellij an.
Date
Date & Time:
- Use a 24-hour clock,
- Show the day of the week,
- Show date
iBooks
Jedes Mal, wenn du ein .epub öffnest, kopiert iBooks es nach
/Users/julio/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks.
Das Original bleibt, wo es war. Es kann sich lohnen, die Dateien (über iBooks selbst) zu löschen, um Platz zu sparen.
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
Das wird bereits in ~/.gitconfig eingestellt.
Wörterbücher
Dict.cc
Lade es von http://www.dict.cc/?s=about%3Awordlist
iStat Menus
Settings » Date & Time:
- Haken bei
Show date and time in menu barentfernen.
Settings » Energy Saver:
- Haken bei
Show battery status in menu barentfernen.
Ordne die Menüeinträge neu, indem du sie mit gedrückter Command (⌘)-Taste ziehst.
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
- Sicherheit: 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

Ich bin ein brasilianischer Computeringenieur mit Wohnsitz in Deutschland und begeistere mich für Technik, Wissenschaft, Fotografie und Sprachen.
Ich programmiere seit etwa zwei Jahrzehnten und habe dabei alles von mobilen Apps und Webentwicklung bis hin zu Machine Learning erkundet. Derzeit fokussiere ich mich auf Cloud‑SRE und Data Engineering.
Ich engagiere mich ehrenamtlich in den Open‑Source- und Python‑Communities, helfe bei der Organisation der PyCon DE und PyData Berlin, betreue als Mentor und trage mit Code und Übersetzungen bei.
In meinem Blog teile ich Linux‑Tipps, Einrichtungsanleitungen und persönliche Notizen, die ich als spätere Referenz geschrieben habe. Ich hoffe, dass sie auch anderen nützlich sind. Die Inhalte sind in mehreren Sprachen verfügbar.
Schau dir meine Galerie an, um einige meiner Fotografien zu sehen.
Abseits der Tastatur findest du mich auf Konzerten, beim Klarinettenspiel, Radfahren, Tauchen oder beim Erkunden neuer Orte, Kulturen und Küchen.
Ich freue mich immer über den Austausch! 🙂