154 lines
		
	
	
		
			No EOL
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			No EOL
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
 | 
						||
         
 | 
						||
         <p>Starting with commit <code>29b5e57e</code> to the <code>main</code> branch of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
 | 
						||
themes</a>, users have the option to
 | 
						||
customise the presentation of the Org agenda.  This will become widely
 | 
						||
available through upstream Emacs and GNU ELPA in version <code>1.5.0</code> of the
 | 
						||
themes (tentative release frame in early July).  The new variable is
 | 
						||
<code>modus-themes-org-agenda</code>, which accepts an alist where each combination
 | 
						||
corresponds to specific parts of the agenda buffers.  Those parts are
 | 
						||
parameterised to be styled independent of each other.</p>
 | 
						||
 | 
						||
<p>First an overview of the user-facing code and then some screen shots:</p>
 | 
						||
 | 
						||
<pre><code class="language-elisp">(setq modus-themes-org-agenda
 | 
						||
      '((header-block . (variable-pitch scale-title))
 | 
						||
        (header-date . (grayscale bold-today))
 | 
						||
        (scheduled . uniform)
 | 
						||
        (habit . traffic-light-deuteranopia)))
 | 
						||
</code></pre>
 | 
						||
 | 
						||
<p>Those associations correspond in the given order to:</p>
 | 
						||
 | 
						||
<ul>
 | 
						||
  <li>
 | 
						||
    <p>The block headers that describe each agenda view.  For example, when
 | 
						||
you do <code>M-x org-agenda</code> followed by <code>n</code> you get a header at the top
 | 
						||
that describes the days’ view and one further below which pertains to
 | 
						||
all pending tasks.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>The date headers in the day views.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Items with a scheduled timestamp assigned to them.  Remember that
 | 
						||
“scheduled” refers to the day/time a task should be started: it is not
 | 
						||
a deadline (read <a href="https://bzg.fr/en/on-using-to-do-lists-efficiently/">On using to-do lists
 | 
						||
efficiently</a>
 | 
						||
(2021-04-26) by Bastien Guerry, the Org maintainer).</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>The <code>org-habit</code> graph for those who use it to track their consistency
 | 
						||
over recurring tasks (e.g. daily exercise).</p>
 | 
						||
  </li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<p>The <code>header-block</code> and <code>header-date</code> keys accept lists of values which
 | 
						||
combine their effects.  For instance, <code>header-date</code> can use a
 | 
						||
<code>workaholic</code> value to apply uniform colouration to weekdays and weekends
 | 
						||
and combine it with <code>grayscale</code> so that the colours are black/white
 | 
						||
instead of the default shades of cyan.  Those lists can be one item
 | 
						||
long, such as <code>(header-date . (grayscale))</code>.  For more items, the order
 | 
						||
is not significant, so <code>(header-date . (workaholic grayscale))</code> and
 | 
						||
<code>(header-date . (grayscale workaholic))</code> yield the same results.</p>
 | 
						||
 | 
						||
<p>The <code>scheduled</code> and <code>habit</code> keys accept a symbol, as shown in the sample
 | 
						||
alist above.</p>
 | 
						||
 | 
						||
<h2>Default looks</h2>
 | 
						||
 | 
						||
<p>This is an agenda buffer without any customisations whatsoever.  We use
 | 
						||
colour to differentiate the various constructs, but try not to overdo it
 | 
						||
as users’ agendas can be rich with entries and too much colour can be a
 | 
						||
hindrance to productivity.</p>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-default.png"><img alt="Modus Operandi default" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-default.png" /></a></p>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-default.png"><img alt="Modus Vivendi default" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-default.png" /></a></p>
 | 
						||
 | 
						||
<h2>Tweaked looks</h2>
 | 
						||
 | 
						||
<p>Here is the same agenda view with the following styles (remember to read
 | 
						||
either the doc string or the manual’s entry on the matter):</p>
 | 
						||
 | 
						||
<pre><code class="language-elisp">(setq modus-themes-org-agenda
 | 
						||
      '((header-block . (variable-pitch scale-title))
 | 
						||
        (header-date . (grayscale bold-today))
 | 
						||
        (scheduled . uniform)
 | 
						||
        (habit . simplified)))
 | 
						||
</code></pre>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-tweaked.png"><img alt="Modus Operandi tweaked" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-tweaked.png" /></a></p>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-tweaked.png"><img alt="Modus Vivendi tweaked" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-tweaked.png" /></a></p>
 | 
						||
 | 
						||
<h2>Deuteranopia styles</h2>
 | 
						||
 | 
						||
<p>As I have noted before, such as in <a href="https://protesilaos.com/codelog/2021-05-19-modus-themes-status-update/">my latest status
 | 
						||
report</a>
 | 
						||
on the Modus themes’ progress, we provide the tools to empower users
 | 
						||
with red-green colour deficiency (deuteranopia).  This practically means
 | 
						||
to avoid unconditional colour-coding that relies on a distinction
 | 
						||
between red and green, by substituting green with blue.  To that end,
 | 
						||
the themes provide <code>modus-themes-success-deuteranopia</code> (e.g. for Org
 | 
						||
“DONE” tasks or Isearch matches) and <code>modus-themes-diffs</code> which has
 | 
						||
relevant styles with a red-blue design.</p>
 | 
						||
 | 
						||
<p>For <code>modus-themes-org-agenda</code>, the only place where we need to introduce
 | 
						||
such an alternative is for the <code>org-habit</code> graph.  We do so by tweaking
 | 
						||
the <code>traffic-light</code> style/workflow as <code>traffic-light-deuteranopia</code>: it
 | 
						||
uses red, yellow, and blue to present its indicators.</p>
 | 
						||
 | 
						||
<p>With those configurations we get the following samples:</p>
 | 
						||
 | 
						||
<pre><code class="language-elisp">(setq modus-themes-success-deuteranopia t)
 | 
						||
 | 
						||
(setq modus-themes-org-agenda
 | 
						||
      '((header-block . (variable-pitch scale-title))
 | 
						||
        (header-date . (grayscale bold-today))
 | 
						||
        (scheduled . uniform)
 | 
						||
        (habit . traffic-light-deuteranopia)))
 | 
						||
</code></pre>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-deuteranopia.png"><img alt="Modus Operandi deuteranopia" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-operandi-org-agenda-deuteranopia.png" /></a></p>
 | 
						||
 | 
						||
<p><a href="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-deuteranopia.png"><img alt="Modus Vivendi deuteranopia" src="https://protesilaos.com/assets/images/attachments/2021-06-02-modus-vivendi-org-agenda-deuteranopia.png" /></a></p>
 | 
						||
 | 
						||
<h2>Attention to detail</h2>
 | 
						||
 | 
						||
<p>To develop this variable, I benefited from the insights, commentary,
 | 
						||
suggestions, and testing of Gustavo Barros <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/208">in issue
 | 
						||
208</a> (the
 | 
						||
discussion has over 200 comments as of this writing).  Gustavo put
 | 
						||
forward the idea of reviewing the old defaults, which eventually led us
 | 
						||
to the realisation that only a new customisation option would suffice;
 | 
						||
an option in the form of an alist to offer us maximum flexibility.</p>
 | 
						||
 | 
						||
<p>Internally, the design of <code>modus-themes-org-agenda</code> draws from the
 | 
						||
in-progress patch of Philip Kaludercic on the redesign of compound
 | 
						||
values for the numerous customisation options the themes provide,
 | 
						||
starting with <code>modus-themes-mode-line</code> (refer to the discussion in
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/40">merge request
 | 
						||
40</a>).</p>
 | 
						||
 | 
						||
<p>Through the discussion with Gustavo, we also identified areas where Org
 | 
						||
itself can be improved.  Those will be formalised as patches and sent to
 | 
						||
the maintainers.  Their basic idea is to implement faces that are
 | 
						||
optimised for their context in the agenda buffers.  I shall work on
 | 
						||
those as soon as I am done with this report and will write about them in
 | 
						||
those web pages after they are accepted by upstream.</p>
 | 
						||
 | 
						||
<p>In short, we pay attention to detail and want the best possible result
 | 
						||
for all users.  Thanks again to Gustavo for the fruitful collaboration
 | 
						||
thus far and thanks in advance to Philip for the forthcoming patches!</p>
 | 
						||
 | 
						||
<hr />
 | 
						||
 | 
						||
<p><strong>NOTE:</strong> The <code>modus-themes-org-agenda</code> supersedes the now-deprecated
 | 
						||
<code>modus-themes-org-habit</code>.  Users of the old variable can get the exact
 | 
						||
same styles by controlling the <code>habit</code> key inside of the new alist, with
 | 
						||
possible values still being the same as before, plus the
 | 
						||
deuteranopia-optimised addition, namely: <code>nil</code> (default), <code>simplified</code>,
 | 
						||
<code>traffic-light</code>, <code>traffic-light-deuteranopia</code>.</p>
 | 
						||
        
 | 
						||
       |