v0.7.0 : instance unique, handshake ré-affiché, sudoers fiabilisé, À propos refaite
- Instance unique : un second lancement réveille l'instance active. - Autostart et reconnexion auto activés par défaut (nouvelle installation). - Page « À propos » refaite en 5 onglets (contenu séparé dans app_info.py). - Corrige le handshake/RX-TX qui ne s'affichaient plus (wg show sans élévation). - Corrige le diagnostic sudo trompeur (sondes qui ne matchaient jamais les règles). - Corrige make setup-sudoers bloqué hors session graphique (pkexec -> sudo), idempotent. - Corrige le README : Kill Switch inexistant retiré, ordre d'élévation réel documenté.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
WGSecure (WGS) — Interface graphique WireGuard avec MFA
|
||||
Version 0.6.0
|
||||
"""
|
||||
import sys
|
||||
import argparse
|
||||
@@ -9,10 +8,12 @@ import argparse
|
||||
from PyQt6.QtWidgets import QApplication, QMessageBox, QInputDialog, QLineEdit, QSystemTrayIcon
|
||||
from PyQt6.QtCore import Qt
|
||||
|
||||
from app import __version__
|
||||
from app.core.config import Config
|
||||
from app.core import dns as dns_util
|
||||
from app.core import log as conn_log
|
||||
from app.core import shutdown as shutdown_guard
|
||||
from app.core.single_instance import SingleInstanceGuard
|
||||
from app.ui.main_window import MainWindow
|
||||
from app.ui.systray import SystemTray
|
||||
from app.ui import icons
|
||||
@@ -92,8 +93,14 @@ def main():
|
||||
)
|
||||
app = QApplication(sys.argv)
|
||||
app.setApplicationName("WGSecure")
|
||||
app.setApplicationVersion("0.6.0")
|
||||
app.setApplicationVersion(__version__)
|
||||
app.setOrganizationName("WGS")
|
||||
|
||||
# Une seule instance à la fois : un second lancement réveille la
|
||||
# première plutôt que d'ouvrir une deuxième fenêtre sur le même tunnel.
|
||||
guard = SingleInstanceGuard()
|
||||
if not guard.try_acquire():
|
||||
sys.exit(0)
|
||||
# Icône globale multi-tailles — barre des tâches + alt-tab
|
||||
app_icon = icons.icon_app()
|
||||
app.setWindowIcon(app_icon)
|
||||
@@ -122,10 +129,12 @@ def main():
|
||||
win = AdminWindow(config)
|
||||
win.setWindowIcon(icons.icon_admin())
|
||||
win.show()
|
||||
guard.on_activate_requested(lambda: _raise_window(win))
|
||||
sys.exit(app.exec())
|
||||
|
||||
# Mode User (défaut)
|
||||
window = MainWindow(config)
|
||||
guard.on_activate_requested(lambda: _raise_window(window))
|
||||
|
||||
# Systray
|
||||
if not args.no_tray and QSystemTrayIcon_available():
|
||||
@@ -148,6 +157,13 @@ def main():
|
||||
sys.exit(app.exec())
|
||||
|
||||
|
||||
def _raise_window(window) -> None:
|
||||
"""Ramène une fenêtre existante au premier plan (second lancement)."""
|
||||
window.showNormal()
|
||||
window.raise_()
|
||||
window.activateWindow()
|
||||
|
||||
|
||||
def QSystemTrayIcon_available() -> bool:
|
||||
from PyQt6.QtWidgets import QSystemTrayIcon
|
||||
return QSystemTrayIcon.isSystemTrayAvailable()
|
||||
|
||||
Reference in New Issue
Block a user