Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Bitbar is a macos application that can add custom menu bar buttons.

I’m recently learning managing projects with org-mode. And we all know that org-agenda is great.

So I write a bitbar plugin, agenda to display some of my agenda in menu bar.


  • It can display your chosen org-agenda-custom-commands in menu bar.
  • Support customize color for priority.
  • Support different color for filter.
  • Make item with links clickable(only support http/https url).

Like this.



User need to specify the command to export the agenda-view to txt file.

I’m using emacs –batch feature to generate the txt file silently. There may better way for doing this, like org-batch-agenda (check out here). But when my emacs configuration piles up, there’s lots of initializing message which makes it hard to extract the agenda-view data. So I just use the org-agenda-write command to write agenda-view to disk.

emacs --batch -l ~/.emacs.d/init.el --eval "(run-hooks 'emacs-startup-hook)" \
      --eval '(progn (org-agenda nil "r") (org-agenda-write "~/agendas/work/todos.txt") (spacemacs/kill-emacs))'

Note: for spacemacs user, you need to add (run-hooks 'emacs-startup-hook) to let emacs read your dotspacemacs/user-config (issue#4504).

For using this plugin. You need to specify agenda_directory agenda_file_name.

# Change to your todo directory path
agenda_directory = "#{Dir.home}/agendas/work/"
agenda_name = 'todos.txt'

And also the agenda custom command key, you may in your configuration file, you can find your setting using (describe-variable 'org-agenda-custom-commands).

# the agenda custome command which brings the agenda view that you want to export
agenda_custome_command = 'B'

The problem of using --batch is to really kill emacs.

# function to REALLY kill emacs
# for spacemacs user use (spacemacs/kill-emacs)
# kill_emacs_function = '(spacemacs/kill-emacs)'
kill_emacs_function = '(let (kill-emacs-hook) (kill-emacs))'

You can also change colors of filter line and lines with priority.

# Change priority color here
tag_color = 'orange'

# Customise label color-code here (these colors are optimised for a dark theme menubar)
labels = {
  '[#A]' => 'red',
  '[#B]' => 'yellow',
  '[#C]' => 'violet'

If you use pacakges that will change filters’ format in agenda view, you need to specify tag_indicator .

tag_indicator = 'Headlines with TAGS match: '


Current version don’t support agenda-view when you add, say you add the below code in the chosen org-agenda-custom-commands.

(agenda ((org-agenda-ndays 7)))


No releases published


No packages published