A time tracking application

Overview

GTimeLog

GTimeLog is a simple app for keeping track of time.

build status build status (on Windows) test coverage

screenshot

Installing

GTimeLog is packaged for Debian and Ubuntu:

sudo apt-get install gtimelog

For Ubuntu, sometimes a newer version can usually be found in the PPA:

https://launchpad.net/~gtimelog-dev/+archive/ppa

Fedora also holds a package of gtimelog to be installed with:

sudo dnf install gtimelog

You can fetch the latest released version from PyPI

$ pip install gtimelog
$ gtimelog

You can run it from a source checkout (without an explicit installation step):

$ git clone https://github.com/gtimelog/gtimelog
$ cd gtimelog
$ ./gtimelog

System requirements:

  • Python (3.6+)
  • PyGObject
  • gobject-introspection type libraries for Gtk, Gdk, GLib, Gio, GObject, Pango, Soup, Secret
  • GTK+ 3.18 or newer

Documentation

This is work in progress:

Resources

Website: https://gtimelog.org

Mailing list: [email protected] (archive at https://groups.google.com/group/gtimelog)

IRC: #gtimelog on irc.freenode.net

Source code: https://github.com/gtimelog/gtimelog

Report bugs at https://github.com/gtimelog/gtimelog/issues

There's an old bugtracker at https://bugs.launchpad.net/gtimelog

I sometimes also browse distribution bugs:

Credits

GTimeLog was mainly written by Marius Gedminas <[email protected]>.

Barry Warsaw <[email protected]> stepped in as a co-maintainer when Marius burned out. Then Barry got busy and Marius recovered.

Many excellent contributors are listed in CONTRIBUTORS.rst

Comments
  • Add tagging support.

    Add tagging support.

    Entries can include a (space-separated) list of tags, separated from the main entry title by -- (originally //).

    Reports include also per-tag totals, if any tags are found.

    opened by riccardomurri 24
  • gtimelog on Windows 7

    gtimelog on Windows 7

    Hello,

    I'm trying to run gtimelog on Windows 7, but no success so far. I installed PyGObject for Windows (https://sourceforge.net/projects/pygobjectwin32/files/pygi-aio-3.18.2_rev10-setup_84c21bc2679ff32e73de38cbaa6ef6d30c628ae5.exe/download) and then installed gtimelog via pip3. When I then run gtimelog in a command window, I get no output whatsoever and the command prompt just returns without any error. My Python version is 3.4.4.

    Any idea on how I can further troubleshoot this?

    help wanted 
    opened by lvets 15
  • Modernize the UI

    Modernize the UI

    I want gtimelog to look at home in a modern GNOME 3 desktop. This means

    • header bars
    • app menu
    • new-style about dialog

    Something like this: ./mockup.py from the experimental-ui branch

    Checklist:

    • [x] mock up some UI in glade
    • [x] implement it
    • [ ] ~~perhaps pay attention to gtk_application_prefers_app_menu() and keep the old menu bar if that returns False?~~ (nah, unless somebody convinces me)
    • [x] test in a non-GNOME environment
    • [x] test on stable versions of several distros (Ubuntu 14.04, ~~Debian stable, Fedora something?~~) to see if I'm using any bleeding-edge APIs unnecessarily

    Implementation in the experimental-ui branch (use ./mockup.py instead of ./gtimelog):

    • [x] basic UI
    • [x] history browsing
    • [x] task entry
    • [ ] ~~get rid of scrolling animations during task entry~~ (or don't, I think I can live with it)
    • [x] history completion
    • [x] task pane
    • [x] support for remote task lists (sort of; there are rough edges and no UI)
    • [x] previewing reports
    • [x] sending reports via email
    • [x] error handling when report sending fails
    • [x] help page documenting keyboard shortcuts
    • [x] preferences dialog
    • [x] persistent view settings (task pane on/off at the very least) in gsettings
    • [x] command-line option handling (--version)
    • [x] fix warnings
    • [x] add back Python 2 support
    • [x] remove custom CSS loading code; I didn't end up using any custom CSS
    • [ ] ~~access keys for all menus and other widgets~~ (not if I can't see them)
    enhancement 
    opened by mgedmin 14
  • Implement sort order

    Implement sort order

    I'm almost done but I have one small issue: I don't manage to have the logview redraw when the tasks list changes (especially when the order changes).

    i.e. I'd expect something like Alt-2 (grouped) -> Alt-0 (sort by task order) -> Ctrl-T (change the task order) to automatically change the task order in the LogView pane, but I need to press again e.g. Alt-0 to make it happen

    I also still need to update the shortcuts pane, and probably documentation and test cases, but wanted a first opinion.

    opened by ericzolf 11
  • Global refactoring proposal

    Global refactoring proposal

    • Extracting ui (views and components)
    • Extracting core functions
    • Redesigning dependencies (especially gi) (that's why there is no separates commits although. But if something is interesting i can do separates commits later on to allow collaborative work)
    • Separates tests
    • python PEP review

    This work is not proposed to be directly merged because it can't unless strong decision (but painfull it's been, painfull it'll be ^^ ). It's intend to discuss and to find a suitable architecture design to allow future modularity without loosing the masterword of this application : simplicity to use and maybe later on simplicity to extend. It's just my very own proposal and all reviews, critics and proposals will be much appreciated.

    Cheers

    opened by StephaneMangin 11
  • Make experimental-ui run on Ubuntu 14.04

    Make experimental-ui run on Ubuntu 14.04

    NB: add libglib2.0-bin to build-deps. Also install gnome-themes-standard gnome-icon-theme-full gnome-icon-theme-symbolic if you've got an X-less Vagrant instance.

    Fatal errors first:

    (gtimelog:19915): Gtk-ERROR **: failed to add UI: src/gtimelog/experiment.ui: required gtk+ version 3.16, current version is 3.10
    Trace/breakpoint trap (core dumped)
    

    Fixed by editing the required version in experiment.ui.

    Next:

    Traceback (most recent call last):
      File "./mockup.py", line 157, in do_command_line
        self.do_activate()
      File "./mockup.py", line 235, in do_activate
        window = Window(self)
      File "./mockup.py", line 344, in __init__
        copy_properties(main_window, self)
      File "./mockup.py", line 252, in copy_properties
        if prop.flags & GObject.ParamFlags.READWRITE != GObject.ParamFlags.READWRITE:
    AttributeError: type object 'PyGObjectParamFlags' has no attribute 'READWRITE'
    

    The docs don't say when READWRITE was introduced. There's READABLE and WRITABLE.

    Next:

    Traceback (most recent call last):
      File "./mockup.py", line 157, in do_command_line
        self.do_activate()
      File "./mockup.py", line 235, in do_activate
        window = Window(self)
      File "./mockup.py", line 394, in __init__
        self.actions = self.Actions(self)
      File "./mockup.py", line 300, in __init__
        self.detail_level = Gio.PropertyAction.new("detail-level", win, "detail-level")
    ValueError: Pointer arguments are restricted to integers, capsules, and None. See: https://bugzilla.gnome.org/show_bug.cgi?id=683599
    

    This might be hard to fix; I commented out all PropertyActions temporarily. Now it runs, but looks terrible (no theme? no icons? my vagrant is incomplete).

    BTW in runs on Python 2, but not 3:

    Traceback (most recent call last):
      File "./mockup.py", line 157, in do_command_line
        self.do_activate()
      File "./mockup.py", line 235, in do_activate
        window = Window(self)
      File "./mockup.py", line 412, in __init__
        self.load_settings()
      File "./mockup.py", line 457, in load_settings
        self.gsettings.set_string('name', old_settings.name)
    TypeError: Must be string, not bytes
    

    and on Python 2 some UI elements are out of order -- probably because of

    (gtimelog:20290): Gtk-WARNING **: /build/gtk+3.0-3sSotQ/gtk+3.0-3.10.8/./gtk/gtkcontainer.c:1166: child property `position' of container class `GtkHeaderBar' is not writable
    
    opened by mgedmin 10
  • output reports on the CLI

    output reports on the CLI

    I love the simplicity to enter things via the GUI. However, I do not mail my reports to anyone anymore. I did that for a while and it was nice and easy with gtimelog.

    I am looking for a way to get the report for a week output on the CLI, without the whole mail-overhead.

    Is something like this planned?

    I am willing to contribute, though I have not much python experience. If this is not planned, I would be happy about some pointer where and how to start.

    enhancement 
    opened by kronn 10
  • Segmentation fault on macOS Big Sur with M1

    Segmentation fault on macOS Big Sur with M1

    I've been trying to get gtimelog running on macOS (M1). After installing needed libraries via brew and using Python 3.9.4, I'm getting the following error on startup:

    Unable to configure translations: no locale.bindtextdomain()
    Created /Users/me/.local/share/gtimelog
    Settings from /Users/me/.config/gtimelog/gtimelogrc migrated to GSettings (org.gtimelog)
    [1]    52861 segmentation fault  gtimelog
    

    I've installed these packages via brew:

    pygobject3
    gtk+3
    py3cairo
    pango
    gobject-introspection
    libsoup
    

    As suggested in this issue, I've made the library path available via:

    export DYLD_LIBRARY_PATH=/opt/homebrew/lib
    

    Did anyone have more success?

    help wanted 
    opened by LyteFM 9
  • Add flatpak manifest

    Add flatpak manifest

    This PR contains the manifest file required to build GTimeLog as a Flatpak.

    Build

    1. Make sure flatpak is installed in your system.
    2. Clone the repository.
    3. Run flatpak-builder --user --install gflatlog gtimelog/flatpak/org.gtimelog.GTimeLog.json.

    This command will build the flatpak according to the manifest file gtimelog/flatpak/org.gtimelog.GTimeLog.json using gflatlog as the build directory. Then it will install it as the user.

    (For information on alternative ways to build (e.g. to a local repo), please refer to the Flatpak documentation)

    Issues

    For both of these issues, someone who has Distutils experience may be helpful.

    App icon does not work

    I tried installing the app icon the way the desktop file is installed but I could not make Flatpak see it.

    Setup file references /app directly

    In setup.py, /app is referenced directly for data_files. I thought setup would install relative to the installation prefix when it is left out but I could not get Flatpak to see the desktop file with a relative path.

    This issue prevents the patch from being upstreamed.

    opened by cagatay-y 9
  • What's that "hidden option in gsettings"?

    In the documentation, there's this paragraph that starts with:

    There's a hidden option in gsettings for fetching the task list from an Internet URL.

    Could you be more specific about how we set this up? I'm not quite familiar with gsettings.

    opened by ChameleonScales 8
  • Exceptions with GTK 3.22 (on OpenSUSE Tumbleweed)

    Exceptions with GTK 3.22 (on OpenSUSE Tumbleweed)

    I'm trying to run it on the latest OpenSUSE Tumbleweed and I get the following error:

      File "/tmp/gtimelog/src/gtimelog/main.py", line 1388, in set_up_completion
        self.completion_choices = Gtk.ListStore(str)
    TypeError: GObject.__init__() takes exactly 0 arguments (1 given)
    

    My package versions are as follows:

    libglib-2_0-0            2.56.1-2.2
    libgobject-2_0-0         2.56.1-2.2
    libgtk-3-0               3.22.30-3.1
    python2-cairo            1.15.1-1.2
    python2-gobject          3.28.3-1.2
    typelib-1_0-Gtk-3_0      3.22.30-4.1
    typelib-1_0-Soup-2_4     2.62.2-2.1
    

    I've tried both master, 0.11.1, 0.11 with the same error. (Tags 0.10.* give other errors.)

    invalid 
    opened by cipriancraciun 8
  • Does gschema.compiled really belong in the Git repository?

    Does gschema.compiled really belong in the Git repository?

    After modifying src/gtimelog/data/org.gtimelog.gschema.xml, I tripped over the error:

    $ ./gtimelog 
    
    (gtimelog:46277): GLib-GIO-ERROR **: 14:37:37.363: Settings schema 'org.gtimelog' does not contain a key named 'log-order'
    Trace/breakpoint trap (core dumped)
    

    I found out that calling make recreated src/gtimelog/data/gschemas.compiled which solved the issue, but I noticed that removing alltogether gschemas.compiled also solved the issue. According to https://stackoverflow.com/questions/56309056/is-gschemas-compiled-architecture-specific-can-i-ship-it-with-my-python-library it is only a cache file and shouldn't be shipped with the application but generated by packages on the fly.

    So, should I/someone remove this file from the Git repository? And place it on the ignore list...

    opened by ericzolf 1
  • Some Changes

    Some Changes

    First question, is this still being actively developed/maintained?

    First, I like the simple concept of keeping track of time, However the thing that goes against my brain is the fact that you need to enter activity after you finished. I understand the concept, but to me it would make much more sense to type the activity that you want to start and then when you are finished type done or finished.

    To me the logic just flows better. :)

    For example When I arrive at work or start working I would type; Arrived or Started

    The timer would start

    One hour later I go for breakfast so I would type; Breakfast**

    The timer would stop

    When finished with breakfast type; Work

    The timer would start again.

    and so on till the end of the day or till I finished my job, and then I would type Done/Going Home**.

    The timer would stop for the day.

    To make it easier yet I would make two buttons for each task "Start" and "Finished"

    If I click on the Breakfast start button before I finished the the task that was running it would stop the timer for that task, then after I clicked the Breakfast Finished button, the timer would start again for the same task that was running before.

    Just some thoughts on making this easier to use.

    opened by Ben7230 4
  • Pointer/solution for macos installation (brew)

    Pointer/solution for macos installation (brew)

    Hi, I wanted to share how I made the installation work on my mac with brew.

    I installed all the depedencies, but got stuck on an error that libsoup of version 2.4 was not found. Later, I solved it using the following commands:

    brew unlink libsoup
    brew install libsoup@2
    brew link libsoup@2   # makes this version accessible in /usr/bin or something like that for gtimelog's dependencies to find it
    brew install adwaita-icon-theme  # otherwise all the button icons were missing
    

    (It's not all of the dependencies to install, because I don't remember the commands, but that was easy. It's the most tricky part that I couldn't solve for a long time. I don't know brew that well. And I expect many mac's gtimelog users to be in a similar situation – if they've just transferred to mac from ubuntu like me.)

    opened by adam-kral 1
  • Shortcuts window does not show up on MacOS

    Shortcuts window does not show up on MacOS

    What I did

    I am using MacOS 12.3.1 I installed the necessary dependencies using MacPorts. I am using the main branch of gtimelog.

    What happened

    When accessing the Keyboard Shortcuts entry in the ꠵ menu the main gtimelog window gets inactive and I cannot enter anything. Pressing esc seems to end the invisible dialog.

    Preferences and "About Time Log" do not suffer from this problem.

    What I did to debug the problem

    I started gtimelog using --debug option. This just produced the following warning.

    src/gtimelog/main.py:340: Warning: The property GtkContainer:child is deprecated and shouldn't be used anymore. It will be removed in a future version.
      builder = Gtk.Builder.new_from_file(SHORTCUTS_UI_FILE)
    

    Questions

    • Is there a way to debug this kind of issues further?
    • Is there anyone out there who does not have this problem?
    opened by icemac 1
  • Add lines from tasks to completion menu

    Add lines from tasks to completion menu

    It seems that the completion only considers records within timelog.txt. It would be nice to also add the lines from tasks.txt to the completion menu.

    Version: 0.11.3

    enhancement 
    opened by nblock 0
Releases(0.11)
  • 0.11(Mar 13, 2018)

    • A complete rewrite of the user interface, to better fit GNOME 3 (GH: #31).
    • History browsing can show you weeks/months, not just days.
    • You can filter the displayed tasks, with a total shown at the bottom (GH: #88).
    • There’s a preferences dialog now (GH: #47).
    • Window size and task pane size/visibility are remembered across restarts (GH: #30).
    • Settings are stored in GSettings. The old config file will be migrated on first startup.
    • Work hours and office hours are separate settings now (GH: #46).
    • Native support for emailing reports. Requires a configured MTA on the local machine (i.e. /usr/sbin/sendmail).
    • There’s a help page listing all the keyboard shortcuts.
    • The user interface can be translated (and is translated into Lithuanian). Reports are an exception (GH: #45).
    • More efficient file change watching (GH: #11).
    • Dropped features:
      • No more tray icons.
      • Dropped –tray, –toggle, –quit, –sample-config command line options.
      • The “Reload” menu option and hot key are gone – reloading is automatic now.
      • Report for a custom date range is gone.
      • “Complete report in spreadsheet” is gone.
      • “Work/slacking stats in spreadsheet” is gone.
      • Setting for editor is gone: the default file association for text files will be used.
      • Settings for mailer is gone: mail sending is internal now.
      • Setting for spreadsheet is gone.
      • Separate setting to show remaining office hours is gone (set office hours to 0 to hide the estimate).
    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Sep 28, 2014)

  • 0.9.1(Apr 3, 2014)

  • 0.9.0(Apr 3, 2014)

Owner
GTimeLog developers
GTimeLog developers
A :baby: buddy to help caregivers track sleep, feedings, diaper changes, and tummy time to learn about and predict baby's needs without (as much) guess work.

Baby Buddy A buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs wit

Baby Buddy 1.5k Jan 2, 2023
A time tracking application

GTimeLog GTimeLog is a simple app for keeping track of time. Contents Installing Documentation Resources Credits Installing GTimeLog is packaged for D

GTimeLog developers 224 Nov 28, 2022
Joint detection and tracking model named DEFT, or ``Detection Embeddings for Tracking.

DEFT: Detection Embeddings for Tracking DEFT: Detection Embeddings for Tracking, Mohamed Chaabane, Peter Zhang, J. Ross Beveridge, Stephen O'Hara

Mohamed Chaabane 253 Dec 18, 2022
Tracking code for the winner of track 1 in the MMP-Tracking Challenge at ICCV 2021 Workshop.

Tracking Code for the winner of track1 in MMP-Trakcing challenge This repository contains our tracking code for the Multi-camera Multiple People Track

DamoCV 29 Nov 13, 2022
Tracking Pipeline helps you to solve the tracking problem more easily

Tracking_Pipeline Tracking_Pipeline helps you to solve the tracking problem more easily I integrate detection algorithms like: Yolov5, Yolov4, YoloX,

VNOpenAI 32 Dec 21, 2022
Quadruped-command-tracking-controller - Quadruped command tracking controller (flat terrain)

Quadruped command tracking controller (flat terrain) Prepare Install RAISIM link

Yunho Kim 4 Oct 20, 2022
Python package for multiple object tracking research with focus on laboratory animals tracking.

motutils is a Python package for multiple object tracking research with focus on laboratory animals tracking. Features loads: MOTChallenge CSV, sleap

Matěj Šmíd 2 Sep 5, 2022
This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

215355 1 Dec 16, 2021
Shutdown Time - A pretty much useless application that allows you to shut your computer down in x time with a GUI.

A pretty much useless application that allows you to shut your computer down in x time with a GUI. Should eventually support Windows (all versions), Linux (v2.0+), MacOS (probably with Linux, idk)

null 1 Nov 8, 2022
Django package to log request values such as device, IP address, user CPU time, system CPU time, No of queries, SQL time, no of cache calls, missing, setting data cache calls for a particular URL with a basic UI.

django-web-profiler's documentation: Introduction: django-web-profiler is a django profiling tool which logs, stores debug toolbar statistics and also

MicroPyramid 77 Oct 29, 2022
A Python application for tracking, reporting on timing and complexity in Python code

A command-line application for tracking, reporting on complexity of Python tests and applications. wily [a]: quick to think of things, having a very g

Anthony Shaw 1k Dec 29, 2022
A mood based crypto tracking application.

Crypto Bud - API A mood based crypto tracking application. The main repository is private. I am creating the API before I connect everything to the ma

Krishnasis Mandal 1 Oct 23, 2021
Small Python application that links a Digico console and Reaper, handling automatic marker insertion and tracking.

Digico-Reaper-Link This is a small GUI based helper application designed to help with using Digico's Copy Audio function with a Reaper DAW used for re

Justin Stasiw 10 Oct 24, 2022
FollowSpot is a comprehensive audition tracking fullstack web application for entertainment industry professionals.

FollowSpot is a comprehensive audition tracking fullstack web application for entertainment industry professionals. This app allows users to store information/media for all of their auditions while also compiling data and displaying statistics to help track progress.

Jen Brissman 9 Jul 12, 2022
TimeTagger is a web-based time-tracking solution that can be run locally or on a server

TimeTagger is a web-based time-tracking solution that can be run locally or on a server. In the latter case, you'll want to add authentication, and also be aware of the license restrictions.

Almar Klein 626 Jan 6, 2023
Drone-based Joint Density Map Estimation, Localization and Tracking with Space-Time Multi-Scale Attention Network

DroneCrowd Paper Detection, Tracking, and Counting Meets Drones in Crowds: A Benchmark. Introduction This paper proposes a space-time multi-scale atte

VisDrone 98 Nov 16, 2022
Python and C++ implementation of "MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation". Accepted at LXCV @ CVPR 2021.

MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation This is a PyTorch and LibTorch implementation of MarkerPose: a

Jhacson Meza 47 Nov 18, 2022
STMTrack: Template-free Visual Tracking with Space-time Memory Networks

STMTrack This is the official implementation of the paper: STMTrack: Template-free Visual Tracking with Space-time Memory Networks. Setup Prepare Anac

Zhihong Fu 62 Dec 21, 2022
This is the official code for the paper "Ad2Attack: Adaptive Adversarial Attack for Real-Time UAV Tracking".

Ad^2Attack:Adaptive Adversarial Attack on Real-Time UAV Tracking Demo video ?? Our video on bilibili demonstrates the test results of Ad^2Attack on se

Intelligent Vision for Robotics in Complex Environment 10 Nov 7, 2022
End-to-end beat and downbeat tracking in the time domain.

WaveBeat End-to-end beat and downbeat tracking in the time domain. | Paper | Code | Video | Slides | Setup First clone the repo. git clone https://git

Christian J. Steinmetz 60 Dec 24, 2022