Je n'y croyais plus… mais ça y est !
It's like the Mac is freaking back!
Apple fait à nouveau du hardware de qualité sans cette (putain) de TouchBar et se paye même deux points supplémentaires de réparabilité par rapport aux Macs de 2020 pour atteindre un délicieux 4/10 :D
En bon fanboy d'Apple je ne pouvais pas passer à côté du MacBook Pro M1 14 pouces de 2021 et je me suis fait un petit plaisir :
- Puce Apple M1 Pro avec CPU 10 cœurs, GPU 16 cœurs et Neural Engine 16 cœurs
- 32 Go de mémoire
- SSD 1 To
- Trois ports Thunderbolt 4, port HDMI, lecteur de carte SDXC, port MagSafe 3 !
Darwin, sa certification UNIX03 et son mix de NEXTSTEP, Mach, BSD, GNU, XFree86, etc. ne demandent qu'à chanter sur une telle machine.
Ce billet consigne quelques notes que j'ai prises pendant la configuration de mon nouveau Mac pour le faire "comme j'aime".
Préférences
Faire le tour et répliquer les préférences de l'ancien Mac.
Récupérer les mots de passe
- Installer 1Password
- Depuis l'ancien Mac dans 1Password : Préférences > Sauvegarder, "Afficher les fichiers" pour récupérer la dernière sauvegarde
- Transférer la dernière sur le nouveau Mac (via AirDrop par exemple)
- La restaurer en la plaçant en bon endroit (à trouver dans 1Password : Préférences > Sauvegarder)
Dotfiles et SSH
Récupérer les dotfiles importantes (je me suis toujours dit que je foutrais mes dotfiles dans un repo un jour)
.gitconfig
.inputrc
.profile
Pour récupérer les clés et la config SSH :
mkdir ~/.ssh
- Y rapatrier la config SSH et les clés
MacPorts
Han… il n'y a pas de package manager sour macOS…
Ah bon ? Eh ben déjà t'as l'App Store hein ! On peut même y trouver de l'open source.
Pour du software disons, plus CLI, il y a d'autres possibilités.
Mon choix a toujours été MacPorts :
- c'est une application native (C et Tcl), pas besoin d'installer Ruby
- inspiré de FreeBSD Ports
- depuis quelques années les installations sont beaucoup plus rapide car la plupart des paquets sont des binaires, il n'y a plus besoin de tout compiler depuis les sources
- il évite autant que possible les conflits avec le système avec une hiérarchie sous
/opt
VSdésormais/usr/local
/opt/homebrew
avec Apple Silicon pour Homebrew
Pour installer MacPorts :
- installer Xcode depuis l'App Store
sudo xcodebuild -license
(ou bien ouvrir Xcode) pour accepter la licencexcode-select --install
pour installer les Xcode Command Line Tools- installer MacPorts (ou suivre le guide de migration)
Je dirais que le seul inconvénient est d'avoir à installer Xcode, processus e⸱x⸱t⸱r⸱ê⸱m⸱e⸱m⸱e⸱n⸱t long (même pour les mises à jour).
Ports que j'installe à tous les coups :
bash
bash-completion
curl
ffmpeg
git
htop
jq
nodejs
npm
postgresql
postgresql-server
sudo port load postgresql14-server
(pour configurer un lancement au démarrage du Mac)
python
the_silver_searcher
tig
Quelques routines avec MacPorts :
port installed
port outdated
sudo port -v selfupdate
sudo port upgrade outdated
sudo port -f uninstall inactive
port search <portname>
port deps <portname>
sudo port install <portname>
sudo port deactivate <portname>
sudo port uninstall <portname>
Configuration de Terminal
Maintenant qu'on a installé Bash on peut dégager Zsh (je sais, je vieillis).
- Préférences > Général :
- Au démarrage, ouvrir > Nouvelle fenêtre avec le profil > Pro
- Ouvrir les shells avec > Commande >
/opt/local/bin/bash
- Préférences > Profils :
- Choisir "Pro" dans la colonne de gauche et le mettre "Par défaut" en bas
- Préférences > Profils > Fenêtre :
- Taille de la fenêtre : 140 x 40
- Préférences > Profils > Shell :
- Lorsque le shell quitte > Fermer la fenêtre
Applications
Quelques applications que j'aime bien :
- App Store, aller dans : Compte, puis récupérer ses achats
- Be Focused Pro (pour la technique Pomodoro)
- Skitch
- The Unarchiver
- Caffeine
- cdto
- utiliser
⌥ + ⌘
+ drag pour placer l'icône de l'app jusque dans la toolbar du Finder
- utiliser
- DisplayLink Manager
- j'avais un Caldigit TS3+ qui ne m'a posé que des problèmes
- je l'ai changé pour un Targus DOCK190EUZ qui ronronne
- DisplayLink Manager gère le multi-écran via le Targus sans extension Kernel
- Docker
- Firefox
- Google Chrome
- exporter puis importer les signets
- Hex Fiend
- Little Snitch
- Name Mangler
- Obsidian
- Phoenix
- Quicksilver
- SQLEditor
- SuperDuper!
- TablePlus
- exporter puis importer les connexions
- TextMate
- Tinker Tool
- Transmit
- Typinator
- menu : Action > Jeux > Exporter, puis importer le jeu sur la nouvelle machine
- VLC
- VueScan
Il arrive que certaines applications nécessitent de toucher au Kernel pour y ajouter des extensions. C'est devenu un peu compliqué à modifier, mais ça se fait encore.
TextMate
J'ai déjà écrit une ode à TextMate en 2013 pour louer le minimalisme de son interface. Je l'utilise toujours.
Pire, j'utilise toujours le même thème à placer dans ~/Library/Application Support/TextMate/Bundles/RubyRobot.tmbundle
.
Comme je bosse mes maths en ce moment et que l'état du rendering des formules de mathématiques sur le Web est pitoyable, j'utilise MathJax dans mes notes Markdown. Je mets juste à jour le JavaScript utilisé :
- aller dans : Bundles > Edit Bundles… > Markdown (MathJax) > Support
- clic droit sur
append_mathjax_js
puis "Show in Finder" modifier le fichier avec :
puts $stdin.read puts <<-SCRIPT <script> MathJax = {}; </script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script> SCRIPT
Fichiers
Je n'ai pas poussé mes documents dans iCloud, alors je dois récupérer les fichiers à partir d'un backup.
Je gère toujours ma musique en MP3 (ne me jugez pas).
Or l'application Music est un peu chiante pour récupérer ses playlists. Il faut les exporter en XML une par une, puis les réimporter… Je n'ai pas trouvé mieux.
Synology
Activer le service SMB côté Synology avec credentials car la configuration UPnP de base est à chier.
Puis dans : Finder > Aller > Se connecter au serveur…, saisir smb://synology
.
Je peux aussi me servir de VLC sur Apple TV comme d'un client SMB.
Remapper les raccourcis clavier pour la luminosité du clavier
Sur les Macs M1, il n'y a plus de touches de fonction Mac pour régler la luminosité du clavier. C'est hyper chiant d'avoir à le faire à la souris. Heureusement, on peut remapper les touches.
Créer un fichier com.local.KeyRemapping.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.local.KeyRemapping</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/hidutil</string>
<string>property</string>
<string>--set</string>
<string>{"UserKeyMapping":[
{
"HIDKeyboardModifierMappingSrc": 0xC000000CF,
"HIDKeyboardModifierMappingDst": 0xFF00000009
},
{
"HIDKeyboardModifierMappingSrc": 0x10000009B,
"HIDKeyboardModifierMappingDst": 0xFF00000008
}
]}</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Le placer dans ~/Library/LaunchAgents
, puis :
launchctl load ~/Library/LaunchAgents/com.local.KeyRemapping.plist
Pour annuler :
launchctl unload ~/Library/LaunchAgents/com.local.KeyRemapping.plist
rm -f ~/Library/LaunchAgents/com.local.KeyRemapping.plist
Voir Remapping Keys in macOS 10.12 Sierra et HIDUTIL key remapping generator for MacOS.
Configurer le "tout clavier"
Je n'utilise pas les assistants vocaux pour le moment.
J'aime bien les écrans tactiles, mais quand je surfe sur le Web, il me faut un clavier au bout de deux minutes.
Je me suis habitué à faire énormément de choses au clavier sur mon laptop (Touch ID est une tuerie).
Pour cela je configure les choses suivantes.
Préférences
- dans Clavier > Raccourcis : cocher "Utiliser la navigation clavier pour déplacer la cible sur les différentes commandes"
- dans Clavier > Raccourcis > Mission Control : désactiver les raccourcis qui utilisent
⌃
(ouctrl
) car ça entre en conflit avec par exemple :- avec le Word Movement de TextMate
- le
forward-word
de mon.inputrc
qui remappectrl
- utiliser le raccourci
⌘>
pour "Déplacer la cible sur la fenêtre suivante" dans Clavier > Raccourcis- c'est une préférence personnelle
Raccourcis de texte
Typinator, c'est du keylogging bien fait :D
Il y un builtin un peu similaire dans : Préférences > Clavier > Texte, mais moins puissant.
Manipuler les fenêtres au clavier
Dans le temps, il y avait un petit utilitaire pour faire ça mais mon intellect constate qu'il est obsolète.
Du coup je me suis rabattu sur Phoenix, un truc génial qui m'a permis de réimplémenter les fonctionnalités de MercuryMover pour pouvoir déplacer et redimensionner les fenêtres de macOS au clavier.
Lancer Phoenix seulement après avoir fait un alias de la configuration :
- récupérer le repo
https://github.com/kemar/phoenix-mercury-mover
dans/Users/kemar/code/
ln -s /Users/kemar/code/phoenix-mercury-mover/phoenix.js .phoenix.js
Voir aussi un tour d'horizon des Window Managers.
Commuter les touches de fonction
J'adore les touches de fonction Apple quand j'ai mon ordi sur les genoux. Par contre, quand je suis au bureau avec un clavier externe, je préfère les touches de fonction standard (F1, F2 etc.).
Dans le temps (oui encore), il y avait un petit utilitaire extra pour commuter les touches au cas par cas en fonction du clavier utilisé.
Le code source est dispo ici mais je ne connais pas Objective-C et je n'ai pas le temps d'apprendre là tout de suite.
Du coup j'ai écrit un AppleScript pour commuter "Utiliser les touches F1, F2 etc. comme des touches de fonction standard" dans :
dans : Preferences Système > Clavier.Je le déclenche avec un raccourci configuré dans Quicksilver (voir l'étape d'après).
Quicksilver
C'est probablement mon application préférée sur Mac :
Quicksilver is, by far, the most useful utility made for OSX ever.
Elle commence quand même à prendre un peu la poussière, ce qui me fout un peu les chocottes d'ailleurs. Il a fallu installer Rosetta 2. Je pense quand même qu'on est proche d'une compilation M1.
Plugins à activer
- Clipboard Plugin
- Command Line Tool
- Event Triggers
- Extra Scripts Plugin
- Keyboard Triggers
- Shelf Plugin
- Terminal Plugin
- Text Manipulation Plugin
- User Interface Plugin
Command Line Tool
- Préférences > Command Line Tool : Install
Catalog
On peut ajouter des choses au catalogue de recherche. Ici on va le laisser voir un dossier dans lequel j'ai mis des scripts que je veux déclencher sur des combinaisons de raccourcis clavier :
- Préférences > Catalog > Custom : ajouter
/usr/local/bin
et configurer "Contenu du dossier"
Raccourcis clavier personnels
Dans Préférences > Triggers :
- Déclencher l'économiseur d'écran (pour verrouiller l'ordi)
- Custom Triggers > Add > Keyboard > Select an item
/usr/local/bin/launch_screensaver.sh
> ActionRun
- Raccourci
⌃⌥⌘L
- Custom Triggers > Add > Keyboard > Select an item
- Commuter les touches de fonction
- Custom Triggers > Add > Keyboard > Select an item
/usr/local/bin/toggle_function_keys.scpt
> ActionExécuter un AppleScript
- Raccourci
⌃⌥⌘K
- Custom Triggers > Add > Keyboard > Select an item
- Afficher l'historique du presse papier
- Dans Général > Clipboard cocher
Capture History
100 items +Hide after pasting
+Paste on selection
- Maintenant, "Shelf & Clipboard" doit appraître dans "Catalog > Quicksilver"
- Vérifier que "Catalog > Quicksilver > Objets internes" est coché
- Custom Triggers > Add > Keyboard > Select an item
Show Clipboard
> ActionRun
- Raccourci
⌃⌥⌘C
- Dans Général > Clipboard cocher
- Voir tous les menus de l'application active
- Custom Triggers > Add > Keyboard > Select an item
Current Application
> ActionShow Menu Items
- Raccourci
⌃⌥⌘M
- Custom Triggers > Add > Keyboard > Select an item
- Afficher l'élément sélectionné comme actif dans Quicksilver
- Quicksilver > "Sélectionner Current Selection dans l'interface"
- Raccourci
⌃⌥⌘Space
Scripts pour les raccourcis
Le script launch_screensaver.sh
fait juste ça :
open /System/Library/CoreServices/ScreenSaverEngine.app
Dans le temps (oh bordel, c'est la troisième fois que j'utilise cette formule, je suis dans une faille temporelle ou quoi ?), il y avait un truc de fou pour contrôler iTunes au clavier.
Maintenant c'est mort, j'ai l'impression de ne kiffer que des trucs de niche…
Du coup j'ai quelques scripts shell affectés à des raccourcis Quicksilver pour émuler les choses les plus importantes permettant de contrôler Music (iTunes n'existe plus) :
# music_current.sh
osascript <<EOF
tell application "Music"
set CurrentTrack to name of current track
set CurrentAlbum to album of current track
set CurrentArtist to artist of current track
end tell
display notification with title CurrentTrack subtitle CurrentArtist & " – " & CurrentAlbum
EOF
# music_next.sh
osascript -e 'tell application "Music" to next track'
# music_playpause.sh
osascript -e 'tell application "Music" to playpause'
# music_prev.sh
osascript -e 'tell application "Music" to back track'
# music_set_rating_to_0.sh
osascript <<EOF
tell application "Music"
set rating of current track to 0
set CurrentTrack to name of current track
end tell
display notification with title CurrentTrack subtitle "☆☆☆☆☆"
EOF
# music_set_rating_to_100.sh
osascript <<EOF
tell application "Music"
set rating of current track to 100
set CurrentTrack to name of current track
end tell
display notification with title CurrentTrack subtitle "★★★★★"
EOF