Mein MacBook-Setup

Juni 29, 2017·
Julio Batista Silva
Julio Batista Silva
· 10 Min Lesezeit
blog

[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 disable aus
SIP ist eine Sicherheitsfunktion und sollte wieder aktiviert werden, sobald es geht.

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.

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

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

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

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
  • Mail
  • 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

Mail

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 bar entfernen.

Settings » Energy Saver:

  • Haken bei Show battery status in menu bar entfernen.

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


Julio Batista Silva
Autoren
Senior Cloud Developer

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

comments powered by Disqus