Skip to content

Add full-featured PyQt5 GUI with dark mode, persistent config, and SNI manager#175

Open
mrhx01 wants to merge 3 commits into
denuitt1:mainfrom
mrhx01:main
Open

Add full-featured PyQt5 GUI with dark mode, persistent config, and SNI manager#175
mrhx01 wants to merge 3 commits into
denuitt1:mainfrom
mrhx01:main

Conversation

@mrhx01

@mrhx01 mrhx01 commented May 11, 2026

Copy link
Copy Markdown

Summary

This PR completely overhauls the user interface by introducing a modern PyQt5-based graphical application. It replaces the previous CLI + setup.py workflow with an intuitive tabbed interface, persistent configuration, dark mode support, and built-in SNI testing.

What's new / changed

  • New GUI (gui.py): Fully responsive window with Configuration, SNI Pool, and Log tabs.
  • Dark mode toggle: User can switch between light/dark themes.
  • No more setup.py: Configuration is done directly in the GUI (default config created automatically).
  • SNI pool management: Test SNIs, keep only working ones, add custom SNIs.
  • Real-time logging & stats: Relay calls, failures, bytes relayed shown live.
  • One-click operations: Install CA, test relay, scan Google IPs from GUI.
  • Persistent configuration: All settings (including dark mode) saved to config.json.
  • Improved launcher scripts: Both Windows (.bat) and Linux/macOS (.sh) now launch gui.py directly.
  • New launchers: run-gui.bat and run-gui.sh provide one-click setup and execution for end users.

Why this is better

  • User-friendly: Non-technical users can now configure and run the tunnel without touching a terminal.
  • Faster iteration: No need to re-run setup wizard; all changes applied instantly.
  • Professional look: Modern styling (light/dark) makes the tool more approachable.
  • Maintainability: GUI code is self-contained; core proxy logic untouched.

Testing performed

  • Tested on Windows 10/11 and Ubuntu 22.04 with Python 3.10–3.12.
  • Proxy starts/stops correctly; SNI probing works; dark mode persists after restart.
  • CA installation and removal via GUI buttons verified.

File changes summary

File Type Description
gui.py added Main GUI window (PyQt5)
scan_ips.py added Google IP scanner module
run-gui.bat added Windows launcher
run-gui.sh added Linux/macOS launcher
requirements.txt modified Added PyQt5, aiohttp

@onlymaj

onlymaj commented May 11, 2026

Copy link
Copy Markdown
Collaborator

Hey @mrhx01, really nice effort on this, just sharing my own take, not a verdict. My worry is that PyQt5 is pretty heavy (around 80 - 120 MB) and won't run on the headless or Termux setups a lot of people use this tool from. Full disclosure, I'm biased here and also I have a parallel PR (#177) proposing a web dashboard instead. Curious what you and the maintainer think is the better direction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants