Available Languages: | Deutsch | English | Español | Français | 日本語 (Nihongo) | Português | Русский (Russkiy) | 中文 (简) (Simplified Chinese) |

Utilisation de X11 sous Darwin et Mac OS X

Ce document traite de l'utilisation de X11, XFree86, et Xtools sur les systèmes Mac OS X et Darwin d'Apple. Il commence par une introduction et l'historique du développement, puis décrit la situation actuelle et les nombreuses options d'utilisation de X11 avec ou sans Fink.

Contents

1 Introduction

1.1 Qu'est-ce que X11 ?

Le système X Window Version 11, ou X11 en raccourci, est un système d'affichage graphique avec une architecture client-serveur transparente au réseau. Il permet aux applications de tracer sur l'écran des pixels, des lignes, du texte, des images, etc... X11 comprend aussi des librairies supplémentaires qui permettent aux applications de tracer des éléments d'interfaces utilisateur, c'est-à-dire des boutons, des champs texte, etc...

X11 est, de facto, le système graphique standard du monde Unix. Il est livré avec Linux, les variantes *BSD et la plupart des variantes Unix commerciales. Les environnements de bureaux, tels CDE, KDE et GNOME, s'exécutent sous X11.

1.2 Qu'est-ce que Mac OS X ?

Mac OS X est un système opératoire conçu par Apple. Comme ses prédécesseurs NeXTStep et OpenStep, il est basé sur BSD et fait donc partie de la famille des systèmes opératoires Unix. Néanmoins, il possède un système d'affichage graphique propriétaire. Le moteur graphique est appelé Quartz et l'interface Aqua, bien que les deux noms soient souvent utilisés de manière interchangeable.

1.3 Qu'est-ce que Darwin ?

Darwin est, à la base, une version réduite de Mac OS X, disponible gratuitement avec son code source. Il ne contient ni Quartz, ni Aqua, ni aucune des technologies qui leur sont rattachées. Par défaut, il ne fournit qu'une console texte.

1.4 Qu'est-ce que XFree86 ?

XFree86 est une implémentation open source de X11. Au départ, elle a été développée pour tourner sous PC Intel x86, d'où son nom. De nos jours, elle tourne sur de nombreuses architectures et systèmes opératoires, entre autres OS/2, Darwin, Mac OS X et Windows.

1.5 Qu'est-ce que Xtools ?

Xtools est un produit de Tenon Intersystems. Basé sur XFree86, c'est une version de X11 pour Mac OS X.

Note : son développement a, semble-t-il, été stoppé quelque temps avant la publication de Mac OS 10.3.

1.6 Client et Serveur

X11 possède une architecture client-serveur. Un programme central réalise la partie graphique et coordonne l'accès des différentes applications, c'est le serveur. Une application qui veut exécuter une fonction graphique sous X11 se connecte au serveur et lui indique ce qu'il faut dessiner. Ces applications sont appelées clients dans le monde X11.

Sous X11, le serveur et les clients peuvent être situés sur des machines différentes, ce qui conduit parfois à une confusion de terminologie. Dans un environnement constitué de stations de travail et de serveurs, on exécute le serveur d'affichage X11 sur la station de travail et les applications (les clients X) sur la machine serveur. Ainsi, lorsque l'on parle de "serveur", on entend par là le serveur d'affichage X11, et non pas la machine cachée dans un placard.

1.7 Que signifie sans racine (rootless) ?

Contexte : X11 modélise l'écran comme une arborescence de fenêtres contenues les unes dans les autres. À la racine de l'arborescence se trouve une fenêtre spéciale de la taille de l'écran et qui contient toutes les autres fenêtres. Cette fenêtre contient le fond du bureau et est appelée la "fenêtre racine".

Maintenant, revenons à nos moutons : comme tout environnement graphique, X11 a été écrit pour fonctionner seul et prendre le contrôle de l'écran tout entier. Sous Mac OS X, Quartz contrôle déjà l'écran, aussi il faut prendre des dispositions pour que les deux environnements puissent fonctionner en même temps.

L'un des moyens de faire cela est de faire fonctionner les deux environnements à tour de rôle. À chaque environnement est affecté un écran, mais seul l'un d'entre eux est visible à un moment donné, et l'utilisateur peut basculer de l'un à l'autre. C'est ce qu'on appelle le mode plein-écran ou mode racine. Il est appelé ainsi car il y a alors sur l'écran X11 une fenêtre racine parfaitement normale qui fonctionne exactement comme sur les autres systèmes.

L'autre moyen consiste à mêler les fenêtres des deux environnements. Cela élimine la nécessité de basculer entre les deux écrans. Cela élimine aussi la fenêtre racine de X11, car Quartz se charge déjà du fond de bureau. Comme il n'y aucune fenêtre racine (visible), ce mode est appelé "sans racine". C'est la façon la plus agréable d'utiliser X11 sous Mac OS X.

1.8 Qu'est-ce qu'un gestionnaire de fenêtres ?

Dans la plupart des environnements graphiques, l'aspect des cadres de fenêtres (barre de titre, bouton de fermeture, etc...) est défini par le système. Sous X11, il en va autrement. Dans cet environnement, les cadres de fenêtres (aussi nommés "ornements") sont fournis par un programme distinct, appelé le gestionnaire de fenêtres. À bien des égards, le gestionnaire de fenêtres n'est autre qu'une application client ; il est lancé de la même façon et dialogue avec le serveur X au travers des mêmes canaux.

Vous avez le choix entre une multitude de gestionnaires de fenêtres. Le site xwinman.org en donne la liste complète. Les plus populaires sont ceux qui permettent à l'utilisateur de personnaliser leur apparence via ce qu'on appelle des thèmes. La plupart des gestionnaires de fenêtres fournissent d'autres fonctionnalités, comme les menus déroulants dans la fenêtre racine, les docks et les boutons de lancement.

De nombreux gestionnaires de fenêtres ont été compilés pour Fink ; en voici la liste actuelle.

1.9 Que sont Quartz/Aqua, Gnome et KDE ?

Ce sont des environnements de bureau ; il y en a bien d'autres. Leur but est de proposer un cadre aux applications, de telle sorte que leur aspect et leur comportement présentent une constante visuelle. Par exemple :

un moteur graphique : X11

un gestionnaire de fenêtre : sawfish

un bureau : Gnome

La frontière entre moteur d'affichage graphique, gestionnaire de fenêtres et bureau est floue, car une même fonctionnalité (ou une fonctionnalité similaire) peut être implémentée par l'un de ces environnements ou plusieurs d'entre eux. C'est une des raisons pour laquelle un gestionnaire de fenêtres particulier peut ne pas fonctionner avec un environnement de bureau donné.

De nombreuses applications sont développées pour être intégrées dans un environnement de bureau spécifique. Très souvent, il suffit d'installer les librairies de l'environnement de bureau (et les librairies sous-jacentes) avec lesquelles l'application a été développée pour qu'elle fonctionne (quasi) sans perte de fonctionnalités. Par exemple, un nombre de plus en plus grand d'applications GNOME fonctionnent hors de l'environnement GNOME. Malheureusement, ce n'est pas encore le cas pour les applications KDE.

2 Historique

[Désolée pour le langage épique, c'était trop tentant...]

2.1 Genèse

Au commencement était le néant. Darwin balbutiait à peine, Mac OS X en était encore au stade embryonnaire et il n'existait aucune implémentation de X11 pour l'un et l'autre.

Il y eut John Carmack qui porta XFree86 sur Mac OS X Server, le seul système opératoire disponible en ce temps-là dans la famille Darwin. Puis vint Dave Zarzycki qui modifia ce port pour XFree86 4.0 et Darwin 1.0. Les rustines trouvèrent un nid douillet dans le référentiel CVS de Darwin et s'y reposèrent en attendant les évènements.

2.2 Création de XonX

Un beau jour apparut Torrey T. Lyons et il donna aux rustines Darwin tous les soins qu'elles réclamaient. Enfin, il les plaça dans un nouveau foyer, le référentiel CVS officiel de XFree86. Ce fut l'ère de Mac OS X Public Beta et de Darwin 1.2. XFree86 4.0.2 tournait bien sur Darwin, mais les utilisateurs de Mac OS X devait se déconnecter d'Aqua et ouvrir la console pour le faire tourner. Alors Torrey prit avec lui l'équipe XonX et commença un long voyage vers le port de XFree86 sur Mac OS X.

À peu près à la même époque, Tenon commença à construire XTools, en se fondant sur XFree86 4.0.

2.3 Être ou ne pas être racine

Bientôt l'équipe XonX réussit à faire tourner XFree86 en mode plein écran parallèlement à Quartz et mit à disposition d'utilisateurs intrépides des versions de test. Celles-ci furent appelées XFree86-Aqua, ou XAqua en raccourci. Comme Torrey avait pris l'initiative de tout cela, les modifications allèrent directement dans le référentiel CVS de XFree86, ce qui aboutit à la version 4.1.0.

Dans les premiers temps, l'interface avec Quartz se faisait via une petite application appelée Xmaster.app (écrite avec Carbon, puis réécrite en Cocoa). Plus tard, ce code fut intégré dans le serveur X, donnant naissance à XDarwin.app. La gestion des librairies partagées fut ajoutée à cette époque (et l'on réussit à convaincre Tenon d'utiliser ce jeu de rustines au lieu du leur, afin de garantir la compatibilité binaire). Il y eut même une certaine avancée sur un mode sans racine (avec l'API Carbon), mais hélas, il était trop tard pour l'intégrer dans XFree86 4.10. Et la rustine sans racine vogua, sans attaches, sur le réseau. Après la mise à disposition de XFree86 4.10 en mode en plein écran, les travaux sur le mode sans racine continuèrent, en utilisant l'API Cocoa cette fois-ci. Un mode sans racine expérimental fut mis dans le référentiel CVS de XFree86.

Pendant ce temps, Apple sortait Mac OS X 10.0 et Darwin 1.3 ; quelques semaines plus tard, Tenon sortait Xtools 1.0.

Les travaux d'intégration du mode sans racine dans XFree86 continuèrent, si bien que, lorsque XFree86 4.2.0 sortit en janvier 2002, la version Darwin/Mac OS X avait été complètement intégrée dans la distribution principale de XFree86.

3 Récupération et installation de X11

3.1 Installation de X11 via Fink

Fink vous permet d'installer X11 de nombreuses façons ; entre autres, il fournit aussi ses propres paquets XFree86. Si vous utilisez, fink install ..., il téléchargera le code source et le compilera sur votre ordinateur. Si vous utilisez apt-get install ... ou l'interface dselect, il téléchargera des paquets binaires précompilés, identiques à ceux de la distribution officielle XFree86.

Notes générales :

Utilisateurs 10.4 :

Vous pouvez installer la version 4.5.0-23 de XFree86 à partir du source. Vous devez installer les deux paquets xfree86 et xfree86-shlibs pour obtenir une installation parfaitement fonctionnelle.

Vous pouvez aussi installer la version X11 de X.org (version 6.8.2-35 à la date de rédaction de ce manuel) à l'aide des paquets xorg et xorg-shlibs, situés dans l'arborescence instable. Cette version de X11 est similaire à la version 4.5 de XFree86, mais elle corrige certains bogues, apporte de nouvelles fonctionnalités et supprime certaines parties de code sur lesquels il existe des problèmes de licence.

Utilisateurs 10.3 :

Vous pouvez installer la version 4.4.0-13 (celle qui est dans la distribution binaire à la date de rédaction de ce manuel) ou la version 4.5.0-13 (celle qui est disponible sous forme source). Les paquets xfree86 et xfree86-shlibs sont tous les deux nécessaires à une installation complètement fonctionnelle.

Vous pouvez aussi installer la version X11 de X.org (version 6.8.2 à la date de rédaction de ce manuel) à l'aide des paquets xorg et xorg-shlibs, comme indiqué ci-dessus..

Utilisateurs 10.2 :

Les utilisateurs de la version Mac OS X 10.2 peuvent installer la version 4.3 sous forme source ou binaire, et la version 4.4 à partir de l'arborescence instable. Comme indiqué ci-dessus, vous devrez installer les deux paquets xfree86 et xfree86-shlibs.

XFree86 4.2.1.1 est aussi disponible pour les utilisateurs de Mac OS X 10.2, sous forme normale ou avec processus légers (-threaded), bien que ces versions soient considérées comme obsolètes (les versions ultérieures de X11 gèrent toutes les processus légers). Les paquets xfree86-base, xfree86-base-shlibs, xfree86-shlibs et xfree86-rootless-shlibs - ou leurs équivalents pour processus légers (-threaded) - doivent tous être installés pour obtenir une version fonctionnelle de XFree86. De plus, il faut installer les paquets xfree86-base-dev et xfree86-rootless-dev packages - ou leurs équivalents pour processus légers (-threaded) - pour empêcher Fink d'installer une version plus récente.

Utilisateurs 10.1 :

Vous ne pouvez installer que la version 4.2.0 de la distribution binaire. Il faudra installer les paquets xfree86-base et xfree86-rootless.

3.2 Binaires d'Apple

Le 7 janvier 2003, Apple a mis à disposition une implémentation X11 personnalisée basée sur XFree86-4.2, qui incluait un rendu Quartz et l'accélération OpenGL. Une nouvelle version est sortie le 10 Février 2003, qui comportait des fonctionnalités supplémentaires et des corrections de bogues. Une troisième version (la Bêta 3) est sortie le 17 mars 2003 avec de nouvelles fonctionnalités et des corrections de bogues. Cette version peut être utilisée sur Jaguar.

Le 24 octobre 2003, Apple a sorti Panther (10.3), qui inclut sa propre version de X11. Cette version est basée sur XFree86-4.3.

Le 29 avril 2005, Apple a sortiTiger (10.4), qui inclut sa propre version de X11. Cette version est basée sur XFree86-4.4.

Pour utiliser les binaires d'Apple, vous devez d'une part vous assurer que le paquet X11 User est installé et, d'autre part mettre à jour Fink.

Avec fink-0.16.2, vous devez aussi installer le paquet X11 SDK. Ensuite, Fink créera un paquet virtuel system-xfree86.

Avec fink-0.17.0 et les versions ultérieures, n'installez le paquet X11 SDK que si vous souhaitez construire des paquets à partir du source. Dans ce cas, même si vous n'avez pas installé le SDK, il y aura création des paquets virtuels system-xfree86 et system-xfree86-shlibs, ce dernier correspondant aux librairies partagées. Si vous installez le SDK, il y aura création d'un paquet system-xfree86-dev, représentant les headers.

Si vous avez déjà installé une distribution XFree86, que ce soit avec Fink ou non, vous pouvez suivez les instructions de remplacement d'un paquet X11 par un autre. Supprimez vos paquets existants, puis installez X11 d'Apple (et, éventuellement, X11 SDK).

Notes au sujet de l'utilisation de X11 d'Apple :

Pour de plus amples informations sur l'utilisation de X11 d'Apple, voir cet article sur Apple Developer Connection.

3.3 Binaires officiels

Le projet XFree86 comprend une distribution binaire officielle de XFree86 4.5. Vous la trouverez sur votre miroir XFree86 local dans le répertoire 4.5.0/binaries/Darwin-ppc-6.x (ou 4.5.0/binaries/Darwin-ppc-5.x pour Mac OS X 10.1). Téléchargez les fichiers archives tar Xprog.tgz et Xquartz.tgz bien qu'ils soient mentionnés comme "optionnels". Si vous ne savez pas quels fichiers sont nécessaires, téléchargez tout le répertoire. Lancez le script Xinstall.sh en tant que super-utilisateur pour installer l'ensemble. (Nous vous conseillons de lire les instructions officielles avant l'installation).

Quelle que soit la version que vous avez installée, vous aurez alors XFree86 avec un serveur plein écran ou sans racine sous Mac OS X.

3.4 Source Officiel

Si vous avez du temps à perdre, vous pouvez compiler XFree86 4.5.0 à partir du source. Vous trouverez le source sur un des miroirs cités sur XFree86 mirror dans le répertoire 4.5.0/source. Téléchargez les sept archives tar XFree86-4.5.0-src-#.tgz et décompressez-les dans un même répertoire. Vous pouvez adapter la compilation à vos besoins en plaçant des définitions de macros dans le fichier config/cf/host.def situé dans l'arborescence source de XFree86. Voir le fichier config/cf/darwin.cf pour quelques explications. (Note : seules les macros insérées dans un #ifndef peuvent être modifiées dans host.def).

Quand vous aurez fini la configuration, compilez et installez XFree86 à l'aide des commandes suivantes :

make World
sudo make install install.man

Tout comme avec les binaires officiels, vous obtiendrez XFree86 avec un serveur en mode plein écran ou sans racine sous Mac OS X.

3.5 Source le plus récent

Si vous avez le temps et des nerfs à toute épreuve, vous pouvez utiliser la dernière version de développement de XFree86 via le référentiel public CVS. Notez que le code est mis à jour constamment ; d'un jour à l'autre il est modifié.

Afin de l'installer, suivez les instructions sur XFree86 CVS pour télécharger le module xc. Puis suivez les instructions de compilation du source ci-dessus.

3.6 Remplacement de X11

Si vous avez installé l'un des paquets X11 de Fink, mais que, pour une raison ou une autre, vous décidez de le supprimer pour le remplacer par un autre, la procédure à suivre est simple. Vous devez forcer la suppression des anciens paquets, puis installer les nouveaux de façon à préserver la cohérence de la base de données dpkg.

Il y a deux façons de le faire :

  1. Via FinkCommander

    Si vous utilisez FinkCommander, vous pouvez forcer la suppression via le menu. Par exemple, si vous avez installé xfree86-rootless et que vous vouliez installer la version gérant les processus légers, sélectionnez les paquets xfree86-rootless, xfree86-rootless-shlibs, xfree86-base et xfree86-base-shlibs, puis lancez :

    Source -> Force Remove
  2. Manuellement via la ligne de commande

    Pour faire une suppression manuelle, utilisez dpkg avec l'option --force-depends :

    sudo dpkg -r --force-depends xfree86-rootless\ 
    xfree86-rootless-shlibs xfree86-base xfree86-base-shlibs

    Notez que si vous utilisez des applications qui nécessitent la version de XFree86 qui gère les processus légers, vous risquez d'avoir quelques problèmes avec la base de données dpkg, si vous supprimez de force cette version et installez un autre paquet XFree86 ou un paquet fantôme le représentant.

Si vous utilisez une version de X11 qui n'a pas été installé via Fink, vous devez la supprimer via la ligne de commande :

sudo rm -rf /usr/X11R6 /etc/X11

Ceci est vrai pour tout paquet X11 non installé via Fink. Vous devez aussi supprimer XDarwin.app ou X11.app, suivant l'installation effectuée. Examinez le fichier .xinitrc quand vous supprimez X11 d'Apple pour vous assurer qu'il ne lance pas quartz-wm. Vous pouvez ensuite installer la nouvelle variante X11 désirée, manuellement ou via Fink.

3.7 Résumé des paquets Fink disponibles

Voici un court résumé des options d'installation et des paquets Fink à installer :

Type d'installationPaquets Fink
XFree86 version 4.4.0 ou 4.5.0 (utilisateurs 10.3 et 10.4)

xfree86 et xfree86-shlibs

X.org-6.8.2 (utilisateurs 10.3 et 10.4)

xorg et xorg-shlibs

X11 d'Apple (toutes versions)

system-xfree86 et system-xfree86-shlibs (et system-xfree86-dev pour construire les paquets basés sur X11)

Binaires officiels XFree86 4.x

system-xfree86 et system-xfree86-shlibs (et system-xfree86-dev pour construire les paquets basés sur X11)

XFree86 version 4.x compilé à partir du source ou de la dernière version CVS

system-xfree86 et system-xfree86-shlibs (et system-xfree86-dev pour construire les paquets basés sur X11)

XFree86 version 4.2.1.x (utilisateurs 10.2 uniquement) ou 4.2.0 (utilisateurs 10.1 uniquement)

xfree86-base et xfree86-rootless (et les paquets -shlibs associés)

ou xfree86-base-threaded et xfree86-rootless-threaded (et les paquets -shlibs associés)

4 Lancement de X11

4.1 Darwin

Sous Darwin, XFree86 se comporte comme sur n'importe quel autre système Unix. En général, on le lance à partir de la console avec la commande startx ; elle lance le serveur et un certain nombre de clients, tels le gestionnaire de fenêtres et un émulateur de terminal avec shell. Sous Darwin, il n'est pas nécessaire de fournir des paramètres, on peut simplement utiliser :

startx

Vous pouvez personnaliser le lancement en utilisant différents fichiers placés dans votre répertoire utilisateur. .xinitrc gère les clients à lancer. .xserverrc gère les options du serveur et peut aussi lancer un autre serveur. Si vous n'arrivez pas à démarrer correctement (vous obtenez un écran blanc ou XFree86 s'arrête immédiatement), vous pouvez commencer par déplacer ces fichiers ailleurs, pour tenter de résoudre le problème. Quand startx ne trouve pas ces fichiers, il utilise des paramètres par défaut qui devraient convenir.

Vous pouvez aussi démarrer le serveur directement avec l'une des options XDMCP, comme ceci :

X -query remotehost

Vous trouverez de plus amples informations dans la man page Xserver.

Enfin, il existe une option pour paramétrer xdm ; voir la man page pour de plus amples informations.

Note : si vous utilisez Mac OS X antérieur à Panther, vous pouvez saisir >console dans la fenêtre d'ouverture de session. Vous accéderez ainsi à une console texte équivalente à Darwin. Si aucun champ pour saisir un nom d'utilisateur n'apparaît dans la fenêtre d'ouverture de session, tapez simplement la première lettre du nom d'un utilisateur quelconque, puis appuyez simultanément sur alt-retour chariot. Vous pourrez alors utiliser n'importe quelle méthode de démarrage ci-dessus, à l'exception de xdm.

Note : il est impossible de démarrer XFree86 à partir de la console sous Mac OS X Panther et suivant.

4.2 Mac OS X + XFree86 4.x.y

Il y a deux façons de lancer XFree86 sous Mac OS X. L'une est de double-cliquer sur l'application XDarwin.app, située dans le répertoire Applications. Vous pouvez alors choisir entre le mode plein écran et le mode sans racine dans la fenêtre de dialogue qui apparaît à l'écran au lancement. Vous pouvez désactiver cette fenêtre de dialogue et indiquer le mode de démarrage automatique souhaité dans les préférences de XDarwin.

Avant la version 4.2.0, XDarwin démarrait automatiquement en mode plein écran, et il n'y avait aucun moyen de le faire démarrer en mode sans racine en double-cliquant sur l'application.

La seconde façon de démarrer XFree86 sous Mac OS X est de lancer la commande startx dans Terminal.app. Si vous démarrez le serveur de cette façon, vous devez lui indiquer qu'il fonctionnera en parallèle avec Quartz. Ce qui se fait en utilisant l'option -fullscreen :

startx -- -fullscreen

Le serveur démarre alors en mode plein écran, et les clients mentionnés dans le fichier .xinitrc sont lancés.

Note : antérieurement à la version 4.2, on utilisait l'option -quartz pour démarrer en mode plein écran.

Vous pouvez le lancer en mode sans racine avec l'option -rootless :

startx -- -rootless

L'option -quartz ne sert plus à passer en mode plein écran, mais à utiliser le mode défini dans les préférences.

À partir de la version 4.3, la fenêtre de dialogue de démarrage apparaît quand on utilise startx sans paramètres.

4.3 Lancement de X.org

X.org marche en tout point de façon identique à XFree86.

4.4 Lancement de X11 d'Apple

X11 d'Apple fonctionne de la manière similaire à XFree86 (c'est-à-dire qu'il utilise un fichier .xinitrc pour contrôler les clients lancés au démarrage). On le lance normalement en double-cliquant sur l'icône de X11.app (situé dans le répertoire /Applications/Utilitaires). Vous pouvez aussi utiliser startx, mais il n'existe pas d'option en ligne de commande pour choisir le mode d'affichage ; dans ce cas, X11.app démarre dans le mode précédemment choisi dans ses préférences.

Par défaut, le gestionnaire de fenêtres est quartz-wm d'Apple. Vous pouvez passer de mode plein écran en mode sans racine en changeant l'option correspondante dans les préférences de X11.app. Il n'est pas nécessaire de redémarrer pour que le changement ait lieu. Néanmoins, ceci ne fonctionne pas avec quartz-wm, il faut choisir un autre gestionnaire de fenêtres (par exemple dans .xinitrc).

4.5 applex11tools

Le paquet applex11tools de Fink vous permet d'utiliser X11.app et quartz-wm sous Mac OS X 10.3 et suivant avec XFree86 4.4 et suivant ou X.org.

Pour installer ce paquet, vous devez activer la branche instable et avoir installé le paquet X11User.pkg dans la hiérarchie /Users ou /Volumes. X11.app sera installé dans le dossier Applications de l'arborescence Fink. Vous pourrez alors utilisé soit X11.app ou XDarwin.app.

4.6 Fichier .xinitrc

S'il existe dans votre répertoire utilisateur un fichier nommé .xinitrc, il sera utilisé pour lancer quelques clients X au démarrage, tels le gestionnaire de fenêtre, quelques xterm ou un environnement de bureau comme GNOME. Le fichier .xinitrc est un script shell qui contient les commandes pour ce faire. Il n'est pas nécessaire de mettre le traditionnel #!/bin/sh dans la première ligne du fichier et de rendre exécutable le fichier ; xinit sait le lancer via un shell.

S'il n'existe pas de fichier .xinitrc dans votre répertoire utilisateur, X11 utilise le fichier par défaut /private/etc/X11/xinit/xinitrc. Vous pouvez vous servir de ce fichier comme base pour votre propre fichier .xinitrc :

cp /private/etc/X11/xinit/xinitrc ~/.xinitrc

Si vous utilisez Fink, vous devez sourcer init.sh en début de fichier pour garantir une définition corrrecte de votre environnement.

Vous pouvez mettre à peu près n'importe quelle commande dans un fichier .xinitrc, mais il faut tenir compte des éléments suivants. Tout d'abord, le shell qui interprète le fichier attend, par défaut, que chaque programme lancé soit terminé avant de lancer le suivant. Si vous voulez lancer plusieurs programmes en parallèle, vous devez indiquer au shell qu'il doit les faire tourner en "arrière-plan", en ajoutant un & à la fin de la ligne.

Ensuite, xinit attend que le script .xinitrc se termine et interprète sa fin ainsi : "la session est terminée, je dois aussi tuer le serveur X maintenant". Cela signifie que la dernière commande du fichier .xinitrc ne doit pas tourner en arrière-plan et que cette commande doit être un programme de longue durée. En général, on utilise le gestionnaire de gestionnaire comme dernière commande. En fait, la plupart des gestionnaires de fenêtres partent du principe que xinit attend qu'ils se terminent et utilisent cela pour faire fonctionner l'article de menu "Fin de session". (Note : pour restreindre l'usage de la mémoire et le nombre de cycles CPU, vous pouvez mettre un exec au début de la dernière ligne comme dans les exemples ci-dessous.)

Exemple de démarrage de GNOME :

. /sw/bin/init.sh
exec gnome-session

Exemple plus complexe pour les utilisateurs de bash qui suppriment les alertes X11, lance un certain nombre de clients et le gestionnaire de fenêtres Enlightenment :

. /sw/bin/init.sh

xset b off

xclock -geometry -0+0 &
xterm &
xterm &

exec enlightenment

Pour démarrer GNOME 2.2 sous X11 d'Apple, utilisez les commandes suivantes :

. /sw/bin/init.sh
quartz-wm --only-proxy &
metacity &
exec gnome-session

Pour GNOME 2.4 sous X11 d'Apple, metacity est lancée automatiquement, les commandes sont donc réduites à :

. /sw/bin/init.sh
quartz-wm --only-proxy &
exec gnome-session

Pour lancer KDE 3.2 (version < 3.2.2-21) sous X11 d'Apple :

. /sw/bin/init.sh
export KDEWM=kwin
quartz-wm --only-proxy &
/sw/bin/startkde >/tmp/kde.log 2>&1

Et enfin pour lancer la toute dernière version de KDE sous X11 d'Apple :

. /sw/bin/init.sh
/sw/bin/startkde >/tmp/kde.log 2>&1

4.7 OroborOSX

OroborOSX est une solution de remplacement pour les serveurs d'affichage X11.app et XDarwin display servers. Elle nécessite l'installation préexistante de X11 pour fonctionner. X11.app et XDarwin.app continuent à fonctionner en sa présence.

Au lancement, OroborOSX lance son propre gestionnaire de fenêtres sans racine, mais ne lit ni le fichier xinitrc du système, ni le fichier .xinitrc de l'utilisateur. Après lancement, on peut activer l'option de menu correspondante pour exécuter le fichier .xinitrc. Néanmoins, OroborOSX a sa propre façon de définir les applicattions à lancer au démarrage. Il possède aussi un mécanisme de démarrage des applications X11 à partir du Finder via des scripts de démarrage.

Pour de plus amples informations, allez sur la page d'accueil d'OroborOSX.

5 Xtools

5.1 Installation de Xtools

Pour une fois, c'est facile. Récupérez l'installeur, double-cliquez dessus et suivez les instructions à l'écran. Veillez à choisir le volume de démarrage lorsqu'on vous le demandera.

Si vous utilisez Fink, vous devez installer le paquet system-xtools après avoir installé Xtools. Ce paquet n'installe aucun fichier, il s'assure simplement que les librairies et autres fichiers nécessaires sont présents sur votre système et tient lieu de paquet fantôme dans le système de dépendances de Fink.

5.2 Lancement de Xtools

Pour lancer Xtools, double-cliquez sur Xtools.app dans le répertoire Applications. Tout comme XFree86, Xtools lance les clients spécifiés dans le fichier .xinitrc. De plus, Xtools vous permet de lancer des clients via son menu.

5.3 Notes sur OpenGL

Xtools utilise l'accelération matériel OpenGL en mode sans racine et fournit les librairies pour gérer cette fonctionnalité. La librairie principale libGL est parfaite, mais les librairies libGLU et libglut n'existent que sous forme statique, ce qui n'est pas suffisant pour assurer une compatibilité binaire complète avec XFree86. Quelques headers manquent. Fink ne propose pas de solution à ce problème pour le moment. Nous espérons que le problème sera résolu dans Xtools 1.1.

6 Autres possibilités pour X11

6.1 VNC

VNC est un système d'affichage graphique en réseau d'architecture semblable à celle de X11. Néanmoins, il fonctionne à un niveau plus bas, rendant son implémentation plus facile. Avec le serveur Xvnc et un client d'affichage Mac OS X, on peut exécuter des applications X11 sous Mac OS X. La page Xvnc de Jeff Whitaker vous fournira de plus amples informations à ce sujet.

6.2 WiredX

WiredX est un serveur X11 écrit en Java. Il gère aussi le mode sans racine. Un paquet d'installation Installer.app est disponible sur son site web.

6.3 eXodus

D'après son site web, eXodus 8 de Powerlan USA fonctionne en natif sur Mac OS X. On ne sait pas sur quel code il se base, ni s'il gère les clients locaux, ni comment il les gère. En conséquence, Fink ne peut fournir un support adapté à eXodus. Si vous avez de plus amples informations à ce sujet, n'hésitez pas à nous le faire savoir.

7 Résolution de problèmes engendrés par XFree86

7.1 Après lancement, XDarwin se termine ou se plante quasi immédiatement

Tout d'abord : pas de panique ! Il existe un grand nombre de choses qui peuvent ne pas fonctionner correctement avec XFree86 ; et un bon nombre d'entre elles peuvent causer des problèmes de démarrage. De plus, quand XDarwin rencontre des problèmes au démarrage, il est fréquent qu'il se plante. Cette section tente de fournir une liste exhaustive des problèmes que vous pouvez rencontrer. Mais, tout d'abord, vous devez collecter deux informations importantes.

Version de XDarwin : vous obtiendrez la version de XDarwin en cliquant une seule fois sur l'icône de XDarwin dans le Finder, puis en choisissant "Lire les informations" à partir du menu (raccourci Cmd-I). Le numéro de version n'est incrémenté que lorsqu'une nouvelle version de test binaire est produite par le projet XonX ; autrement dit, "1.0a1" correspond à n'importe quelle version entre 1.0a1 et 1.0a2.

Messages d'erreur : ils sont essentiels à la compréhension du problème auquel vous êtes confronté. Leur emplacement dépend de la façon dont vous avez lancé XDarwin. Si vous avez lancé startx dans une fenêtre de Terminal, les messages apparaissent directement dans cette fenêtre. Vous pouvez utiliser les barres de défilement. Si vous avez lancé XDarwin en double-cliquant sur son icône, les messages apparaissent dans les logs système, auxquels vous avez accès via l'application Console, située dans le répertoire Utilities (situé dans le répertoire Applications). Assurez-vous que vous récupérez les bons messages, c'est-à-dire les derniers.

Commençons par une liste des messages possibles :

_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root

Sévérité : inoffensif. X11 crée des répertoires cachés dans /tmp pour stocker les "fichiers" socket utilisés pour les connexions locales. Pour des raisons de sécurité, X11 s'attend à ce que le possesseur de ces répertoires soit le super-utilisateur ; mais, comme ils sont accessibles en écriture par tout utilisateur, X11 fonctionne sans problèmes. (Note : il est très difficile de définir le super-utilisateur comme possesseur de ces répertoires, car Mac OS X vide /tmp lors du redémarrage et XDarwin ne fonctionne pas, en temps normal, - et n'a pas besoin de fonctionner - avec les privilèges de super-utilisateur.)

QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard

Sévérité : bogue. Ce sont des erreurs qui apparaissent quand le serveur tente de se rétablir après une erreur précédente. Durant ce processus, une nouvelle copie de la bannière de démarrage est imprimée, suivie d'un ou plusieurs messages semblables à ceux indiqués ci-dessus, car la procédure de rétablissement du serveur ne fonctionne pas correctement dans certaines versions de XDarwin. Quand vous voyez apparaître ce type de messages, utilisez les barres de défilement dans la fenêtre de Terminal ou dans la fenêtre de Console pour rechercher plus haut une autre bannière de démarrage suivie d'autres messages. Ce bogue affecte toutes les versions de XDarwin jusqu'à la version 1.0a3 ; il a été résolu après la publication de la version 1.0a3.

cat: /Users/chrisp/.Xauthority: No such file or directory

Sévérité : quasi inoffensif. On ne sait pas d'où viennent ces messages et ils semblent n'avoir aucune incidence sur le déroulement des opérations. Vous pouvez les éliminer en exécutant touch .Xauthority dans votre répertoire utilisateur.

Gdk-WARNING **: locale not supported by C library

Sévérité : inoffensif. Cela signifie que la librairie C ne gère pas votre locale, mais cela n'empêche pas l'application de fonctionner. Pour de plus amples informations, voir ci-dessous.

Gdk-WARNING **: locale not supported by Xlib, locale set to C
Gdk-WARNING **: can not set locale modifiers

Sévérité : pas bon, mais non fatal. Ces messages peuvent apparaître à la suite du précédent. Ceci signifie que les fichiers de données locale de XFree86 n'existent pas sur votre système. Il semble que le message apparaisse de façon erratique quand on compile XFree86 à partir du source. La plupart des applications fonctionnent, mais GNU Emacs fait partie des exceptions.

Unable to open keymapping file USA.keymapping.
Reverting to kernel keymapping.

Sévérité : souvent fatal. Ceci peut se produire avec XDarwin 1.0a1, quand l'option "Load from file" est activée. Cette version requiert un chemin complet quand le fichier de mappage clavier est chargé via le dialogue de Préférences, mais exécute une recherche automatique quand l'option "-keymap" est utilisée en ligne de commande. Ce message est généralement suivi du message "assert" suivant. Pour résoudre le problème, suivez les instructions ci-dessous.

Fatal server error:
assert failed on line 454 of darwinKeyboard.c!
Fatal server error:
Could not get kernel keymapping! Load keymapping from file instead.

Sévérité : fatal. Les modifications qu'Apple a fait dans Mac OS X 10.1 ont entraîné des répercutions sur le fonctionnement de XFree86. En effet, celui-ci lit normalement les symboles clavier à partir du noyau du système opératoire. Le message ci-dessus en est la conséquence. Vous devez utiliser l'option de mappage de clavier "Load from file" sur Mac OS X 10.1. Cette option est accessible à partir du dialogue de Préférences de XDarwin. N'oubliez pas de choisir un fichier (c'est-à-dire utilisez le bouton "Pick file"). Cocher la case peut s'avérer insuffisant avec certaines versions de XDarwin. Si vous ne pouvez pas accéder au dialogue de Préférences, parce que XDarwin quitte avant que vous puissiez y accéder, exécutez startx -- -quartz -keymap USA.keymapping dans une fenêtre de Terminal. Ceci permet, en général, de lancer XDarwin ; il vous suffit ensuite d'aller dans le dialogue de Préférences et d'y activer le mappage du clavier pour que ce choix devienne permanent.

Fatal server error:
Could not find keymapping file .

Sévérité : fatal (comme indiqué). Cette erreur est due à l'absence de fichiers de mappage clavier sous Panther. Vous devez installer xfree86-4.3.99-16 ou une version postérieure, car ces versions ne nécessitent pas de fichiers de mappage clavier.

Warning: no access to tty (Inappropriate ioctl for device).
Thus no job control in this shell.

Sévérité : quasi inoffensif. XDarwin 1.0a2 et les versions suivantes lancent un shell interactif en arrière-plan pour exécuter le fichier de démarrage client (.xinitrc). Ceci afin que vous n'ayez pas besoin d'ajouter des commandes de définition de votre PATH dans ce fichier. Certains shells signalent qu'ils ne sont pas connectés à un vrai terminal ; ce message peut être ignoré, car cette instance de shell n'est pas utilisée pour exécuter quoi que ce soit qui requière un contrôle de tâches ou quelque chose de similaire.

Fatal server error:
failed to connect as window server!

Sévérité : fatal. Cela signifie que le serveur a démarré en mode console (pour Darwin seul), alors que vous étiez connecté sous Aqua. Ceci arrive lorsque vous installez la distribution officielle binaire XFree86 et que vous oubliez d'installer l'archive tar Xquartz.tgz. Cela peut aussi survenir quand les liens symboliques dans /usr/X11R6/bin ne pointent pas sur les bons fichiers et quand vous lancez la commande XDarwin dans une fenêtre de Terminal pour démarrer le serveur (vous devez utiliser startx dans ce cas, voir Lancement de XFree86).

Vous pouvez toujours lancer la commande ls -l /usr/X11R6/bin/X* et vérifier son résultat. Vous devez voir quatre lignes remarquables : X, un lien symbolique pointant sur XDarwinStartup ; XDarwin, un fichier exécutable (c'est le serveur en mode console) ; XDarwinQuartz, un lien symbolique pointant sur /Applications/XDarwin.app/Contents/MacOS/XDarwin ; et XDarwinStartup, un petit fichier exécutable. Si l'un de ces fichiers manque ou ne pointe pas sur le bon fichier, vous devez corriger l'erreur. La façon de le faire dépend de la méthode que vous avez utilisée pour installer XFree86. Si vous avez installé XFree86 via Fink, vous devez réinstaller le paquet xfree86 (ou xfree86-rootless pour Mac OS 10.2 ou versions antérieures). Si vous l'avez installé manuellement, vous devez récupérer les fichiers à partir d'une copie de Xquartz.tgz.

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Error:            Can't find file "unknown" for geometry include
>                   Exiting
>                   Abandoning geometry file "(null)"
Errors from xkbcomp are not fatal to the X server

Sévérité : quasi inoffensif. Cette erreur n'est pas fatale. À ma connaissance, XDarwin n'utilise pas du tout l'extension XKB. Il est probable qu'un programme client tente, malgré tout, de l'utiliser...

startx: Command not found.

Sévérité : fatal. Ceci arrive avec XDarwin 1.0a2 et 1.0a3 quand les fichiers d'initialisation de votre shell ne comprennent aucune commande pour ajouter le chemin /usr/X11R6/bin à la variable d'environnement PATH. Si vous utilisez Fink et que vous n'avez pas changer votre shell par défaut, il vous suffit d'ajouter la ligne source /sw/bin/init.csh au fichier .cshrc situé dans votre répertoire utilisateur, comme indiqué dans les instructions de Fink.

_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already
running

Sévérité : fatal. Ceci arrive quand vous lancez involontairement plusieurs instances de XDarwin en même temps, ou après une terminaison anormale (un plantage) de XDarwin. Cela peut provenir aussi d'un problème de permission sur les fichiers sockets utilisés pour les connexions locales. Vous pouvez tenter de résoudre le problème en exécutant rm -rf /tmp/.X11-unix. Le redémarrage de l'ordinateur résout aussi le problème dans la plupart des cas (Mac OS X vide automatiquement le répertoire /tmp lors du démarrage, et la pile réseau est redéfinie).

Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server

Sévérité : fatal. Les programmes client sont incapables de se connecter au serveur d'affichage (XDarwin), car ils utilisent des données d'authentification incorrectes. La cause peut en être certaines installations VNC, le lancement de XDarwin via sudo, ou autres bizarreries. Pour résoudre le problème, il suffit de supprimer le fichier .Xauthority (qui stocke les données d'authentification) situé dans votre répertoire utilisateur et de recréer un fichier vide de la façon suivante :

cd
rm .Xauthority
touch .Xauthority

Une autre cause fréquente d'échec de démarrage de XFree86 est un fichier .xinitrc incorrect. Le fichier .xinitrc est lancé et, pour une raison inconnue, se termine quasi immédiatement. xinit interprète cette fin comme "une fin de session demandée par l'utilisateur" et tue XDarwin. Voir la section Fichier .xinitrc pour de plus amples informations. N'oubliez pas de définir le PATH et de choisir comme dernière commande un programme de longue durée ne tournant pas en arrière-plan. Conseil : ajoutez exec xterm comme roue de secours pour le cas où il serait impossible de trouver votre gestionnaire de fenêtres ou un programme équivalent.

7.2 Icônes noires dans le panneau GNOME ou dans le menu d'une application GNOME

Les icônes ou images sont affichées sous forme de rectangles noirs ou ont une bordure noire. Ceci est dû aux limitations du noyau du système opératoire. Le problème a été rapporté à Apple, mais, pour l'instant, il ne semble pas qu'il y ait une réelle volonté de le résoudre ; voir le rapport de bogue Darwin pour de plus amples informations.

À l'heure actuelle, l'extension MIT-SHM du protocole X11 est inutilisable sous Darwin et Mac OS X. Il y a deux façons de désactiver l'extension : dans le serveur ou dans les clients. Les serveurs XFree86 installés par Fink (les paquets xfree86-server et xfree86-rootless) désactivent cette extension. The GIMP et le panneau GNOME aussi. Si vous voyez apparaître des icônes noires dans d'autres applications, démarrez-les avec l'option --no-xshm.

7.3 Le clavier ne fonctionne pas sous XFree86

C'est un problème qui ne semble affecter que les portables (PowerBook, iBook). Pour corriger ce problème, on a implémenté l'option de mappage de clavier "Load from file". Maintenant, cette méthode est devenue la méthode par défaut, car l'ancienne méthode (de lecture du mappage à partir du noyau) a cessé de fonctionner à partir de Mac OS X 10.1. Si vous n'avez pas encore activé cette option, vous pouvez le faire dans le dialogue de préférences de XDarwin. N'oubliez pas de cocher la case "Load from file" et sélectionnez le fichier de mappage à charger. Après redémarrage de XDarwin, votre clavier devrait fonctionner à peu près correctement (voir plus bas).

Si vous démarrez XFree86 en ligne de commande, vous pouvez passer le nom du fichier de mappage en option, de la façon suivante :

startx -- -quartz -keymap USA.keymapping

7.4 La touche retour arrière ne fonctionne pas

Ceci survient quand vous utilisez l'option "Load keymapping from file" décrite ci-dessus. Les fichiers de mappage font correspondre la touche retour arrière à "Suppression", et non pas à "Retour arrière". Vous pouvez modifier cette correspondance en insérant la ligne suivante dans votre fichier .xinitrc.

xmodmap -e "keycode 59 = BackSpace"

Si mes souvenirs sont bons, XDarwin 1.0a2 et les versions ultérieures assurent une correspondance correcte de la touche retour arrière.

7.5 "Warning: locale not supported by C library"

Ces messages sont courants, et inoffensifs. Cela signifie simplement que l'internationalisation n'est pas gérée par la librairie standard C, le programme utilisera donc, par défaut, l'anglais pour les messages, les formats de date, etc... Il y a plusieurs façons de résoudre le problème :

8 Conseils d'utilisation

8.1 Lancement d'applications X11 à partir de Terminal.app

Pour lancer des applications X11 à partir d'une fenêtre de Terminal.app, vous devez initialiser la variable d'environnement "DISPLAY". Cette variable indique aux applications l'emplacement du serveur de fenêtre X11. Quand XDarwin tourne sur la même machine que le serveur, vous pouvez initialiser cette variable de la façon suivante :

Il est intéressant d'avoir une configuration qui lance XDarwin.app au démarrage (à indiquer dans les Préférences système, panneau Éléments d'ouverture sur Mac OS 10.2, panneau Comptes, Démarrage sur Mac OS 10.3):

Ces lignes initialisent automatiquement la variable DISPLAY dans tout shell ouvert, mais ne modifient pas sa valeur si elle est déjà initialisée. De cette manière, vous pouvez continuer à exécuter des applications X11 à distance ou via ssh par un tunnel X11.

8.2 Lancement d'applications Aqua à partir d'un xterm

Pour lancer des applications Aqua à partir d'un xterm (ou de n'importe quel autre shell), vous pouvez utiliser la commande open. Exemples :

open /Applications/TextEdit.app
open SomeDocument.rtf
open -a /Applications/TextEdit.app index.html

Le second exemple ouvre le document dans l'application qui lui est associée, le troisième exemple indique explicitement l'application à utiliser.

8.3 Copier-coller

Le copier-coller fonctionne, en général, entre les environnements Aqua et X11. Il reste quelques bogues. Emacs est particulièrement sensible à la sélection en cours. Le copier-coller entre Classic et X11 ne fonctionne pas.

Ce qui est important est d'utiliser la bonne méthode selon l'environnement dans lequel vous êtes. Pour transférer du texte de Aqua vers X11, utilisez Cmd-C dans Aqua, faites venir la fenêtre de destination au premier-plan et utilisez le "bouton central de la souris", ou Alt-clic avec une souris à un bouton (vous pouvez configurer cette action dans les Préférences de XDarwin) pour coller. Pour transférer du texte de X11 vers Aqua, sélectionnez le texte avec la souris dans X11, puis utilisez Cmd-V dans Aqua pour le coller.

En fait, le système X11 possède plusieurs presse-papiers distincts (appelés "buffers de coupe" dans la terminologie X11) et certaines applications ont des idées bien arrêtées sur celui qu'elle doivent utiliser. C'est ainsi que le collage dans GNU Emacs ou XEmacs ne fonctionne pas toujours bien. Le programme autocutsel permet d'améliorer les choses ; il synchronise automatiquement les deux buffers de coupe principaux. Pour l'exécuter, installez le paquet Fink autocutsel et ajoutez la ligne suivante à votre fichier .xinitrc :

autocutsel &

(Assurez-vous que cette ligne est placée avant la ligne d'exécution du gestionnaire de fenêtres et qu'elle tourne en arrière-plan. Ne l'ajoutez pas à la fin, elle ne serait jamais exécutée). Et rappelez-vous que ce paquet n'est plus nécessaire avec X11 d'Apple (voir Notes au sujet de l'utilisation de X11 d'Apple).

Si vous utilisez X11 d'Apple, vous pouvez utilisez Cmd-C ou Édition->Copier, comme pour les applications Mac, pour copier du texte dans le presse-papiers, et le bouton central de la souris ou Cmd-V pour coller le texte dans X11.

Dans tous les cas de figure, si vous avez des difficultés à copier-coller du texte d'Aqua dans X11 ou vice-versa, vous pouvez tout d'abord réitérer l'action coller (il arrive qu'elle ne soit pas exécutée la première fois), ensuite vous pouvez utiliser des applications intermédiaires, par exemple TextEdit ou Terminal.app sous Aqua, nedit ou un xterm sous X11. Il y a toujours une solution à ce problème.


Copyright Notice

Copyright (c) 2001 Christoph Pfisterer, Copyright (c) 2001-2015 The Fink Project. You may distribute this document in print for private purposes, provided the document and this copyright notice remain complete and unmodified. Any commercial reproduction and any online publication requires the explicit consent of the author.


Generated from $Fink: x11.fr.xml,v 1.27 2012/11/11 15:20:18 gecko2 Exp $