This commit is contained in:
SqrtMinusOne 2023-07-31 14:41:53 +00:00
parent 52107dfb8b
commit 3f1aada99d
7 changed files with 180 additions and 96 deletions

View file

@ -80,121 +80,99 @@
</ul>
<h2 id="global-customization">Global customization</h2>
<h3 id="colors">Colors</h3>
<p>My favorite color theme is Palenight (<a href="https://github.com/JonathanSpeek/palenight-iterm2">color codes</a>), and I want to have one source of truth for these colors. Except for Emacs itself, which has <a href="https://github.com/doomemacs/themes#theme-list">doom-palenight</a> (and in which I occasionally switch to <code>doom-one-light</code>, e.g. when reading a long text), it can be done rather nicely with Org Mode.</p>
<p>First, let&rsquo;s define a table with all the color codes:</p>
<p>I used to define color codes here (see <a href="https://github.com/SqrtMinusOne/dotfiles/commit/2dbf1cdd008ec0061456782cca3ebd76e603b31e">previous version of the file</a>), now I just get colors from the current Emacs theme.</p>
<p>To use them, let&rsquo;s define a noweb block:</p>
<p><a id="code-snippet--get-color"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">let</span> ((<span style="color:#19177c">color</span> (<span style="color:#008000">or</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">name</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/color-value</span> (<span style="color:#00f">intern</span> <span style="color:#19177c">name</span>)))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">&gt;</span> <span style="color:#008000">quote</span> <span style="color:#666">0</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span> <span style="color:#19177c">color</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">color</span>))
</span></span></code></pre></div><p>Test:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span><span style="color:#19177c">&lt;&lt;get-color</span>(<span style="color:#19177c">name=</span><span style="color:#ba2121">&#34;red&#34;</span><span style="color:#666">,</span> <span style="color:#19177c">quote=1</span>)<span style="color:#19177c">&gt;&gt;</span>
</span></span></code></pre></div><p>This tables used to have values, now it has only keys:</p>
<p><a id="table--colors"></a></p>
<table>
<thead>
<tr>
<th>color</th>
<th>key</th>
<th>value</th>
</tr>
</thead>
<tbody>
<tr>
<td>black</td>
<td>color0</td>
<td>#292d3e</td>
</tr>
<tr>
<td>red</td>
<td>color1</td>
<td>#f07178</td>
</tr>
<tr>
<td>green</td>
<td>color2</td>
<td>#c3e88d</td>
</tr>
<tr>
<td>yellow</td>
<td>color3</td>
<td>#ffcb6b</td>
</tr>
<tr>
<td>blue</td>
<td>color4</td>
<td>#82aaff</td>
</tr>
<tr>
<td>magenta</td>
<td>color5</td>
<td>#c792ea</td>
</tr>
<tr>
<td>cyan</td>
<td>color6</td>
<td>#89ddff</td>
</tr>
<tr>
<td>white</td>
<td>color7</td>
<td>#d0d0d0</td>
</tr>
<tr>
<td>light-black</td>
<td>color8</td>
<td>#434758</td>
</tr>
<tr>
<td>light-red</td>
<td>color9</td>
<td>#ff8b92</td>
</tr>
<tr>
<td>light-green</td>
<td>color10</td>
<td>#ddffa7</td>
</tr>
<tr>
<td>light-yellow</td>
<td>color11</td>
<td>#ffe585</td>
</tr>
<tr>
<td>light-blue</td>
<td>color12</td>
<td>#9cc4ff</td>
</tr>
<tr>
<td>light-magenta</td>
<td>color13</td>
<td>#e1acff</td>
</tr>
<tr>
<td>light-cyan</td>
<td>color14</td>
<td>#a3f7ff</td>
</tr>
<tr>
<td>light-white</td>
<td>color15</td>
<td>#ffffff</td>
</tr>
<tr>
<td>color-fg</td>
<td></td>
<td>#000000</td>
</tr>
</tbody>
</table>
<p>The table above is the only source of truth for colors in this config.</p>
<p>Contents of this table can then be <a href="https://orgmode.org/manual/Environment-of-a-Code-Block.html">accessed from a code block</a>. Let&rsquo;s define one to return the color code based on its name:</p>
<p><a id="code-snippet--get-color"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">let</span> ((<span style="color:#19177c">color</span> (<span style="color:#19177c">seq-some</span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">e</span>) (<span style="color:#008000">and</span> (<span style="color:#19177c">string=</span> <span style="color:#19177c">name</span> (<span style="color:#00f">car</span> <span style="color:#19177c">e</span>)) (<span style="color:#00f">nth</span> <span style="color:#666">2</span> <span style="color:#19177c">e</span>))) <span style="color:#19177c">table</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">&gt;</span> <span style="color:#008000">quote</span> <span style="color:#666">0</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span> <span style="color:#19177c">color</span> <span style="color:#ba2121">&#34;\&#34;&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">color</span>))
</span></span></code></pre></div><p>Test:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span><span style="color:#19177c">&lt;&lt;get-color</span>(<span style="color:#19177c">name=</span><span style="color:#ba2121">&#34;red&#34;</span><span style="color:#666">,</span> <span style="color:#19177c">quote=1</span>)<span style="color:#19177c">&gt;&gt;</span>
</span></span></code></pre></div><h3 id="xresources">Xresources</h3>
<h3 id="xresources">Xresources</h3>
<h4 id="colors-in-xresources">Colors in Xresources</h4>
<p>However, I&rsquo;d rather use the <code>Xresources</code> file wherever possible. Here is the code to generate an Xresources file from this table:</p>
<p><a id="code-snippet--get-xresources"></a></p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#00f">mapconcat</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">elem</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;*&#34;</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">elem</span>) <span style="color:#ba2121">&#34;: &#34;</span> (<span style="color:#00f">nth</span> <span style="color:#666">2</span> <span style="color:#19177c">elem</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">&#34;*&#34;</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">elem</span>) <span style="color:#ba2121">&#34;: &#34;</span> (<span style="color:#19177c">my/color-value</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">elem</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-filter</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">elem</span>) (<span style="color:#008000">and</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">elem</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">string-empty-p</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">elem</span>)))))
@ -202,8 +180,8 @@
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;\n&#34;</span>)
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-vim" data-lang="vim"><span style="display:flex;"><span>&lt;&lt;get-xresources()&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>*background: &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>*foreground: &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;white&#34;</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>*background: &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>*foreground: &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;fg&#34;</span>)&gt;&gt;<span style="">
</span></span></span></code></pre></div><p>So, whenever a program is capable of reading <code>.Xresources</code>, it will get colors from there, otherwise, it will get colors from noweb expressions in the literate config. Thus, in both cases, the color is set in a single Org Mode table.</p>
<h4 id="fonts">Fonts</h4>
<p>Also, Xresources are used to set <code>Xft</code> settings. Unfortunately, the DPI setting has to be unique for each machine, which means I cannot commit <code>Xresources</code> to the repo.</p>
@ -403,9 +381,9 @@
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:host</span> <span style="color:#19177c">github</span> <span style="color:#008000">:repo</span> <span style="color:#ba2121">&#34;SqrtMinusOne/exwm-modeline&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;exwm-init-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">exwm-modeline-mode</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/use-doom-colors</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/use-colors</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-modeline-current-workspace</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:foreground</span> (<span style="color:#19177c">doom-color</span> <span style="color:#19177c">&#39;yellow</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:foreground</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;yellow</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:weight</span> <span style="color:#19177c">&#39;bold</span>)))
</span></span></code></pre></div><h3 id="windows">Windows</h3>
<p>A bunch of functions related to managing windows in EXWM.</p>
@ -1755,7 +1733,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">&lt;&lt;get-polybar-colors()&gt;&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">background</span> <span style="color:#666">=</span> <span style="color:#ba2121">${xrdb:background}</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; foreground = ${xrdb:foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${xrdb:color0}</span>
</span></span></code></pre></div><h4 id="glyph-settings">Glyph settings</h4>
<p>As for the module decorations though, I find it ironic that with all this fancy rendering around I have to resort to Unicode glyphs.</p>
<p>Anyhow, the approach is to put a glyph between two blocks like this:</p>
@ -2240,6 +2218,8 @@
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-volume-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;pulseaudio&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-muted-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;pulseaudio&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-volume-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-muted-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-volume-underline = ${colors.white}</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-muted-underline = ${colors.light-black}</span>
@ -2264,6 +2244,9 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-playing-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;mpd&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-paused-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;mpd&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-stopped-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;mpd&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-playing-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-paused-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-stopped-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label-separator</span> <span style="color:#666">=</span> <span style="color:#ba2121">0</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">separator-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.red}</span>
@ -2280,6 +2263,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;&lt;label&gt;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label</span> <span style="color:#666">=</span> <span style="color:#ba2121">%percentage%%</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;cpu&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><h4 id="ram-memory">ram-memory</h4>
<p>RAM usage</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[module/ram-memory]</span>
@ -2300,6 +2284,7 @@
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-underline = ${colors.blue}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;ram-memory&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><h4 id="swap-memory">swap-memory</h4>
<p>Swap usage</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[module/swap-memory]</span>
@ -2308,6 +2293,7 @@
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label</span><span style="color:#666">=</span><span style="color:#ba2121"> %gb_swap_used:.1f%</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;swap-memory&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><h4 id="network">network</h4>
<p>Upload/download speed</p>
<p>UPD <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-07-24 Sun&gt;</span></span>: Somehow it doesn&rsquo;t work with my current internet setup.</p>
@ -2326,6 +2312,8 @@
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-disconnected-underline = ${colors.red}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-connected-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;network&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-disconnected-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;network&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-connected-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-disconnected-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">ramp-signal-0</span> <span style="color:#666">=</span> <span style="color:#ba2121">0</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">ramp-signal-1</span> <span style="color:#666">=</span> <span style="color:#ba2121">1</span>
@ -2342,6 +2330,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">tail</span> <span style="color:#666">=</span> <span style="color:#ba2121">true</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;bandwidth&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># Copyright (C) 2015 James Murphy</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># Copyright (C) 2022 Pavel Korytov</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic"># Licensed under the terms of the GNU GPL v2 only.</span>
@ -2507,6 +2496,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">type</span> <span style="color:#666">=</span> <span style="color:#ba2121">custom/script</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">exec</span> <span style="color:#666">=</span> <span style="color:#ba2121">/home/pavel/bin/polybar/openvpn.sh</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;openvpn&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">interval</span> <span style="color:#666">=</span> <span style="color:#ba2121">1200</span>
</span></span></code></pre></div><h4 id="xkeyboard">xkeyboard</h4>
<p>Current keyboard layout</p>
@ -2516,6 +2506,7 @@
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-underline = ${colors.magenta}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;xkeyboard&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label-layout</span> <span style="color:#666">=</span> <span style="color:#ba2121">%icon%</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">layout-icon-0</span> <span style="color:#666">=</span> <span style="color:#ba2121">ru;RU</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">layout-icon-1</span> <span style="color:#666">=</span> <span style="color:#ba2121">us;US</span>
@ -2530,6 +2521,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-discharging-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;battery&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-charging-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;battery&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-full-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;battery&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label-discharging</span> <span style="color:#666">=</span> <span style="color:#ba2121">%percentage%% %time%</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label-charging</span> <span style="color:#666">=</span> <span style="color:#ba2121"> %percentage%% %time%</span>
</span></span><span style="display:flex;"><span>
@ -2559,6 +2551,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">exec</span> <span style="color:#666">=</span> <span style="color:#ba2121">/home/pavel/bin/polybar/weather.sh</span>
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">; format-underline = ${colors.red}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;weather&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">interval</span> <span style="color:#666">=</span> <span style="color:#ba2121">1200</span>
</span></span></code></pre></div><h4 id="sun">sun</h4>
<table>
@ -2606,6 +2599,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">type</span> <span style="color:#666">=</span> <span style="color:#ba2121">custom/script</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">exec</span> <span style="color:#666">=</span> <span style="color:#ba2121">/home/pavel/bin/polybar/sun.sh</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;sun&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">interval</span> <span style="color:#666">=</span> <span style="color:#ba2121">60</span>
</span></span></code></pre></div><h4 id="aw-afk">aw-afk</h4>
<p>Prints out a current uptime and non-AFK time from <a href="https://github.com/ActivityWatch">ActivityWatch</a> server</p>
@ -2641,6 +2635,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">exec</span> <span style="color:#666">=</span> <span style="color:#ba2121">/home/pavel/bin/polybar/aw_afk.sh</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">interval</span> <span style="color:#666">=</span> <span style="color:#ba2121">60</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;aw-afk&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><h4 id="date">date</h4>
<p>Current date</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[module/date]</span>
@ -2654,6 +2649,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">time-alt</span> <span style="color:#666">=</span> <span style="color:#ba2121">%H:%M:%S</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-background</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;get-polybar-bg(module=&#34;date&#34;)&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">label</span> <span style="color:#666">=</span> <span style="color:#ba2121">&#34;%date% %time%&#34;</span>
</span></span></code></pre></div><h4 id="pomm">pomm</h4>
<p>Pomodoro module.</p>
@ -2665,6 +2661,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">exec</span> <span style="color:#666">=</span> <span style="color:#ba2121">/home/pavel/bin/polybar/pomm.sh</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">interval</span> <span style="color:#666">=</span> <span style="color:#ba2121">1</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-underline</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.light-green}</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">format-foreground</span> <span style="color:#666">=</span> <span style="color:#ba2121">${colors.foreground}</span>
</span></span></code></pre></div><h4 id="sep">SEP</h4>
<p>A simple separator</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[module/SEP]</span>
@ -2744,7 +2741,7 @@
</span></span><span style="display:flex;"><span> <span style="color:#00f">#&#39;concat</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapcar</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">elem</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">elem</span>) <span style="color:#ba2121">&#34;: &#34;</span> (<span style="color:#00f">nth</span> <span style="color:#666">2</span> <span style="color:#19177c">elem</span>) <span style="color:#ba2121">&#34;;\n&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">elem</span>) <span style="color:#ba2121">&#34;: &#34;</span> (<span style="color:#19177c">my/color-value</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">elem</span>)) <span style="color:#ba2121">&#34;;\n&#34;</span>))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">table</span>))
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-css" data-lang="css"><span style="display:flex;"><span><span style="color:#408080;font-style:italic">/* Generated from [[file:../../Desktop.org::*Theme][Theme:1]] */</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">*</span> {
@ -2984,8 +2981,7 @@
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ini" data-lang="ini"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[General]</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">disabledTrayIcon</span><span style="color:#666">=</span><span style="color:#ba2121">false</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">drawColor</span><span style="color:#666">=</span><span style="color:#ba2121">#ff0000</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">drawThickness</span><span style="color:#666">=</span><span style="color:#ba2121">0</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">saveAfterCopyPath</span><span style="color:#666">=</span><span style="color:#ba2121">/home/pavel/Pictures</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">drawThickness</span><span style="color:#666">=</span><span style="color:#ba2121">3</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">savePath</span><span style="color:#666">=</span><span style="color:#ba2121">/home/pavel/Pictures</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">savePathFixed</span><span style="color:#666">=</span><span style="color:#ba2121">false</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">showStartupLaunchMessage</span><span style="color:#666">=</span><span style="color:#ba2121">false</span>
@ -3561,24 +3557,26 @@
</span></span></span><span style="display:flex;"><span><span style=""></span>map &lt;C-r&gt; set recolor false<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>map &lt;C-R&gt; set recolor true<span style="">
</span></span></span><span style="display:flex;"><span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set recolor-lightcolor &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set recolor-lightcolor &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;white&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-group-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;light-black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-group-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-group-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;white&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-highlight-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;magenta&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set completion-highlight-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set inputbar-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set inputbar-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set inputbar-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;light-magenta&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set statusbar-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;black&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set statusbar-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;bg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set statusbar-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;light-magenta&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-error-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;red&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-error-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;color-fg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span># set notification-error-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;color-fg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-error-fg <span style="color:#ba2121">&#34;#000000&#34;</span><span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-warning-bg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;yellow&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-warning-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;color-fg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span># set notification-warning-fg &lt;&lt;get-color(name=<span style="color:#ba2121">&#34;color-fg&#34;</span>, quote=<span style="color:#666">1</span>)&gt;&gt;<span style="">
</span></span></span><span style="display:flex;"><span><span style=""></span>set notification-warning-fg <span style="color:#ba2121">&#34;#000000&#34;</span><span style="">
</span></span></span></code></pre></div><h2 id="various-software">Various software</h2>
<p>This section generates manifests for various desktop software that I&rsquo;m using.</p>
<h3 id="browsers">Browsers</h3>

View file

@ -1283,7 +1283,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">remove-hook</span> <span style="color:#19177c">&#39;pre-command-hook</span> <span style="color:#19177c">&#39;keycast--update</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">global-mode-string</span> (<span style="color:#00f">delete</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;&#34;</span> <span style="color:#19177c">keycast-mode-line</span> <span style="color:#ba2121">&#34; &#34;</span>) <span style="color:#19177c">global-mode-string</span>)))))
</span></span></code></pre></div><h3 id="themes-and-colors">Themes and colors</h3>
<h4 id="doom-themes">Doom themes</h4>
<h4 id="theme-packages">Theme packages</h4>
<p>My colorschemes of choice.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">doom-themes</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
@ -1298,41 +1298,127 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">doom-themes-treemacs-config</span>))
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">modus-themes</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
</span></span></code></pre></div><h4 id="custom-theme">Custom theme</h4>
<p>Here I define a custom theme dependent on colors from the current theme.</p>
<p>A custom theme is necessary because if one calls <code>custom-set-faces</code> and <code>custom-set-variables</code> in code, whenever a variable is changed and saved in a customize buffer, data from all calls of these functions is saved as well.</p>
<p>First, here&rsquo;s a great package with various color tools:</p>
</span></span></code></pre></div><h4 id="custom-theme-1">Custom theme</h4>
<p>Here I define a few things on the top of Emacs theme, because:</p>
<ul>
<li>Occasionally I want to have more theme-derived faces</li>
<li>I also want Emacs theme to be applied to the rest of the system (see the <a href="/configs/desktop/">Desktop</a> config on that)</li>
</ul>
<p>Theme-derived faces have to placed in a custom theme, because if one calls <code>custom-set-faces</code> and <code>custom-set-variables</code> in code, whenever a variable is changed and saved in a customize buffer, data from all calls of these functions is saved as well.</p>
<h5 id="get-color-values">Get color values</h5>
<p>Here&rsquo;s a great package with various color tools:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">ct</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
</span></span></code></pre></div><p>A function to get a color value from the current theme. Supports both <code>doom-themes</code> and <code>modus-themes</code>&hellip; Sort of.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/modus-get-base</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">base-value</span> (<span style="color:#00f">string-to-number</span> (<span style="color:#00f">substring</span> (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>) <span style="color:#666">4</span> <span style="color:#666">5</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">base-start</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;bg-main</span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">base-end</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;fg-dim</span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>)))))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">nth</span> <span style="color:#19177c">base-value</span> (<span style="color:#19177c">ct-gradient</span> <span style="color:#666">9</span> <span style="color:#19177c">base-start</span> <span style="color:#19177c">base-end</span> <span style="color:#800">t</span>))))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/doom-p</span> ()
</span></span></code></pre></div><p>As of now I want this to support <code>doom-themes</code> and <code>modus-themes</code>. So, let&rsquo;s get which one is enabled:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/doom-p</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-find</span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">x</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;doom&#34;</span>) (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">x</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">custom-enabled-themes</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/modus-p</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-find</span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">x</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;modus&#34;</span>) (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">x</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">custom-enabled-themes</span>))
</span></span></code></pre></div><p>I also want to know if the current theme is light or not:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/light-p</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span> (<span style="color:#19177c">seq-intersection</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">custom-enabled-themes</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>(<span style="color:#19177c">doom-one-light</span> <span style="color:#19177c">modus-operandi</span>))
</span></span><span style="display:flex;"><span> <span style="color:#800">t</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/color-value</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/dark-p</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">my/light-p</span>)))
</span></span></code></pre></div><p>Now, let&rsquo;s get the current color from <code>doom</code>. <code>doom-themes</code> provide <code>doom-color</code>, but it&rsquo;s not enough to populate <code>Xresources</code> and the format doesn&rsquo;t quite match.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defconst</span> <span style="color:#19177c">my/theme-string-override</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>((<span style="color:#19177c">doom-palenight</span>
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;red&#34;</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;#f07178&#34;</span>))))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/doom-color</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">stringp</span> <span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">override</span> (<span style="color:#19177c">alist-get</span> (<span style="color:#19177c">my/doom-p</span>) <span style="color:#19177c">my/theme-string-override</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">alist-get</span> <span style="color:#19177c">color</span> <span style="color:#19177c">override</span> <span style="color:#800">nil</span> <span style="color:#800">nil</span> <span style="color:#00f">#&#39;equal</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">pcase</span> <span style="color:#19177c">color</span>
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">or</span> <span style="color:#ba2121">&#34;red&#34;</span> <span style="color:#ba2121">&#34;green&#34;</span> <span style="color:#ba2121">&#34;yellow&#34;</span> <span style="color:#ba2121">&#34;blue&#34;</span> <span style="color:#ba2121">&#34;magenta&#34;</span> <span style="color:#ba2121">&#34;cyan&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">doom-color</span> (<span style="color:#00f">intern</span> <span style="color:#19177c">color</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;black&#34;</span> (<span style="color:#19177c">doom-color</span> <span style="color:#19177c">&#39;base0</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;white&#34;</span> (<span style="color:#19177c">doom-color</span> <span style="color:#19177c">&#39;base8</span>))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;light-&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ct-edit-lab-l-inc</span> (<span style="color:#19177c">my/doom-color</span> (<span style="color:#00f">substring</span> <span style="color:#19177c">color</span> <span style="color:#666">6</span>)) <span style="color:#666">10</span>)))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">doom-color</span> <span style="color:#19177c">color</span>)))
</span></span></code></pre></div><p>And the same for <code>modus-themes</code>. <code>my/modus-color</code> has to accept the same arguments as <code>my/doom-color</code> for backward compatibility.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/modus-get-base</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">base-value</span> (<span style="color:#00f">string-to-number</span> (<span style="color:#00f">substring</span> (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>) <span style="color:#666">4</span> <span style="color:#666">5</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">base-start</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;bg-main</span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">base-end</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;fg-dim</span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>)))))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">nth</span> <span style="color:#19177c">base-value</span> (<span style="color:#19177c">ct-gradient</span> <span style="color:#666">9</span> <span style="color:#19177c">base-start</span> <span style="color:#19177c">base-end</span> <span style="color:#800">t</span>))))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/modus-color</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">palette</span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cond</span>
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">member</span> <span style="color:#19177c">color</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;black&#34;</span> <span style="color:#ba2121">&#34;white&#34;</span> <span style="color:#ba2121">&#34;light-black&#34;</span> <span style="color:#ba2121">&#34;light-white&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">bg-main</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;bg-main</span> <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">fg-main</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;fg-main</span> <span style="color:#19177c">palette</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">pcase</span> <span style="color:#19177c">color</span>
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;black&#34;</span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> <span style="color:#19177c">bg-main</span>) <span style="color:#19177c">fg-main</span> <span style="color:#19177c">bg-main</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;white&#34;</span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> <span style="color:#19177c">bg-main</span>) <span style="color:#19177c">bg-main</span> <span style="color:#19177c">fg-main</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;light-black&#34;</span> (<span style="color:#19177c">ct-edit-lab-l-inc</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> <span style="color:#19177c">bg-main</span>) <span style="color:#19177c">fg-main</span> <span style="color:#19177c">bg-main</span>)
</span></span><span style="display:flex;"><span> <span style="color:#666">15</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;light-white&#34;</span> (<span style="color:#19177c">ct-edit-lab-l-inc</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> <span style="color:#19177c">bg-main</span>) <span style="color:#19177c">bg-main</span> <span style="color:#19177c">fg-main</span>)
</span></span><span style="display:flex;"><span> <span style="color:#666">15</span>)))))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">or</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;bg</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;bg-main</span> <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">or</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;fg</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;fg-main</span> <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;violet</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">&#39;magenta-cooler</span> <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">and</span> (<span style="color:#00f">symbolp</span> <span style="color:#19177c">color</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;base&#34;</span> <span style="color:#19177c">digit</span>) (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/modus-get-base</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">and</span> (<span style="color:#00f">symbolp</span> <span style="color:#19177c">color</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;dark-&#34;</span>) (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> (<span style="color:#00f">intern</span> (<span style="color:#00f">format</span> <span style="color:#ba2121">&#34;%s-cooler&#34;</span> (<span style="color:#00f">substring</span> (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>) <span style="color:#666">5</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;grey</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/modus-get-base</span> <span style="color:#19177c">&#39;base5</span>))
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">member</span> <span style="color:#19177c">color</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;red&#34;</span> <span style="color:#ba2121">&#34;green&#34;</span> <span style="color:#ba2121">&#34;yellow&#34;</span> <span style="color:#ba2121">&#34;blue&#34;</span> <span style="color:#ba2121">&#34;magenta&#34;</span> <span style="color:#ba2121">&#34;cyan&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> (<span style="color:#00f">intern</span> <span style="color:#19177c">color</span>) <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">and</span> (<span style="color:#00f">stringp</span> <span style="color:#19177c">color</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;light-&#34;</span>) <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> (<span style="color:#00f">intern</span> (<span style="color:#00f">format</span> <span style="color:#ba2121">&#34;%s-intense&#34;</span> (<span style="color:#00f">substring</span> <span style="color:#19177c">color</span> <span style="color:#666">6</span>))) <span style="color:#19177c">palette</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#800">t</span> (<span style="color:#19177c">cadr</span> (<span style="color:#00f">assoc</span> <span style="color:#19177c">color</span> <span style="color:#19177c">palette</span>))))))
</span></span></code></pre></div><p>Test the two functions.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defconst</span> <span style="color:#19177c">my/test-colors-list</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;black&#34;</span> <span style="color:#ba2121">&#34;red&#34;</span> <span style="color:#ba2121">&#34;green&#34;</span> <span style="color:#ba2121">&#34;yellow&#34;</span> <span style="color:#ba2121">&#34;blue&#34;</span> <span style="color:#ba2121">&#34;magenta&#34;</span> <span style="color:#ba2121">&#34;cyan&#34;</span> <span style="color:#ba2121">&#34;white&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;light-black&#34;</span> <span style="color:#ba2121">&#34;light-red&#34;</span> <span style="color:#ba2121">&#34;light-green&#34;</span> <span style="color:#ba2121">&#34;light-yellow&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;light-blue&#34;</span> <span style="color:#ba2121">&#34;light-magenta&#34;</span> <span style="color:#ba2121">&#34;light-cyan&#34;</span> <span style="color:#ba2121">&#34;light-white&#34;</span> <span style="color:#19177c">bg</span> <span style="color:#19177c">fg</span> <span style="color:#19177c">red</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">green</span> <span style="color:#19177c">yellow</span> <span style="color:#19177c">blue</span> <span style="color:#19177c">magenta</span> <span style="color:#19177c">cyan</span> <span style="color:#19177c">dark-blue</span> <span style="color:#19177c">dark-cyan</span> <span style="color:#19177c">violet</span> <span style="color:#19177c">grey</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">base0</span> <span style="color:#19177c">base1</span> <span style="color:#19177c">base2</span> <span style="color:#19177c">base3</span> <span style="color:#19177c">base4</span> <span style="color:#19177c">base5</span> <span style="color:#19177c">base6</span> <span style="color:#19177c">base7</span> <span style="color:#19177c">base8</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/test-colors</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">buf</span> (<span style="color:#19177c">generate-new-buffer</span> <span style="color:#ba2121">&#34;*colors-test*&#34;</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-current-buffer</span> <span style="color:#19177c">buf</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> (<span style="color:#00f">format</span> <span style="color:#ba2121">&#34;%-20s %-10s %-10s&#34;</span> <span style="color:#ba2121">&#34;Color&#34;</span> <span style="color:#ba2121">&#34;Doom&#34;</span> <span style="color:#ba2121">&#34;Modus&#34;</span>) <span style="color:#ba2121">&#34;\n&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#19177c">for</span> <span style="color:#19177c">color</span> <span style="color:#19177c">in</span> <span style="color:#19177c">my/test-colors-list</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span> (<span style="color:#00f">insert</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span> <span style="color:#ba2121">&#34;%-20s %-10s %-10s\n&#34;</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">prin1-to-string</span> <span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/doom-color</span> <span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/modus-color</span> <span style="color:#19177c">color</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">special-mode</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">rainbow-mode</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">switch-to-buffer</span> <span style="color:#19177c">buf</span>)))
</span></span></code></pre></div><p>Finally, one function to get the value of a color in the current theme.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/color-value</span> (<span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cond</span>
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">my/doom-p</span>) (<span style="color:#19177c">doom-color</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">my/modus-p</span>) (<span style="color:#19177c">cadr</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">assoc</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cond</span>
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;bg</span>) <span style="color:#19177c">&#39;bg-main</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;fg</span>) <span style="color:#19177c">&#39;fg-main</span>)
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#19177c">bos</span> <span style="color:#ba2121">&#34;base&#34;</span> <span style="color:#19177c">digit</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">symbol-name</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/modus-get-base</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#800">t</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">modus-themes--current-theme-palette</span>))))))
</span></span></code></pre></div><p>Defining the theme itself.</p>
</span></span><span style="display:flex;"><span> ((<span style="color:#00f">eq</span> <span style="color:#19177c">color</span> <span style="color:#19177c">&#39;bg-other</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">color</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">ct-light-p</span> <span style="color:#19177c">color</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ct-edit-lab-l-dec</span> <span style="color:#19177c">color</span> <span style="color:#666">3</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ct-edit-lab-l-dec</span> <span style="color:#19177c">color</span> <span style="color:#666">3</span>))))
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">my/doom-p</span>) (<span style="color:#19177c">my/doom-color</span> <span style="color:#19177c">color</span>))
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">my/modus-p</span>) (<span style="color:#19177c">my/modus-color</span> <span style="color:#19177c">color</span>))))
</span></span></code></pre></div><p>And a few more functions</p>
<h5 id="custom-theme">Custom theme</h5>
<p>So, the custom theme:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">deftheme</span> <span style="color:#19177c">my-theme-1</span>)
</span></span></code></pre></div><p>A macro to simplify defining custom colors.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defvar</span> <span style="color:#19177c">my/my-theme-update-color-params</span> <span style="color:#800">nil</span>)
@ -1347,6 +1433,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/update-my-theme</span>))))
</span></span></code></pre></div><p>This macro puts lambdas to <code>my/my-theme-update-colors-hook</code> that updates faces in <code>my-theme-1</code>. Now I have to call this hook:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/update-my-theme</span> (<span style="color:#008000">&amp;rest</span> <span style="color:#19177c">_</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#19177c">for</span> (<span style="color:#19177c">face</span> <span style="color:#666">.</span> <span style="color:#19177c">values</span>) <span style="color:#19177c">in</span> <span style="color:#19177c">my/my-theme-update-color-params</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span> (<span style="color:#19177c">custom-theme-set-faces</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">&#39;my-theme-1</span>
@ -1357,8 +1444,6 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">unless</span> <span style="color:#19177c">my/is-termux</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#19177c">&#39;load-theme</span> <span style="color:#008000">:after</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/update-my-theme</span>)
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (when (fboundp &#39;doom-color)</span>
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (my/update-my-theme))</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;emacs-startup-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/update-my-theme</span>))
</span></span></code></pre></div><p>Defining colors for <code>tab-bar.el</code>:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my/use-colors</span>
@ -1366,6 +1451,18 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> <span style="color:#008000">:foreground</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;yellow</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:underline</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;yellow</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">tab-bar</span> <span style="color:#008000">:background</span> <span style="color:#800">nil</span> <span style="color:#008000">:foreground</span> <span style="color:#800">nil</span>))
</span></span></code></pre></div><h5 id="switch-theme">Switch theme</h5>
<p>The built-in <code>load-theme</code> does not deactivate the previous theme, so here&rsquo;s a function that does that:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/switch-theme</span> (<span style="color:#19177c">theme</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">list</span> (<span style="color:#00f">intern</span> (<span style="color:#00f">completing-read</span> <span style="color:#ba2121">&#34;Load custom theme: &#34;</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapcar</span> <span style="color:#00f">#&#39;symbol-name</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">custom-available-themes</span>))))))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#19177c">for</span> <span style="color:#19177c">enabled-theme</span> <span style="color:#19177c">in</span> <span style="color:#19177c">custom-enabled-themes</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">if</span> (<span style="color:#19177c">not</span> (<span style="color:#008000">or</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">enabled-theme</span> <span style="color:#19177c">&#39;my-theme-1</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">eq</span> <span style="color:#19177c">enabled-theme</span> <span style="color:#19177c">theme</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span> (<span style="color:#19177c">disable-theme</span> <span style="color:#19177c">enabled-theme</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">load-theme</span> <span style="color:#19177c">theme</span> <span style="color:#800">t</span>))
</span></span></code></pre></div><h4 id="dim-inactive-buffers">Dim inactive buffers</h4>
<p>Dim inactive buffers.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">auto-dim-other-buffers</span>
@ -1375,17 +1472,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">auto-dim-other-buffers-mode</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/use-colors</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">auto-dim-other-buffers-face</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:background</span> (<span style="color:#19177c">ct-greaten</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg</span>) <span style="color:#666">3</span>))))
</span></span></code></pre></div><h4 id="toggle-light-dark">Toggle light/dark</h4>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/toggle-dark-light-theme</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">is-dark</span> (<span style="color:#00f">member</span> <span style="color:#19177c">&#39;doom-palenight</span> <span style="color:#19177c">custom-enabled-themes</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> <span style="color:#19177c">is-dark</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">progn</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">load-theme</span> <span style="color:#19177c">&#39;doom-one-light</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">disable-theme</span> <span style="color:#19177c">&#39;doom-palenight</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">load-theme</span> <span style="color:#19177c">&#39;doom-palenight</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">disable-theme</span> <span style="color:#19177c">&#39;doom-one-light</span>))))
</span></span><span style="display:flex;"><span> <span style="color:#008000">:background</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg-other</span>))))
</span></span></code></pre></div><h4 id="ansi-colors">ANSI colors</h4>
<p><code>ansi-color.el</code> is a built-in Emacs package that translates ANSI color escape codes into faces.</p>
<p>It is used by many other packages but doesn&rsquo;t seem to have an integration with <code>doom-themes</code>, so here is one.</p>
@ -4793,8 +4880,8 @@ Didn&rsquo;t work out as I expected, so I&rsquo;ve made <code>org-journal-tags</
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/org-no-ellipsis-in-headlines</span>)))
</span></span></code></pre></div><h4 id="override-colors">Override colors</h4>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my/use-colors</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-block</span> <span style="color:#008000">:background</span> (<span style="color:#19177c">ct-greaten</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg</span>) <span style="color:#666">3</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-block-begin-line</span> <span style="color:#008000">:background</span> (<span style="color:#19177c">ct-greaten</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg</span>) <span style="color:#666">3</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-block</span> <span style="color:#008000">:background</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg-other</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-block-begin-line</span> <span style="color:#008000">:background</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;bg-other</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:foreground</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">&#39;grey</span>)))
</span></span></code></pre></div><h3 id="export">Export</h3>
<h4 id="hugo">Hugo</h4>
@ -8389,10 +8476,9 @@ I&rsquo;ve seen a couple of cases where people would swap their username and ema
</li>
<li><a href="#themes-and-colors">Themes and colors</a>
<ul>
<li><a href="#doom-themes">Doom themes</a></li>
<li><a href="#custom-theme">Custom theme</a></li>
<li><a href="#theme-packages">Theme packages</a></li>
<li><a href="#custom-theme-1">Custom theme</a></li>
<li><a href="#dim-inactive-buffers">Dim inactive buffers</a></li>
<li><a href="#toggle-light-dark">Toggle light/dark</a></li>
<li><a href="#ansi-colors">ANSI colors</a></li>
</ul>
</li>

View file

@ -30,7 +30,7 @@ if [ -d &amp;#34;$HOME/bin&amp;#34; ] ; then export PATH=&amp;#34;$HOME/bin:$PAT
<description>My general desktop environment configuration.
Parts prefixed with (OFF) are not used, but kept for historic purposes. For some reason GitHub&amp;rsquo;s org renderer ignores TODO status, hence such a prefix. Round brackets instead of square ones to prevent GitHub&amp;rsquo;s org renderer from screwing up.
References:
A few cases of literate configuration. A few interesting ways in which literate configuration is used in this file. Global customization Colors My favorite color theme is Palenight (color codes), and I want to have one source of truth for these colors.</description>
A few cases of literate configuration. A few interesting ways in which literate configuration is used in this file. Global customization Colors I used to define color codes here (see previous version of the file), now I just get colors from the current Emacs theme.</description>
</item>
<item>

View file

@ -1,6 +1,6 @@
<!DOCTYPE html>
<html lang=""><head>
<meta name="generator" content="Hugo 0.115.4">
<meta name="generator" content="Hugo 0.116.0">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB