org-agenda bitbar plugin

UPDATE: The agenda plugin has been merged into the official plugin repo. You can now find the plugin here.

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.

bitbar agenda plugin image


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). Or you can extract your org-agenda configuration into a seperate file and --eval it alone.

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)))    

Comment via email or via Disqus comments below: