Configuring Waydroid only session on Linux. Turning a Linux tablet into a semi-Android tablet.
在Linux安裝Waydroid,並透過顯示管理器進入Android系統。
簡言之,在Linux電腦開機登入之後自動進入Waydroid,好似在操作Android-x86系統一樣的感覺。
這有啥用…?我能想到的應用場景,就是把Linux平板「暫時」當作Android平板使用吧!
抑或是,把裝有Ubuntu Touch或postmarketOS的PinePhone暫時變成Android手機?
我為了將Linux平板PineTab 2變成 偽.Android平板,所以嘗試了這個作法。
Waydroid官方文件稱這種操作叫做"Waydroid only session"
嚴格來說,Waydroid沒有合成器,需要依賴一個Wayland合成器才可以啟動。把Waydroid做成一個能夠啟動桌面環境工作階段的Desktop Entry,讓Linux的顯示管理器能夠認到,並以此啟動Waydroid。
並且Waydorid是跑在LXC容器裡面的,無法存取Linux硬體的相機和家目錄的檔案,除非手動bind mounut進去使用。
Waydroid能做的事情有限,如果你選的Wayland合成器太簡陋,那麼關機需要打指令。
1. 從實用性考慮#
先說結論,不推薦使用Waydroid only session,因為Waydroid不是完整Android系統,容器內部無法控制外部Linux系統的音量、亮度、螢幕方向,也無法自主關機,甚至沒辦法鎖定螢幕。
結果是會變成這樣:
如果需要讓Waydroid儘可能全螢幕,又不要讓桌面環境佔用太多資源,推薦搭配輕量的Wayland合成器使用,例如Phosh、Sway、SXMO等等。他們允許你自由組裝出現在桌面上的元件。
這樣的話會比較好控制Waydroid的行為:
2. 準備Wayland + 新增Desktop Entry#
Waydroid官方文件提到GNOME Mutter、Weston、Wayfire的作法。我覺得Kwin或Sway應該也行吧?但我們這邊的目的是儘量簡單,只要啟動Android就好,不要其他元件。
所以我選擇用Cage這個啟動單一Wayland Client的小程式,啟動全螢幕的Waydroid工作階段。
- 確認Waydroid開機後服務會自動啟動
sudo systemctl enable waydroid-container
- 安裝Cage
sudo apt install cage
- 在新增一個Desktop Entry,它會出現在顯示管理器的選單
sudo vim /usr/share/wayland-sessions/waydroid.desktop
- 填入以下內容:
[Desktop Entry]
Name=WayDroid in Cage
Comment=Android OS in a container
Exec=/usr/bin/cage waydroid show-full-ui
Type=Application
- 重開機。在顯示管理器的畫面點選Waydroid的按鈕啟動。
4. 登入桌面自動啟動Waydroid的作法#
如果是希望「登入桌面環境後,自動啟動Waydroid並視窗最大化」,那麼用XDG Autostart就行了。把Waydroid的Desktop Entry複製過去:
cp ~/.local/share/applications/Waydroid.desktop ~/.config/autostart/
以上作法限定Wayland工作階段的桌面環境。
部份Wayland合成器能夠在現有的X11工作階段啟動,變成巢狀Wayland工作階段:在Linux X11桌面用Weston啟動Waydroid,不依賴Wayland協定桌面