A simple yet powerful timer and time tracker from the command line.

Overview

Focus Phase

Focus Phase (FP) is a simple yet powerful timer and time tracker. It is a command-line application written in Python and can be installed with one command.

FP has two timers: one for when you know for how long you are going to work (like a Pomodoro timer), and the other for when you don't know in advance for how long you are going to work. FP keeps a log of all your work in a csv file on your device. FP allows you to see statistics and graphs about your previous work also.

πŸ“„ Below is an explanation on how to install and use FP.

How to install?

Install easily with pip:

pip3 install fcs

This will install FP dependencies if not already installed.

Topics and tags

FP uses "topics". A topic is a thing that you spend time working on. For example, when you want to work on a project called "abc" for 25 minutes, then you add the topic "abc" to FP (see below) then start the timer with the command

fcs abc 25

If you want to work on "xyz", then add it to FP topics then run

fcs xyz 25

That's it. To give you more flexibility, FP implements tags. So, for example, if you want to work on "abc" and "abc" is a web-development project, then you can run

fcs abc 25 [web-dev]

The previous examples are just one way to use FP. You can combine topics and tags and adapt them to your needs.

How to add topics?

Before you work on a topic for the first time, you must add it to FP topics easily with the command

fcs -a

After that, you can start timers to work on that topic. To make things easier, when you add a topic, FP will ask you for its abbreviation to make typing it faster later.

For example, if you have a topic named "x website front-end development", then instead of typing all of this every time you want to work, you might just type "xfd".

Usage

There are three usage modes: two are timers and one is for configuration and statistics.

Items enclosed between square brackets are optional.

Undetermined timer

fcs TOPIC_ABBREVIATION [-c][[TAG1,TAG2,...]]

The first mode of the timer: undetermined timer. Enter a topic abbreviation to start a timer that will stop when you press the keyboard interrupt keys (Ctrl + C). If -c is present in the command, pressing the keyboard interrupt keys will make the user choose whether he wants to stop or pause the timer.

Tags are optional. If they exist, they should be put inside square brackets ([ and ]), they must be separated by only a comma (,), and they must not contain any spaces. A valid example is [TAG1,TAG2]. An invalid example is [TAG1, TAG2] (notice the space).

Predetermined timer

fcs TOPIC_ABBREVIATION TIME [[TAG1,TAG2,...]]

The second mode of the timer: predetermined timer. To start a timer, enter a topic abbreviation and the number of minutes you want to work on that topic. You can stop or pause this timer by pressing the keyboard interrupt keys (Ctrl + C).

Statistics, visualization, and configuration

fcs FUNCTION [PARAMETERS] 

where FUNCTION can be one of the following:

Function Description
--add-topics, -a to add new topics
--deletetopics, -d to delete topics (will not delete entries in the log related to the deleted topic)
--showtopics, -st to show all topics with their abbreviations
--deletealltopics, -da to delete all topics
--showtags, -sta to show all tags used in all entries in the log
--clearlog, -cl to delete all entries from the log file
--showlog, -sl to display a formatted table of the log entries
--showlog:N, -sl:N to display a table of a selected info about the last N log entries
--backup, -b to create a backup of the log file and the topic file
--today [TOPIC], -t [TOPIC] to display the total time spent on TOPIC today. If TOPIC is not provided, total time spent today on all topics is calculated
--calc, -cal to calculate time spent on all topics, on a specified topic, or on a specified tag
--addentry, -ae to manually add an entry (not recommended for now)
--deletelast, -dl to delete the last entry in the log
--visual, -v to see a visualization of the work done on a topic, the work done on all topics, or the work done on a certain tag over the last 30 days

Examples

1. Predetermined timer

If you want to work for 30 minutes on a building a web application named "xy zw" using Vue.js framework, then you should add this topic first (if this is your first time working on it):

fcs -a

The program will ask you for a topic abbreviation and a topic full name. Suppose that you entered "xyzw" for the abbreviation and "xy wz web application" for the full name. Then you start the timer with:

fcs xyzw 30 [web-dev,vue.js]

This will start a predetermined timer for 30 minutes, and it will save the session entry with the tags "web-dev" and "vue.js".

2. Undetermined timer

If you want to work on a building a web application named "xy zw" using Vue.js framework, then you should add this topic first (if this is your first time working on it):

fcs -a

The program will ask you for a topic abbreviation and a topic full name. Suppose that you entered "xyzw" for the abbreviation and "xy wz web application" for the full name. Then you start the timer with:

fcs xyzw [web-dev,vue.js]

This will start an undetermined timer, and it will save the session entry with the tags "web-dev" and "vue.js". To stop the timer, press Ctrl + C on the keyboard.

3. Statistics

To see for how many minutes you have worked today on the topic "xyzw" that we've added above:

fcs -t xyzw

It will display a message like:

Today (23-December-2018), 50 minutes have been spent on xy wz web application

To see the time spent on all topics in all days:

fcs -cal

It will show you options to choose from; one of them is to calculate the time spent on all topics in all days.

To see a visualization of your work on "xyzw" topic over the last 30 days:

fcs -v

It will also display options to choose from and one of them achieves what we want in this example.

There are many things you can do. See the usage section for more.

Focus Phase components

FP has two main files:

  • A log file that keeps information about your previous sessions (like time elapsed, date of the session, etc)
  • A file that contains the names and abbreviations of the topics you work on

Success Music

When you use the predetermined timer mode, and when you work for the whole specified period, a short music will be played. This feature is available on Mac computers only for now.

How to get your data?

Run the backup command fcs -b and a message will tell you the path of the folder that contains the backup files. Go and get them from there.

Notes

  • Date of a session is calculated at the start of the session.
  • Add -q to the command to prevent playing sounds (quiet mode)
Owner
Ammar Alyousfi
Data Science
Ammar Alyousfi
Wordle breaker: A CLI tool to help you solve Wordle

Wordle Breaker A CLI tool to help you solve Wordle I decided to code a solution

Alex 4 Apr 27, 2022
A simple CLI tool for tracking Pikud Ha'oref alarms.

Pikud Ha'oref Alarm Tracking A simple CLI tool for tracking Pikud Ha'oref alarms. Polls the unofficial API endpoint every second for incoming alarms.

Yuval Adam 24 Oct 10, 2022
A simple python application for running a CI pipeline locally

A simple python application for running a CI pipeline locally This app currently supports GitLab CI scripts

Tom Stowe 0 Jan 11, 2022
Arithmos cipher on CLI based

Arithmos Cipher CLI This is the CLI version of Arithmos Cipher. Install pip inst

LyQuid :3 1 Jan 16, 2022
MasterDuel Image Recognition Translation Command Line Tool

MasterDuelTranslate(Use Ygo Card DataBase,belong win32 window shot & image match)

PatchouliTC 77 Dec 01, 2022
Kattis shell for getting examples, testing and submitting.

Kattis shell for getting examples, testing and submitting.

Simon Green Kristensen 15 Sep 30, 2022
command line interface to manage VALORANT skins

A PROPER RELEASE IS COMING SOON, IF YOU KNOW HOW TO USE PYTHON YOU CAN USE IT NOW! valorant skin manager command line interface simple command line in

colinh 131 Dec 25, 2022
Sebuah tools agar tydak menjadi sider :v vrohh

Sebuah tools agar tydak menjadi sider :v vrohh

xN7-SEVEN 1 Mar 27, 2022
A simple cli tool to commit Conventional Commits

convmoji A simple cli tool to commit Conventional Commits. Requirements Install pip install convmoji convmoji --help Examples A conventianal commit co

3 Jul 04, 2022
The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks.

Prisma Cloud CLI The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks. Support This project has been developed by P

Palo Alto Networks 13 Oct 14, 2022
OneDriveExplorer - A command line and GUI based application for reconstructing the folder structure of OneDrive from the UserCid.dat file

OneDriveExplorer - A command line and GUI based application for reconstructing the folder structure of OneDrive from the UserCid.dat file

Brian Maloney 100 Dec 13, 2022
Squirrel - A cli program to track writing progress

Squirrel Very much a WIP project squirrel is a command line program that tracks you writing progress and gives you useful information and cute and pic

3 Mar 23, 2022
Aurornis - The Command Line Program Test Helper

Aurornis - The Command Line Program Test Helper Aurornis is a small, yet powerful library designed to help testing command line programs. The name is

JΓ©rΓ΄me Deuchnord 1 Mar 08, 2022
alternative cli util for update-alternatives

altb altb is a cli utility influenced by update-alternatives of ubuntu. Linked paths are added to $HOME/.local/bin according to XDG Base Directory Spe

Elran Shefer 8 Dec 07, 2022
Interactive Redis: A Terminal Client for Redis with AutoCompletion and Syntax Highlighting.

Interactive Redis: A Cli for Redis with AutoCompletion and Syntax Highlighting. IRedis is a terminal client for redis with auto-completion and syntax

2.2k Dec 29, 2022
Freaky fast fuzzy Denite/CtrlP matcher for vim/neovim

Freaky fast fuzzy Denite/CtrlP matcher for vim/neovim This is a matcher plugin for denite.nvim and CtrlP.

Raghu 113 Sep 29, 2022
Chat In Terminal - Chat-App in python

Chat In Terminal Hello all. πŸ˜‰ Sockets and servers are vey important for connection and importantly chatting with others. πŸ˜‚ 😁 I have thought of maki

Shreejan Dolai 5 Nov 17, 2022
A small system that allow you to manage hosts stored in your .ssh/config file

A small system that allow you to manage hosts stored in your .ssh/config using simple commands.

Simone Ostini 1 Jan 24, 2022
A simple web-based SSH client.

Kommander A simple web-based SSH client. It supports: entering SSH login details (including private key and custom ports) and connecting user authenti

KingWaffleIII 2 Jan 01, 2022