Ubuntu安裝Waydroid,並透過顯示管理器進入Android系統。
簡言之,在Linux電腦開機登入之後自動進入Waydroid,好似在操作Android-x86系統一樣的感覺。
這有啥用…?我能想到的應用場景,就是把Linux平板「暫時」當作Android平板使用吧!
Waydroid官方文件稱這種操叫做"waydroid only session"
嚴格來說,Waydroid沒有合成器,需要依賴一個Wayland合成器才可以啟動。把Waydroid做成一個能夠啟動桌面環境工作階段的Desktop Entry,讓Linux的顯示管理器能夠認到,並以此啟動Waydroid。
並且Waydorid是跑在LXC容器裡面的,無法存取Linux硬體的相機和家目錄的檔案,除非手動bind mounut進去使用。
Waydroid能做的事情有限,如果你選的Wayland合成器太簡陋,那麼關機需要打指令。
1. 準備Wayland合成器#
Waydroid官方文件提到GNOME Mutter、Weston、Wayfire的作法。我覺得Kwin或Sway應該也行吧?但我們這邊的目的是儘量簡單,只要啟動Android就好,不要其他元件。
選Weston吧,Wayland的官方參考實作,使用以下指令安裝:
sudo apt install weston
另外需要一個能夠執行指令的終端機模擬器,比如Konsole:
sudo apt install konsole
2. 新增Desktop Entry#
- 確認Waydroid開機後服務會自動啟動
sudo systemctl enable waydroid-container
- Weston有autolaunch的功能,但看來沒辦法直接執行Waydroid,所以要手動新增一個指令稿
sduo touch /usr/bin/waydroid-session.sh
sduo chmod +x /usr/bin/waydroid-session.sh
sudo vim /usr/bin/waydroid-session.sh
- 填入以下內容,啟動Waydroid之後,再用終端機模擬器啟動Waydroid
#!/bin/sh
weston &
sleep 3
konsole -e waydroid show-full-ui
- 編輯
~/.config/weston.ini
,填入以下內容,允許觸控,關閉Weston狀態欄,關閉鎖定畫面。並且設定啟動Weston之後自動執行Waydroid指令稿
[libinput]
enable-tap=true
[shell]
panel-position=none
[core]
idle-time=0
- 新增
/usr/share/wayland-sessions/waydroid.desktop
檔案,填入以下內容
[Desktop Entry]
Name=WayDroid on Weston
Comment=Android OS in a container
Exec=/usr/bin/waydroid-session.sh
Type=Application
重開機。在顯示管理器的登入畫面,選取工作階段(GDM在左下角齒輪,SDDM在左下角),會出現「Waydroid」的選項。
不知道為何我用Weston 13.0啟動Waydroid會產生畫面撕裂,而且Weston有時候會整個崩潰。
3. 另一種自動啟動Waydroid的作法#
如果是希望「登入桌面環境後,自動啟動Waydroid並視窗最大化」,那麼用XDG Autostart就行了。把Waydroid的Desktop Entry複製過去:
cp ~/.local/share/applications/Waydroid.desktop ~/.config/autostart/
以上作法限定Wayland工作階段的桌面環境。
部份Wayland合成器能夠在現有的X11工作階段啟動,變成巢狀Wayland工作階段,所以你也可以在這些巢狀合成器裡面跑Waydroid。比如在X11環境啟動weston
,便能在Weston視窗裡面開啟Waydroid。