A lightweight macOS menu bar utility for managing Google Cloud authentication status.
- 🔐 Authentication Monitoring: Automatically checks your Google Cloud authentication status every minute
- 🚨 Visual Status Indicator: Shows a red warning icon when not authenticated, normal cloud icon when authenticated
- 🔔 Smart Notifications: Get notified when your authentication expires (only once, not every minute!)
- 👆 Clickable Notifications: Click the notification to immediately re-authenticate
- 🔄 Quick Authentication: One-click authentication with Google Cloud from the menu bar
- 🚀 Launch at Login: Option to automatically start GClouder when you log in to your Mac
- 🎯 Minimal and Efficient: Runs quietly in your menu bar without cluttering your dock
- macOS 13.0 (Ventura) or later
- Google Cloud SDK (
gcloud) installed and configured - Swift 5.9 or later (for building from source)
- Download the latest release from the Releases page
- Unzip the downloaded file
- Drag
GClouder.appto your Applications folder - Launch GClouder from your Applications folder
When you first launch GClouder, macOS may show a security warning: "Apple could not verify 'GClouder' is free of malware..."
This is normal for unsigned applications. To resolve this:
Method 1 (Recommended):
- Right-click on
GClouder.appin Applications - Select "Open" from the context menu
- Click "Open" in the security dialog that appears
Method 2:
- Go to System Preferences → Security & Privacy → General
- Click "Open Anyway" next to the GClouder message
Method 3 (Command Line):
xattr -d com.apple.quarantine /Applications/GClouder.appAfter using any of these methods once, GClouder will launch normally in the future.
-
Clone the repository:
git clone https://github.com/yourusername/gclouder.git cd gclouder -
Build and install using make:
make install
This will build the app and install it to
/Applications -
Launch GClouder from your Applications folder
Once launched, GClouder will appear in your menu bar:
- Cloud Icon: You're authenticated with Google Cloud
- Red Warning Icon: You're not authenticated
Click the icon to access the menu:
- Authenticate GCloud: Opens browser for Google Cloud authentication
- Launch at Login: Toggle whether GClouder starts automatically
- Quit: Exit the application
GClouder will send a notification when your authentication expires. The notification:
- Only appears when your auth status changes (not every check)
- Is clickable - clicking it will start the authentication process
- Requires notification permissions (you'll be prompted on first launch)
makeormake build- Build the application in release modemake dev- Build the application in debug modemake test- Run tests (falls back to build verification if XCTest unavailable)make test-auth- Test the authentication flow interactivelymake run- Build and run the debug versionmake install- Build and install to /Applicationsmake uninstall- Remove from /Applicationsmake clean- Clean build artifactsmake release- Create a distributable .zip file
GClouder periodically checks your Google Cloud authentication status by attempting to retrieve an access token using:
gcloud auth application-default print-access-tokenWhen you click "Authenticate GCloud", it runs:
gcloud auth login --enable-gdrive-access --update-adcThis opens your default browser for authentication and updates your Application Default Credentials.
This can happen for several reasons:
- Browser closed too quickly: Make sure to complete the authentication flow in your browser
- Popup blockers: Ensure your browser allows popups from accounts.google.com
- gcloud SDK issues: Try running
gcloud auth loginmanually in Terminal to test
Use the built-in debug command to test authentication:
make test-authThis will:
- Check if gcloud is installed and accessible
- Show current authentication status
- Run the app's authentication flow with detailed logging
- Verify final authentication status
- The app checks authentication status every minute - wait a moment for it to update
- Click the menu bar icon to force an immediate check
- Make sure you have the latest version of Google Cloud SDK
- Try running
gcloud auth application-default loginmanually in Terminal - Check that your credentials haven't expired
- Check that you've granted necessary permissions in System Preferences > Security & Privacy
- Look for notification permissions - the app needs these to alert you
- Try launching the app again from your Applications folder
The Makefile includes automatic code signing to avoid security warnings:
- With Apple Developer Certificate: If you have a "Developer ID Application" certificate installed, the build process will automatically sign the app with it
- Ad-hoc Signing: If no developer certificate is found, the app will be signed with an ad-hoc signature (still reduces security warnings)
To sign with your own certificate:
- Get an Apple Developer account and download your "Developer ID Application" certificate
- Install it in your Keychain
- Run
make installormake release- it will automatically detect and use your certificate
gclouder/
├── Sources/
│ └── Gclouder/
│ ├── main.swift
│ ├── AppDelegate.swift
│ ├── StatusBarController.swift
│ ├── AuthenticationChecker.swift
│ ├── GCloudAuthenticator.swift
│ └── Resources/
│ └── Info.plist
├── Tests/
│ └── GclouderTests/
├── Package.swift
├── Makefile
└── README.md
make testNote: Full test execution requires Xcode with XCTest framework. If XCTest is not available, the command will verify that the code compiles successfully.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Tests run automatically on all PRs and pushes to main
- Ensure all tests pass before submitting PR
- Update version in
Resources/Info.plist(CFBundleShortVersionString) - Commit the version change
- Create and push a tag:
git tag -a v1.0.1 -m "Release version 1.0.1" git push origin v1.0.1 - GitHub Actions will automatically build and create a release
This project is licensed under the MIT License - see the LICENSE file for details.
- Uses LaunchAtLogin for startup functionality
- Built with Swift and SwiftUI for macOS