Autoriser les pages Web à programmer l'accès à ChromeOS Desk

1. Avant de commencer

Le connecteur Bureau est une fonctionnalité de ChromeOS qui permet aux pages Web d'accéder de manière programmatique aux bureaux virtuels ChromeOS. Dans cet atelier de programmation, vous allez apprendre à utiliser le connecteur de bureau avec les outils pour les développeurs Chrome.

Prérequis

Points abordés

  • Définir les propriétés de la fenêtre
  • Lancer un bureau
  • Comment supprimer un bureau.
  • Comment obtenir un bureau actif
  • Comment changer de bureau ?

Ce dont vous aurez besoin

2. Configuration

Pour commencer, procédez comme suit :

  1. Effectuez un clic droit sur cette page Web, puis cliquez sur Inspecter.
  2. Dans le panneau des outils pour les développeurs Chrome, cliquez sur Console. Vous allez exécuter tout le code de cet atelier de programmation dans le panneau Console.
  3. (Facultatif) Vous pouvez interagir manuellement avec les bureaux virtuels tout au long de l'atelier de programmation en appuyant sur F3 ou []|| pour passer en mode Aperçu.

7a5398f02e46d103.png

3. Définir les propriétés de la fenêtre

L'API SetWindowProperties permet à une page Web de définir de manière programmatique les propriétés de sa fenêtre. Lorsque vous définissez la propriété allDesks sur une valeur true, elle épingle la fenêtre de l'onglet actuel à tous les bureaux.

Pour définir les propriétés de la fenêtre, procédez comme suit:

  1. Dans le panneau Console, configurez la fenêtre de sorte qu'elle s'affiche sur tous les bureaux:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
      console.log(response);
  }
);
  1. Configurez la fenêtre pour qu'elle s'affiche à nouveau sur un seul bureau:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond",{
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": false
    }
   },
  function(response) {
     console.log(response);
  }
);
  1. Épinglez de nouveau la fenêtre à tous les bureaux pour faciliter la démonstration:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
     console.log(response);
  }
);

Si vous avez plusieurs bureaux virtuels sur votre Chromebook, la fenêtre actuelle s'affiche sur tous vos bureaux.

4. Obtenir le bureau actif

L'API GetActiveDesk permet à une page Web d'interroger le bureau actif de manière programmatique.

  • Pour obtenir le bureau actif actuel, récupérez l'ID du bureau actuel et stockez la propriété deskUuid dans une variable baseDesk:
let baseDesk;
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "GetActiveDesk",
    },
   function(response) {
    console.log(response);
    if(response && response.operands) {
    baseDesk = response.operands.deskUuid;
   }
  }
);

5. Lancer un bureau

L'API LaunchDesk permet à une page Web de lancer un bureau vide par programmation et d'y accéder.

Pour lancer un bureau, procédez comme suit:

  1. Lancez un bureau nommé test.
  2. Créez une variable newDesk1 qui stocke la propriété deskUuid du bureau.
let newDesk1;
chrome.runtime.sendMessage(
    "oagemgapjncacjdaockjfaidedggjond", {
        "messageType": "LaunchDesk",
        "operands": {
            "deskName": "test"
        }
    },
    function(response) {
     console.log(response);
     if(response&&response.operands) {
     newDesk1 = response.operands.deskUuid;
    }
   }
);

Vous accédez au bureau que vous venez de lancer. Vous pouvez avoir jusqu'à huit bureaux en même temps. Si l'API renvoie une erreur DesksCountCheckFailedError, vous devez supprimer des bureaux avant d'en lancer d'autres.

6. Supprimer un bureau

L'API RemoveDesk permet de supprimer de manière programmatique un bureau par son ID. Elle peut fermer toutes les fenêtres du bureau.

Par souci de simplicité, vous supprimez le nouveau bureau. Toutefois, en pratique, la page Web peut supprimer tout bureau désigné à l'aide de son ID.

Pour supprimer un bureau, procédez comme suit:

  1. Supprimez le nouveau bureau:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1
    }
  },
  function(response) {
     console.log(response);
  }
);
  1. Dans la boîte de dialogue qui vous invite à confirmer ou abandonner la suppression du bureau, confirmez la suppression. Toutes les fenêtres du bureau sont fermées.

Notification de fermeture de toutes les fenêtres de Chrome OS

  1. Si vous souhaitez appeler l'API pour supprimer le bureau sans fenêtre de confirmation, utilisez le paramètre skipConfirmation:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1,
        "skipConfirmation":true
   }
  },
  function(response) {
     console.log(response);
  }
);

7. Changer de bureau

L'API SwitchDesk permet à une page Web de passer à un bureau désigné de manière automatisée.

Pour plus de simplicité, il vous suffit de lancer un bureau et de revenir à un bureau précédent. Toutefois, en pratique, la page Web peut basculer vers n'importe quel bureau désigné à l'aide de son ID.

Pour changer de bureau, procédez comme suit:

  1. Lancer un bureau:
let newDesk1;
chrome.runtime.sendMessage(
    "oagemgapjncacjdaockjfaidedggjond", {
        "messageType": "LaunchDesk",
        "operands": {
            "deskName": "test"
        }
    },
    function(response) {
     console.log(response);
     if(response && response.operands) {
     newDesk1 = response.operands.deskUuid;
    }
   }
);
  1. Revenir au bureau précédent:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SwitchDesk",
    "operands": {
        "deskId": baseDesk
   }
  },
   function(response) {
       console.log(response);
  }
);

8. Félicitations

Félicitations ! Vous avez appris à accorder aux pages Web un accès programmatique à ChromeOS Desk avec l'extension Demo Desk Demo et les outils pour les développeurs Chrome.

En savoir plus