MacTrix: Tricks of the Mac OS X Master

Où comment faire qu'il devienne mon esclave ?

Cette page est dédiée à quelques-unes de mes expériences avec mon Mac. Peut-être cela servira t-il à quelqu'un d'autre. On trouvera donc ici quelques trucs et astuces pour Mac OS X. Tout en vrac pour €1.

J'ai crashé un disque, comment le réparer ?

Tout d'abord essayer "Utilitaire de Disque" (vérifier puis réparer). Si cela ne fonctionne pas (disque non ou mal reconnnu) essayer TestDisk, c'est magique mais nécessite quelques connaissances et beaucoup de précautions.

Je veux joindre des fichiers vidéos!

Si les fichiers sont du type avi il est absolument nécessaire de passer par un outil adéquat (la simple concaténation ne fonctionne pas!). On peut alors utiliser D-Vision qui est très efficace.

Si les fichiers sont du type mpeg, la simple concaténation fonctionne parfois, mais mpgtx assure la cohérence structurelle du résultat. Les versions 1, 2 et 3 du format sont correctement supportées. On notera que divers autres outils sont livrés dans ce paquet cadeau (demux, split, info, etc).

LaTeX c'est cool, ça fait des trucs trop bien.

Pour produire sous LaTeX efficacement, plusieurs outils existent qui fournissent une interface d'édition plus qu'utile (sinon se rabattre sur emacs, vi ou ed fonctionne aussi).

Celui que j'utilise parce que simple et efficace est TeXshop. Il utilise la TexLive - teTeX de Gerben Wierda (mais tout autre distribution fait aussi bien l'affaire).

Une alternative est d'utiliser iTeXMac. Je l'ai longtemps utilisé mais je le trouvais alors un peu trop compliqué (j'apprécie la simplicité). Attention car son paramétrage est parfois délicat mais ses fonctionnalités sont très puissantes.

Il existe LyX qui permet une édition visuellement approchée du résultat (WYSIWYG). Chacun son truc...

Les Grands Natifs Unixiens peuvent éditer en utilisant TeXmacs, it is wysiwyg too. Le support existe à la fois sous Fink et MacPorts.

Pour éditer des bibliographies, j'utilise l'excellent BibDesk.

Mon mp3 il est trop naze, i play pas mes tunes, zyva tu f'rais quoi toi ?

Ce problème est assez difficile à résoudre car les causes sont multiples. Mais, mais, c'est très généralement lié à la présence de balises mp3 non ou mal reconnues par le lecteur. Il faut alors trouver un outil d'édition des tag mp3. Je n'en connais pas de vraiment satisfaisants. J'utilise parfois MP3 ID3X. De toutes les façons c'est laborieux! Pour ma part j'ai renoncé aux lecteurs pas chers. Fabricants de lecteurs mp3 = escrocs patentés.

Comment retoucher/convertir des images pixelisées ?

La solution la plus économique est encore d'utiliser le portage de The Gimp.

T'as pas un truc pour faire des diagrammes ?

Si! J'ai! On peut utiliser la version d'évaluation (bridée en capacité pas en temps) de OmniGraffle.

Comment faites-vous pour ré-encoder des flux vidéo ?

De très nombreux outils existent, du plus farfelu/foireux au plus perfectionné/inutilisable. Celui qui me rend à chaque fois le service désiré c'est ffmpegX.

Wah! Comment t'as eu toutes ces pochettes de CD ?

Il y a certes la solution native d'iTunes qui intègre désormais Cover Flow additionné d'un module de chargement des pochettes d'album via iTunes store, mais il faut pour cela posséder un compte client. Pour ma part, j'utilise le très pratique Clutter qui va chercher les images sur différents sites. Pfff! C'est mort maintenant. J'y vais à la main...

Good news. Il suffit de chercher un peu, par exemple l'excellent Dashboard Widget Amazon Album Art.

Tu codes avec quoi ?

Bon normalement il faudrait coder en utilisant l'outil natif xcode, mais comme je ne génère pas d'application spécifiquement MaxOSX je n'ai pas acquis le réflêxe consistant à le lancer. Pour l'avoir tester de nombreuses fois (je suis curieux), c'est un outil assurément merveilleux, mais vous savez le rouleau compresseur, la mouche...
Certes on trouve disponible tout les trucs Unixiens (Linuxiens?) du même genre, Eclipse, mais aussi Sun Java Studio Creator, etc. Je vous fait grâce des JBuilder, NetBeans et autres.
Mais je ne suis pas fana de ses trucs, même si je leur concède une certaine utilité. En tous cas, créer un projet pour écrire HelloWorld.c c'est un peu lourd. Mais si vous voulez jouer avec les sources de konqueror alors là d'accord, c'est même indispensable.
Bref je «code à la main» (à l'ancienne!). Pépé utilise donc Emacs on Aqua, un bon vieux Terminal comme dans le temps et ses petits doigts gourds pour lancer gcc, make, etc.

Tu préfères le Georges V, Microsoft ou le libre ?

Je ne suis jamais entré dans le «Georges V», je ne suis même pas sûr (si j'en suis sûr) que ce soit intéressant. Mais en ce qui concerne les suites bureautique j'utilise tout! Y compris la suite Microsoft (<bruit fond="true">ouh le traître!</bruit>). Je n'ai absolument pas de religion sur ce point (Libre/Sous licence).
Donc la suite Microsoft (Word, Excel et Power Point). Mais aussi le libre (enfin refaire la roue en plus ou moins rond c'est pas le top tout de même!): Open Office (il m'énerve parce qu'il lance X11 et puis que j'ai l'impression d'avoir un mauvais portage de Windows sur mon Mac, il n'y a pas si longtemps que les petits carrés bleus ont disparu), NeoOffice (Bringing the power... Yo! J'ai l'impression d'être le meilleur du monde avec ça!) et AbiWord (j'aime pas que l'on commence par me dire où je dois rapporter les bogues, de toutes les façons je les fous à la poubelle).
Sinon il y a la suite iWork d'Apple: qui comporte Pages et Keynote. Je n'ai eu le loisir que de tester le second, mais je suppose que la conclusion est la même pour le premier! C'est comme d'habitude avec Apple: une apparence plus soignée, des concepts plus clairs, un style plus dépouillé, le tout pour une efficacité infiniemment plus importante. Fini les centaines d'options mal classées, les milliers de sous-menus, les milliards de fonctionnalités *absolument* inutiles, etc. Les couteaux suisses sont marrants, mais personne ne se coupe ou se lime les ongles avec (les derniers modèles sont disponibles avec un port USB - à quand le lecteur mp3 ? le tuner TNT ?).

Tu fais des sauvegardes ?

Non j'ai entièrement confiance en mon matériel et mon logiciel. JE DÉCONNE! J'utilise deux techniques différentes.
La première consiste à utiliser rsync et synchroniser mes fichiers locaux avec un compte sauvegardé que je possède par ailleurs (mais cette technique pourrait être utilisée avec un fournisseur d'accès offrant un espace disque et en utilisant une méthode équivalente. Note qu'il existe une version MacOSX rsyncX que je n'ai pas testée mais qui permet de sauver les «resources fork» (ignorant passe ton chemin!).
La seconde utilise bêtement un disque externe et Silverkeeper qui synchronize/sauvegarde/restaure, etc. Attention car SilverKeeper ne fonctionne pas avec Léopard.

Comme je suis paranoïaque schizophrénique pervers dangereux, maintenant j'utilise aussi TimeMachine (à qui, je trouve, il manque quelques options).

Comment rendre les sauvegardes automatiques ?

Il existe des tas de moyens différents. En ce qui me concerne, j'ai rendu automatique le lancement de rsync lors de ma déconnexion (logout). La technique est assez simple et repose sur la possibilité d'indiquer au système d'exécuter un script lors de la déconnexion. Il suffit de modifier la valeur de la clé LogoutHook du domaine global com.apple.loginwindow en utilisant la commande:

sudo defaults write com.apple.loginwindow LogoutHook script
À vous d'écrire un script adéquat (c'est plus délicat qu'on ne le croit généralement), mais pour faire encore plus chic vous pouvez utiliser les services de iHook qui permet d'obtenir une interface Aqua par-dessus un script.

Où ont-ils planqué les préférences du domaine global ?

Ah oui les fameuses NSGlobalDomain/Global Domain Preferences... Pour des raisons de sécurité elles ne sont plus dans /Library/Preferences/ mais dans un répertoire rendu inaccessible aux utilisateurs sauf root et de référence /private/var/root/Library/Preferences/. Il n'est évidemment pas conseillé d'y toucher autrement qu'en passant par l'outil defaults.

Créer des panoramas images ou QuicktimeVR

J'utilise l'excellent Panorama Maker de Arcsoft dont une version m'a été fournie avec mon Coolpix L12. Le problème est que le fichier QuicktimeVR engendré est agrémenté de métadonnées (resource fork) qu'il faut « aplatir ». Pour cela j'utilise lillipot qui fait la bonne conversion (QTBridge développe d'ailleurs d'autres outils très intéressants).

Le surf du net (encore appelé Webboarding): c'est quoi ton matos pour dévaler les pentes abruptes ?

J'utilise toujours Safari sauf dans certains cas très particuliers dans lesquels le concepteur du site a visé juste dans le truc qui rend son site incompatible avec Safari (mais faut être tordu).

Bien entendu, je fais un peu de veille technologique sur ce point et il m'arrive de lancer: Firefox, Camino, Flock, Netscape Navigator, OmniWeb, Opera, Seamonkey ou encore Shiira. Il y a longtemps que je n'ai pas testé Amaya qui est un peu pédant... Dans le temps y'avait même Internet Explorer (je viens de me brûler les doigts).

Et on peut vraiment pas avoir Ouindoze ? Ou Fribééssedé ? Ou Sole-à-risque  ?

Bien entendu, la technologie moderne nous autorise pratiquement tout. Par exemple, l'emploi d'une bonne machine virtuelle est très utile. On peut utiliser Parallels (payant ~$80), VMware Fusion (payant ~$80), ou VirtualBox de Sun (environ pas cher de chez gratuit à peu de frais).

J'utilise VirtualBox avec bonheur. Quel pied de voir tourner Solaris par exemple. Mais j'ai aussi essayé d'y mettre L***x (c'est comme le démon vaut mieux pas prononcer son nom).

Comment on fait pour exécuter une commande Applescript depuis un shell (par exemple) ?

Il y a une commande en ligne qui s'appelle osascript. Un fichier script exécutable utilise l'option .scpt. Attention, il ne faut pas confondre ces scripts avec ceux du shell. Une utilisation pourrait être osascript -e 'tell application "iTunes" to back track' qui commande à iTunes de revenir au début du morceau en cours si son écoute a débuté depuis longtemps, sinon au début du morceau précédent.

Tu codes en quoi ? Avec quoi ? Ou t'es content de XCode ?

Oui en général je suis content de XCode. Il y a bien quelques désagréments: vas-y toi renommer un projet XCode... Néanmoins ma curiosité me pousse parfois jusqu'à essayer d'autres choses.

Pour coder en C++ il y a par exemple un outil bien sympathique: Code::Blocks, dont les curieux noteront d'ailleurs qu'il est disponible sous tous les systèmes y compris Windows (il utilise comme support de compilation gcc).

Pour coder en C, c'est «roots»: emacs ou vi selon l'humeur, puis gcc et make si nécessaire.

En Java, c'est variable, parfois Eclipse si je veux faire un poil de modélisation UML avec le plugin Omondoobsolète car le plugin est désormais payant, parfois emacs/vi et parfois XCode, mais rarement Netbeans (juste parce que je n'ai pas tant de temps à investir pour explorer les trop nombreuses choses existantes) ou Java Studio Creator (même raison)

En Objective-C, uniquement XCode mais seulement par habitude et que je n'utilise Objective-C que pour Cocoa, donc avec Interface Builder...

En javascript, ben emacs/vi, «roots» quoi!

Sinon y'a d'autres langages ?

Quoi, tu joues encore à Pacman ?

Non, c'est juste pour me vanter. Mais de temps en temps j'utilise MacMAME, un truc génial qui me replonge dans le lointain passé des jeux en noir et blanc avec des pixels de taille A4! À chaque fois, c'est avec une certaine jubilation que je m'éclate à Pengo, Donkey Kong, Galaxian, Pacman, Space Invaders, Scramble, Millipede, Lode Runner, ou encore Crush Roller (qui se souvient de ce p..... de truc!), etc.

Comment tu contrôles ton Mac à distance ?

Deux matériels disponibles.
D'abord j'utilise parfois ma télécommande fournie avec le Mac. Bon évidemment je ne contrôle pas grand chose, iTunes ou KeyNote, mais c'est largement suffisant.
Ensuite, je peux contrôler mon Mac par l'intermédiaire de mon iTouch, et là, il y a le choix! Tout d'abord en utilisant deux applications gratuites de l'App Store (jfControl Remote Lite et Nam's Remote Free). La première est franchement faiblarde, puisqu'en version gratuite elle ne permet que de contrôler iTunes et d'éteindre l'ordinateur. Par contre, la seconde est assez merveilleuse puisqu'on contrôle le pointeur de souris (l'iTouch est comme un trakpad), les boutons de la souris, etc. On a même la possibilité de faire des saisies clavier (bon c'est pas la panacée, mais ça doit faire son effet en public). Excellent!
Sinon il existe aussi VLCRemFree pour contrôler VLC.
J'aime bien Remote pour contrôler iTunes, il suffit de partager des listes dans iTunes et Remote permet de les lire, etc. On dispose évidemment des pochettes, etc... Une interface iTunes déportée quoi...

Comment modifier les droits d'accès positionnés par défaut par les applications (comme le Finder) ?

Sans rentrer dans les détails croustillants, les Unixiens de base ont pu constater que positionner l'umask de son propre shell, dans n'importe quel fichier d'initialisation habituel type .*rc ne suffit pas. La cause étant que les applications MacOSX, comme le Finder, ne sont pas obtenues en passant par un shell utilisateur dans la généalogie de création des processus, et donc ne peuvent hériter de la valeur de la propriété correspondante. Il faut donc passer par des modifications de l'environnement MacOSX. Je conseille donc d'utiliser, en premier lieu, la commande suivante
defaults write com.apple.finder umask -int valeur
qui permet de positionner l'umask du Finder à la valeur considérée (je laisse le lecteur se reporter au manuel de chmod, par exemple, pour déterminer quelles valeurs numériques utiliser).
Maintenant, si l'on veut positionner l'umask pour le Finder de tout le monde, il faut utiliser le NSGlobalDomain, juste après le write dans la commande.
Il est possible de positionner l'umask pour tous les processus utilisateurs en modifiant (ou en créant) le fichier /etc/launchd-user.conf et en y ajoutant (ou modifiant) la ligne :
umask valeur
Pour les processus systèmes, démons, etc., c'est le fichier /etc/launchd.conf qui est concerné.

Partager un répertoire entre utilisateurs avec partage contrôlé du contenu...

Si l'on veut permettre que plusieurs utilisateurs puissent librement utiliser un répertoire donné comme lieu d'échange et de travail (je ne rentre pas dans les détails mais faire qu'un utilisateur créé un répertoire dans lequel un autre utilisateur puisse créer des fichiers et répertoires que tous deux puissent modifier librement, et vice-versa, ou tout autre combinaison subtile), il faut utiliser les ACL (Access Control List) MacOSX qui fournissent une extension aux droits d'accès ordinaires. L'idée est relativement simple, car il suffit de positionner des droits étendus sur le répertoire (tout autoriser pour les utilisateurs en question) et d'indiquer que l'on désire que ces propriétés soient héritées aux fichiers et sous-répertoires. La commande suivante
chmod +a "utilisateur allow read,write,append,execute,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit"
fera l'affaire, et ce pour chaque utilisateur concerné.
Note: pour obtenir la liste des droits étendus il suffit d'utiliser l'option -e de la commande ls.

Modifier « manuellement » certaines préférences des utilisateurs (par exemple dans les contrôles parentaux)...

Les utilisateurs du contrôle parental de MacOSX ont sans doute constaté certains dysfonctionnements (fonctionnements aléatoires sous certaines versions et configurations étranges). Pour des raisons que j'ignore, certains sites autorisés (dans la whitelist) le sont parfois globalement (autoriser une page autorise l'ensemble du site) parfois individuellement (autoriser une page n'autorise que celle-ci). Impossible de choisir ce comportement lors de l'autorisation au coup par coup (tentative d'accès/refus/ajout du site par authentification), comment faire ?
La première chose à remarquer est qu'il est inutile de modifier les /Library/Managed Preferences/utilisateur car celles-ci sont obtenues par copie fraîche à chaque session depuis les services d'annuaire! La seule solution est donc de modifier les préférences via le service d'annuaire. Mais depuis la disparition de l'outil adéquat sous /Applications/Utilities (j'ai même oublié son nom), comment faire ?
Il faut utiliser (si vous n'êtes pas sous une version Server du système) la commande manuelle dscl (Directory Services Command-Line utility). L'idée est simple:

  1. obtenir les préférences associées au compte et sous une forme éditable
  2. éditer les préférences
  3. recharger les préférences du compte avec les préférences éditées
Pour le premier point il suffit de lancer sous Terminal la commande dscl . -mcxexport /Users/utilisateur > /tmp/fichier qui a donc pour effet de produire un fichier XML au format texte, donc éditable, contenant l'ensemble des préférences MCX de l'utilisateur.
Ensuite éditer! Attention en éditant avec Property List Editor car il faut sauver en format XML Property List (enfin j'ai eu des problèmes en utilisant le format binaire, mais était-ce bien ça le problème ?).
Pour finir, importer les préférences MCX en utilisant: dscl . -mcximport /Users/utilisateur /tmp/fichier.
Pour finir, bondir de joie car la documentation est plus qu'inexistante en la matière!
Sinon et pour finir les curieux pourront toujours aller jeter un oeil dans /var/db/dslocal/nodes/...

Gérer l'ensemble du système d'impression

Bah! Fastoche y'a les préférences du système pour ça. Ben tiens, essaie donc ici.

Comment avoir un triple démarrage (triboot OsX, *nux, Windows) sur mon mac ?

Tout est indiqué ici.

Comment fait un Mac pour savoir qu'il faut lancer iTunes quand je double-clique sur un fichier .mp3 ?

C'est assez compliqué à décrire complètement mais le principe est simple. Lorsqu'on installe une application dans le système celui-ci examine sa structure (tiens il faudra raconter comme ça marche ça!) dans laquelle se trouve normalement une liste des fichiers que l'application en question est capable d'accepter par défaut (types MIME, extensions de fichier, etc). Ces informations sont alors enregistrées dans une table qui peut-être consultée mais avec une commande cachée (sous 10.6.2 c'est la commande lsregister qui se trouve dans le répertoire /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support). Il suffit alors de la lancer sous la forme:

.../lsregister -dump

Et l'on obtient des tas d'informations utiles comme par exemple :

--------------------------------------------------------------------------------
bundle  id:            32824
        path:          /Applications/iTunes.app
        name:          iTunes
        identifier:    com.apple.iTunes (0x800044e5)
        canonical id:  com.apple.itunes (0x8000005f)
        version:       9.1.1
        mod date:      4/28/2010 13:48:52
        reg date:      5/10/2010 16:13:26
        type code:     'APPL'
        creator code:  'hook'
        sys version:   10.4.9
        flags:         apple-internal  relative-icon-path  wildcard
        item flags:    container  package  application  extension-hidden  native-app  scriptable  requires-native  ppc  i386
        icon:          Contents/Resources/iTunes.icns
        executable:    Contents/MacOS/iTunes
        inode:         1438828
        exec inode:    2696253
        container id:  32
        -minimum-versio 100409
        library:
        library items:
        --------------------------------------------------------
        claim   id:            24388
                name:          MP3 Audio File
                rank:          Default
                roles:         Editor
                flags:         apple-default  apple-internal  relative-icon-path
                icon:          Contents/Resources/iTunes-mp3.icns
                bindings:      public.mp3, .mp3, 'mp3!', 'MP3!', 'MPG3', 'mpg3', 'Mp3 ', 'MP3 '

Où l'on voit donc que les fichiers d'extension .mp3 sont reconnus par iTunes! Évitez de faire trop d'expérimentations avec lsregister car on peut tout casser très facilement...

Comment capturer la sortie d'iTunes dans Audacity (par exemple) ?

Il existe un logiciel magique pour cela qui fait partie de la catégorie des routeurs d'audio, il s'agit de SoundFlower. Son principe de base est extrêmemenbt simple : il crée des périphériques virtuels d'entrée et sortie audio de sorte que des sorties audio peuvent être injectés en entrée de SoundFlower et que les sorties de SoundFlower puissent être vues comme des entrées par le système. Après l'avoir téléchargé, lancez-le et ne toucher à rien (ne cherchez pas à le configurer vous ferez cela plus tard). Ensuite, lancez les préférences systèmes et choisissez de configurer le son. Deux onglets sont à votre disposition : entrée et sortie. Bien entendu, d'habitude il n'y a pas grand-chose à sélectionner, mais maintenant vous voyez apparaître Soundflower, sélectionnez la version de base à deux canaux (2 ch), en entrée et en sortie. Ensuite, rendez-vous dans Audacity et ouvrez les préférences, dans Périphériques, sélectionnez Soundflower comme périphérique d'enregistrement. Voilà, vous avez gagné. Le principe reste le même quelque soit les applications que vous souhaitez utiliser pour écouter ou enregistrer du son (certaines permettent de sélectionner directement le périphérique sans avoir à passer par les préférences systèmes).
Attention : pensez bien à remettre les préférences systèmes de configuration du son dans leur état initial sinon vous ne pourrez plus rien entendre ou enregistrer en temps normal!

Gagner de la place en supprimant le cache TimeMachine

Désormais, TimeMachine utilise un cache local sur votre propre disque afin d'optimiser les prochaines sauvegardes. Néanmoins cette fonctionnalité utilise de l'espace disque dont vous pourriez avoir nécessité. Pour désactiver la fonctionnalité sudo tmutil disablelocal. Devinez comment réactiver la fonctionnalité ?


Jean-Baptiste Yunès