在 X11 会话中使用 Waydroid 启动 Android LineageOS 的脚本

在 X11 会话中使用 Waydroid 启动 Android LineageOS 的脚本

我想制作一个脚本来启动韦德机器人Android 容器 (LineageOS)。

目前,我可以开始一个LineageOS虚拟电话没有问题:

sudo systemctl start waydroid-container
weston

然后,在里面weston-terminal

waydroid session start
waydroid show-full-ui

请注意,Waydroid 仅适用于 Wayland 会话管理器,并且韦斯顿作曲家是一个简单的方法 使用普通的 X windows 管理器运行它。

我不知道应该如何在 Bash 启动器脚本中插入最后两行。我尝试导出

XDG_SESSION_TYPE=wayland  

但是,当 Waydroid 会话开始时,我对如何将手机 GUI 推送到 Weston 合成器一无所知。

当然还有X11的解决方案,比如安盒 但相比之下,Waydroid 就更出色了。

答案1

发送 Waydroid 的变量到位(即在韦斯顿内部)WAYLAND_DISPLAY 不是XDG_SESSION_TYPE。另外,X韦兰服务器应该被激活。

因此,请确保 Waydroid 容器已打开:

systemctl start waydroid-container

现在,您可以使用以下命令从终端/脚本启动手机:

weston --xwayland &
export WAYLAND_DISPLAY=wayland-1              
sleep 2
waydroid show-full-ui &

与其杀死 Waydroid,更好的方法是关闭手机:

waydroid session stop 

并按 Ctrl+Alt+Backspace 退出 Weston。

对于 HiDPI 显示,您可以--scale 2向 Weston 添加参数。

答案2

这是我在这里找到的脚本红迪特。希望能帮助到你。另外,如果它对你有用,请告诉我,我也处于类似的位置。

#! /usr/bin/bash
if [ "$(systemctl is-active waydroid-container.service)" == 'active' ];then
    killall -9 weston
    sudo systemctl stop waydroid-container.service
    exit
fi
killall -9 weston
sudo systemctl restart waydroid-container.service
if [ -z "$(pgrep weston)" ]; then
    weston --xwayland &> /dev/null &
fi
sleep 2 &&
export XDG_SESSION_TYPE='wayland'
export DISPLAY=':1'
konsole --new-tab --hide-tabbar --hide-menubar -e '/usr/bin/waydroid show-full-ui' &
while [ -n "$(pgrep weston)" ];do
    sleep 1
done
sudo systemctl stop waydroid-container.service

答案3

这个脚本对我来说非常有用,它启动 weston 和 waydroid,当您关闭 weston 窗口时,它会自动停止 waydriod 会话!在 Ubuntu 和 ArchLinux 上测试。

#!/bin/bash
export WAYLAND_DISPLAY=mysocket
weston --socket=$WAYLAND_DISPLAY --backend=x11-backend.so --width=1920 --height=1080 &
cmd1_pid=$!
waydroid show-full-ui &
wait $cmd1_pid
waydroid session stop
echo 'waydroid session stopped successfully!'

相关内容