<!--
SPDX-FileCopyrightText: 2023 Justus Perlwitz
SPDX-FileCopyrightText: 2024 Justus Perlwitz
SPDX-FileCopyrightText: 2021-2023 Bhatihya Perera
SPDX-License-Identifier: MIT
-->
Links: [PyPI](https://pypi.org/project/pomoglorbo/)
[Codeberg](https://codeberg.org/justusw/Pomoglorbo)
# Pomoglorbo
A Pomodoro Technique timer for your terminal! Runs over SSH! A bell rings
when your Pomodoro is over!
_muuuuuust haaaaaaaveeeeee_

But what are Pomodoros? And why would I run this in my terminal? Read my [blog
post about
Pomoglorbo](https://www.justus.pw/posts/2024-06-18-try-pomoglorbo.html) for
more info.
## Installation
__Recommended__: Install using
[pipx](https://pipx.pypa.io/stable/#install-pipx):
```bash
pipx install pomoglorbo
```
Then run using
```bash
pomoglorbo
```
You can also install using `pip`, if you don't mind clobbering packages:
```bash
pip3 install --user pomoglorbo
```
### With Nix
For [NixOS](https://nixos.org/) or [Home
Manager](https://nix-community.github.io/home-manager/) users, you can also use
and install Pomoglorbo as a [Nix
Flake](https://hydra.nixos.org/build/263397466/download/1/manual/command-ref/new-cli/nix3-flake.html#description).
The easiest way is to use `nix run` with this Codeberg repository:
```bash
nix run git+https://codeberg.org/justusw/Pomoglorbo.git
```
If you want to pass additional arguments, append a `--` argument separator
first, and you are good to go:
```bash
nix run git+https://codeberg.org/justusw/Pomoglorbo.git -- --audio-check
```
It's almost a bit too magical. Reproducible builds? Builds on
many different systems? _whooooosh_ Nix is the cave allegory of build systems.
This is how you can add it to your Home Manager configuration, if you use [Nix
Flakes with Home
Manager](https://nix-community.github.io/home-manager/index.xhtml#ch-usage):
```nix
{
description = "My awesome nix home manager configuration";
inputs = {
# Make sure that you use the latest supported version of the NixOS packages
# here
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
pomoglorbo = {
url = "git+https://codeberg.org/justusw/Pomoglorbo.git";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, pomoglorbo }: {
# do what you must here
};
}
```
How to evaluate package size:
```bash
nix run github:utdemir/nix-tree -- --derivation .#pomoglorbo
# Or, if you are inside a Nix shell for this repository's Nix flake, run
nix-tree --derivation .#pomoglorbo
```
Do you want to know more about Nix Flakes? I recommend these posts by Xe Iaso:
- [Nix Flakes: an
Introduction](https://xeiaso.net/blog/nix-flakes-1-2022-02-21/)
- [Building Go programs with Nix
Flakes](https://xeiaso.net/blog/nix-flakes-go-programs/)
## Usage
See `pomoglorbo --help` for a complete overview of available options. At the
time of writing, these are all available flags:
<!--
uv run src/pomoglorbo/cli.py --help | sed -n -E -e 's/^ (.+)/\1/p'
-->
```
usage: pomoglorbo [-h] [--no-sound] [--audio-check] [-v] [--audio-file path] [--config-file path] [--work-state-cmd-suffix suffix [suffix ...]] [command]
Pomoglorbo: TUI Pomodoro Technique Timer
positional arguments:
command Send command to running pomoglorbo instance via IPC
options:
-h, --help show this help message and exit
--no-sound Mute alarm
--audio-check Play alarm and exit
-v, --version Display version and exit
--audio-file path Custom audio file for alarm
--config-file path Use a different config file. Overrides POMOGLORBO_CONFIG_FILE environment variable. Default is "$XDG_CONFIG_HOME/pomoglorbo/config.ini".
--work-state-cmd-suffix suffix [suffix ...]
Append these arguments to external command invocation when starting the next Pomodoro
```
## Configure Pomoglorbo
A configuration file is automatically created in
`$XDG_CONFIG_HOME/pomoglorbo/config.ini` when you launch Pomoglorbo. You can
customize how Pomoglorbo behaves. The default configuration can be found in
`src/pomoglorbo/core/config.py` under `DEFAULT_CONFIG`.
### Use a different audio file
Set the following in your `config.ini` file:
```ini
[General]
audio_file = path/to/your/audio/file.ogg
```
or run Pomoglorbo with the following flag:
```bash
pomoglorbo --audio-file path/to/your/audio/file.ogg
```
If you want to just check whether the sound plays correctly, add the
`--audio-check` flag as well.
```bash
pomoglorbo --audio-file path/to/your/audio/file.ogg --audio-check
```
### Change Pomodoro intervals
The duration of work and break times can be set using the following variables
in your configuration file:
```ini
[Time]
# How many tomatoes need to elapse to get to a long break
tomatoes_per_set = 4
# Duration of a single pomodoro in minutes
work_minutes = 25
# Duration of a short break between Pomodoros in minutes
small_break_minutes = 5
# Duration of a long break after a set, in minutes
long_break_minutes = 15
```
### Change key bindings
The default key bindings are:
<!-- Please update me if needed -->
- Focus previous: shift-tab, up, left, h, or k
- Focus next: tab, right, down, l, or j
- Exit: q
- Start: s
- Pause: p
- Reset: r
- Reset all: a
- Help: ? or f1
While Pomoglorbo is running, you can always review the current keybindings
by opening the help menu. You can open the help menu by pressing `?` or F1
You can customize Pomoglorbo TUI key bindings using the following configuration
variables, illustrated with some examples values:
```ini
[KeyBindings]
# Focus on previous button in TUI
focus_previous = s-tab
# Focus on next button in TUI
focus_next = tab
# Quit Pomoglorbo
exit_clicked = q
# Start the next Pomodoro or break
start = s
# Pause the current Pomodoro or break
pause = p
# Reset elapsed time of current Pomodoro or break
reset = r
# Reset elapsed time, go back to 0 elapsed Pomodoros (see tomatoes_per_set)
reset_all = a
# Show current key bindings
help = ?
```
You can find more documentation on keybindings on `prompt_toolkit`s documentation
site
[here](https://python-prompt-toolkit.readthedocs.io/en/master/pages/advanced_topics/key_bindings.html#list-of-special-keys).
### Run a command when something happens (Triggers)
You can configure Pomoglorbo to execute a command for you automatically when
one of the following things happens:
- A new Pomodoro is started
- A Pomodoro is paused
- A Pomodoro is resumed
- A long break is started
- A short break is started
- A break is over
- Pomoglorbo exits
The commands can be given as string array-like string in the configuration file
section `Trigger`. A good use case for this is automatically starting time
tracking in time tracking software like
[Timewarrior](https://timewarrior.net/). Here are some ideas on what you can
put in each command.
```ini
[Trigger]
work_state_cmd = ["curl", "https://example.com"]
work_paused_state_cmd = ["timew", "stop"]
work_resumed_state_cmd = ["timew", "start"]
long_break_state_cmd = ["i3lock"]
small_break_state_cmd = ["timew", "start", "break"]
break_over_cmd = ["timew", "stop"]
exit_cmd = ["espeak", "bye"]
```
*Note from Justus*: But that's not all! Here's something I do a lot. When I
start Pomoglorbo, I want it to start Timewarrior with a specific tag. The work
state command is `timew start`, which would start time tracking without any
tags. I can then add `--work-state-cmd-suffix` when calling Pomoglorbo like so:
```bash
pomoglorbo --work-state-cmd-suffix development pomoglorbo
```
Pomoglorbo will call `timew` for me when the next Pomodoro starts like so:
```bash
timew start development pomoglorbo
```
This could be extended to the other commands as well, if required. Patches are
very welcome here.
## Development
To start developing Pomoglorbo this, clone this repository from Codeberg:
```bash
git clone https://codeberg.org/justusw/Pomoglorbo.git
```
Use [uv](https://docs.astral.sh/uv/getting-started/installation/) to install all
dependencies:
```bash
# This will install packages used for testing as well
uv sync
```
Run Pomoglorbo inside the uv virtual environment using the following
command:
```bash
uv run src/pomoglorbo/cli.py
```
You can additionally specify a configuration file to be used like so:
```bash
uv run src/pomoglorbo/cli.py --config-file test/config.ini
```
### Testing
Run all tests and formatters using
```bash
uv run bin/test.sh
```
Format code using
```bash
uv run bin/format.sh
```
### Translations
Provided you installed all dependencies with uv,
you can translate strings like so:
__Mark a string for translation__: If you want to mark a string for
translation, you have to mark it using
[gettext](https://docs.python.org/3/library/gettext.html). For example, if you
want to print the string "Hello, World!" and automatically translate it, write
the following:
```python
# Assuming this file is called source_file.py
from pomoglorbo.cli.util import gettext_lazy as _
print(_("Hello, World!))
```
We use our own `gettext_lazy` here (similar to Django), to make sure that
strings are not translated at module import time.
__Extract strings__: Run
```bash
bin/pybabel-update.sh
```
This will populate all message catalogs for the languages in
`src/pomoglorbo/messages/`. You will see a new string added to each `.po`
file and the `.pot` file. Edit the new message and translate it. Here, we
translate it into German.
```po
#: source_file.py
msgid "Hello, World!"
msgstr "Hallo, Welt!"
```
__Compile message catalogs__: Now, you have to compile the translations into MO
files.
```bash
bin/pybabel-compile.sh
```
And you are done.
The translation uses GNU Gettext, the Python `gettext` module and
[Babel](https://babel.pocoo.org/en/latest/index.html). Refer to Babel's
[Command-Line Interface help](https://babel.pocoo.org/en/latest/cmdline.html)
to learn more about how the `bin/pybabel-*.sh` commands work.
## Sending commands to Pomoglorbo
If you have a running Pomoglorbo instance with the socket server enabled, you
can send commands directly using:
```bash
pomoglorbo start # Start next Pomodoro
pomoglorbo pause # Pause current timer
pomoglorbo reset # Reset current timer
pomoglorbo reset_all # Reset Pomoglorbo start
```
## Experimental socket server
Pomoglorbo includes an experimental Unix domain socket server that lets you
control Pomoglorbo from other programs.
### How to enable the socket server
Enable the socket server by adding the following to your Pomoglorbo
configuration:
```ini
[Ipc]
socket_server = True
```
When you've enabled the socket server, Pomoglorbo creates a Unix domain socket
at `$XDG_STATE_HOME/pomoglorbo/socket`. In most cases, this should be
`~/.local/state/pomoglorbo/socket`.
### Commands that you can use
The socket server accepts the following text commands:
- `start` - Start the next Pomodoro
- `pause` - Pause the current timer
- `reset` - Reset the current timer
- `reset_all` - Reset all progress
Each command returns a response:
- `OK: <command>` - This lets you to know that Pomoglorbo accepted your command
- `ERROR: Unknown command '<command>'` - Pomoglorbo could not process your
command
### How to use the socket server
You can interact with the socket using the `socat` command:
```bash
echo "start" | socat - UNIX-CONNECT:"$XDG_STATE_HOME/pomoglorbo/socket"
```
You can also send these commands by running `pomoglorbo [COMMAND]`, where
`[COMMAND]` is one of the accepted text commands `start`, `pause`, `reset`, or
`reset_all`.
For more information on how to use the `pomoglorbo [COMMAND]` feature, see the
**Sending commands to Pomoglorbo** section
## Contributing
Would you like to make a contribution? Your ideas are very welcome as this is
an open source project welcoming all contributors! Please read the
[CONTRIBUTING.md](CONTRIBUTING.md) file for more info. Please also refer to the
[Code of Conduct](CODE_OF_CONDUCT.md).
## Credits
Pomoglorbo is a fork of the original
[pydoro](https://github.com/JaDogg/pydoro).
- [pydoro](https://github.com/JaDogg/pydoro) - by Bhathiya Perera
- Pomodoro - Invented by Francesco Cirillo
- prompt-toolkit - Awesome TUI library
- b15.wav - [Dana](https://freesound.org/s/377639/) robinson designs,
CC0 from freesound
See the `CONTRIBUTORS` file in the root directory for a list of contributors to
the original pydoro project.
## Copyright
See the LICENSES folder for more information.
Raw data
{
"_id": null,
"home_page": null,
"name": "pomoglorbo",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.11",
"maintainer_email": "Justus Perlwitz <justus@jwpconsulting.net>",
"keywords": "pomodoro, pomoglorbo, pydoro, timer, tomato, work",
"author": null,
"author_email": "Bhathiya Perera <jadogg.coder@gmail.com>, Justus Perlwitz <justus@jwpconsulting.net>",
"download_url": "https://files.pythonhosted.org/packages/2f/41/f485bd7b4422a4a5a01df18fdfa86dd761eab87ca335f4e124e291652a0e/pomoglorbo-2025.8.21.tar.gz",
"platform": null,
"description": "<!--\nSPDX-FileCopyrightText: 2023 Justus Perlwitz\nSPDX-FileCopyrightText: 2024 Justus Perlwitz\nSPDX-FileCopyrightText: 2021-2023 Bhatihya Perera\n\nSPDX-License-Identifier: MIT\n-->\n\nLinks: [PyPI](https://pypi.org/project/pomoglorbo/)\n[Codeberg](https://codeberg.org/justusw/Pomoglorbo)\n\n# Pomoglorbo\n\nA Pomodoro Technique timer for your terminal! Runs over SSH! A bell rings\nwhen your Pomodoro is over!\n\n_muuuuuust haaaaaaaveeeeee_\n\n\n\nBut what are Pomodoros? And why would I run this in my terminal? Read my [blog\npost about\nPomoglorbo](https://www.justus.pw/posts/2024-06-18-try-pomoglorbo.html) for\nmore info.\n\n## Installation\n\n__Recommended__: Install using\n[pipx](https://pipx.pypa.io/stable/#install-pipx):\n\n```bash\npipx install pomoglorbo\n```\n\nThen run using\n\n```bash\npomoglorbo\n```\n\nYou can also install using `pip`, if you don't mind clobbering packages:\n\n```bash\npip3 install --user pomoglorbo\n```\n\n### With Nix\n\nFor [NixOS](https://nixos.org/) or [Home\nManager](https://nix-community.github.io/home-manager/) users, you can also use\nand install Pomoglorbo as a [Nix\nFlake](https://hydra.nixos.org/build/263397466/download/1/manual/command-ref/new-cli/nix3-flake.html#description).\n\nThe easiest way is to use `nix run` with this Codeberg repository:\n\n```bash\nnix run git+https://codeberg.org/justusw/Pomoglorbo.git\n```\n\nIf you want to pass additional arguments, append a `--` argument separator\nfirst, and you are good to go:\n\n```bash\nnix run git+https://codeberg.org/justusw/Pomoglorbo.git -- --audio-check\n```\n\nIt's almost a bit too magical. Reproducible builds? Builds on\nmany different systems? _whooooosh_ Nix is the cave allegory of build systems.\n\nThis is how you can add it to your Home Manager configuration, if you use [Nix\nFlakes with Home\nManager](https://nix-community.github.io/home-manager/index.xhtml#ch-usage):\n\n```nix\n{\n description = \"My awesome nix home manager configuration\";\n\n inputs = {\n # Make sure that you use the latest supported version of the NixOS packages\n # here\n nixpkgs.url = \"github:NixOS/nixpkgs/nixos-25.05\";\n pomoglorbo = {\n url = \"git+https://codeberg.org/justusw/Pomoglorbo.git\";\n inputs.nixpkgs.follows = \"nixpkgs\";\n };\n };\n\n outputs = { self, nixpkgs, pomoglorbo }: {\n # do what you must here\n };\n}\n```\n\nHow to evaluate package size:\n\n```bash\nnix run github:utdemir/nix-tree -- --derivation .#pomoglorbo\n# Or, if you are inside a Nix shell for this repository's Nix flake, run\nnix-tree --derivation .#pomoglorbo\n```\n\nDo you want to know more about Nix Flakes? I recommend these posts by Xe Iaso:\n\n- [Nix Flakes: an\nIntroduction](https://xeiaso.net/blog/nix-flakes-1-2022-02-21/)\n- [Building Go programs with Nix\nFlakes](https://xeiaso.net/blog/nix-flakes-go-programs/)\n\n## Usage\n\nSee `pomoglorbo --help` for a complete overview of available options. At the\ntime of writing, these are all available flags:\n\n<!--\nuv run src/pomoglorbo/cli.py --help | sed -n -E -e 's/^ (.+)/\\1/p'\n-->\n\n```\nusage: pomoglorbo [-h] [--no-sound] [--audio-check] [-v] [--audio-file path] [--config-file path] [--work-state-cmd-suffix suffix [suffix ...]] [command]\n\nPomoglorbo: TUI Pomodoro Technique Timer\n\npositional arguments:\n command Send command to running pomoglorbo instance via IPC\n\noptions:\n -h, --help show this help message and exit\n --no-sound Mute alarm\n --audio-check Play alarm and exit\n -v, --version Display version and exit\n --audio-file path Custom audio file for alarm\n --config-file path Use a different config file. Overrides POMOGLORBO_CONFIG_FILE environment variable. Default is \"$XDG_CONFIG_HOME/pomoglorbo/config.ini\".\n --work-state-cmd-suffix suffix [suffix ...]\n Append these arguments to external command invocation when starting the next Pomodoro\n```\n\n## Configure Pomoglorbo\n\nA configuration file is automatically created in\n`$XDG_CONFIG_HOME/pomoglorbo/config.ini` when you launch Pomoglorbo. You can\ncustomize how Pomoglorbo behaves. The default configuration can be found in\n`src/pomoglorbo/core/config.py` under `DEFAULT_CONFIG`.\n\n### Use a different audio file\n\nSet the following in your `config.ini` file:\n\n```ini\n[General]\naudio_file = path/to/your/audio/file.ogg\n```\n\nor run Pomoglorbo with the following flag:\n\n```bash\npomoglorbo --audio-file path/to/your/audio/file.ogg\n```\n\nIf you want to just check whether the sound plays correctly, add the\n`--audio-check` flag as well.\n\n```bash\npomoglorbo --audio-file path/to/your/audio/file.ogg --audio-check\n```\n\n### Change Pomodoro intervals\n\nThe duration of work and break times can be set using the following variables\nin your configuration file:\n\n```ini\n[Time]\n# How many tomatoes need to elapse to get to a long break\ntomatoes_per_set = 4\n# Duration of a single pomodoro in minutes\nwork_minutes = 25\n# Duration of a short break between Pomodoros in minutes\nsmall_break_minutes = 5\n# Duration of a long break after a set, in minutes\nlong_break_minutes = 15\n```\n\n### Change key bindings\n\nThe default key bindings are:\n\n<!-- Please update me if needed -->\n\n- Focus previous: shift-tab, up, left, h, or k\n- Focus next: tab, right, down, l, or j\n- Exit: q\n- Start: s\n- Pause: p\n- Reset: r\n- Reset all: a\n- Help: ? or f1\n\nWhile Pomoglorbo is running, you can always review the current keybindings\nby opening the help menu. You can open the help menu by pressing `?` or F1\n\nYou can customize Pomoglorbo TUI key bindings using the following configuration\nvariables, illustrated with some examples values:\n\n```ini\n[KeyBindings]\n# Focus on previous button in TUI\nfocus_previous = s-tab\n# Focus on next button in TUI\nfocus_next = tab\n# Quit Pomoglorbo\nexit_clicked = q\n# Start the next Pomodoro or break\nstart = s\n# Pause the current Pomodoro or break\npause = p\n# Reset elapsed time of current Pomodoro or break\nreset = r\n# Reset elapsed time, go back to 0 elapsed Pomodoros (see tomatoes_per_set)\nreset_all = a\n# Show current key bindings\nhelp = ?\n```\n\nYou can find more documentation on keybindings on `prompt_toolkit`s documentation\nsite\n[here](https://python-prompt-toolkit.readthedocs.io/en/master/pages/advanced_topics/key_bindings.html#list-of-special-keys).\n\n### Run a command when something happens (Triggers)\n\nYou can configure Pomoglorbo to execute a command for you automatically when\none of the following things happens:\n\n- A new Pomodoro is started\n- A Pomodoro is paused\n- A Pomodoro is resumed\n- A long break is started\n- A short break is started\n- A break is over\n- Pomoglorbo exits\n\nThe commands can be given as string array-like string in the configuration file\nsection `Trigger`. A good use case for this is automatically starting time\ntracking in time tracking software like\n[Timewarrior](https://timewarrior.net/). Here are some ideas on what you can\nput in each command.\n\n```ini\n[Trigger]\nwork_state_cmd = [\"curl\", \"https://example.com\"]\nwork_paused_state_cmd = [\"timew\", \"stop\"]\nwork_resumed_state_cmd = [\"timew\", \"start\"]\nlong_break_state_cmd = [\"i3lock\"]\nsmall_break_state_cmd = [\"timew\", \"start\", \"break\"]\nbreak_over_cmd = [\"timew\", \"stop\"]\nexit_cmd = [\"espeak\", \"bye\"]\n```\n\n*Note from Justus*: But that's not all! Here's something I do a lot. When I\nstart Pomoglorbo, I want it to start Timewarrior with a specific tag. The work\nstate command is `timew start`, which would start time tracking without any\ntags. I can then add `--work-state-cmd-suffix` when calling Pomoglorbo like so:\n\n```bash\npomoglorbo --work-state-cmd-suffix development pomoglorbo\n```\n\nPomoglorbo will call `timew` for me when the next Pomodoro starts like so:\n\n```bash\ntimew start development pomoglorbo\n```\n\nThis could be extended to the other commands as well, if required. Patches are\nvery welcome here.\n\n## Development\n\nTo start developing Pomoglorbo this, clone this repository from Codeberg:\n\n```bash\ngit clone https://codeberg.org/justusw/Pomoglorbo.git\n```\n\nUse [uv](https://docs.astral.sh/uv/getting-started/installation/) to install all\ndependencies:\n\n```bash\n# This will install packages used for testing as well\nuv sync\n```\n\nRun Pomoglorbo inside the uv virtual environment using the following\ncommand:\n\n```bash\nuv run src/pomoglorbo/cli.py\n```\n\nYou can additionally specify a configuration file to be used like so:\n\n```bash\nuv run src/pomoglorbo/cli.py --config-file test/config.ini\n```\n\n### Testing\n\nRun all tests and formatters using\n\n```bash\nuv run bin/test.sh\n```\n\nFormat code using\n\n```bash\nuv run bin/format.sh\n```\n\n### Translations\n\nProvided you installed all dependencies with uv,\nyou can translate strings like so:\n\n__Mark a string for translation__: If you want to mark a string for\ntranslation, you have to mark it using\n[gettext](https://docs.python.org/3/library/gettext.html). For example, if you\nwant to print the string \"Hello, World!\" and automatically translate it, write\nthe following:\n\n```python\n# Assuming this file is called source_file.py\nfrom pomoglorbo.cli.util import gettext_lazy as _\nprint(_(\"Hello, World!))\n```\n\nWe use our own `gettext_lazy` here (similar to Django), to make sure that\nstrings are not translated at module import time.\n\n__Extract strings__: Run\n\n```bash\nbin/pybabel-update.sh\n```\n\nThis will populate all message catalogs for the languages in\n`src/pomoglorbo/messages/`. You will see a new string added to each `.po`\nfile and the `.pot` file. Edit the new message and translate it. Here, we\ntranslate it into German.\n\n```po\n#: source_file.py\nmsgid \"Hello, World!\"\nmsgstr \"Hallo, Welt!\"\n```\n\n__Compile message catalogs__: Now, you have to compile the translations into MO\nfiles.\n\n```bash\nbin/pybabel-compile.sh\n```\n\nAnd you are done.\n\nThe translation uses GNU Gettext, the Python `gettext` module and\n[Babel](https://babel.pocoo.org/en/latest/index.html). Refer to Babel's\n[Command-Line Interface help](https://babel.pocoo.org/en/latest/cmdline.html)\nto learn more about how the `bin/pybabel-*.sh` commands work.\n\n## Sending commands to Pomoglorbo\n\nIf you have a running Pomoglorbo instance with the socket server enabled, you\ncan send commands directly using:\n\n```bash\npomoglorbo start # Start next Pomodoro\npomoglorbo pause # Pause current timer\npomoglorbo reset # Reset current timer\npomoglorbo reset_all # Reset Pomoglorbo start\n```\n\n## Experimental socket server\n\nPomoglorbo includes an experimental Unix domain socket server that lets you\ncontrol Pomoglorbo from other programs.\n\n### How to enable the socket server\n\nEnable the socket server by adding the following to your Pomoglorbo\nconfiguration:\n\n```ini\n[Ipc]\nsocket_server = True\n```\n\nWhen you've enabled the socket server, Pomoglorbo creates a Unix domain socket\nat `$XDG_STATE_HOME/pomoglorbo/socket`. In most cases, this should be\n`~/.local/state/pomoglorbo/socket`.\n\n### Commands that you can use\n\nThe socket server accepts the following text commands:\n\n- `start` - Start the next Pomodoro\n- `pause` - Pause the current timer\n- `reset` - Reset the current timer\n- `reset_all` - Reset all progress\n\nEach command returns a response:\n- `OK: <command>` - This lets you to know that Pomoglorbo accepted your command\n- `ERROR: Unknown command '<command>'` - Pomoglorbo could not process your\n command\n\n### How to use the socket server\n\nYou can interact with the socket using the `socat` command:\n\n```bash\necho \"start\" | socat - UNIX-CONNECT:\"$XDG_STATE_HOME/pomoglorbo/socket\"\n```\n\nYou can also send these commands by running `pomoglorbo [COMMAND]`, where\n`[COMMAND]` is one of the accepted text commands `start`, `pause`, `reset`, or\n`reset_all`.\n\nFor more information on how to use the `pomoglorbo [COMMAND]` feature, see the\n**Sending commands to Pomoglorbo** section\n\n## Contributing\n\nWould you like to make a contribution? Your ideas are very welcome as this is\nan open source project welcoming all contributors! Please read the\n[CONTRIBUTING.md](CONTRIBUTING.md) file for more info. Please also refer to the\n[Code of Conduct](CODE_OF_CONDUCT.md).\n\n## Credits\n\nPomoglorbo is a fork of the original\n[pydoro](https://github.com/JaDogg/pydoro).\n\n- [pydoro](https://github.com/JaDogg/pydoro) - by Bhathiya Perera\n- Pomodoro - Invented by Francesco Cirillo\n- prompt-toolkit - Awesome TUI library\n- b15.wav - [Dana](https://freesound.org/s/377639/) robinson designs,\n CC0 from freesound\n\nSee the `CONTRIBUTORS` file in the root directory for a list of contributors to\nthe original pydoro project.\n\n## Copyright\n\nSee the LICENSES folder for more information.\n",
"bugtrack_url": null,
"license": null,
"summary": "Terminal Pomodoro timer",
"version": "2025.8.21",
"project_urls": {
"Repository": "https://codeberg.org/justusw/Pomoglorbo"
},
"split_keywords": [
"pomodoro",
" pomoglorbo",
" pydoro",
" timer",
" tomato",
" work"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ee2d9b26118d5c9e3614d7feb738bb0946a0257b929e3b4557ab8971a7b2646a",
"md5": "f75a083ab7c6863fdcaad0b2ae4dfefe",
"sha256": "7ff7730479c77b5b258a8d87bb75439ab86a5ae71394eacb23321efae3215198"
},
"downloads": -1,
"filename": "pomoglorbo-2025.8.21-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f75a083ab7c6863fdcaad0b2ae4dfefe",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.11",
"size": 496359,
"upload_time": "2025-08-21T01:25:53",
"upload_time_iso_8601": "2025-08-21T01:25:53.368299Z",
"url": "https://files.pythonhosted.org/packages/ee/2d/9b26118d5c9e3614d7feb738bb0946a0257b929e3b4557ab8971a7b2646a/pomoglorbo-2025.8.21-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2f41f485bd7b4422a4a5a01df18fdfa86dd761eab87ca335f4e124e291652a0e",
"md5": "5e95aab0a9f10e7a7915630dcdfb81d9",
"sha256": "1465a06e3bd6579b5533f6dd20765d00fcc6bfcf5975b6b12c1ce85ddcd94e36"
},
"downloads": -1,
"filename": "pomoglorbo-2025.8.21.tar.gz",
"has_sig": false,
"md5_digest": "5e95aab0a9f10e7a7915630dcdfb81d9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.11",
"size": 761409,
"upload_time": "2025-08-21T01:25:55",
"upload_time_iso_8601": "2025-08-21T01:25:55.323088Z",
"url": "https://files.pythonhosted.org/packages/2f/41/f485bd7b4422a4a5a01df18fdfa86dd761eab87ca335f4e124e291652a0e/pomoglorbo-2025.8.21.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-21 01:25:55",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": true,
"codeberg_user": "justusw",
"codeberg_project": "Pomoglorbo",
"lcname": "pomoglorbo"
}