Archiv der Kategorie: Mac

Pimp your MAC Terminal

Wem das originale Mac Terminal etwas zu langweilig und monoton ist kann es mit den folgenden Schritten etwas „tunen“ und optisch aufwerten:

1. Installation von iTerm als Alternative zum Terminal:

Download der App von https://iterm2.com/ und Installation per Doppelklick auf die .dmg Datei

2. Download der Nerd Fonts

Gehe auf https://www.nerdfonts.com/ und suche nach der „FiraMono Nerd Schriftart“. Nach dem Download der .zip Datei installiere die enthaltenen Schriftarten per Doppelklick darauf.

3. iTerm konfigurieren

1. Öffne iTerm und klicke im Menü auf „iTerm“ > „Settings“.
2. Gehe zum Tab „Profiles“ -> „Colors“ und wähle ein Theme dass dir gefällt. Ich habe hier z.B „Smoooooth“ gewählt.
3. Gehe zum Tab „Text“ und wähle unter Font die vorher installierte“ FiraMono Nerd Schriftart aus“. Passe gegebenenfalls auch die gewünschte Schriftgröße an.
4. Gehe zum Tab „Keys“ -> „Key Bindings“ und wähle das Preset „Natural Text Editing“ um im Terminal komfortabel mit der CMD Taste zwischen einzelnen Wörtern zu navigieren.

4. ZSH installieren und konfigurieren

Die zsh wird oft als erweiterte Bourne-Shell angesehen, welche viele Verbesserungen und Eigenschaften von bashksh und tcsh vereint. In neueren MacOS Versionen ist sie schon die Default Shell. Falls sie nicht installiert ist kann man sie mit brew install zsh installieren. Voraussetzung dazu ist natürlich ein installiertes Homebrew.

5. „Oh My Zsh“ installieren

„Oh My Zsh“ ist ein Framework um ZSH Konfigurationen zu managen. Installieren kann man es mit:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

6. Plugins für Zsh hinzufügen

Um dein Terminal noch weiter zu optimieren, installiere die Plugins zsh-syntax-highlighting und zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Konfiguriere die Plugins danach folgendermaßen:

  • Öffne die .zshrc Datei in einem Texteditor (z.B nano):
nano ~/.zshrc

Finde die Zeile mit dem plugins array und füge die beiden neuen Plugins in das array hinzu:

plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

Abschließend speichere die .zshrc Datei und starte dein Terminal neu. Um ohne Terminal Neustart fortzufahren kannst du auch direkt folgenden Befehl eingeben:

source ~/.zshrc

7. Hinzufügen von „Starship“

Starship ist ein minimalistischer und vielseitig anpassbarer Prompt für deine Shell. Installieren kann man es wieder mit Homebrew:

brew install starship

Danach konfigurieren wir es wieder in dem wir die .zshrc Datei öffnen:

nano ~/.zshrc

und folgende Zeile am Ende der Datei hinzufügen:

eval "$(starship init zsh)"

Abschließend speichern wir wieder, starten das Terminal neu oder verwenden wieder:

source ~/.zshrc

8. Verwenden eines „Starship“ Templates

Um Starship nicht komplett von Hand anpassen zu müssen, verwenden wir ein vorkonfiguriertes Template. Erstelle dazu einen .config Ordner in deinem Home Verzeichnis erstelle die starship.toml darin:

mkdir -p ~/.config && starship preset gruvbox-rainbow -o ~/.config/starship.toml

Öffne danach deine ~/.config/starship.toml Datei um Starship nach deinen Vorlieben anzupassen.

Ich persönlich habe zum Beispiel die Anzahl der angezeigten Ordner reduziert, die Uhrzeit entfernt und den Zeilenumbruch nach dem Prompt entfernt:

Den Originalbeitrag in Englisch gibt es hier nachzulesen.

PIP und das Python Virtual Environment

Möchte man in Python mittels pip install irgendwas (pip = Python Paket Manager) zusätzliche Module installieren bekommt man ohne Virtual Environment bei Python 3.14 eine Fehlermeldung die folgendermaßen aussieht:

error: externally-managed-environment

× This environment is externally managed
> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.

    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:

    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz

Grund dafür ist, dass dein System seine systemweite Python-Installation schützt, damit pip es nicht kaputtmacht.

Die empfohlene Lösung ist hier einfach ein Virtual Environment anlegen. Zuerst erstelle einen eigenen Folder für den Projekt (mkdir Project) und wechsle mit cd Project hinein. Führe danach folgende Befehle aus:

python3 -m venv venv
source venv/bin/activate
pip install irgendwas

Danach sollte alles ohne Fehlermeldung wieder funktionieren. Man sieht übrigens an dem neu erstellten venv Folder dass ein Virtual Environment erstellt wurde für dieses Projekt.

SMB Zugriff unter MacOS beschleunigen

Mit folgendem Bash Script kann der Zugriff und die Datenübertragungsgeschwindigkeit von MacOS zu einer SMB Freigabe (zB ein NAS, oder ein Unraid Server) deutlich beschleunigt werden.

Man erstellt dazu z.B eine Datei smbtune.sh Datei in einem beliebigen Ordner:

cd ~
nano smbtune.sh

und fügt folgenden Code in diese Datei ein. Was die einzelnen Befehle im Detail bewirken ist im Source Code als Kommentar beschrieben.

#!/bin/bash

# Commands that decrease security

# Check if the nsmb.conf file exists and remove it if it does
if [ -f /private/etc/nsmb.conf ]; then
    rm /private/etc/nsmb.conf
fi

# Create a new nsmb.conf file with default section
echo "[default]" >> /etc/nsmb.conf

# Disable SMB signing (decreases security)
echo "signing_required=no" >> /etc/nsmb.conf

# Disable negotiation validation (decreases security)
echo "validate_neg_off=yes" >> /etc/nsmb.conf

# End Section

# Commands with neutral or mixed impact on security

# Enable support for named streams (neutral)
echo "streams=yes" >> /etc/nsmb.conf

# Disable change notifications (neutral, but might affect operational efficiency)
echo "notify_off=yes" >> /etc/nsmb.conf

# Enable soft mounts (neutral, but could impact data availability)
echo "soft=yes" >> /etc/nsmb.conf

# Disable directory caching (neutral, but impacts performance)
echo "dir_cache_max_cnt=0" >> /etc/nsmb.conf
echo "dir_cache_max=0" >> /etc/nsmb.conf
echo "dir_cache_off=yes" >> /etc/nsmb.conf

# End Section

# Commands that improve or do not affect security significantly

# Disable NetBIOS and use direct hosting over TCP/IP (improves security)
echo "port445=no_netbios" >> /etc/nsmb.conf

# Set SMB protocol version to SMB 2 or later (improves security)
echo "protocol_vers_map=4" >> /etc/nsmb.conf

# Enable multi-channel support and prefer wired connections (neutral, typically safe)
echo "mc_on=yes" >> /etc/nsmb.conf
echo "mc_prefer_wired=yes" >> /etc/nsmb.conf

# Prevent creation of .DS_Store files on network shares (neutral, improves performance)
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

# End Section

# Exit script
exit

Danach muss die Bash Datei noch ausführbar gemacht werden mit:

chmod +x smbtune.sh

Und danach wird die Datei selbst ausgeführt mit:

sudo ./smbtune.sh

Um später die Standardeinstellung für die .DS_Store Dateien wieder herzustellen kann man im Terminal jederzeit wieder folgenden Befehl ausführen:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool FALSE

Den Originalbeitrag findet man übrigens hier auf Reddit