Inverted command line time tracking.
Yes. Another time tracking application. Rejoice, for all your time tracking needs will finally be satisfied.
The mentality and core concept. In most time tracking applications you have to specify an activity or project when you start tracking your time on it. In other words: you need to already know what you'll be doing before you're doing it.
In dlog, you don't need to specify an activity or project until you're ready to stop the entry. The general flow, therefore, looks like this:
dlog start # starts a new incomplete time entry
dlog fill shower # after you're done showering
dlog fill breakfast:toast # "breakfast" is the activity, "toast" is the project
dlog fill workout -m "Good workout today."
dlog fill checking emails
dlog fill coding:dlog +rust +tests # "rust" and "tests" are tags
# Oops! I took a break but forgot to track it!
dlog fill reddit --to "10 minutes ago"
dlog fill ...
This kind of workflow personally suits me better, but if you prefer to specify what you're doing when you start doing it rather than when you stop, I recommend watson.
- "inverted" time tracking (specify an activity when you stop tracking, not when you start)
- print a tabular history of all your past time entries (
dlog log
) - print a (optionally filtered) summary showing you a summarized report of where you
spend your time in a given time frame (
dlog summary
) - blazingly fast performance even when dealing with tens of thousands of time entries
Feel free to open an issue if you'd like to request a new feature or improvement!
If you have Rust installed, the easiest and recommended way to install dlog is via:
cargo install dlog
If you don't have Rust installed, you can find Debian binaries for the latest version under the Releases section. For any other platform, you'll have to install Rust and use the above command to install dlog at the moment.
Note: If you have some experience with cross-compilation bundles for Rust binaries, I'd appreciate any help you can render to set up installable binaries on other systems as well.
Entries are stored in CSV (specify a custom directory by setting the environment variable DLOG_PATH
)
and share the following structure:
timestamp_start, timestamp_end, activity, project, tags, message
The activity is the base component of each time entry, making it the only mandatory argument when using
dlog fill
. If you generally think in terms of projects and not activities, it may help you to come up
with the most general activity you can think of for a set of projects. For instance, "work" as an activity
for all work-related projects. This allows you to efficiently group a set of entries, which is useful for
filtering in dlog summary
.