WakaTime
Configure ~/.waktime.cfg
cat << "EOF" ~/.wakatime.cfg
[settings]
debug = false
api_key=
api_url = https://api.wakatime.com/api/v1
hide_file_names = false
hide_project_names = false
hide_branch_names =
hide_project_folder = false
exclude =
^COMMIT_EDITMSG$
^TAG_EDITMSG$
^/var/(?!www/).*
^/etc/
include =
.*
include_only_with_project_file = false
exclude_unknown_project = false
status_bar_enabled = true
status_bar_coding_activity = true
status_bar_hide_categories = false
offline = true
no_ssl_verify = false
ssl_certs_file =
timeout = 30
hostname = elitedesk
log_file =
EOF
Create bash-wakatime.sh
#!/bin/bash
pre_prompt_command() {
version="1.0.0"
entity=$(echo $(fc -ln -0) | cut -d ' ' -f1)
[ -z "$entity" ] && return
language="Bash"
project="Terminal"
category="coding"
case $entity in
ncmpcpp)
project="Music Player Daemon"
;;
vim | nano)
category="coding"
filename=$(echo $(fc -ln -0) | cut -d ' ' -f2)
file_extension="${filename##*.}"
filename="private.$file_extension"
case "$file_extension" in
"c") language="C" ;;
"cpp") language="C++" ;;
"py") language="Python" ;;
"js") language="JavaScript" ;;
"html") language="HTML" ;;
"css") language="CSS" ;;
"pl") language="Perl" ;;
"md") language="Markdown" ;;
"awk") language="Awk" ;;
"php") language="PHP" ;;
"conf") language="Config" ;;
"sh") language="Bash" ;;
*) language="Bash" ;;
esac
;;
cmus)
project="cmus"
category="coding"
;;
telnet)
project="Telnet"
category="coding"
;;
weechat)
project="Weechat"
category="meeting"
;;
ssh)
project="SSH"
category="coding"
;;
adb)
project="Android Debug Bridge"
category="coding"
;;
vim)
project="Terminal"
category="coding"
;;
nano)
project="Nano"
category="coding"
;;
*)
$(git rev-parse --is-inside-work-tree 2>/dev/null) && project="$(basename $(git rev-parse --show-toplevel))" || project="Terminal"
;;
esac
(~/.wakatime/wakatime-cli --write \
--plugin "bash-wakatime/$version" \
--entity-type app \
--project "$project" \
--entity "$entity" \
--category "$category" \
--language "$language" \
--alternate-project "Terminal" \
--alternate-language "Bash" \
--alternate-branch "main" \
--category "Coding" \
--exclude-unknown-project \
--hide-project-folder \
--internal-config ~/.wakatime/wakatime-internal.cfg \
--config "~/.wakatime.cfg" \
2>&1 >/dev/null &)
# (~/.wakatime/wakatime-cli --write \
# --plugin "bash-wakatime/$version" \
# --entity-type app \
# --project "$project" \
# --entity "$entity" \
# --category "$category" \
# --language "$language" \
# --alternate-project "Terminal" \
# --alternate-language "Bash" \
# --alternate-branch "main" \
# --category "Coding" \
# --exclude-unknown-project \
# --hide-project-folder \
# --exclude-unknown-project \
# --config "~/.wakapi.cfg" \
# 2>&1 >/dev/null &)
}
PROMPT_COMMAND="pre_prompt_command; $PROMPT_COMMAND"