diff --git a/README.md b/README.md index 73a7a34..4c87cb8 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ cd v2ray_simple/cmd/verysimple && go build 2. 标准模式 (也称 toml模式) 3. 兼容模式 4. 交互模式 +5. GUI 模式 本项目自 v1.2.5开始,移除了 json格式的"极简模式". @@ -184,6 +185,16 @@ verysimple -c server.toml 交互生成配置后还可以输出到文件、加载到当前运行环境、生成分享链接。 +### GUI 模式 + +运行 vs_gui 开头的发布包中的 verysimple + +下面是在macOS运行的效果 + +![](docs/pics/vsgui_baseControl_cb02d3b7.png) + +![](docs/pics/vsgui_appControl_cb02d3b7.png) + ### 其他说明 如果你不是放在path里的,则要 `./verysimple`, 前面要加一个点和一个斜杠。windows没这个要求。 diff --git a/cmd/verysimple/gui_conf.go b/cmd/verysimple/gui_conf.go index df6fd94..0ff2b3b 100644 --- a/cmd/verysimple/gui_conf.go +++ b/cmd/verysimple/gui_conf.go @@ -114,6 +114,9 @@ func makeConfPage() ui.Control { } dialPCbox.OnSelected(func(c *ui.Combobox) { + if curSelectedDial < 0 { + return + } idx := dialPCbox.Selected() sc.Dial[curSelectedDial].Protocol = allDialPs[idx] @@ -121,14 +124,20 @@ func makeConfPage() ui.Control { muxC := ui.NewCheckbox("mux") muxC.OnToggled(func(c *ui.Checkbox) { + if curSelectedDial < 0 { + return + } sc.Dial[curSelectedDial].Mux = muxC.Checked() }) vbox2.Append(muxC, false) update = func(shouldChange bool) { - curD := sc.Dial[curSelectedDial] - muxC.SetChecked(curD.Mux) - dialPCbox.SetSelected(slices.Index(allDialPs, curD.Protocol)) + if curSelectedDial >= 0 { + curD := sc.Dial[curSelectedDial] + muxC.SetChecked(curD.Mux) + dialPCbox.SetSelected(slices.Index(allDialPs, curD.Protocol)) + + } if shouldChange { var shouldStart = false diff --git a/docs/pics/vsgui_appControl_cb02d3b7.png b/docs/pics/vsgui_appControl_cb02d3b7.png new file mode 100644 index 0000000..12ef919 Binary files /dev/null and b/docs/pics/vsgui_appControl_cb02d3b7.png differ diff --git a/docs/pics/vsgui_baseControl_cb02d3b7.png b/docs/pics/vsgui_baseControl_cb02d3b7.png new file mode 100644 index 0000000..431d291 Binary files /dev/null and b/docs/pics/vsgui_baseControl_cb02d3b7.png differ