1. 事前準備
Desk Connector 是 ChromeOS 功能,可讓網頁透過程式輔助方式存取 ChromeOS 虛擬桌面。在本程式碼研究室中,您會瞭解如何將 Desk Connector 與 Chrome 開發人員工具搭配使用。
必要條件
課程內容
- 如何設定視窗屬性。
- 如何啟動桌面。
- 如何移除桌面。
- 如何連線使用中的桌面。
- 如何切換至其他桌面。
軟硬體需求
- Chromebook
- ChromeOS 113.* 以上版本。如果您目前沒有可用的版本,請切換至 Beta 版。
- Google Chrome
- Desk Connector Demo 擴充功能
2. 做好準備
如要開始設定,請按照下列步驟操作:
- 在這個網頁上按一下滑鼠右鍵,然後點選「檢查」。
- 在 Chrome 開發人員工具面板中,按一下 [Console]。您將在「Console」面板中執行本程式碼研究室中的所有程式碼。
- (選用) 在程式碼研究室中,按下
F5
或[]||
即可進入總覽模式,手動與虛擬桌面互動。
3. 設定視窗屬性
SetWindowProperties
API 可讓網頁透過程式設定視窗屬性。將 allDesks
屬性設為 true
值後,該屬性會將目前分頁的視窗固定到所有桌面。
如要設定視窗屬性,請按照下列步驟操作:
- 在「Console」面板中,將視窗設為顯示在所有桌面:
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. 取得使用中的桌面
GetActiveDesk
API 可讓網頁透過程式查詢目前使用中的桌面。
- 如要取得目前使用中的桌面,請擷取目前的桌面 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. 啟動桌面
LaunchDesk
API 可讓網頁以程式輔助方式啟動並切換至空白桌面。
如要啟動桌面,請按照下列步驟操作:
- 啟動名為「
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. 移除桌面
RemoveDesk
API 可讓網頁依桌面 ID 以程式輔助方式移除桌面。可以關閉桌面上的所有視窗。
為簡單起見,您可以移除新啟動的桌面。不過實際上,網頁可能會依桌面 ID 移除任何指定的桌面。
如要移除桌面,請按照下列步驟操作:
- 移除新啟動的桌面:
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. 切換至其他桌面
SwitchDesk
API 可讓網頁透過程式輔助方式切換至指定的桌面。
為了方便起見,您啟動了一個桌面並切換至上一個桌面。不過實際上,網頁可根據桌面 ID 切換至任何指定的桌面。
如要切換到其他桌面,請按照下列步驟操作:
- 啟動桌面:
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. 恭喜
恭喜!您已瞭解如何使用 Desk Connector Demo 擴充功能和 Chrome 開發人員工具,透過程式輔助方式將網頁存取權授予 ChromeOS Desk。