Skip to content

CripterHack/gloop-git-switcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Gloop

Gloop Logo

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.


✨ Features

  • Detects the current global Git user (user.name and user.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

πŸš€ Installation

Requirements

  • Python 3.10 or higher
  • git installed
  • Internet connection (optional, to download avatars)

Dependencies

pip install -r requirements.txt

▢️ Running

python src/main.py

🧱 Project Structure

gloop/
β”œβ”€β”€ 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

πŸ–ΌοΈ Available Icons

  • PNG: 16x16, 32x32, 64x64, 128x128, 256x256
  • Windows: gittrayapp_icon.ico
  • macOS: gittrayapp_icon.icns

Place these icons in the assets/ folder.


πŸ–ΌοΈ Visual Usage Example

Below are screenshots of the system tray and the user selection menu in Gloop:

System Tray (active icon) User Selection Menu
Tray Icon User Menu

Basic flow:

  1. Click the Gloop icon in the system tray.
  2. View the current global Git user and available profiles.
  3. Select a profile to instantly change the global Git user (you'll receive visual confirmation).
  4. Add new profiles from the menu (name and email are validated).
  5. Delete profiles from each profile's context menu (with confirmation).
  6. 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.


πŸ–₯️ Building with PyInstaller

Windows

pyinstaller --noconfirm --onefile --windowed src/main.py --icon=assets/gittrayapp_icon.ico --name gloop

macOS

pyinstaller --noconfirm --onefile --windowed src/main.py --icon=assets/gittrayapp_icon.icns --name gloop

🐧 Linux Integration (.desktop)

Create 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=true

Make it executable:

chmod +x ~/.local/share/applications/gloop.desktop

πŸ§ͺ Automated Tests

Unit tests are located in the tests/ folder and cover profile management, Git interaction, and avatar fetching. Run all tests with:

pytest

βœ… Future Features Checklist

  • Show tooltip or quick copy of git clone with 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

🟒 Current Development Status

  • 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.


❀️ Contributions

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.


πŸ’Έ Support this project

This project is free and has no trackers. If you find it useful, you can support it:

(See .github/FUNDING.yml)


🧠 License

MIT β€” You can use, modify, and share this project freely.

About

Tray app to easily switch between global Git users

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors

Languages