888       888          888           88888888888 d8b                        
888   o   888          888               888     Y8P                        
888  d8b  888          888               888                                
888 d888b 888  8888b.  888  888  8888b.  888     888 88888b.d88b.   .d88b.  
888d88888b888     "88b 888 .88P     "88b 888     888 888 "888 "88b d8P  Y8b 
88888P Y88888 .d888888 888888K  .d888888 888     888 888  888  888 88888888 
8888P   Y8888 888  888 888 "88b 888  888 888     888 888  888  888 Y8b.     
888P     Y888 "Y888888 888  888 "Y888888 888     888 888  888  888  "Y8888  




This software is game-changing for programmers. It allows you to share your commitment to specific technologies or simply track your own time across all development tasks.


There are three plugins you need to capture over 90% of development time, even when offline:


  • Editor plugin
  • Broswer extension
  • Shell configuration

Editor


Most of your time will likely be spent in some form of text editor or IDE. I use Neovim, a modern highly configurable clone of the classic vim.


All I had to do for Neovim was add this one line to my init.lua file. The extension is vim-wakatime. Every IDE i've heard of is supported.


1require('packer').startup(function(use)
2  -- Package manager
3  use 'wbthomason/packer.nvim'
4  -- wakatime time manager
5  use 'wakatime/vim-wakatime'

Broswer


This was important for me since this project has required a lot of time fiddling around in localhost and AWS. Not capturing that would be disservice to yourself. There are officially supported extensions for Chrome and Firefox. This is the one I personally use.


By default, all web traffic will be logged as "Other". This provides no insight into your development browsing usage, so make sure to edit the extension preferences by whitelisting sites and adding custom rules.




Shell


The typical instalation guide for zsh did not work for me. It is a skill issue, as I have never used shell plugins before and it wasn't working correctly for me. My workaround involved adding a "precmd" to my shell config.


Simply add these lines to your ".zshrc" file:


lua

1custom_pre_cmd(){ 2 pwd > "/home/david/.config/whereami"; 3 ( wakatime --plugin zsh-precmd --entity-type app --project Terminal --entity $TERM &) &> /dev/null 4} 5precmd_functions+=(custom_pre_cmd)

For Bash, you can append just the Wakatime command to your PROMPT_COMMAND environment variable. I also a repository to add precmd to Bash. This is just an option if your plugins are failing.


On another note, I save the current directory of the last command, so I can open new shells where I'm currently working. This is a very nice quality of life change.



Conclusion


There are over 400,000 accounts on Wakatime, myself and many others find it useful, so may you.