Skip to content
/ POMO Public

Uma forma simples e efetiva de aplicar a técnica pomodoro

License

Notifications You must be signed in to change notification settings

luk3rr/POMO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

______/\\\\\\\\\\\\\__________/\\\\\________/\\\\____________/\\\\________/\\\\\______
 _____\/\\\/////////\\\______/\\\///\\\_____\/\\\\\\________/\\\\\\______/\\\///\\\____
  _____\/\\\_______\/\\\____/\\\/__\///\\\___\/\\\//\\\____/\\\//\\\____/\\\/__\///\\\__
   _____\/\\\\\\\\\\\\\/____/\\\______\//\\\__\/\\\\///\\\/\\\/_\/\\\___/\\\______\//\\\_
    _____\/\\\/////////_____\/\\\_______\/\\\__\/\\\__\///\\\/___\/\\\__\/\\\_______\/\\\_
     _____\/\\\______________\//\\\______/\\\___\/\\\____\///_____\/\\\__\//\\\______/\\\__
      _____\/\\\_______________\///\\\__/\\\_____\/\\\_____________\/\\\___\///\\\__/\\\____
       _____\/\\\_________________\///\\\\\/______\/\\\_____________\/\\\_____\///\\\\\/_____
        _____\///____________________\/////________\///______________\///________\/////_______

POMO

O POMO é um temporizador desenvolvido com o objetivo de oferecer uma maneira simples de aplicar a técnica Pomodoro, uma estratégia de gerenciamento de tempo popular. Além disso, o projeto possibilita a integração do temporizador com outros programas, transmitindo dados por meio de sockets. O Pomo também inclui um módulo específico para análise de dados, proporcionando uma visão mais aprofundada do uso do temporizador.

Sumário

Uso

GUI - Graphical User Interface

Execução

POMO fornece uma interface gráfica para usuários noobs. Para utilizá-la, você pode executar o comando

$ python3 -m pomo-gui
# OR
$ python3 -m pomo-gui [parameters]

Os parâmetros disponíveis são:

ParâmetroDescrição
-h, --helpShow help message and exit
-dm, --darkmodeRun window in dark mode
-w, --worktime <time in seconds>Set the worktime
-b, --breaktime <time in seconds>Set the breaktime
-db, --database <path>Set the path to database
-t, --tag <tag>Set the tag to be used to identify the timer

Ao inicializar o pomo-gui, um processo do módulo pomo será executado em background até que o pomo-gui seja finalizado.

O módulo pomo-gui aceita também o parâmetro -c, --client, para o caso de já haver um processo do módulo pomo executando em background. Esse parâmetro impedirá que outro processo seja executado.

Interação com a tela

Em determinadas partes da interface, a interação pode ser feita através do mouse:

  • Click com o scroll do mouse no temporizador: Ativa ou desativa o bloqueio de incremento e decremento do timer
  • Scroll do mouse em cima do temporizador: Incrementa ou decrementa o timer, de acordo com a direção do acionamento do scroll

Além disso, há os botões:

  • data/img/readme_pause_light.png data/img/readme_play_light.png : Pause/Resume
  • data/img/readme_skip_light.png : skip para finalizar o breaktime ou worktime atual e pular para o próximo modo
  • data/img/readme_sun.png data/img/readme_moon.png : alternar entre o modo claro e o modo escuro da janela

As cores do modo escuro utilizam a paleta do tema Dracula.

Pomo-GUI em modo claroPomo-GUI em modo escuro
data/img/pomo-gui_light_mode.pngdata/img/pomo-gui_dark_mode.png

Na imagem acima, a palavra other abaixo do temporizado é a tag definida para o timer atual. Essa tag pode ser atualizada com o serguinte comando:

$ python3 -m pomo tag <new_tag>

Por fim, o ciclo em volta do relógio é preenchido à medida que o tempo configurado passa.

Atalho na área de trabalho

Em sistemas GNU/Linux, você pode criar um atalho para o pomo-gui, com o intuito de não precisar abrir o terminal para inicializar a aplicação. Para isso, crie um arquivo chamado pomo.desktop e grave o código abaixo nele (Não esqueça de corrigir o caminho de Icon)

[Desktop Entry]
Name=Pomo
Exec=python3 -m pomo-gui
Icon=/caminho/para/POMO/data/img/tomato.png
Type=Application
Categories=Productivity;

Mova o arquivo pomo.desktop para o seguinte diretório ~/.local/share/applications/.

Por fim, abra o terminal e adicione o projeto ao path do seu SO (isso é necessário para que o comando python3 -m pomo-gui seja reconhecido sem a necessidade de determinar o caminho completo).

$ export PYTHONPATH=$PYTHONPATH:/caminho/para/POMO

Após isso, o seu SO já deve ser capaz de localizar a aplicação através do launcher de aplicativos.

CLI - Command Line Interface

Instância em background

Como será exposto posteriormente, a arquitetura de POMO opera com mestres e escravo. Escravo é o processo que executará em background aguardando o envio de comandos dos mestres. Dessa forma, o primeiro passo é iniciar uma instância em background do módulo pomo.

Crie uma instância de execução do módulo Pomo com o seguinte comando:

$ python3 -m pomo

A instância que executa em background também pode ser inicializa definindo alguns parâmetros. Execute python3 -m pomo --help para visualizar as opções disponíveis. Esse parâmetros também são configuráveis no arquivo pomo/config.py.

OBS.: A duração de worktime e breaktime são dadas em segundos. Por exemplo:

$ python3 -m pomo --worktime 2700 --breaktime 300 --database ~/Documents/pomo.db

OBS.: Talvez seja interessante adicionar o projeto ao path do seu SO. Isso permitirá que você execute os comandos a partir de qualquer diretório. Para isso, você pode modificar o comando abaixo de forma que o caminho corresponda ao caminho onde esse projeto foi clonado:

$ export PYTHONPATH=$PYTHONPATH:/caminho/para/POMO

Enviando comandos para a instância em background

Pause, resume e skip

Uma vez que existe uma instância módulo pomo rodando em background, o gerenciamento do temporizador pode ser realizado, iniciando worktimes ou breaktimes, ou pausando o relógio:

$ python3 -m pomo toggle # Pause ou ative o relógio
$ python3 -m pomo end # Finalize o worktime ou breaktime atual

O temporizador opera em ciclos, ou seja, ao finalizar um worktime, inicializamos um breaktime, e ao finalizar um breaktime, um worktime é iniciado.

Incremento e decremento do relógio

O tempo do relógio pode ser incrementado ou decrementado. Por exemplo:

$ python3 -m pomo time +60 # Incrementa o relógio em 1min
$ python3 -m pomo time -120 # Decrementa o relógio em 2min

O incremento e decremento do relógio pode ser ativado ou desativo utilizando o comando abaixo:

$ python3 -m pomo lock # Alterna o bloqueio do incremento e decremento do relógio

Arquitetura

Mestre e escravo

A arquitetura do POMO foi baseada em uma estratégia de mestre e escravo. O escravo é o processo do módulo pomo que executa em background. Esse processo fica encarregado de receber e executar os comandos enviados pelo mestre. O mestre, por outro lado, são execuções do módulo pomo acompanhadas de parâmetros que definem quais comandos serão executados. Ao contrário dos escravos, os mestres são efêmeros, isto é, não executam em background por muito tempo, e o tempo de execução de seus processos é somente o necessário para estabelecer comunicação com o escravo e transmitir os comandos.

As comunicações entre mestre e escravo são feitas por meio de sockets UNIX. A figura abaixo ilustra a arquitetura. As setas representam os fluxos de comunicação entre os módulos.

data/img/architecture.png

O banco de dados é um arquivo .db, criado (caso não exista) em um diretório default ou onde o usuário determinar.

Módulos

pomo

Pomo é o módulo principal do programa. As principais classes desse módulo são:

  1. DBManager: Acessa e manipula o banco de dados
  2. LogManager: Gerencia as mensagens de log. O arquivo de log pode ser localizado em /tmp/pomo.log
  3. Status: Gerencia cada worktime e breaktime
  4. Timer: Relógio que contabiliza o tempo a cada instante
  5. Pomodoro: Executa todos os comandos enviados pelo usuário e fornece os dados do programa através de sockets.

polybar-pomo

Pomo pode ser integrado com o Polybar. Um exemplo de configuração:

[module/pomodoro]
type = custom/script
exec = python3 -m polybar-pomo

tail = true
label = %output%
format-prefix-foreground = ${colors.foreground-alt}
format-underline = ${colors.underline}

click-left = python3 -m pomo toggle
click-right = python3 -m pomo end
click-middle = python3 -m pomo lock
scroll-up = python3 -m pomo time +60
scroll-down = python3 -m pomo time -60

pomo-gui

Fornece uma interface gráfica para gerenciar o módulo Pomo.

Analytics

A principal função desse módulo e fazer uma analise dos dados disponíveis no banco de dados, de forma que o usuário possa avaliar a sua performance com relação ao uso da técnica Pomodoro.

Para obter os gráficos de performance, analytics pode ser executado com as datas de início de fim da análise no formato YYYY-MM-DD. Por exemplo, o comando abaixo realiza uma avaliação dos dados coletados no intervalo 2024-03-10 até 2024-03-20

$ python3 -m analytics 2024-03-10 2024-03-20

Há também a opção de indicar o número de dias no passado. Por exemplo, o comando abaixo avalia os dados coletados nos últimos 7 dias.

$ python3 -m analytics 7

As análises incluem a quantidade de horas em que a técnica Pomodoro foi empregada em cada dia do intervalo dado e também a quantidade de horas empregada em cada tipo de tag.

About

Uma forma simples e efetiva de aplicar a técnica pomodoro

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages