Org-Mode: Vista de agenda personalizada

Introducción

Podemos personalizar la vista de la agenda para que se vea adapte a nuestro flujo de trabajo, yo la he personalizado para que muestre solamente dos días de la agenda, hoy y mañana, además he clasificado la vista por tareas, las que están iniciadas, siguientes, por hacer, canceladas, etc.

He configurado dos vistas, una para el trabajo y otra para mis asuntos personales, además que configurado la tecla F7 para ir de una manera rápida a estas agendas, F7 + p me lleva a la agenda personal, y F7 + o a la del trabajo.

Además los meses y días de la semana se mostraran en español y la agenda se mostrara en la ventana actual.

Configuración

Debemos de añadir en nuestro fichero de configuración de emacs, utilizo use-package,

(use-package org-agenda
    :ensure nil
    :after org
    :bind ([f7] . org-agenda)
    :custom
      (org-agenda-dim-blocked-tasks t)
      (org-agenda-files '("~/.personal/agenda"))
      (org-agenda-include-diary nil)
      (org-agenda-diary-file "~/.personal/agenda/diario.org")
      (org-agenda-inhibit-startup t)
      (org-agenda-show-log t)
      (org-agenda-skip-deadline-if-done t)
      (org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled)
      (org-agenda-skip-scheduled-if-done t)
      (org-agenda-span 2)
      (org-agenda-start-on-weekday 1)
      (org-agenda-sticky nil)
      (org-agenda-window-setup 'current-window) ;Sobrescribe la ventana actual con la agenda
      (org-agenda-tags-column -100)
      (org-agenda-time-grid '((daily today require-timed)))
      (org-agenda-use-tag-inheritance t)
      (org-directory "~/.personal")
      (org-archive-location "~/.personal/archivo/%s_archivo.org::datetree/")
      (org-enforce-todo-dependencies t)
      (org-habit-show-habits-only-for-today nil)
      (org-track-ordered-property-with-tag t)
      (org-icalendar-timezone "Europe/Madrid")
      (calendar-day-name-array ["domingo" "lunes" "martes" "miércoles"
                                 "jueves" "viernes" "sábado"])
      (calendar-month-name-array ["enero" "febrero" "marzo" "abril" "mayo"
                                   "junio" "julio" "agosto" "septiembre"
                                   "octubre" "noviembre" "diciembre"])
  (org-agenda-custom-commands
      '(("h" "Habitos" tags-todo "STYLE=\"habit\""
         ((org-agenda-overriding-header "Habitos")
          (org-agenda-sorting-strategy
           '(todo-state-down effort-up category-keep))))
      	("o" "Trabajo"
          ((agenda "" )
             (tags-todo "trabajo/INICIADA"
                   ((org-agenda-overriding-header "Tareas Iniciadas")
                    (org-tags-match-list-sublevels t)))
             (tags-todo "trabajo/SIGUIENTE"
                   ((org-agenda-overriding-header "Siguientes Tareas")
                    (org-tags-match-list-sublevels t)))
             (tags "trabajo/PARADA|ESPERANDO"
                   ((org-agenda-overriding-header "Tareas Paradas o Esperando")
                    (org-tags-match-list-sublevels t)))
             (tags-todo "trabajo/TODO"
                   ((org-agenda-overriding-header "Tareas por Hacer")
                    (org-tags-match-list-sublevels t)))
             (tags "trabajo/CANCELADA"
                   ((org-agenda-overriding-header "Tareas Canceladas")
                    (org-tags-match-list-sublevels t)))
             (tags "trabajo/PUBLICADA"
                   ((org-agenda-overriding-header "Tareas terminadas sin Archivar")
                    (org-tags-match-list-sublevels t)))
             (tags "reubicar"
                   ((org-agenda-overriding-header "Reubicar")
                    (org-tags-match-list-sublevels t)))
             nil))
      ;; Reportes personales
      ("p"  "Personal"
          ((agenda "" )
             (tags-todo "personal/INICIADA"
                   ((org-agenda-overriding-header "Tareas Iniciadas")
                    (org-tags-match-list-sublevels t)))
             (tags-todo "personal/SIGUIENTE"
                   ((org-agenda-overriding-header "Siguientes Tareas")
                    (org-tags-match-list-sublevels t)))
             (tags "personal/PARADA|ESPERANDO"
                   ((org-agenda-overriding-header "Tareas Paradas o Esperando")
                    (org-tags-match-list-sublevels t)))
             (tags-todo "personal/TODO"
                   ((org-agenda-overriding-header "Tareas por Hacer")
                    (org-agenda-todo-ignore-deadlines 'future)
                    (org-agenda-todo-ignore-scheduled 'future)
                    (org-agenda-tags-todo-honor-ignore-options t)
                    (org-tags-match-list-sublevels t)))
             (tags "personal/CANCELADA"
                   ((org-agenda-overriding-header "Tareas Canceladas")
                    (org-tags-match-list-sublevels t)))
             (tags "personal/PUBLICADA"
                   ((org-agenda-overriding-header "Tareas terminadas sin Archivar")
                    (org-tags-match-list-sublevels t)))
             (tags "reubicar"
                   ((org-agenda-overriding-header "Reubicar")
                    (org-tags-match-list-sublevels t)))
             nil))
)))

Explicación

  • :bind ([f7] . org-agenda) Configura F7 para llamar a la agenda

  • (org-agenda-files '("~/.personal/agenda")) donde están situados los ficheros que va a utilizar a la agenda

  • (org-agenda-include-diary nil) y (org-agenda-diary-file "~/.personal/agenda/diario.org") no voy utilizar el diario de emacs e indico cual va a ser el diario a utilizar por org.

  • (org-agenda-span 2) solo muestra dos días.

  • (org-agenda-start-on-weekday 1) el primer día es el lunes

  • (org-agenda-window-setup 'current-window) sobrescribe la ventana actual con la agenda

tags

Busca entre los ficheros de la agenda (org-agenda-files) aquellas tareas que tengan una etiqueta dada

tags-todo

Al igual que la anterior pero además la tarea debe de tener el estado que se indica

Habrás notado que hay mas opciones, como por ejemplo la ubicación del archivo de tareas finalizadas, pero estas la veremos en próximos artículos

Espero que te haya gustado, pasa un buen día.