Skip to content

HoLuLuLu/ProxyThemAll

Repository files navigation

ProxyThemAll

Build Version Downloads

Plugin Icon

Description

ProxyThemAll is an IntelliJ IDEA plugin that provides one-click proxy management with automatic synchronization across development tools.

Key Features:

  • Secure Proxy Backup & Restore: Automatically backs up your proxy settings using OS-native secure storage (macOS Keychain, Windows Credential Manager, etc.) and restores them when IntelliJ forgets them after restart. Includes both automatic restore on startup and one-click manual restore via notification.
  • One-click proxy toggle: Enable or disable proxy settings instantly through the Tools menu or status bar widget
  • Git integration: Automatically configures Git proxy settings (http.proxy, https.proxy) with support for authentication and non-proxy hosts
  • Gradle integration: Configures Gradle proxy settings via JVM system properties and gradle.properties files with smart project detection (optional, disabled by default)
  • Multi-project support: Applies proxy configuration changes to all open projects simultaneously
  • Intelligent cleanup: Automatically removes proxy settings when disabled and reapplies them during IDE startup
  • Status bar widget: Optional clickable widget showing current proxy state with visual indicators
  • Settings management: Configurable options for notifications, status bar widget, Git integration, and Gradle support
  • Non-proxy hosts support: Automatically handles hosts that should bypass proxy settings for both Git and Gradle
  • Authentication support: Handles proxy credentials with proper URL encoding for Git configuration

Configuration Options:

  • Enable/disable notifications for proxy state changes
  • Show/hide status bar widget
  • Enable/disable Git proxy synchronization
  • Enable/disable Gradle proxy support (experimental)
  • Configure Gradle global fallback behavior for non-Gradle projects

Gradle-Specific Features:

  • Smart project detection: Automatically detects Gradle projects and only applies Gradle proxy to actual Gradle projects
  • Global fallback setting: Configurable behavior for non-Gradle projects (apply to global ~ /.gradle/gradle.properties or skip)
  • ProxyThemAll changelist: Gradle configuration changes are automatically placed in a dedicated VCS changelist to prevent accidental commits of proxy credentials
  • Automatic cleanup: ProxyThemAll changelist is automatically removed when proxy is disabled (if empty)

Target Users:

  • Developers switching between office (corporate proxy) and home (direct connection) environments
  • Teams working with corporate proxies who need frequent proxy toggling
  • Developers wanting consistent proxy configuration across IntelliJ IDEA, Git, and Gradle
  • Users managing multiple projects who need synchronized proxy settings

The plugin uses IntelliJ IDEA's existing proxy configuration and adds toggle functionality accessible through the Tools menu and an optional status bar widget. Git integration is enabled by default, while Gradle integration is optional and can be enabled in settings.

Project Structure

src/main/kotlin/org/holululu/proxythemall/
├── actions/
│   └── ProxyThemAllAction.kt          # Main toggle action in Tools menu
├── core/
│   └── ProxyController.kt             # Central controller for proxy operations
├── listeners/
│   ├── HttpProxySettingsChangeListener.kt # Monitors IntelliJ's built-in proxy settings
│   ├── ProxyStateChangeListener.kt    # Handles proxy state change events
│   ├── ProxyStateChangeManager.kt     # Manages state change notifications
│   └── WidgetStateChangeListener.kt   # Updates widget when state changes
├── models/
│   ├── NotificationData.kt            # Data structure for notifications
│   ├── ProxyInfo.kt                   # Proxy information data model
│   └── ProxyState.kt                  # Proxy state enumeration
├── notifications/
│   └── NotificationService.kt         # User notification management
├── services/
│   ├── ProxyCredentialsStorage.kt     # Secure proxy backup using PasswordSafe API
│   ├── ProxyInfoExtractor.kt          # Extracts proxy information from IDE settings
│   ├── ProxyRestoreService.kt         # Restores proxy settings from backup
│   ├── ProxyService.kt                # Core proxy management logic
│   ├── ProxyThemAllStartupActivity.kt # Startup activity for plugin initialization
│   ├── ProxyThemAllStartupService.kt  # Handles plugin initialization, backup, and auto-restore
│   ├── git/
│   │   ├── GitProxyConfigurer.kt      # Git proxy configuration management
│   │   └── GitProxyService.kt         # Git-specific proxy operations
│   └── gradle/
│       ├── GradleProxyConfigurer.kt   # Gradle proxy config with VCS changelist management
│       └── GradleProxyService.kt      # Gradle project detection and proxy operations
├── settings/
│   ├── ProxyThemAllConfigurable.kt    # Settings UI configuration
│   └── ProxyThemAllSettings.kt        # Settings persistence (includes global fallback option)
├── utils/
│   ├── NotificationMessages.kt        # Notification message templates
│   └── ProxyUrlBuilder.kt             # Utility for building proxy URLs
└── widgets/
    ├── ProxyIcons.kt                  # Status bar icons
    ├── ProxyStatusBarWidget.kt        # Status bar widget implementation
    └── ProxyStatusBarWidgetFactory.kt # Widget factory for IDE integration

Installation

  • Using the IDE built-in plugin system:

    Settings/Preferences > Plugins > Marketplace > Search for "ProxyThemAll" > Install

  • Using JetBrains Marketplace:

    Go to JetBrains Marketplace and install it by clicking the Install to ... button in case your IDE is running.

    You can also download the latest release from JetBrains Marketplace and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...

  • Manually:

    Download the latest release and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...


Plugin based on the IntelliJ Platform Plugin Template.

About

JetBrains IDE Plugin to manage the proxy usage by one click.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages