1. Прежде чем начать
Desk Connector — это функция ChromeOS, которая позволяет веб-страницам программно получать доступ к виртуальным рабочим столам ChromeOS. В этом практическом занятии вы узнаете, как использовать Desk Connector с инструментами разработчика Chrome.
Предварительные требования
- Понимание принципов работы виртуальных рабочих мест в ChromeOS
Что вы узнаете
- Как настроить свойства окна.
- Как установить письменный стол.
- Как убрать стол.
- Как создать рабочее место, где можно активно проводить время.
- Как пересесть за другой стол.
Что вам понадобится
- Хромбук
- Версия ChromeOS 113.* или выше . Если эта версия вам еще недоступна, переключитесь на бета-канал .
- Google Chrome
- Демонстрационное расширение Desk Connector
2. Настройка
Для начала выполните следующие шаги:
- Щелкните правой кнопкой мыши по этой веб-странице и выберите «Просмотреть код элемента» .
- В панели инструментов разработчика Chrome нажмите «Консоль» . Весь код из этого практического занятия вы можете запустить в панели «Консоль» .
- (Необязательно) Вы можете взаимодействовать с виртуальными столами вручную на протяжении всего практического занятия, нажав клавишу
F5или[]||для перехода в режим обзора.

3. Настройка свойств окна
API-функция SetWindowProperties позволяет веб-странице программно устанавливать свойства своего окна. Если установить свойство allDesks в значение true , окно текущей вкладки будет закреплено на всех рабочих столах.
Чтобы задать свойства окна, выполните следующие действия:
- В панели «Консоль» настройте отображение окна на всех рабочих столах:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
"messageType": "SetWindowProperties",
"operands": {
"allDesks": true
}
},
function(response) {
console.log(response);
}
);
- Снова отобразите окно на одном рабочем столе:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond",{
"messageType": "SetWindowProperties",
"operands": {
"allDesks": false
}
},
function(response) {
console.log(response);
}
);
- Для удобства демонстрации снова прикрепите окно ко всем столам:
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 позволяет веб-странице программно запускать пустой рабочий стол и переключаться на него.
Чтобы запустить рабочий стол, выполните следующие действия:
- Запустите рабочий стол с именем
test. - Создайте переменную
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 позволяет веб-странице программно удалять стол по его идентификатору. При этом можно закрыть все окна, расположенные рядом со столом.
Для простоты вы удаляете только что запущенный стол. Однако на практике веб-страница может удалить любой указанный стол по его идентификатору.
Чтобы убрать стол, выполните следующие действия:
- Уберите только что установленный стол:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
"messageType": "RemoveDesk",
"operands": {
"deskId": newDesk1
}
},
function(response) {
console.log(response);
}
);
- В диалоговом окне, где вас попросят подтвердить или отменить удаление, подтвердите удаление стола. Все окна на столе закроются.

- Если вы хотите вызвать API для удаления стола без окна подтверждения, используйте параметр
skipConfirmation:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
"messageType": "RemoveDesk",
"operands": {
"deskId": newDesk1,
"skipConfirmation":true
}
},
function(response) {
console.log(response);
}
);
7. Пересядьте за другой стол.
API SwitchDesk позволяет веб-странице программно переключаться на назначенное рабочее место.
Для простоты вы запускаете рабочий стол и переключаетесь на предыдущий. Однако на практике веб-страница может переключаться на любой указанный рабочий стол по его идентификатору.
Чтобы пересесть за другой стол, выполните следующие действия:
- Запустите рабочий стол:
let newDesk1;
chrome.runtime.sendMessage(
"oagemgapjncacjdaockjfaidedggjond", {
"messageType": "LaunchDesk",
"operands": {
"deskName": "test"
}
},
function(response) {
console.log(response);
if(response && response.operands) {
newDesk1 = response.operands.deskUuid;
}
}
);
- Переключиться на предыдущий стол:
chrome.runtime.sendMessage("oagemgapjncacjdaockjfaidedggjond", {
"messageType": "SwitchDesk",
"operands": {
"deskId": baseDesk
}
},
function(response) {
console.log(response);
}
);
8. Поздравляем!
Поздравляем! Вы научились предоставлять веб-страницам программный доступ к ChromeOS Desk с помощью расширения Desk Connector Demo и инструментов разработчика Chrome.