菜单

用户界面

相关源文件

本页面详细介绍了 Shadowsocks Windows 客户端的用户界面组件,解释了用户如何与应用程序交互以及 UI 如何与核心系统集成。有关底层代理功能的信息,请参阅 网络代理服务

UI 架构概述

Shadowsocks Windows 客户端采用极简 UI 方法,主要围绕系统托盘图标和用于大多数控件的上下文菜单,并辅以几个用于详细设置的配置窗口。UI 层通过基于事件的系统与核心 ShadowsocksController 进行通信。

来源

主要用户界面组件

MenuViewController 类充当所有 UI 交互的协调器。它

  1. 创建和管理系统托盘图标
  2. 构建和处理上下文菜单
  3. 响应控制器事件以更新 UI
  4. 在需要时打开配置和日志窗口
  5. 提供可视化流量指示器

来源

系统托盘图标和状态可视化

系统托盘图标是用户交互的主要界面元素。它提供了

  • 通过图标颜色和叠加层进行视觉状态指示
  • 通过右键菜单访问所有功能
  • 通过双击快速访问配置窗体

图标的外观由以下因素决定:

  • 当前的代理状态(启用/禁用)
  • 代理模式(全局/PAC)
  • 当前的网络流量活动
  • Windows 系统主题(浅色/深色)

来源

上下文菜单结构

上下文菜单提供对所有 Shadowsocks 功能的访问,并按逻辑分组

来源

配置管理 UI

服务器配置窗体

ConfigForm 提供了一个详细的界面来管理服务器配置

配置窗体处理以下功能:

  • 已配置服务器列表及选择功能
  • 详细的服务器属性编辑器
  • 服务器列表管理(添加、删除、复制、重新排序)
  • 本地代理端口配置
  • 便携模式切换

来源

服务器配置数据流

来源

事件系统

UI 通过基于事件的机制响应底层系统的变化。ShadowsocksController 触发事件,MenuViewController 订阅这些事件。

事件描述UI 响应
ConfigChanged配置已修改更新托盘图标、服务器列表、菜单复选框
EnableStatusChanged代理已启用/禁用更新菜单复选框、托盘图标
EnableGlobalChanged全局模式已切换更新菜单复选框、托盘图标
ShareOverLANStatusChanged局域网共享已切换更新菜单复选框
VerboseLoggingStatusChanged详细日志记录已切换更新菜单复选框
ShowPluginOutputChanged插件输出可见性已切换更新菜单复选框
TrafficChanged流量统计已更新更新托盘图标叠加层
PACFileReadyToOpenPAC 文件已准备好进行编辑在默认编辑器中打开文件
UserRuleFileReadyToOpen用户规则文件已准备好进行编辑在默认编辑器中打开文件
Errored控制器中发生错误显示错误消息框

来源

特殊窗口和功能

服务器共享

服务器共享窗口允许用户:

  • 生成服务器配置的二维码
  • 将服务器 URL 复制到剪贴板
  • 与其他用户共享配置

二维码扫描

二维码扫描功能

  • 扫描屏幕上的包含服务器配置的二维码
  • 解析包含 ss:// URL 的二维码
  • 从扫描的二维码导入服务器配置

快捷键窗口

快捷键配置窗口允许用户:

  • 为常用操作定义全局快捷键
  • 修改现有的快捷键绑定
  • 启用/禁用快捷键功能

在线配置窗口

在线配置窗口支持:

  • 订阅远程服务器配置源
  • 从 URL 自动更新服务器列表
  • 管理多个订阅源

来源

UI 和系统集成

系统代理集成

UI 提供用于管理 Windows 系统代理设置的控件

  • 禁用代理
  • 启用 PAC 模式(选择性代理)
  • 启用全局模式(代理所有流量)

切换时,这些选项会调用相应的控制器方法来更新系统代理设置。

开机自启动集成

“开机启动”选项将应用程序注册/取消注册到 Windows 启动项

  • 启用后,Shadowsocks 会随 Windows 自动启动
  • 实现方式使用 Windows 注册表项

协议处理程序集成

“关联 ss:// 链接”选项

  • 将应用程序注册为 ss:// 协议的处理程序
  • 允许通过点击浏览器中的链接导入服务器配置

来源

流量可视化

系统通过以下方式提供网络流量的视觉反馈:

托盘图标可视化逻辑

  • 无流量:普通图标
  • 仅入站流量:带入站叠加层的图标
  • 仅出站流量:带出站叠加层的图标
  • 入站和出站流量:带两个叠加层的图标

来源

更新检查机制

UI 集成了更新检查功能

来源

这个 UI 系统提供了一个干净、极简的界面,有效展示了 Shadowsocks 代理的强大功能,使其易于用户使用,同时在正常运行时保持不显眼。