A GNOME Shell extension for tracking time spent on GitLab issues directly from your system tray.
- System Tray Integration: Quick access timer in your GNOME top bar
- Project & Issue Selection: Browse and search your GitLab projects and issues
- Timer Controls: Start, pause, resume, and cancel time tracking
- Automatic Time Submission: Send tracked time directly to GitLab issues
- Monthly Reports: Generate detailed time reports by project and tag
- Quick Links: Open projects and issues directly in your browser
- Tag Filtering: Filter reports by specific labels or regex patterns
- Multi-language Support: Available in English, French, Spanish, and German
The extension adds a timer icon to your system tray that changes based on the timer state:
- ⏱️ Stopped: Default timer icon
▶️ Running: Play icon- ⏸️ Paused: Pause icon
Browse and search your GitLab projects and issues with a clean, intuitive interface:
- Alphabetically sorted project list
- Real-time search filtering
- Project avatars with fallback to group/user avatars
Visit the extention page an click install
Clone this repository:
git clone https://github.com/Gecka-Apps/gitlab-time-tracker.git
cd gitlab-time-tracker
make install- Click on the timer icon in the system tray
- Select Settings from the menu
- Configure your GitLab instance:
- GitLab Server URL: Your GitLab instance URL (e.g.,
https://gitlab.com) - Personal Access Token: Generate a token with
apiscope from your GitLab settings
- GitLab Server URL: Your GitLab instance URL (e.g.,
- (Optional) Configure report filters:
- Tags included in reports: Filter reports by specific labels (comma-separated list or regex patterns)
- Go to your GitLab instance
- Navigate to Preferences → Personal Access Token
- Create a new token with the following:
- Name: GNOME Time Tracker
- Scopes:
api(to read projects/issues and add time entries)
- Copy the token and paste it in the extension settings
- Click the timer icon in the system tray
- Select Select project & issue
- Search and select your project
- Search and select the issue you're working on
- Click Select
- Click Start to begin tracking time
- Start: Begin tracking time on the selected issue
- Pause/Resume: Pause or resume the timer without losing progress
- Stop & Send: Stop the timer and send the tracked time to GitLab
- Cancel: Cancel the timer without sending time
The extension tracks time in seconds and sends it to GitLab in the following format:
- Hours:
Xh(e.g.,2hfor 2 hours) - Minutes:
Xm(e.g.,30mfor 30 minutes) - Combined:
XhYm(e.g.,2h30mfor 2 hours and 30 minutes)
Note: The minimum time that can be sent is 1 minute.
Generate detailed time reports for your projects with comprehensive breakdown by tags.
- Click the timer icon in the system tray
- Select Monthly Report from the menu
- Choose a project from the dropdown list
- Navigate between months using the arrow buttons
- Visual Chart: Bar chart showing time distribution by tag/label
- Tag Filtering: Configure which tags to include in reports (see Settings)
- Export Options:
- Markdown: Detailed report with summary by category and per-ticket breakdown
- CSV: Simple data export for spreadsheet analysis
- Quick Navigation: Month-by-month browsing with arrow controls
- Summary Statistics: Total time, issue count, and category count
You can configure which tags appear in your reports:
- Open Settings from the extension menu
- Go to the Report Configuration section
- Enter tags in the Tags included in reports field
Filter Examples:
- Exact match:
Corrective maintenance,Adaptive maintenance,Preventive maintenance - Regex pattern:
^.+ maintenance$(all tags ending with "Maintenance") - Mixed:
Bug,^Feature.*$,Hotfix
Note: Issues without matching tags will appear as "Other" in filtered reports.
Markdown Export includes:
- Project name and period
- Total time for the month
- Summary by category (tags)
- Detailed breakdown by ticket with clickable links
CSV Export includes:
- Project, Month, Label, and Time columns
- Compatible with Excel, Google Sheets, etc.
Files are saved to your Downloads folder automatically.
Once you've selected a project and issue:
- Click Open project in browser to view the project in GitLab
- Click Open issue in browser to view the issue in GitLab
These links use the URLs provided by GitLab's API for maximum compatibility.
The extension automatically detects your system language and displays in:
- 🇬🇧 English (default)
- 🇫🇷 French (Français)
- 🇪🇸 Spanish (Español)
- 🇩🇪 German (Deutsch)
- GNOME Shell: 46, 47, 48, 49
- GitLab: Any version with API v4
- Operating Systems: Linux distributions with GNOME Shell
- Restart GNOME Shell (X11:
Alt+F2→r→ Enter) - Check if the extension is enabled:
gnome-extensions list --enabled | grep gitlab-time-tracker - Check the extension logs:
journalctl -f -o cat /usr/bin/gnome-shell
- Verify your GitLab URL and token in settings
- Ensure your token has
apiscope - Check your network connection
- Verify the GitLab instance is accessible
- Check the notification message for error details
- Verify you have permission to add time to the issue
- Ensure the project allows time tracking
- Check the browser console for API errors
The extension includes a Makefile for building and development:
# Build the extension package (compiles schemas and translations)
make build
# Build and install the extension
make install
# Update translation templates
make pot
# Test in nested GNOME Shell
make test-shell
# Test preferences dialog
make test-prefs
# Clean build artifacts
make clean
# Show all available commands
make helpThe build command uses gnome-extensions pack which automatically:
- Compiles GSettings schemas
- Compiles translations from .po files
- Creates a .zip package in the
build/directory
gitlab-time-tracker@gecka.nc/
├── extension.js # Main extension logic
├── issueSelector.js # Project/issue selector dialog
├── reportDialog.js # Monthly report dialog
├── prefs.js # Settings UI
├── metadata.json # Extension metadata
├── stylesheet.css # Custom styles
├── schemas/ # GSettings schema
├── icons/ # Custom SVG icons
├── po/ # Translation source files
├── locale/ # Compiled translations
├── LICENSE # GPL-3.0 license
└── README.md # This file
Contributions are welcome! Please feel free to submit issues or pull requests.
- Copy
po/gitlab-time-tracker@gecka.nc.pottopo/XX.po(where XX is your language code) - Translate the strings in the new
.pofile - Add your language code to
po/LINGUAS - Test your translation by building and installing the extension
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details.
- Material Design Icons: Timer icons from Material Design Icons
- GNOME Shell: Extension API and documentation
For issues, questions, or feature requests, please visit:
- Issues: https://github.com/Gecka-Apps/gitlab-time-tracker/issues
- Discussions: https://github.com/Gecka-Apps/gitlab-time-tracker/discussions
Made with ❤️ for the GNOME and GitLab communities
