Skip to content
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.

添加AVNC支持 #259

Open
Blackwood416 opened this issue Jan 24, 2023 · 4 comments
Open

添加AVNC支持 #259

Blackwood416 opened this issue Jan 24, 2023 · 4 comments
Labels
enhancement New feature or request

Comments

@Blackwood416
Copy link

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

@Blackwood416 Blackwood416 added the enhancement New feature or request label Jan 24, 2023
@2moe
Copy link
Owner

2moe commented Jan 24, 2023

暂时先这样子改,我之后会加入相关支持的。

sed -i '[email protected]/com.realvnc.viewer.android.app.ConnectionChooserActivity@com.gaurav.avnc/com.gaurav.avnc.StartupActivity@' $(command -v tmoe)

@2moe
Copy link
Owner

2moe commented Jan 24, 2023

想到了一个问题,对于 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 的话,那反序列化会变得有点麻烦。

@Blackwood416
Copy link
Author

想到了一个问题,对于 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下来改。大佬你不加这些功能我也只是麻烦了点而已,但是总比我自己改要强。所以你不做也没有关系的哈。

@2moe
Copy link
Owner

2moe commented Mar 18, 2023

这几天写了个,用来解决跨平台路径的问题。
新版的配置可能要提上日程了,不过不会有上面的变量(var)功能了。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants