tmoe
tmoe copied to clipboard
添加AVNC支持
Related problem
RealVNC的vnc viewer在画面显示方面有点问题,而且不是开源的。
Describe the solution you'd like
我找到个叫AVNC的vnc安卓客户端,是开源的,仓库链接 https://github.com/gujjwal00/avnc ,显示效果比vnc viewer要好点,可配置选项也很多,我想兴许可以把它加入tmoe的支持中,就是容器的选项可以加个选择vnc客户端,要是选择AVNC,快捷启动容器vnc的时候就使用am start -n com.gaurav.avnc/com.gaurav.avnc.StartupActivity
跳转到vnc客户端界面
Describe alternatives you've considered
No response
Additional context and details
No response
暂时先这样子改,我之后会加入相关支持的。
sed -i '[email protected]/com.realvnc.viewer.android.app.ConnectionChooserActivity@com.gaurav.avnc/com.gaurav.avnc.StartupActivity@' $(command -v tmoe)
想到了一个问题,对于 windows 上的 android 上的 ubuntu (i.e. ubuntu on wsa), 以及 wsl(ubuntu) 上的 alpine, 我们应该启动哪个平台的 vnc app?
我觉得默认应该启动最外层 host 的 app。 比如 wsa(android) 上的 ubuntu, 优先用 windows 上的 vnc app,如果启动失败,再用 android 的 vnc app。 在 wsl 里可以直接启动/调用 windows app, 不过我还没研究过 wsa 能否这样做。
那么问题来了?为什么不直接用 wsl, 而要在 wsa 里用容器?
呜,想到了之前的 issues, 其实我也想知道为什么。
新版会使用配置文件来配置 “连携启动的 vnc”。 下面的配置怎么样?会不会很难看?欢迎提一些改进的意见。
[vnc]
# clients = ["wsa", "android"]
clients = ["$cfg:host.os.type", "$cfg:host.os.name"]
[vnc.server]
# cmd = ["startvnc"]
cmd = ["tigervnc"]
[vnc.client.android]
# cmd = ["open", "vnc://127.0.0.1:5902"]
cmd = ["am", "start", "-n", "$var:avnc"]
[vnc.client.android.var]
avnc = "com.gaurav.avnc/com.gaurav.avnc.StartupActivity"
bvnc_free = "com.iiordanov.freebVNC/com.undatech.opaque.ConnectionGridActivity"
realvnc = "com.realvnc.viewer.android/com.realvnc.viewer.android.app.ConnectionChooserActivity"
[vnc.client.wsl]
workdir = ["/", "mnt", "c", "Users"]
cmd = ["?"]
[vnc.client.windows]
# cmd = ["$var:app", "--xx", "yy"]
cmd = ["$path:app"]
[vnc.client.windows.var]
app = "C:\\Users\\Public\\AppData\\Roaming\\tmm\\bin\\vncviewer.exe"
[vnc.client.windows.path]
app = ["C:", "\\", "Users", "Public", "AppData", "Roaming", "tmm", "bin", "vncviewer.exe"]
# %LOCALAPPDATA%
local_app = ["$env:localappdata", "tmm", "bin", "vncviewer.exe"]
custom_path = ["$env:userprofile", "Downloads", "vncviewer.exe"]
我又想了想,如果让配置文件支持自定义 key 的话,那反序列化会变得有点麻烦。
想到了一个问题,对于 windows 上的 android 上的 ubuntu (i.e. ubuntu on wsa), 以及 wsl(ubuntu) 上的 alpine, 我们应该启动哪个平台的 vnc app?
我觉得默认应该启动最上层 host 的 app。 比如 wsa(android) 上的 ubuntu, 优先用 windows 上的 vnc app,如果启动失败,再用 android 的 vnc app。 在 wsl 里可以直接启动/调用 windows app, 不过我还没研究过 wsa 能否这样做。
那么问题来了?为什么不直接用 wsl, 而要在 wsa 里用容器? 呜,想到了之前的 issues, 其实我也想知道为什么。
新版会使用配置文件来配置 “连携启动的 vnc”。 下面的配置怎么样?会不会很难看?欢迎提一些改进的意见。
[vnc] # clients = ["wsa", "android"] clients = ["$cfg:host.os.type", "$cfg:host.os.name"] [vnc.server] # cmd = ["startvnc"] cmd = ["tigervnc"] [vnc.client.android] # cmd = ["open", "vnc://127.0.0.1:5902"] cmd = ["am", "start", "-n", "$var:avnc"] [vnc.client.android.var] avnc = "com.gaurav.avnc/com.gaurav.avnc.StartupActivity" bvnc_free = "com.iiordanov.freebVNC/com.undatech.opaque.ConnectionGridActivity" realvnc = "com.realvnc.viewer.android/com.realvnc.viewer.android.app.ConnectionChooserActivity" [vnc.client.wsl] workdir = ["/", "mnt", "c", "Users"] cmd = ["?"] [vnc.client.windows] # cmd = ["$var:app", "--xx", "yy"] cmd = ["$path:app"] [vnc.client.windows.var] app = "C:\\Users\\Public\\AppData\\Roaming\\tmm\\bin\\vncviewer.exe" [vnc.client.windows.path] app = ["C:", "Users", "Public", "AppData", "Roaming", "tmm", "bin", "vncviewer.exe"] # %LOCALAPPDATA% local_app = ["$env:localappdata", "tmm", "bin", "vncviewer.exe"] custom_path = ["$env:userprofile", "Downloads", "vncviewer.exe"]
我又想了想,如果让配置文件支持自定义 key 的话,那反序列化会变得有点麻烦。
我觉得调用最上层系统的vnc客户端这个思路是没问题的,毕竟本地连接,性能最重要嘛,一般情况下套娃还是最外层的性能最好。
其实我觉得你这个配置文件这样也还行吧,简单易懂。不过可自定义的配置文件要做反序列化也确实有点麻烦,毕竟换个格式,比如json,好像也没啥区别?
还有如果大佬你觉得麻烦的话慢慢来或者不做都可以的,我提的这种issue解决方案我自己是有的,只是我自己无法做到把仓库folk下来改。大佬你不加这些功能我也只是麻烦了点而已,但是总比我自己改要强。所以你不做也没有关系的哈。
这几天写了个库,用来解决跨平台路径的问题。
新版的配置可能要提上日程了,不过不会有上面的变量(var)
功能了。