Blog personal donde guardo mis notas sobre tecnología

"Sobrealimenta" tu agenda con org-super-agenda

Carlos M.

Ya os he hablado anteriormente de como personalizar la vista de la agenda de emacs, en concreto en esta entrada . En ese artículo utilizaba tags-todo para conseguir unas vistas para la agenda conforme a mis gustos.

Hace tiempo que conocía de org-super-agenda para filtrar las vistas de agenda, pero por falta de tiempo no me había puesto a jugar con este paquete.

Este paquete te permite “sobrealimentar” la agenda diaria o semanal. La idea es agrupar elementos en secciones, en lugar de tenerlos todos en una gran lista.

Instalación #

Utilizo use-package para ello y habilito el modo org-super-agenda

(use-package org-super-agenda
  :ensure t
  :config
  (org-super-agenda-mode))

Configuración #

General #

  • No muestro una tarea programada o con fecha limite si ya está hecha, org-agenda-skip-scheduled-if-done t y org-agenda-skip-deadline-if-done t
  • Las opciones establecidas aquí se aplican a todo el bloque, org-agenda-compact-blocks t
  • Por defecto la vista agenta divide la ventana en dos, lo podemos evitar con org-agenda-window-setup 'current-window
  • Sólo recibo un aviso si a la tarea limite le quedan 7 días o menos para cumplirse, org-deadline-warning-days 7
  • La “parrilla” solo mostrara el día de hoy con sus horas, org-agenda-time-grid '((daily today require-timed))
  • Configuro dos vistas para cuando llamo a org-agenda, una para el trabajo asignada a la tecla “x” y otra para la persona “z”

Vista trabajo #

Filtro los eventos o tareas para Hoy y los próximos tres días, descartando los que tienen la etiqueta personal, muestro la hora y las tareas programadas o con fecha limite pasadas y no completadas de hoy y les doy un peso u orden de 1, son las que primero se mostraran.

Creo otro grupo llamado Vencimiento hoy, para mostrar aquellas tareas con fecha de vencimiento para hoy, otro grupo para las tareas cuya fecha limite vencen próximamente llamado Próximamente, el grupo Atrasado mostrará las tareas programadas o con fecha limite pasadas y no completadas, otro grupo para las tareas que estan Por hacer y finalmente un ultimo grupo para aquellas tareas que están en estado bloquedo o de espera llamado Esperando.

También utilizo el comando (tags "trabajo/HECHO" ((org-agenda-overriding-header " Tareas Hechas"))))) par mostrar las tareas que ya tengo hechas para así poder archivarlas (refile).

Vista personal #

Aquí estaría todo lo relativo a mi agenda personal, su configuración es muy similar a lo visto anteriormente, salvo que en la parrilla inicial muestro también los aniversarios o cumpleaños de mis contactos.

Código #

Finalmente todo el código queda así

(setq org-agenda-skip-scheduled-if-done t
      org-agenda-skip-deadline-if-done t
      org-agenda-compact-blocks t
      org-agenda-window-setup 'current-window
      org-agenda-start-on-weekday 1
      org-deadline-warning-days 7
      org-agenda-time-grid '((daily today require-timed))
      org-agenda-custom-commands
      '(
	("x" "Vista trabajo"
	 ((agenda "" ((org-agenda-span 3)
		      (org-super-agenda-groups
		       '((:name "Hoy"
				:discard (:tag "personal")
				:time-grid t
				:scheduled past
				:deadline past
				:date today
				:order 1)))))
	  (alltodo "" ((org-agenda-overriding-header "")
		       (org-super-agenda-groups
			'((:discard (:tag "personal" ))
			  (:name "Vencimiento hoy"
				 :deadline today
				 :order 5)
			  (:name "Próximamente"
				 :deadline future
				 :order 11)
			  (:name "Atrasado"
				 :scheduled past
				 :deadline past
				 :order 12)
			  (:name "Por hacer"
				 :todo "PORHACER"
				 :order 12)
			  (:name "Esperando"
				 :todo "BLOQUEADO"
				 :order 14)))))
	  (tags "trabajo/HECHO"
		((org-agenda-overriding-header " Tareas Hechas")))))

	("z" "Vista personal"
	 ((agenda "" ((org-agenda-span 3)
		      (org-super-agenda-groups
		       '((:name "Hoy"
				:discard (:tag "trabajo" :scheduled past :deadline past)
				:time-grid t
				:date today
				:scheduled today
				:order 1)
			 (:name "Aniversarios"
				:tag "agenda"
				:todo "Aniversarios")))))
	  (alltodo "" ((org-agenda-overriding-header "")
		       (org-super-agenda-groups
			'((:discard (:tag "trabajo" ))
			  (:name "Vencimiento hoy"
				 :deadline today
				 :order 5)
			  (:name "Atrasado"
				 :scheduled past
				 :deadline past
				 :order 11)
			  (:name "Por hacer"
				 :todo "PORHACER"
				 :order 12)
			  (:name "Esperando"
				 :todo "BLOQUEADO"
				 :order 14)))))
	  (tags "personal/HECHO"
		((org-agenda-overriding-header " Tareas Hechas")))))
	))

Resultado #

Así era la vista que tenia antes

Y así luce ahora, vista trabajo

Vista personal

Son dos vistas sencillas pero son lo que yo necesito, pero puedes ver más opciones y posibilidades en su repositorio org-super-agenda

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