Skip to content

Lusan-sapkota/TimeRing

Repository files navigation

TimeRing ⏰

TimeRing Logo

A lightweight, modern, and beautiful timer application for your desktop.


Version Python License Platform


📥 Download🐙 GitHub📖 Documentation🐛 Report Issues


TimeRing Screenshot

Table of Contents

🌟 Why TimeRing?

TimeRing transforms how you manage time on your desktop. Whether you're following the Pomodoro Technique, timing cooking recipes, or managing multiple work sessions, TimeRing provides an intuitive and powerful solution that stays out of your way while keeping you on track.

Perfect for:

🍅
Pomodoro Technique
practitioners
👨‍💻
Developers
managing sprint tasks
🍳
Cooking
enthusiasts
📚
Students
using time-blocking
🏃‍♂️
Fitness
interval training

✨ Features

🎯 Core Timer Management

  • Multiple Concurrent Timers - Run unlimited timers simultaneously without interference
  • Priority Timer System - Most important timer always displayed prominently at the top
  • Active Timer Block - Large, dedicated display with enhanced controls for your current focus
  • Smart Timer Navigation - Seamlessly switch between multiple running timers
  • Custom Names & Descriptions - Personalize each timer with meaningful labels and detailed notes

🔊 Smart Notifications

  • Custom Notification Sounds - Assign unique audio alerts for different timer types
  • Continuous Audio Alerts - Sounds loop until acknowledged, ensuring you never miss an alert
  • Native Desktop Integration - Works seamlessly with KDE, GNOME, and other Linux desktop environments
  • Configurable Urgency Levels - Set notification priority from low to critical

🎨 Modern User Experience

  • Clean, Intuitive Interface - Thoughtfully designed with smooth animations and slide-in menus
  • System-Native Icons - Automatically uses your system's icon theme for consistency
  • Responsive Design - Adapts beautifully to different screen sizes, including 720p displays
  • Real-Time Status Updates - Clear visual feedback for running, paused, ringing, and finished states

⚙️ Advanced Capabilities

  • Persistent State Management - Automatically saves and restores timers across application restarts
  • Flexible Timer Controls - Pause, resume, stop, and instantly rerun any timer
  • Auto-Update System - One-click updates when new versions are available
  • CLI Support - Basic command-line arguments for automation and scripting
  • Customizable Styling - Modify appearance using Qt's QSS stylesheet system
  • Smooth Performance - Optimized scrolling and non-blocking UI for fluid interaction

🚀 Quick Start

📦 Easy Installation (Recommended)

🐧 Ubuntu/Debian (GitHub)

Install from GitHub Release (.zip)
# Download and extract the release zip from GitHub
wget https://github.com/Lusan-sapkota/TimeRing/releases/download/v1.0.0/Application.zip
unzip Application.zip

# Inside the extracted folder, you'll find TimeRing_1.0.0.deb
sudo dpkg -i TimeRing_1.0.0.deb

# Launch the app
timering
Uninstall (.deb package)
sudo dpkg -r timering

📁 Direct .deb Download (SourceForge)

Prefer a direct .deb file?
SourceForge hosts the latest .deb package for easy installation:

SourceForge

Install from SourceForge (.deb)
# Download the .deb package directly
wget https://sourceforge.net/projects/timering/files/TimeRing_1.0.0.deb/download

# Install
sudo dpkg -i TimeRing_1.0.0.deb

# Launch
timering
Uninstall (.deb package)
sudo dpkg -r timering

🛠️ Manual Installation

🔧 Click to expand manual installation instructions

Prerequisites

# Ubuntu/Debian
sudo apt update && sudo apt install python3 python3-pip git

# Fedora/RHEL
sudo dnf install python3 python3-pip git

# Arch Linux
sudo pacman -S python python-pip git

Installation Steps

# 1. Clone the repository
git clone https://github.com/Lusan-sapkota/TimeRing.git
cd TimeRing

# 2. Create virtual environment
python3 -m venv venv
source venv/bin/activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Run the application
python3 main.py

📚 Usage Guide

🎯 Creating Your First Timer

1️⃣ Enter Details

Give your timer a meaningful name
(e.g., "Work Session", "Tea Brewing")

2️⃣ Set Duration

Set time in hours, minutes, seconds anything you want
(or simply use the quick time)

3️⃣ Add Description

Click the icon to add
max 50 words description (optional)

4️⃣ Choose Sound

Click the icon to select
custom sound, can be customized per timer or global deafult (optional)

5️⃣ Start Timer

Click "Create Timer" and watch it appear in your active timers list

🎮 Managing Active Timers

Each timer card displays comprehensive information and controls:

📋 Timer Information

  • Timer Name & Icon - Always visible, with status-specific icons
  • Description - Optional details shown below the name
  • Time Display - Shows remaining time and original duration
  • Status Row - Clear icon and text indicators

🎛️ Available Controls

  • Edit - Change timer name and description
  • Change Sound - Select custom notification sound
  • Pause/Resume - Toggle timer state
  • Rerun - Restart timer from original duration
  • Stop - Halt timer and silence alarms

🎨 Timer States & Visual Indicators

State Icon Color Available Actions
Running Running Green Pause, Stop, Edit, Change Sound
Paused Paused Orange Resume, Stop, Edit, Change Sound
Ringing Ringing Red Stop (to silence)
Time's Up Time's Up Red Rerun, Edit, Delete

💡 Pro Tip: Icons provide instant visual feedback - look for the color-coded status indicators to quickly understand your timer states at a glance!

🎯 Active Timer Block

The large, dedicated display at the top shows your current focus timer:

📊 Display Elements

  • Timer Name & Description - Centered, always visible
  • Large Time Display - Easy-to-read countdown
  • Status Row - Centered icon and text
  • Automatic Priority - Most important timer shown

🎛️ Enhanced Controls

  • Previous/Next - Switch between running timers
  • Pause/Resume - Toggle timer state
  • Stop - Halt timer and silence alarms
  • Quick Access - All controls in one place

⚙️ Settings & Customization

Access powerful configuration options through the header icons:

🛠️ Settings

• Global default notification sound
• Desktop notifications toggle
• Auto-start timers on launch
• Notification urgency levels
• Update checks & sound looping

❓ Help

• User guide & tutorials
• Troubleshooting tips
• Keyboard shortcuts
• Feature explanations
• Best practices

ℹ️ About

• Version information
• Developer details
• System compatibility
• License information
• Credits & acknowledgments

🛠️ Advanced Configuration

📁 Configuration Files

TimeRing stores all settings in your home directory:

~/.config/TimeRing/
├── settings.json     # Application preferences and defaults
└── timers.json       # Current timer states (auto-saved)

🎨 Custom Styling

Personalize TimeRing's appearance by modifying style.qss:

/* Modern button styling */
QPushButton#startButton {
    background-color: #4CAF50;
    border-radius: 8px;
    padding: 8px 16px;
    font-weight: bold;
}

/* Custom timer card appearance */
QFrame#timerCard {
    background-color: #f5f5f5;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    margin: 4px;
}

/* Dark theme support */
QMainWindow {
    background-color: #2b2b2b;
    color: #ffffff;
}

⌨️ Command Line Options

# Start minimized to system tray
python3 main.py --minimized

# Load custom style sheet
python3 main.py --style custom.qss
# Enable debug logging
python3 main.py --debug

# Set custom config directory
python3 main.py --config-dir ~/.timering

🖥️ Platform Compatibility

🐧 Primary Platform: Linux

Supported Distributions:

  • Ubuntu 20.04+ / Debian 11+
  • Fedora 34+ / RHEL 8+
  • Arch Linux / Manjaro
  • openSUSE Leap 15.3+

🖥️ Desktop Environments

Fully Tested:

  • KDE Plasma 5.20+
  • GNOME 3.38+
  • XFCE 4.16+
  • Cinnamon 5.0+

🔧 Windows/macOS Support: While TimeRing may run on other platforms with Python and PyQt5, some features (particularly desktop notifications and audio) are optimized for Linux and may require additional configuration.


🤝 Contributing

We welcome contributions from the community! Here's how you can help make TimeRing even better:

🐛 Report Bugs

GitHub Issues

💡 Suggest Features

Discussions

🔧 Submit PRs

Pull Requests

📖 Improve Docs

Wiki

🌍 Translate

i18n

🚀 Development Setup

# 1. Fork and clone your repository
git clone https://github.com/Lusan-sapkota/TimeRing.git
cd TimeRing

# 2. Create development environment
python3 -m venv dev-env
source dev-env/bin/activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Run tests (optional)
python -m pytest tests/

# 5. Start developing!
python3 main.py

📋 Pull Request Guidelines

  1. Fork the repository and create a feature branch
  2. Write clear, commented code following PEP 8
  3. Add tests for new functionality
  4. Update documentation as needed
  5. Submit a pull request with a clear description

📈 Roadmap

🎯 Upcoming Features

While active development may be limited, maintenance updates and essential patches will be provided as needed to ensure continued stability and usability.

📝 Version History

  • v1.0.0 - Initial release with core timer functionality

🆘 Support

🔍 Getting Help

📖 Documentation

Check this README and
project wiki

💬 Community

Join our GitHub Discussions

🐛 Bug Reports

Use our Issue Tracker

🔧 Common Issues

🔊 Audio notifications not working

Ensure VLC is installed:

# Ubuntu/Debian
sudo apt install vlc

# Fedora
sudo dnf install vlc

# Arch Linux
sudo pacman -S vlc
🔔 Desktop notifications not showing

Check that libnotify is installed:

# Ubuntu/Debian
sudo apt install libnotify-bin

# Fedora
sudo dnf install libnotify

# Test notifications
notify-send "Test" "This is a test notification"
🐍 Python version compatibility

TimeRing requires Python 3.11+. Check your version:

python3 --version

# If needed, install Python 3.11+
sudo apt install python3.11

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


👨‍💻 Author


Lusan Sapkota
Software Developer & Creator

GitHub Email Website


🙏 Acknowledgments

🛠️ Technology

PyQt5 community for the
excellent GUI framework

🤝 Contributors

All contributors who have
helped improve TimeRing

🧪 Testing

Beta testers who provided
valuable feedback

🎨 Design

Icon designers for
beautiful system icons

⭐ Star this repository if TimeRing helps you manage your time better!

Made with ❤️ for productivity enthusiasts


Report Bug Request Feature Contribute

About

A lightweight timer application that supports multiple concurrent timers, each with a customizable title and duration and a custom sound.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors