(From the project introduction) "i3blocks executes your command lines and generates a status line from their output."

As per the i3blocks config file, here is the syntax to get the time in the status :

label=any string or glyph 
full_text=any string or glyph 
command=date "+%a, %b %_d %Y %I:%M%P"

And here is how you execute a GUI command on click:

full_text=Click me!

Both work, but how do I combine the two, that is, being able to click on the time to pop up the calendar? I tried this:

full_text=date "+%a, %b %_d %Y %I:%M%P"

But it doesn't work (the date string command is displayed, and gsimplecal gets executed every 5 seconds) so obviously a workaround must be found..?

  • my setup uses the status_command, which involves generating and stream-parsing json. i'd be very interested in a better option as well
    – Fox
    Commented Dec 28, 2020 at 7:05

1 Answer 1


I know this is a few months old but i just came across a similar requirement where i want to show the volume in the bar but want to open pavucontrol on click to configure audio settings. This is what i ended up with that works.

command=if [ $button ]; then pavucontrol; else pulseaudio-ctl full-status | awk '{ printf "%i%\n", $1 }'; fi
label=<span color="#ffb86c"> </span>

checking if $button exists (a click) and doing something different, otherwise get the volume (the text that gets placed into the value)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .