Gloop is a cross-platform desktop application that allows you to easily switch between multiple global Git identities (name and email) from the system tray. Designed for developers who manage personal, work, and open source project accounts separately.
- Detects the current global Git user (
user.nameanduser.email) - Switches between different profiles from a system tray menu
- Dynamic icon based on the active user's GitHub avatar
- Stores profiles locally in
~/.git_profiles.json - Simple interface and no telemetry
- Python 3.10 or higher
gitinstalled- Internet connection (optional, to download avatars)
pip install -r requirements.txtpython src/main.pygloop/
βββ assets/ # Project icons and graphics
βββ src/ # Main source code
β βββ main.py # Entry point
β βββ ui_tray.py # System tray logic (UI)
β βββ git_profiles.py # Git profile management
β βββ git_user.py # Git global interaction
β βββ avatar.py # User avatar fetching
βββ tests/ # Automated tests (pytest)
βββ .github/ # GitHub workflows and funding
βββ docs/ # Additional documents
βββ requirements.txt
βββ pyproject.toml
βββ README.md
βββ LICENSE
βββ CONTRIBUTING.md
βββ CODE_OF_CONDUCT.md
βββ .gitignore
- PNG: 16x16, 32x32, 64x64, 128x128, 256x256
- Windows:
gittrayapp_icon.ico - macOS:
gittrayapp_icon.icns
Place these icons in the assets/ folder.
Below are screenshots of the system tray and the user selection menu in Gloop:
| System Tray (active icon) | User Selection Menu |
|---|---|
![]() |
![]() |
Basic flow:
- Click the Gloop icon in the system tray.
- View the current global Git user and available profiles.
- Select a profile to instantly change the global Git user (you'll receive visual confirmation).
- Add new profiles from the menu (name and email are validated).
- Delete profiles from each profile's context menu (with confirmation).
- If Git is not configured or there are errors, clear warnings will be shown.
Gloop validates entered data and provides visual feedback for all important actions, improving experience and robustness.
pyinstaller --noconfirm --onefile --windowed src/main.py --icon=assets/gittrayapp_icon.ico --name glooppyinstaller --noconfirm --onefile --windowed src/main.py --icon=assets/gittrayapp_icon.icns --name gloopCreate a file ~/.local/share/applications/gloop.desktop with the following content:
[Desktop Entry]
Type=Application
Name=Gloop
Comment=Switch between global Git identities easily
Exec=python3 /path/to/gloop/src/main.py
Icon=/path/to/gloop/assets/gloop-icon@128.png
Terminal=false
Categories=Development;Utility;
StartupNotify=trueMake it executable:
chmod +x ~/.local/share/applications/gloop.desktopUnit tests are located in the tests/ folder and cover profile management, Git interaction, and avatar fetching. Run all tests with:
pytest- Show tooltip or quick copy of
git clonewith the active user - Detect Git provider (GitHub, GitLab) and suggest commands
- Local configuration per folder (repo-specific mode)
- Integration with SSH keys and
.ssh/config - User change and activity history
- Full interface for profile management
- Multilanguage translation
- MVP 0: β Completed (bootstrap, structure, CI, basic documentation)
- MVP 1: β Completed (core functionality, data validation, visual feedback, automated tests, profile deletion option, robustness validated by tests)
- MVP 2: β¬ In progress (UX improvements, multiplatform support, advanced error messages)
All MVP 1 features have been implemented and automatically validated by unit tests. The data validation and visual feedback system meets the robustness and user experience standards defined in the strategic guide.
See CONTRIBUTING.md to learn how you can help with improvements, reports, or translations.
Also see our Code of Conduct to maintain a healthy and respectful environment.
This project is free and has no trackers. If you find it useful, you can support it:
(See .github/FUNDING.yml)
MIT β You can use, modify, and share this project freely.

