# Common Desktop Environment

Le Common Desktop Environment (CDE) est un environnement de bureau pour UNIX initialement annoncé en juin 1993 par SunSoft, HP, IBM, et Unix System Laboratories basé sur X Window System et la bibliothèque Motif. Cet environnement s'inspire en partie du système VUE ("Visual User Environment") développé par HP pour les stations de travail HP9000 utilisant le système d'exploitation HP-UX, empruntant aussi au "Common User Access Model" d'IBM. La première version, CDE 1.0 utilise Motif 1.2, et est disponible à partir de 1995. Elle est également adoptée par SCO, Hitachi, Fujitsu, DEC et Univel (filiale d'AT&T et Novell).

## Plateformes de référence

Les plateformes de référence pour CDE 1.0 étaient:
* HP 9000/7xx sous HP-UX 10.01
* IBM RS/6000 sous AIX 4.1.3
* Intel 80486/Pentium sous UnixWare 2.02
* Sun SPARCstation sous Solaris 2.4
Fujitsu avait une version de CDE fonctionnant sur le DS/90 sous UPX/DS, et DEC une version pour processeur Alpha pour DEC Unix 4.0. Parmi les distributions Linux, seules RedHat, Xi Graphics et Caldera utilisèrent CDE. Toutefois, Triteal vendait une implémentation de CDE pour Linux TriTeal Enterprise Desktop 4.2 (pour environ 120 $) utilisable avec les autres distributions Linux. Outre les systèmes Unix, CDE était aussi un environnement de bureau standard dans le système d'exploitation OpenVMS de DEC. En 1997, la version 2.1 de CDE, basée sur Motif 2.0 a été commercialisée. Elle apportait un support pour les systèmes à processeur de 64 bits, un protocole d'impression basé sur Xprint et une aide en ligne utilisant SGML.
CDE fut développé conjointement par HP, IBM, Novell et Sun Microsystems (qui l'utilisera comme interface par défaut pour Solaris), en tant que membres du consortium Open Group. Sun Microsystems a abandonné CDE pour GNOME. HP, après une tentative similaire a préféré revenir à CDE.
En août 2012, le code source de CDE fut libéré sous la licence LGPL et déposé sur le site de développement collaboratif SourceForge. Un groupe de programmeurs poursuit son développement pour l'adapter à des systèmes Unix modernes (Linux, FreeBSD, NetBSD, OpenBSD, OpenIndiana) en prenant en compte les nouvelles fonctionnalités du X Window System et en éliminant des fonctions obsolètes comme XPrint. Les développeurs essaient aussi d'améliorer la sécurité et de moderniser le code C en éliminant les constructions devenues obsolètes.
Les versions successives de CDE sous licence LGPL ont été:
* CDE 2.2.0b (version alpha du 5 août 2012)
* CDE 2.2.0b (version alpha du 6 septembre 2012)
* CDE 2.2.0c (version alpha du 5 octobre 2012)
* CDE 2.2.0d (version beta du 30 mai 2013)
* CDE 2.2.1a (version stable du 2 mars 2014)
* CDE 2.2.2 (version stable du 27 juillet 2014)
* CDE 2.2.3 (version stable du 10 mai 2015)
* CDE 2.2.4 (version stable du 19 juin 2016)
* CDE 2.3.0 (version stable du 7 juillet 2018)
* CDE 2.3.1 (version stable du 16 novembre 2019)
* CDE 2.3.2 (version stable du 14 janvier 2020)
* CDE 2.4.0 (version stable du 4 juillet 2021)
* CDE 2.5.0 (version stable du 23 juillet 2022)
* CDE 2.5.1 (version stable du 1er octobre 2022)
* CDE 2.5.2 (version stable du 18 novembre 2023)
CDE LGPL fonctionne sur Linux, FreeBSD (la version 2.3.1 est disponible dans les ports), OpenBSD , NetBSD (depuis la version 2.2.1) OpenIndiana (version 2.2.3, processeurs Intel seulement) et Solaris 11 (version 2.2.3, processeurs Intel et SPARC). Il est possible de compiler CDE à partir des sources sur des machines Linux à processeur Intel Atom ou ARM (comme le Raspberry Pi). Depuis la version 2.2.2, il est possible de compiler CDE sur FreeBSD avec le compilateur Clang. À partir de la version 2.4.0, CDE utilise les Pluggable Authentication Modules pour l'authentification des utilisateurs sur Linux et NetBSD. Un support préliminaire pour les processeurs RISC-V et la bibliothèque C µsl a également été introduit. Jusquà la version 2.4.0 incluse , la compilation de CDE utilisait
imake, qui a été remplacé par Autotools dans les versions actuelles 2.5.x . Le support EWMH a été amélioré et les versions 2.5.x permettent à des applications plein-écran comme MPlayer et ses dérivés (mpv ou celluloid) ou VLC media player de recouvrir entièrement l'écran. Les versions 2.5.1 et suivantes ne sont plus compatibles avec HP-UX, mais elles utilisent une version plus récente du Korn shell comme base pour dtksh et améliorent l'internationalisation et le support pour NetBSD.

### Portages vers d'autres OS

* SparkyLinux est une distribution permet d'installer CDE depuis ses dépôts officiels.
* Arch Linux dispose d'un paquet AUR.
* Gentoo Linux dispose d'un ebuild.
* Roger Brown a produit des paquets CDE installables pour OpenSUSE, Raspbian, Fedora (GNU/Linux),Debian, Ubuntu, CentOS, FreeBSD, NetBSD et OpenBSD pour diverses architectures comme ARM, RISC-V, X86 64, Intel 32-bits.
* Void Linux dispose d'un fichier xbpr
Par ailleurs, le projet CDEbian a créé une distribution Linux Debian 10(buster) avec CDE 2.3.2 comme bureau graphique par défaut et une distribution Linux Ubuntu (système d'exploitation) 18.04 LTS utilisant CDE 2.3.1a. La distribution NuTyX fournit des images ISO 9660 pour installer NutyX avec CDE comme bureau par défaut.

## Description succincte
### Applications
#### Applications du bureau

Cet environnement comprend:
* le gestionnaire de connexion dtlogin
* le gestionnaire de session dtsession
* le gestionnaire de fenêtres dtwm
* l'horloge dtclock (visible à l'extrême gauche de la copie d'écran)
* le gestionnaire de fichiers dtfile (visible sur la capture d'écran)
* la calculatrice dtcalc
* l'émulateur de terminaux VT100 dtterm (iconifié sur la capture d'écran)
* l'éditeur de texte dtpad
* l'éditeur d'icônes dticon
* le gestionnaire d'impression dtprintinfo
* le logiciel de messagerie électronique dtmail
* l'agenda électronique dtcm
* l'aide en ligne dtinfo
* l'outil de configuration dtsyle
* le langage de commande dtksh (Desktop Korn Shell une extension du shell Unix avec des instructions graphiques)
* l'outil de création d'interfaces dtbuilder
Il permet de disposer de bureaux (workspaces) multiples (boutons "One", "Two", "Three" et "Four" du panneau de commandes sur la capture d'écran). Les différentes applications peuvent être lancées soit à partir du panneau de commandes (en choisissant dans des menus analogues au menu "Démarrer" de Windows 95/98/ME/XP appelés tiroirs) situé en bas de l'écran soit à partir du menu transitoire de dtwm obtenu en cliquant sur le fond de l'écran. Il existe aussi un gestionnaire d'applications (visible sur la droite du panneau de commandes) dans lequel les applications sont rangées dans des dossiers ("Applications Bureau", "Outils Bureau", "Administration Système"...) et peuvent être lancées par un double clic. La commande dtcreate permet de créer une action (un raccourci vers le programme exécutable) et de lui associer son icône (au format X PixMap ) et les types de fichiers reconnus par l'exécutable pour rendre le programme accessible à partir du gestionnaire d'applications. Les icônes CDE doivent être de trois dimensions: 16×16 (nom de fichier .t.pm) 32×32 (nom de fichier .m.pm) 48×48 (nom de fichier .l.pm) et sont stockées dans les répertoires /etc/dt/appconfig/icons/, /usr/dt/appconfig/icons/ ou $HOME/.dt/icons. On trouvait aussi un format 24×24 (nom de fichier .s.pm) sur certaines versions de CDE, en particulier pour Solaris. CDE possède un protocole "glisser/déposer" qui permet de prendre un fichier avec dtfile et de l'ouvrir en le déposant sur une application. Ce protocole est utilisable par exemple par XEmacs et XNEdit. Le protocole ToolTalk initialement développé par Sun pour OpenWindows permet une communication interprocessus par échange de messages. L'environnement CDE permet un certain degré d'internationalisation via le mécanisme des "locales" d'Unix. En particulier, il est possible d'avoir des menus en allemand, espagnol, français, grec, italien, suédois en plus de l'anglais. Depuis la version 2.4.0, ces menus sont encodés en UTF-8, seule l'aide dtinfo conserve l'encodage ISO/CEI 8859-1.Si le système dispose des polices adaptées (encodage eucTW,eucCN,eucKR,eucJP) des menus en chinois, coréen ou japonais sont également disponibles. Comme pour le grec ou le suédois, ces menus ne sont pas installés par défaut, mais peuvent être ajoutés à une installation CDE existante. Comparé aux bureaux graphiques modernes, CDE consomme nettement moins d'espace disque et de mémoire, mais ses applications ont des fonctionnalités plus limitées. Par exemple, dtmail ne peut pas accéder à des serveurs IMAP ou POP3 utilisant une encryption SSL ou TLS, et un programme séparé comme fetchmail (ou getmail) doit être utilisé pour récupérer les messages. Il n'existe pas non plus d'application pour connecter un ordinateur à un réseau mobile (mais il est évidemment possible d'utiliser une application en mode texte comme nmtui dans une fenêtre dtterm). Le panneau de commande n'a pas de zone de notification, et un programme comme stalonetray doit être utilisé pour afficher les applets telles que nm-applet ou blueman-applet. Enfin, dtfile ne permet pas de monter des disques amovibles dans l'arborescence Unix. Sur Solaris, cette fonction était remplie par le programme volcheck. Sur Linux, le programme dtvolman (appelé aussi xmsvm) permet de monter les disques amovibles, mais il doit être installé après le bureau CDE. Une autre solution consiste à utiliser udevil pour monter automatiquement les disques.

#### Applications tierces

* Le programme xImaging permet de visionner des fichiers images au format JPEG ou PNG sur Linux ou FreeBSD. Il est compatible avec le protocole ToolTalk.
* Le programme dtwinlist (semblable à sdtwinlist pour Solaris) produit une liste des fenêtres actives sur le bureau CDE.
* Le programme treeps est un gestionnaire de processus
* Le programme dtscan est une interface pour SANE qui permet de numériser des documents
* Le programme classic-colors est un programme de dessin de type Microsoft Paint
* Le programme XEmacs peut utiliser le protocole de glisser-déposer de CDE s'il a été compilé avec configure --with-dragndrop --with-cde
* Les applications Motif en général fonctionnent avec le bureau CDE et prennent le style imposé par dtstyle
* Les applications non-Motif (GTK, Qt, Xaw) fonctionnent aussi mais elles ne sont pas affectées par l'outil de style. Pour que les applications Qt ou GTK aient le même aspect que les applications CDE, un thème adapté doit être utilisé comme CDE for KDE ou CDE/Motif theme pour GTK.

### Configuration

Le bureau CDE est configurable au moyen de fichiers placés soit dans le répertoire personnel $HOME/.dt/types/ soit dans le répertoire global /etc/dt/appconfig/types/ . Dans le premier cas, la configuration n'affecte que l'utilisateur, dans le second elle s'applique globalement. Un fichier de configuration typique .dt est de la forme
DATA_ATTRIBUTES XFig_FILE_1
ACTIONS Open
ICON Dtdata
DATA_CRITERIA XFig_FILE_1
DATA_ATTRIBUTES_NAME XFig_FILE_1
MODE f
PATH_PATTERN *.fig
ACTION Open
ARG_TYPE XFig_FILE_1
TYPE MAP
MAP_ACTION XFig
LABEL Open
ACTION XFig
LABEL XFig
TYPE COMMAND
EXEC_STRING /usr/bin/xfig %Arg_1%
ICON xfig
DESCRIPTION Dessin technique
WINDOW_TYPE NO_STDIO
Le paragraphe ACTION XFig indique comment lancer l'application de dessin technique Xfig, donne une description succincte, indique que l'application n'a pas besoin d'entrée-sortie standard, et définit son icône dans le gestionnaire d'applications. Le paragraphe ACTION Open indique que les fichiers de type XFig_FILE_1 s'ouvrent avec XFig. Le paragraphe DATA_CRITERIA indique que ces fichiers ont l'extension .fig et le paragraphe DATA_ATTRIBUTES indique l'icône à utiliser par le gestionnaire de fichier pour les fichiers .fig et les actions qui peuvent être faites sur ces fichiers (ici Open). Ces fichiers de configuration peuvent être générés au moyen de l'application dtcreate. Le script desktop2dt peut générer un fichier .dt à partir d'un fichier .desktoputilisé par MATE ou KDE. Il génère aussi les icônes dans les trois tailles nécessaires.
Le gestionnaire de fenêtre se configure avec un fichier dtwmrcqui utilise la même syntaxe que mwmrcle fichier de configuration du gestionnaire de fenêtre Motif. Les applications CDE utilisent les ressources X Window System pour leur configuration. Le fond d'écran peut être configuré avec un fichier au format X Pixmap, et les couleurs utilisées pour le tableau de bord, le fond d'écran, la bordure des fenêtres actives ou inactives dans un fichier palette de couleurs. L'application dtstyle permet de choisir des fonds d'écran prédéfinis (pris dans le répertoire /usr/dt/backdrops) et des palettes prédéfinies (prises dans le répertoire /usr/dt/palettes).

## Influence

* L'environnement KDE (Kool Desktop Environment) tire son nom d'un jeu de mots sur CDE.
* L'environnement Xfce s'inspirait de CDE dans ses premières versions.
* Le projet OpenCDE (2010-2012) visait à créer un clone sous licence GPL de CDE. Il a été abandonné lorsque CDE est passé sous la licence LGPL.
* Le projet NsCDE (Not-so-Common Desktop Environment) vise à reproduire l'apparence de CDE en utilisant le gestionnaire de fenêtre FVWM.