Un portail d’applications peut rester sobre tout en ayant une vraie identité visuelle. Avec RASInsider RAS User Portal Skin Manager, nous avons préparé onze palettes : des bleus sombres, des thèmes corporate plus neutres, des surfaces claires et un effet Liquid Glass. Voici leur rendu réel, puis la méthode pour les utiliser et créer vos propres couleurs.
Projet communautaire indépendant, non affilié à Parallels et non supporté par l’éditeur. Il s’agit d’une preview de développement 0.1.1-dev, pas d’une fonctionnalité officielle du produit. Les captures ont été réalisées le 7 octobre 2026 sur RAS 21.2.2 build 27429, avec RASAdmin 5.0, un Site et une Secure Gateway distincte du Broker. La première base de style venait de RAS 22.0 Technical Preview build 28102.
Les onze thèmes, dans le vrai portail
Le fond, le logo et les applications restent identiques sur toutes les captures : seule la présentation du portail change. Cliquez sur une image pour l’afficher en grand.

Dark Glass

Midnight Blue

Light Glass

RASInsider

Graphite

Forest

Warm Ivory

Bordeaux

Aubergine

Liquid Glass

Ruby

Liquid Glass est une approximation visuelle en CSS : transparence, flou et reflets internes. Ce n’est pas le moteur de rendu natif d’Apple. Son résultat dépend fortement du fond choisi dans RAS et du support de backdrop-filter par le navigateur. Sans ce support, la feuille de style prévoit un fond plein.
Comment installer et changer de thème
Récupérez le script PS1 actuel sur GitHub. Les onze palettes sont intégrées au script : aucun fichier JSON annexe n’est nécessaire pour les presets. L’archive historique v0.1.0 ne contient pas cette mise à jour. Utilisez la source actuelle pour disposer des nouveaux thèmes.
Exécutez-le dans une console Windows PowerShell 5.1 élevée, depuis le Broker ou une machine d’administration équipée du module RASAdmin correspondant à votre installation. Le script établit sa connexion RAS et découvre les Sites et les Secure Gateways ; il ne suppose pas que le portail est installé sur le Broker. Il faut aussi disposer d’un accès WinRM déjà configuré vers les Gateways sélectionnées.
Avant d’autoriser un déploiement, vérifiez sur chaque Gateway le répertoire physique qui sert /userportal/ et son index.html. Le chemin enregistré dans notre prototype est C:Program Files (x86)ParallelsApplicationServer2XHTML5Gatewaywww. Il doit être confirmé dans votre installation. -MappingValidated exprime cette validation ; ce paramètre ne découvre ni ne corrige le routage. Des chemins différents se règlent avec -PortalRoot et -IndexRelativePath.
Remplacez ras-broker.example.test par votre serveur RAS, puis ouvrez le menu :
.RAS-UserPortal-SkinManager.ps1 -LicensingServer ras-broker.example.test -MappingValidated
| Menu | Action |
|---|---|
| Install / Change | Choisir une palette ou saisir les valeurs Custom. |
| Re-apply | Réappliquer la configuration enregistrée sur chaque Gateway. |
| Restore Original | Retirer le hook et le CSS du manager depuis l’index actuel. |
| Status | Lire l’état des fichiers, du hook et des empreintes. |
| Exit | Quitter. |
Le périmètre vient de la découverte RAS : A pour tous les Sites, S:1,2 pour des Sites précis ou G:10,11 pour des identifiants de Gateway découverts. Un simple 1 n’est pas une sélection de Site valide. Choisissez ensuite la palette dans Install / Change. Custom occupe le choix 5 ; les onze thèmes ne sont donc pas numérotés de 1 à 11 dans ce menu.
Pour automatiser un changement, commencez par une simulation, puis lancez la même commande sans -WhatIf après avoir vérifié le périmètre et les prérequis :
.RAS-UserPortal-SkinManager.ps1 -Action Install -LicensingServer ras-broker.example.test `
-AllSites -Preset 'Ruby' -MappingValidated -WhatIf
.RAS-UserPortal-SkinManager.ps1 -Action Install -LicensingServer ras-broker.example.test `
-AllSites -Preset 'Ruby' -MappingValidated
Custom : vos couleurs, votre transparence
Vous n’êtes pas limité aux onze palettes. Custom part de Dark Glass et vous permet de choisir les couleurs du header, des trois étapes du dégradé, de l’accent, du contour et du texte principal. Vous réglez également leurs opacités, le flou et les arrondis. Pour réutiliser une identité graphique, préparez plutôt un JSON avec -SkinFile.
| Réglage | Valeurs acceptées |
|---|---|
| Couleurs | #RRGGBB |
| Opacités | 0–1 |
| Flou | 0–60 px |
| Rayon des arrondis | 0–48 px |
| Texte secondaire / atténué | Opacité appliquée à la couleur Primary. |
Voici un exemple complet à enregistrer dans corporate-teal.json. Cette palette personnalisée est un exemple de configuration, pas l’une des onze captures validées :
{
"SchemaVersion": 1,
"Name": "Corporate Teal",
"Header": "#102A2B",
"HeaderOpacity": 0.96,
"PanelStart": "#102A2B",
"StartOpacity": 0.96,
"PanelMiddle": "#183D3F",
"MiddleOpacity": 0.94,
"PanelEnd": "#215052",
"EndOpacity": 0.92,
"Accent": "#67D5C4",
"Border": "#538B86",
"Primary": "#F4FFFD",
"SecondaryOpacity": 0.78,
"MutedOpacity": 0.68,
"Blur": 28,
"Radius": 22
}
.RAS-UserPortal-SkinManager.ps1 -Action Install -LicensingServer ras-broker.example.test `
-AllSites -SkinFile .corporate-teal.json -MappingValidated
Le schéma demande toutes les propriétés et refuse les propriétés inconnues, les nombres hors limites, les URL et le CSS libre. Les nombres JSON utilisent un point décimal. Cette validation empêche une configuration mal formée ; elle ne garantit pas le contraste. Vérifiez la lisibilité sur votre fond réel, les champs de connexion, le focus clavier, les survols, les erreurs et les états désactivés. Pour garder les reflets spécifiques de Liquid Glass lors d’un import JSON, conservez exactement "Name": "Liquid Glass" ; un autre nom utilise le modèle glass standard.
Comment cela fonctionne — et jusqu’où aller
Le manager ajoute un hook balisé et idempotent dans l’index.html physique. Ce hook charge une feuille indépendante, /userportal/rasinsider.css. Les variables --ri-* alimentent les couleurs et les effets des surfaces ciblées. Les bundles JavaScript et CSS compilés de Parallels ne sont jamais modifiés.
Dans un portail Vue, les attributs de scope générés et les utilitaires CSS peuvent compliquer les surcharges. Le prototype s’appuie sur des ancres contextuelles comme [data-testid="app-header"], header.app-header pour le build 21.2 testé, #launcher et .login-container .login-form[class]. Le logo SVG du header utilise fill="currentColor" : sa couleur suit le contexte du header sans remplacer le logo fourni par RAS.
| Besoin | Où le régler |
|---|---|
| Logo, wallpaper, favicon, titre et textes | Dans RAS Theme. |
| Palette, transparence, flou, contours, arrondis, survol et soulignement actif | Dans les presets ou Custom du Skin Manager. |
| Autres sélecteurs, géométrie du dégradé, ombres ou disposition particulière | Développement CSS dans le générateur ; absent du schéma Custom actuel. |
| Authentification, MFA, SAML, permissions, applications publiées, lancement ou contenu d’une session distante | Dans RAS et ses composants ; hors périmètre du Skin Manager. |
La présentation peut habiller le header, la connexion, le launcher, la recherche, le fil d’Ariane et les lignes de liste. Le JSON ne constitue pas un constructeur de pages : il ne change pas l’ordre des applications, ne remplace pas leurs icônes et ne crée pas de fonction métier. Le dégradé conserve trois étapes à 0 %, 55 % et 100 %, orientées à 145°. Les composants supplémentaires ou une refonte de disposition demandent du CSS développé et testé sur le build visé. Évitez les sélecteurs dépendant d’un viewBox de logo : ce fut une cible temporaire du prototype, pas une base stable pour personnaliser une Farm.
Cette séparation laisse RAS propriétaire des assets dynamiques. Elle est conçue pour permettre un changement de RAS Theme sans que le manager remplace votre logo ou votre fond. Le scénario complet de changement de RAS Theme et les mises à niveau restent à valider en lab : les onze captures prouvent le rendu sur le build testé, pas une compatibilité universelle avec toutes les versions futures.
Plusieurs Gateways, mises à jour et retour arrière
La découverte utilise le module RASAdmin installé : New-RASSession, Get-RASVersion, Get-RASSite, Get-RASGateway -SiteId et Get-RASGatewayStatus -Id. RAS reste la source de vérité ; la liste des machines n’est pas saisie à la main. La fermeture de session passe par Remove-RASSession. Les détails vérifiés figurent dans la documentation multi-Gateway.
Le script vérifie toutes les Gateways sélectionnées avant de modifier la première, puis prépare les sauvegardes, applique et contrôle le résultat. Derrière HALB, sélectionnez tout le pool concerné pour éviter des apparences différentes. Le déploiement distribué conserve une fenêtre de transition et ne draine pas automatiquement les nœuds. En cas d’échec, le rollback utilise les snapshots de la transaction et refuse d’écraser une modification concurrente étrangère.
Configuration, état, empreintes, transactions, sauvegardes et logs sont conservés dans %ProgramData%RASInsiderRAS-UserPortal-SkinManager. Après une mise à jour RAS, commencez par Status, puis utilisez Re-apply pour rétablir le hook et la feuille à partir des réglages enregistrés. Re-apply respecte les configurations propres à chaque Gateway ; Install / Change permet d’uniformiser un pool.
.RAS-UserPortal-SkinManager.ps1 -Action Reapply -LicensingServer ras-broker.example.test `
-AllSites -MappingValidated
Pour revenir à la présentation d’origine, Restore Original retire uniquement les éléments gérés dans l’index actuel. Il ne recopie pas aveuglément un ancien index après une mise à niveau :
.RAS-UserPortal-SkinManager.ps1 -Action Restore -LicensingServer ras-broker.example.test `
-AllSites -MappingValidated
Les liens CSS non balisés, les marqueurs mal formés ou certaines dérives sont volontairement refusés. Préservez un prototype existant et consultez la procédure de récupération au lieu de forcer une écriture. Pour la vérification finale, rechargez le navigateur et confirmez que le CSS servi et le thème attendu sont bien présents.
Ce que nous avons réellement validé
Les onze palettes ont été déployées du Broker vers une Gateway séparée et capturées dans le navigateur. Dark Glass a ensuite été restauré depuis sa configuration sauvegardée ; Re-apply et Status ont été vérifiés. Les contrôles locaux passent : 52 vérifications de fixtures, 17 tests Pester et PSScriptAnalyzer, complétés par les contrôles Windows de GitHub. Les tests multi-Gateway de rollback utilisent des fixtures : HALB, les déploiements réels sur plusieurs Gateways, les changements de RAS Theme, les upgrades et une validation d’accessibilité complète restent à tester. Le script autorise la branche 21.2.x et RAS 22.0 TP build 28102 ; cela ne signifie pas que chaque build autorisé a été testé.
Projet et code sur GitHub · Schéma Custom · Palettes détaillées · Validation du lab
