A Clash.Meta GUI based on Flutter.
Linux | macOS | Windows | Android |
---|---|---|---|
🏃♀️ | ✔️ | ➖ | 🏃♀️ |
- Similar to a native user interface.
- Built-in support Clash.Meta core.
- Similar menu bar operation logic as ClashX.
- Tun Supported.
- Some additional custom operations.
This application is primarily developed and tested on macOS. Currently, it can run on Linux and Android, but there may be some incomplete features or bugs.
Due to the code not being stable yet, the code for each platform exists in separate branches and has not been merged. After the functionality becomes more stable, they will be merged into the main branch.
Download from release. Now it only supports macOS 10.15+
Or you can build it yourself.
You should install Flutter3.x first.
Then download the clash.meta kernel on your own, rename it as ClashFudgeCore
, and place it in assets/core folder.
Please note that the alpha version of the kernel has not been tested yet.
# 1. Fetch project dependencies
$ flutter pub get
# 2. Generate .g.dart file
$ dart run build_runner build --delete-conflicting-outputs
# 3. Run the project
$ flutter run -d macos
Or you can build it
flutter build macos
Too many, can't list them all...
open the terminal and run sudo xattr -r -d com.apple.quarantine /Applications/Clash-Fudge.app
If you want to enable the Tun function, the kernel needs to run with root privileges. Currently, for convenience, the application directly requests permission at startup. In the future, we will consider changing the relevant logic.
Now only able to enable tun.
Of course you can. You can authorize it by going to Settings -> General -> Advanced -> Kernel Silent Privilege. Once authorized, you will no longer need to enter a password for verification.
In order to avoid conflicts, the application will attempt to stop any kernel processes with the same name when it starts. To prevent unexpected accidents caused by running multiple clashes at the same time, they are given separate names.
If you need to exit the application, please use the 'Exit' option in the top bar icon. This operation will clear your system's proxy settings and DNS settings to avoid any networking issues. If your application is forcefully closed, the related system settings will not be automatically reset, and you will need to manually disable the relevant proxy and DNS fields.
Try turning off/restarting the Tun mode, it should solve the problem. There may be some bugs here, please provide relevant feedback.
After all, you can't expect someone who rarely picks up a pen to design a sophisticated and beautiful icon in a few minutes using a knockoff pen and drawing software downloaded temporarily on an iPad. If I really had that ability, why would I still be writing code? 🥲
This is a learning project for Flutter practice.
Issue and PR welcome!
Clash-Fudge was based on or inspired by these projects and so on:
- zzzgydi/clash-verge: A Clash GUI based on tauri. Supports Windows, macOS and Linux.
- MetaCubeX/Clash.Meta: A rule-based tunnel in Go.
- macosui/macos_ui: It provides a series of components on Flutter that resemble the native macOS style.
- leanflutter: He has provided many excellent support libraries related to desktop platforms.
GPL-3.0 License. See License here for details.