├── folder-alias.json ├── src-tauri ├── src │ ├── core │ │ ├── store │ │ │ ├── mod.rs │ │ │ └── settings.rs │ │ ├── mod.rs │ │ ├── window │ │ │ ├── linux │ │ │ │ ├── mod.rs │ │ │ │ ├── ext.rs │ │ │ │ └── window_impl.rs │ │ │ ├── mod.rs │ │ │ ├── windows.rs │ │ │ └── macos.rs │ │ ├── util │ │ │ ├── mod.rs │ │ │ ├── macos.rs │ │ │ └── linux.rs │ │ └── setup │ │ │ ├── macos.rs │ │ │ ├── linux.rs │ │ │ ├── mod.rs │ │ │ └── windows.rs │ ├── main.rs │ ├── timer.rs │ ├── lib.rs │ └── commands.rs ├── build.rs ├── icons │ ├── icon.icns │ ├── icon.ico │ ├── shui.jpg │ ├── WechatIMG5.jpg │ ├── WechatIMG6.jpg │ ├── icon copy.ico │ ├── icon-tray.ico │ ├── icon_16x16.png │ ├── icon_32x32.png │ ├── icon_128x128.png │ ├── icon_16x16@2x.png │ ├── icon_256x256.png │ ├── icon_32x32@2x.png │ ├── icon_512x512.png │ ├── shui │ │ ├── icon.iconset │ │ └── original.png │ ├── icon_128x128@2x.png │ ├── icon_256x256@2x.png │ └── icon_512x512@2x.png ├── tauri.windows.conf.json ├── .gitignore ├── Info.plist ├── capabilities │ ├── desktop.json │ └── default.json ├── tauri.linux.conf.json ├── tauri.conf.json └── Cargo.toml ├── src ├── app │ ├── favicon.ico │ ├── page.tsx │ ├── setting │ │ ├── shortcut │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── page.tsx │ │ ├── about │ │ │ └── page.tsx │ │ └── reminder │ │ │ └── page.tsx │ ├── layout.tsx │ ├── reminder │ │ ├── index.css │ │ └── page.tsx │ └── globals.css ├── postcss.config.mjs ├── lib │ ├── utils.ts │ └── constants.ts ├── components │ ├── ui │ │ ├── skeleton.tsx │ │ ├── sonner.tsx │ │ ├── separator.tsx │ │ ├── progress.tsx │ │ ├── input.tsx │ │ ├── switch.tsx │ │ ├── badge.tsx │ │ ├── popover.tsx │ │ ├── tooltip.tsx │ │ ├── button.tsx │ │ ├── dialog.tsx │ │ ├── sheet.tsx │ │ ├── command.tsx │ │ └── select.tsx │ └── app-sidebar.tsx ├── eslint.config.mjs ├── utils │ ├── store.ts │ ├── updater.ts │ └── notification.ts ├── .gitignore ├── hooks │ ├── use-mobile.ts │ ├── use-platform.ts │ ├── use-updater.ts │ └── use-tray.ts └── README.md ├── public ├── screenshot-0.png ├── screenshot-1.png ├── screenshot-2.png ├── screenshot-3.png ├── install_error.png ├── sounds │ └── water-drop.mp3 ├── qrcode_wechat_dark.png ├── qrcode_wechat_light.png ├── vercel.svg ├── window.svg ├── file.svg ├── globe.svg └── next.svg ├── .vscode └── extensions.json ├── postcss.config.mjs ├── next-env.d.ts ├── next.config.ts ├── .gitignore ├── index.html ├── components.json ├── package-bak.json ├── tsconfig.json ├── Cargo.toml ├── .github └── workflows │ ├── updater.mjs │ └── publish.yaml ├── package.json ├── README.md ├── README.en.md └── LICENSE /folder-alias.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src-tauri/src/core/store/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod settings; 2 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /public/screenshot-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/screenshot-0.png -------------------------------------------------------------------------------- /public/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/screenshot-1.png -------------------------------------------------------------------------------- /public/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/screenshot-2.png -------------------------------------------------------------------------------- /public/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/screenshot-3.png -------------------------------------------------------------------------------- /public/install_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/install_error.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/shui.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/shui.jpg -------------------------------------------------------------------------------- /src-tauri/src/core/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod setup; 2 | pub mod store; 3 | pub mod util; 4 | pub mod window; 5 | -------------------------------------------------------------------------------- /public/sounds/water-drop.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/sounds/water-drop.mp3 -------------------------------------------------------------------------------- /public/qrcode_wechat_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/qrcode_wechat_dark.png -------------------------------------------------------------------------------- /public/qrcode_wechat_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/public/qrcode_wechat_light.png -------------------------------------------------------------------------------- /src-tauri/icons/WechatIMG5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/WechatIMG5.jpg -------------------------------------------------------------------------------- /src-tauri/icons/WechatIMG6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/WechatIMG6.jpg -------------------------------------------------------------------------------- /src-tauri/icons/icon copy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon copy.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon-tray.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon-tray.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon_16x16.png -------------------------------------------------------------------------------- /src-tauri/icons/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rock-zhang/Shui/HEAD/src-tauri/icons/icon_32x32.png -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | export default function Home() { 4 | return
14 | 在提醒界面按下 Esc 键可关闭提醒 15 |
16 |
4 |
5 |
6 |
37 |
38 |
39 |
40 |
74 |
75 | `macOS`下如果遇到`"Shui"已损坏,无法打开`的提示,请在终端运行
76 |
77 | ```shell
78 | sudo xattr -r -d com.apple.quarantine /Applications/Shui.app
79 | ```
80 |
81 | ## 🛣 开发路线
82 |
83 | ### 已实现功能
84 |
85 | - [x] 基础提醒功能
86 | - [x] 自定义提醒间隔
87 | - [x] 工作日智能提醒
88 | - [x] 系统托盘支持
89 | - [x] 全局快捷键
90 | - [x] 应用白名单管理
91 | - [x] 息屏、锁屏自动暂停
92 | - [x] 托盘快捷操作
93 | - [x] 自定义时间范围
94 | - [x] 系统原生通知
95 | - [x] 托盘实时倒计时
96 |
97 | ### 开发计划
98 |
99 | - [x] Windows 适配
100 | - [x] Linux 适配
101 | - [x] 提醒音效
102 | - [ ] 多语言支持
103 | - [ ] 数据统计与分析
104 | - [ ] 饮水量趋势图表
105 | - [ ] 休息时间统计
106 | - [ ] 数据导出功能
107 | - [ ] 饮水时间分布
108 | - [ ] 饮水时间间隔分析
109 | - [ ] 自定义主题
110 |
111 | ## 🛠 技术栈
112 |
113 | - [Tauri](https://tauri.app/) - 跨平台桌面应用框架
114 | - [Next.js](https://nextjs.org/) - React 应用框架
115 | - [React](https://reactjs.org/) - 用户界面框架
116 | - [Rust](https://www.rust-lang.org/) - 后端逻辑实现
117 | - [shadcn/ui](https://ui.shadcn.com/) - UI 组件库
118 |
119 | ## 社区交流
120 |
121 | 欢迎 PR 和 Issue,一起探讨和改进 Shui!
122 | [](https://deepwiki.com/rock-zhang/Shui)
123 |
124 |
128 | 81 | 电脑重启之后自动开始倒计时 82 |
83 |99 | 开启后将在菜单栏显示倒计时,支持macOS和linux 100 |
101 |122 | 开启后将以全屏方式显示提醒,关闭则使用系统通知 123 |
124 |
4 |
5 |
6 |
37 |
38 |
39 |
40 |
69 |
70 | If you encounter the "Shui is damaged and can't be opened" message on `macOS`, please run the following command in Terminal:
71 |
72 | ```shell
73 | sudo xattr -r -d com.apple.quarantine /Applications/Shui.app
74 | ```
75 |
76 | ## 🛣 Development Roadmap
77 |
78 | ### Implemented Features
79 |
80 | - [x] Basic Reminder Functionality
81 | - [x] Customizable Reminder Intervals
82 | - [x] Smart Workday Reminders
83 | - [x] System Tray Support
84 | - [x] Global Hotkeys
85 | - [x] App Whitelist Management
86 | - [x] Auto-pause on Screen Lock/Sleep
87 | - [x] Tray Quick Actions
88 | - [x] Custom Time Range
89 | - [x] Native System Notifications
90 | - [x] Tray Real-time Countdown
91 |
92 | ### Development Plans
93 |
94 | - [x] Windows Support
95 | - [ ] Multi-language Support
96 | - [ ] Linux Support
97 | - [x] Reminder Sound Effects
98 | - [ ] Data Statistics and Analysis
99 | - [ ] Water Intake Trend Charts
100 | - [ ] Break Time Statistics
101 | - [ ] Data Export Functionality
102 | - [ ] Water Intake Time Distribution
103 | - [ ] Water Intake Interval Analysis
104 | - [ ] Custom Themes
105 |
106 | ## 🛠 Tech Stack
107 |
108 | - [Tauri](https://tauri.app/) - Cross-platform Desktop App Framework
109 | - [Next.js](https://nextjs.org/) - React Application Framework
110 | - [React](https://reactjs.org/) - User Interface Framework
111 | - [Rust](https://www.rust-lang.org/) - Backend Logic Implementation
112 | - [shadcn/ui](https://ui.shadcn.com/) - UI Component Library
113 |
114 | ## Community
115 |
116 |
120 |