-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
建议把kernel启动参数加入工作空间路径或者把它写入到用户配置目录 #13300
Comments
https://getquicker.net/subprogram?id=6f766c2d-69a9-475a-1e4d-08db54f2077f |
感谢提供的建议! 我是参考了这个动作后才来提建议的,这个动作中是通过提取用户配置目录下的workspace.json文件中的最后一个工作空间来实现的,这最后一个工作空间是最后打开的工作空间,虽然基本上覆盖大部分用户的情况,但这样判断这是不精确的。 比如,我打开了A工作空间,又打开了B工作空间,这时候关闭了B工作空间,workspace.json文件中的最后一个工作空间还是B工作空间;即使不关闭B工作空间,我在A工作空间操作,获取的结果也还是B工作空间。 这种方式只能覆盖平时只操作一个工作空间的情况,且没有频繁打开和关闭。 |
你目前最方便获取到的是 port 吗? |
是的,ip和端口,进程id可以通过窗口信息获取。 |
我们加个获取系统信息的内核接口吧? |
这里,之所以拿这个工作空间路径其实是想直接获取token,如果不是获取token,仅仅需要工作空间的话,其实可以通过 /api/system/getConf这个api获取到的。 接口的话,如果不鉴权还好,不知道是否安全,鉴权的话就获取不到了。 而放到用户配置目录中或启动进程参数中,因为仅存在本地可能大概也许会安全些吧。 |
对于这个接口,来自本地的请求会跳过鉴权检查,这样不影响安全性。
{
"code": 0,
"msg": "",
"data": {
"workspaceDir": "F:\\SiYuan"
}
} |
👍 这样可以,这是通过端口获取吗? |
是的,内核 HTTP 接口。 |
666 🌹🌹🌹 |
建议最好带上版本信息,方便针对不同版本做一些兼容性处理。不过这个目前可以通过用户配置目录的app.log中匹配。 |
@88250 也返回一下对应窗口的句柄吧,打开多工作空间的时候获取句柄可太难了,主要是不准 |
@AdachiQ 窗口信息内核获取不到 |
{
"code": 0,
"msg": "",
"data": {
"siyuanVer": "3.1.13",
"workspaceDir": "F:\\SiYuan"
}
} |
我不太清楚你们要干嘛 😂 |
/api/system/version @88250 抱歉,获取版本信息已经有这个api了,不需要带版本了。 |
如果能保证当前窗口是思源的话,那太简单了,下面这种方式就能直接知道当前窗口对应哪个端口了。 下面这种动作的当前窗口是浏览器,就比较麻烦。假设我开了两个思源,要将数据发送到最后使用的思源,就麻瓜了 |
明白了,这种场景确实不好搞,我测试了下,获取所有顶层窗口的句柄,然后用FlaUI获取/Document控件的值(即ip和端口),如果获取的值是空值的就是多余的句柄,如果第一个不为空的就是最后使用的窗口句柄,然后通过这个ip和端口就可以发送了。 但,问题是,如果最小化,关闭到托盘或窗口隐藏情况下,就获取不到控件信息了,这个目前不知道怎么解决?如果通过先激活窗口再获取,最小化和隐藏的还可以,但关闭到托盘的窗口无法激活窗口,尝试了社区里几个模拟鼠标点击托盘的都不管用。 |
In what scenarios do you need this feature?
千言万语不如一张图,如下
有时,需要用脚本获取当前进程的工作空间,但是默认的kernel进程,即监听6806端口的那个进程的启动参数中没有工作空间路径。
这样就无法获取,必须遍历所有的工作空间,然后去工作空间的siyuan.log启动日志中匹配到pid对应的工作空间路径。
这样效率太低了,如果能在kernel启动参数中含有或者能把kernel启动基本信息实时写入到用户配置目录就好了。
非6806端口监听的那个内核的工作空间是有的,就第一个启动的工作空间内核没有。
或者请教 @88250 不知道还有没有其他获取方法?通过内核pid获取到工作空间路径。
Describe the optimal solution
期望所有的内核启动参数都带上工作空间路径。
Describe the candidate solution
No response
Other information
No response
The text was updated successfully, but these errors were encountered: