A simple timer for the i3 window manager's status bar built for i3blocks.
go get github.com/claudiodangelis/i3-timerAdd these lines to the configuration file, which is usually located at ~/.i3blocks.conf:
[i3timer]
command=~/go/bin/i3-timer -alarm-command="notify-send 'i3-timer' 'Alarm Elapsed!'; play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga"
interval=10Note: higher values for interval lead to poor timer accuracy.
The -colors flag enables colored output. The config parametermarkup=pango is required, for example:
[i3timer]
command=~/go/bin/i3-timer...
markup=pango
interval=10| Color | Code |
|---|---|
| (default) | Timer is idle |
| Green | Timer is in its first half |
| Yellow | Timer is in its second half |
| Red | Timer is in its last quarter |
Note: if pango markup is not rendered, for example the output is something like <span color="red">Timer: 5m0s</span>, you will need to set font pango:Monospace 10 to the bar section of the i3's configuration file.
| Label | Status |
|---|---|
[I] |
Timer is idle |
[R] |
Timer is showing remaining time |
[E] |
Timer is showing elapsed time |
| Argument | Type | Description |
|---|---|---|
-alarm-command |
String | Command(s) to be executed when the alarm fires |
-colors |
Boolean | Prints colorized timer |
-debug |
Boolean | Prints debug information |
-recurring |
Boolean | Restarts timer after the alarm fires |
-duration |
Integer | Sets the default duration, in minutes, of the timer |
-autostart |
Boolean | Starts the timer as soon as i3 starts |
You can interact with the timer by clicking and/or using the scrollwheel.
| Event | Outcome |
|---|---|
| Left Click | Toggles between elapsed/remaining time |
| Middle Click | Starts the timer |
| Right Click | Stops and resets the timer |
| Scroll Up | Adjusts the timer to add one minute |
| Scroll Down | Adjusts the timer to remove one minute |
If passed, the value of -alarm-command will be executed when the timer runs out. In the example above the value is notify-send 'i3-timer' 'Alarm Elapsed!'; play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga, which will pop up a notification on the top right corner of the screen and play a sound.
You can execute whatever program(s) you like.
You can setup key bindings to start and stop the timer by using i3blocks' signaling feature. What you should do is to create 2 additional blocks with no interval property but set the proper signal value for the blocks, then set i3 configuration to bind the emission of the given signals to a keyboard shortcut.
The following example will bind the start of timer to Mod1+Shift+Control+k (which will emit, for example, signal 10) and the stop to Mod1+Shift+Control+l (which will emit, for example, signal 11). After emitting signal 10 or 11, both key shortcuts will emit signal 12 that will refresh the timer's "gui".
-
Create the main block to configure the timer in i3blocks configuration file:
[i3timer] command=~/go/bin/i3-timer -alarm-command="notify-send 'i3-timer' 'Alarm Elapsed!'; play /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga" interval=10 signal=12
-
Create the "start timer" block in i3blocks configuration file
[i3timer] command=~/go/bin/i3-timer -exec-start signal=10
-
Create the "stop timer" block in i3blocks configuration file
[i3timer] command=~/go/bin/i3-timer -exec-stop signal=11
-
Create the keyboard shortcut binding in i3 configuration file
# start timer bindsym --release Mod1+Shift+Control+k exec bash -c "pkill -SIGRTMIN+10 i3blocks && pkill -SIGRTMIN+12 i3blocks" # stop timer bindsym --release Mod1+Shift+Control+l exec bash -c "pkill -SIGRTMIN+11 i3blocks && pkill -SIGRTMIN+12 i3blocks"
-
Restart i3 and enjoy
Note: i3-timer stores timer's data into a hidden JSON file, .i3-timer.json stored at your home directory.
The original author and current maintainer is Claudio d'Angelis. Refer to contributors page for a full list of people who have contributed to this project. Contributions are always welcome.
MIT
