Предоставьте веб-страницам программный доступ к ChromeOS Desk

1. Прежде чем начать

Desk Connector — это функция ChromeOS, которая позволяет веб-страницам программно получать доступ к виртуальным рабочим столам ChromeOS. В этом практическом занятии вы узнаете, как использовать Desk Connector с инструментами разработчика Chrome.

Предварительные требования

Что вы узнаете

  • Как настроить свойства окна.
  • Как установить письменный стол.
  • Как убрать стол.
  • Как создать рабочее место, где можно активно проводить время.
  • Как пересесть за другой стол.

Что вам понадобится

2. Настройка

Для начала выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по этой веб-странице и выберите «Просмотреть код элемента» .
  2. В панели инструментов разработчика Chrome нажмите «Консоль» . Весь код из этого практического занятия вы можете запустить в панели «Консоль» .
  3. (Необязательно) Вы можете взаимодействовать с виртуальными столами вручную на протяжении всего практического занятия, нажав клавишу F5 или []|| для перехода в режим обзора.

7a5398f02e46d103.png

3. Настройка свойств окна

API-функция SetWindowProperties позволяет веб-странице программно устанавливать свойства своего окна. Если установить свойство allDesks в значение true , окно текущей вкладки будет закреплено на всех рабочих столах.

Чтобы задать свойства окна, выполните следующие действия:

  1. В панели «Консоль» настройте отображение окна на всех рабочих столах:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
      console.log(response);
  }
);
  1. Снова отобразите окно на одном рабочем столе:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond",{
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": false
    }
   },
  function(response) {
     console.log(response);
  }
);
  1. Для удобства демонстрации снова прикрепите окно ко всем столам:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SetWindowProperties",
    "operands": {
        "allDesks": true
    }
   },
  function(response) {
     console.log(response);
  }
);

Если на вашем Chromebook несколько виртуальных рабочих столов, теперь вы можете видеть текущее окно на всех столах.

4. Получите информацию о текущем активном рабочем месте.

API GetActiveDesk позволяет веб-странице программно запрашивать информацию о текущем активном рабочем месте.

  • Чтобы получить текущий активный стол, получите его ID и сохраните свойство deskUuid в переменной baseDesk :
let baseDesk;
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "GetActiveDesk",
    },
   function(response) {
    console.log(response);
    if(response && response.operands) {
    baseDesk = response.operands.deskUuid; 
   }       
  }
);

5. Установите стол.

API LaunchDesk позволяет веб-странице программно запускать пустой рабочий стол и переключаться на него.

Чтобы запустить рабочий стол, выполните следующие действия:

  1. Запустите рабочий стол с именем test .
  2. Создайте переменную newDesk1 , которая будет хранить свойство deskUuid стола.
let newDesk1;                   
chrome.runtime.sendMessage(
    "oagemgapjncacjdaockjfaidedggjond", {
        "messageType": "LaunchDesk",
        "operands": {
            "deskName": "test"           
        }
    },
    function(response) {
     console.log(response);
     if(response&&response.operands) {
     newDesk1 = response.operands.deskUuid;   
    }  
   }
);

Вы попадаете на только что запущенный стол. Если окно консоли находится в отдельном окне, то окно консоли будет находиться на исходном столе. Вы можете переключиться на исходный стол, нажав клавишу F5 или []|| .

Одновременно можно использовать до восьми столов. Если API возвращает ошибку DesksCountCheckFailedError , необходимо удалить часть столов, прежде чем запускать новые.

6. Уберите стол.

API RemoveDesk позволяет веб-странице программно удалять стол по его идентификатору. При этом можно закрыть все окна, расположенные рядом со столом.

Для простоты вы удаляете только что запущенный стол. Однако на практике веб-страница может удалить любой указанный стол по его идентификатору.

Чтобы убрать стол, выполните следующие действия:

  1. Уберите только что установленный стол:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1                        
    }
  },
  function(response) {
     console.log(response);
  }
);
  1. В диалоговом окне, где вас попросят подтвердить или отменить удаление, подтвердите удаление стола. Все окна на столе закроются.

Уведомление ChromeOS о закрытии всех окон

  1. Если вы хотите вызвать API для удаления стола без окна подтверждения, используйте параметр skipConfirmation :
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "RemoveDesk",
    "operands": {
        "deskId": newDesk1,
        "skipConfirmation":true
   }
  },
  function(response) {
     console.log(response);
  }
);

7. Пересядьте за другой стол.

API SwitchDesk позволяет веб-странице программно переключаться на назначенное рабочее место.

Для простоты вы запускаете рабочий стол и переключаетесь на предыдущий. Однако на практике веб-страница может переключаться на любой указанный рабочий стол по его идентификатору.

Чтобы пересесть за другой стол, выполните следующие действия:

  1. Запустите рабочий стол:
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. Переключиться на предыдущий стол:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
    "messageType": "SwitchDesk",
    "operands": {
        "deskId": baseDesk                 
   }
  },
   function(response) {
       console.log(response); 
  }
);

8. Поздравляем!

Поздравляем! Вы научились предоставлять веб-страницам программный доступ к ChromeOS Desk с помощью расширения Desk Connector Demo и инструментов разработчика Chrome.

Узнать больше