This commit is contained in:
SqrtMinusOne 2025-08-09 12:50:23 +00:00
parent 39b47b7ffc
commit 109ff0c6a9
12 changed files with 773 additions and 329 deletions

View file

@ -202,6 +202,10 @@
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.nix-profile&#34;</span> <span style="color:#666">]</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">XDG_DATA_DIRS</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$XDG_DATA_DIRS</span><span style="color:#ba2121">:</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/.nix-profile/share/applications&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><p>Gradle:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -d <span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin/gradle/gradle-9.0.0&#34;</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">PATH</span><span style="color:#666">=</span><span style="color:#ba2121">&#34;</span><span style="color:#19177c">$HOME</span><span style="color:#ba2121">/bin/gradle/gradle-9.0.0/bin:</span><span style="color:#19177c">$PATH</span><span style="color:#ba2121">&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
</span></span></code></pre></div><h4 id="npm">npm</h4>
<p>npm is especially cumbersome, for instance because by default it tries to install packages to <code>/gnu/store/</code>.</p>
<p>In principle, one can set a prefix like this:</p>

View file

@ -278,9 +278,9 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">x-scheme-handler/http</span><span style="color:#666">=</span><span style="color:#ba2121">firefox.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">x-scheme-handler/https</span><span style="color:#666">=</span><span style="color:#ba2121">firefox.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">x-scheme-handler/tg</span><span style="color:#666">=</span><span style="color:#ba2121">userapp-Telegram Desktop-7PVWF1.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/png</span><span style="color:#666">=</span><span style="color:#ba2121">com.interversehq.qView.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/jpg</span><span style="color:#666">=</span><span style="color:#ba2121">com.interversehq.qView.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/jpeg</span><span style="color:#666">=</span><span style="color:#ba2121">com.interversehq.qView.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/png</span><span style="color:#666">=</span><span style="color:#ba2121">feh.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/jpg</span><span style="color:#666">=</span><span style="color:#ba2121">feh.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">image/jpeg</span><span style="color:#666">=</span><span style="color:#ba2121">feh.desktop</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">application/pdf</span><span style="color:#666">=</span><span style="color:#ba2121">org.pwmt.zathura.desktop</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">[Added Associations]</span>
@ -627,19 +627,25 @@
</span></span></code></pre></div><h4 id="the-monitor-list">The monitor list</h4>
<p>The second piece of the puzzle is getting the monitor list in the right order.</p>
<p>While it is possible to retrieve the monitor list from <code>exwm-randr-workspace-monitor-plist</code>, this won&rsquo;t scale well beyond two monitors, mainly because changing this variable may screw up the order.</p>
<p>So the easiest way is to just define the variable like 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/exwm-xrandr-monitor-list</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">split-string</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-trim</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shell-command-to-string</span> <span style="color:#ba2121">&#34;xrandr --listmonitors | grep &#39;+&#39; | awk {&#39;print $4&#39;}
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">&#34;</span>))))
</span></span></code></pre></div><p>So the easiest way is to just define the variable like 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">setq</span> <span style="color:#19177c">my/exwm-monitor-list</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">pcase</span> (<span style="color:#00f">system-name</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;indigo&#34;</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span> <span style="color:#ba2121">&#34;DVI-D-0&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;violet&#34;</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span> <span style="color:#ba2121">&#34;DP-1&#34;</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">&#34;violet&#34;</span> (<span style="color:#19177c">my/exwm-xrandr-monitor-list</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">_</span> <span style="color:#666">&#39;</span>(<span style="color:#800">nil</span>))))
</span></span></code></pre></div><p>If you are changing the RandR configuration on the fly, this variable will also need to be changed, but for now, I don&rsquo;t have such a necessity.</p>
<p>A function to get the current monitor:</p>
</span></span></code></pre></div><p>A function to get the current monitor:</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/exwm-get-current-monitor</span> ()
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;Return the current monitor name or nil.&#34;</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cl-position</span> (<span style="color:#00f">selected-frame</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">exwm-workspace--list</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">exwm-workspace--list</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#00f">car</span> <span style="color:#19177c">my/exwm-monitor-list</span>)))
</span></span></code></pre></div><p>And a function to cycle the monitor list in either direction:</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/exwm-get-other-monitor</span> (<span style="color:#19177c">dir</span>)
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;Cycle the monitor list in the direction DIR.
@ -665,6 +671,7 @@
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/exwm-last-workspaces-clear</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">mouse-autoselect-window</span> <span style="color:#800">nil</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-workspace-switch</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#19177c">with</span> <span style="color:#19177c">other-monitor</span> <span style="color:#00f">=</span> (<span style="color:#19177c">my/exwm-get-other-monitor</span> (<span style="color:#008000">or</span> <span style="color:#19177c">dir</span> <span style="color:#19177c">&#39;right</span>))
</span></span><span style="display:flex;"><span> <span style="color:#19177c">for</span> <span style="color:#19177c">i</span> <span style="color:#19177c">in</span> (<span style="color:#00f">append</span> <span style="color:#19177c">my/exwm-last-workspaces</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">i</span> <span style="color:#19177c">from</span> <span style="color:#666">0</span>
@ -674,7 +681,7 @@
</span></span><span style="display:flex;"><span> (<span style="color:#00f">string-equal</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#19177c">i</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">other-monitor</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#19177c">i</span>)))
</span></span><span style="display:flex;"><span> <span style="color:#008000">return</span> <span style="color:#19177c">i</span>))))
</span></span><span style="display:flex;"><span> <span style="color:#008000">return</span> <span style="color:#19177c">i</span>)))))
</span></span></code></pre></div><p>I bind this function to <code>s-q</code>, as I&rsquo;m used from i3.</p>
<h4 id="move-the-workspace-to-another-monitor">Move the workspace to another monitor</h4>
<p>Now, moving the workspace to another monitor.</p>
@ -717,6 +724,18 @@
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/exwm-switch-to-other-monitor</span> <span style="color:#19177c">dir</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#008000">while</span> (<span style="color:#19177c">windmove-find-other-window</span> <span style="color:#19177c">opposite-dir</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span> (<span style="color:#19177c">windmove-do-window-select</span> <span style="color:#19177c">opposite-dir</span>))))))
</span></span></code></pre></div><h4 id="update-the-monitor-list">Update the monitor list</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/exwm-refresh-monitors</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">setq</span> <span style="color:#19177c">my/exwm-monitor-list</span> (<span style="color:#19177c">my/exwm-xrandr-monitor-list</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">i</span> <span style="color:#19177c">from</span> <span style="color:#666">0</span> <span style="color:#19177c">to</span> (<span style="color:#00f">1-</span> <span style="color:#19177c">exwm-workspace-number</span>)
</span></span><span style="display:flex;"><span> <span style="color:#19177c">for</span> <span style="color:#19177c">monitor</span> <span style="color:#00f">=</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">i</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">if</span> (<span style="color:#19177c">not</span> (<span style="color:#00f">member</span> <span style="color:#19177c">monitor</span> <span style="color:#19177c">my/exwm-monitor-list</span>))
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setf</span> (<span style="color:#00f">plist-get</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#19177c">i</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#00f">car</span> <span style="color:#19177c">my/exwm-monitor-list</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-randr-refresh</span>))
</span></span></code></pre></div><h3 id="completions">Completions</h3>
<p>Setting up some completion interfaces that fit particularly well to use with EXWM. While rofi also works, I want to use Emacs functionality wherever possible to have one completion interface everywhere.</p>
<h4 id="ivy-posframe">ivy-posframe</h4>
@ -1213,7 +1232,8 @@
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">start-process-shell-command</span> <span style="color:#ba2121">&#34;xrandr&#34;</span> <span style="color:#800">nil</span> <span style="color:#ba2121">&#34;~/bin/scripts/screen-layout&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">&#34;violet&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#ba2121">&#34;DP-1&#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#666">`</span>(<span style="color:#666">2</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#666">3</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">exwm-randr-workspace-monitor-plist</span> <span style="color:#666">`</span>(<span style="color:#666">2</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#666">3</span> <span style="color:#666">,</span><span style="color:#19177c">my/exwm-another-monitor</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/exwm-refresh-monitors</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">exwm-workspace-warp-cursor</span> <span style="color:#800">t</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mouse-autoselect-window</span> <span style="color:#800">t</span>)
@ -4827,7 +4847,7 @@
</tr>
<tr>
<td>desktop-misc</td>
<td>qview</td>
<td>geeqie</td>
<td>Image viewer</td>
</tr>
<tr>
@ -4960,6 +4980,7 @@
<li><a href="#switch-to-another-monitor">Switch to another monitor</a></li>
<li><a href="#move-the-workspace-to-another-monitor">Move the workspace to another monitor</a></li>
<li><a href="#windmove-between-monitors">Windmove between monitors</a></li>
<li><a href="#update-the-monitor-list">Update the monitor list</a></li>
</ul>
</li>
<li><a href="#completions">Completions</a>

File diff suppressed because it is too large Load diff

View file

@ -180,7 +180,7 @@
</span></span><span style="display:flex;"><span><span style="color:#7d9029">remoteuser</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;mail-username()&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">remotepass</span> <span style="color:#666">=</span> <span style="color:#ba2121">&lt;&lt;mail-password()&gt;&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">remoteport</span> <span style="color:#666">=</span> <span style="color:#ba2121">993</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">cert_fingerprint</span> <span style="color:#666">=</span> <span style="color:#ba2121">07bdfab4eaa79f5fc8ab93cd9ad0ba025ea0b4e5</span>
</span></span><span style="display:flex;"><span><span style="color:#7d9029">cert_fingerprint</span> <span style="color:#666">=</span> <span style="color:#ba2121">416b1f7f18d68a65f5e75bb1af5d65ea5e20739e</span>
</span></span></code></pre></div><h2 id="notmuch">Notmuch</h2>
<table>
<thead>
@ -460,10 +460,12 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
</span></span><span style="display:flex;"><span>port <span style="color:#666">465</span>
</span></span><span style="display:flex;"><span>tls on
</span></span><span style="display:flex;"><span>tls_starttls off
</span></span><span style="display:flex;"><span>tls_fingerprint <span style="color:#666">87</span>:<span style="color:#666">1</span>F:<span style="color:#666">17</span>:<span style="color:#666">1</span>C:<span style="color:#666">12</span>:A4:DE:<span style="color:#666">82</span>:<span style="color:#666">6</span>F:CF:E5:E6:<span style="color:#666">9</span>C:EE:F8:<span style="color:#666">0</span>B:D1:<span style="color:#666">7</span>D:B2:<span style="color:#666">00</span>:F9:<span style="color:#666">7</span>B:<span style="color:#666">2</span>C:<span style="color:#666">96</span>:<span style="color:#666">21</span>:<span style="color:#666">65</span>:FA:<span style="color:#666">0</span>A:F5:<span style="color:#666">24</span>:<span style="color:#666">8</span>E:<span style="color:#666">0</span>E
</span></span><span style="display:flex;"><span>tls_fingerprint <span style="color:#666">69</span>:E9:<span style="color:#666">61</span>:A0:DE:<span style="color:#666">8</span>B:AD:F2:C0:<span style="color:#666">90</span>:<span style="color:#666">2</span>F:<span style="color:#666">55</span>:F9:D6:<span style="color:#666">80</span>:<span style="color:#666">7</span>F:<span style="color:#666">0</span>B:AB:<span style="color:#666">7</span>E:<span style="color:#666">1</span>B:FD:<span style="color:#666">56</span>:C0:EE:<span style="color:#666">35</span>:ED:E2:EB:DD:<span style="color:#666">80</span>:AD:C3
</span></span><span style="display:flex;"><span>from pvkorytov@etu.ru
</span></span><span style="display:flex;"><span>user pvkorytov
</span></span><span style="display:flex;"><span>passwordeval <span style="color:#ba2121">&#34;pass show Job/Digital/Email/pvkorytov@etu.ru | head -n 1&#34;</span>
</span></span></code></pre></div><p>To get a fingerprint:</p>
<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>msmtp --serverinfo --tls --tls-certcheck<span style="color:#666">=</span>off -a pvkorytov
</span></span></code></pre></div><h2 id="emacs">Emacs</h2>
<table>
<thead>
@ -500,8 +502,6 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">evil-collection-notmuch-toggle-tag</span> <span style="color:#ba2121">&#34;unread&#34;</span> <span style="color:#ba2121">&#34;search&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">ignore</span>))
</span></span></code></pre></div><p>And notmuch settings:</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">notmuch</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/is-termux</span>)
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; :ensure nil</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">notmuch</span> <span style="color:#19177c">notmuch-search</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/use-colors</span>
@ -728,6 +728,11 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/password-store-get</span> <span style="color:#ba2121">&#34;Job/Digital/Email/pvkorytov@etu.ru&#34;</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;notmuch-mua-send-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/ensure-password</span>)
</span></span></code></pre></div><h3 id="org-intergration">Org intergration</h3>
<p><a href="https://git.sr.ht/~tarsius/ol-notmuch">ol-notmuch</a> is a package that adds Org links to notmuch messages.</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">ol-notmuch</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org</span> <span style="color:#19177c">notmuch</span>))
</span></span></code></pre></div><h2 id="mailcap">mailcap</h2>
<p>mailcap file is a file which defines how to read to different MIME types. Notmuch also uses it, so why not keep it here.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>audio/*; mpc add %s
@ -776,6 +781,7 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
<li><a href="#warn-if-no-subject">Warn if no subject</a></li>
<li><a href="#capitalize-formal-pronous">Capitalize formal pronous</a></li>
<li><a href="#ensure-password-is-loaded">Ensure password is loaded</a></li>
<li><a href="#org-intergration">Org intergration</a></li>
</ul>
</li>
<li><a href="#mailcap">mailcap</a></li>

View file

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

View file

@ -1761,7 +1761,7 @@ I&amp;rsquo;ve seen a couple of cases where people would swap their username and
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; f&lt;span style=&#34;color:#666&#34;&gt;.&lt;/span&gt;write(srt_res)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;__name__&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; transcribe()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here&amp;rsquo;s the corresponding &lt;code&gt;requirements.txt&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vosk

View file

@ -158,7 +158,7 @@
</span></span><span style="display:flex;"><span> f<span style="color:#666">.</span>write(srt_res)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> __name__ <span style="color:#666">==</span> <span style="color:#ba2121">&#39;__main__&#39;</span>:
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#19177c">__name__</span> <span style="color:#666">==</span> <span style="color:#ba2121">&#39;__main__&#39;</span>:
</span></span><span style="display:flex;"><span> transcribe()
</span></span></code></pre></div><p>Here&rsquo;s the corresponding <code>requirements.txt</code>:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>vosk

View file

@ -1268,7 +1268,7 @@ I&amp;rsquo;ve seen a couple of cases where people would swap their username and
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; f&lt;span style=&#34;color:#666&#34;&gt;.&lt;/span&gt;write(srt_res)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;__name__&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; transcribe()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here&amp;rsquo;s the corresponding &lt;code&gt;requirements.txt&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vosk

View file

@ -1 +1 @@
@font-face{font-family:inconsolata lgc;font-style:normal;font-weight:400;src:local(""),url(fonts/inconsolatalgc-scaled-down.woff2)format("woff2")}#content a,.nav-link{color:#dc3545;text-decoration:none}#content a *,.nav-link *{color:#dc3545}#content a:hover,.nav-link:hover{color:#dc3545;text-decoration:underline}#footer a,.navbar-brand{color:#222;text-decoration:none}#footer a *,.navbar-brand *{color:#222}#footer a:hover,.navbar-brand:hover{color:#222;text-decoration:underline}#content table td,#content table th{border:1px solid #ccc;padding:6px 12px;text-align:left}*{color:#222;font-family:inconsolata,inconsolata lgc;line-height:1.2}.text-ru{font-family:inconsolata lgc,inconsolata}.root{display:flex;flex-direction:column}.table-of-contents{order:0}.table-of-contents ul{padding-left:1rem!important}.table-of-contents ul>li{margin-left:.3em!important}.table-of-contents a.active{font-weight:700}.table-of-contents a:hover{cursor:pointer}@media(max-width:578px){.table-of-contents{align-self:center}}.container{max-width:750px;order:1}#title-large-screen{display:none}#title-small-screen{margin-left:15px!important}@media(max-width:578px){#title-small-screen{align-self:center}}@media(max-width:1125px){.root{margin-right:auto;margin-left:auto;width:100%;max-width:750px}.table-of-contents{padding-left:15px;padding-right:15px}}@media(min-width:1275px){.root{margin-left:calc((100vw - 750px)/2)}#actual-content{margin:0}}@media(min-width:1125px){.root{flex-direction:row}.table-of-contents{width:350px;order:2;position:sticky;top:0;padding:1em;align-self:start;scrollbar-width:thin}.table-of-contents .table-of-contents-text{overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 155px)}.table-of-contents .hidden{display:none}#title-small-screen{display:none}#title-large-screen{display:block}}.navbar-brand{font-size:2rem}#content p{margin-bottom:.6rem}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{font-size:medium;font-weight:700;margin:1rem 0 .6rem}#content h1{font-size:1.8rem}#content h2{font-size:1.6rem}#content h3{font-size:1.4rem}#content h4{font-size:1.2rem}#content img{display:block;margin:1rem auto;max-width:100%}#content a>img{margin:1rem 4px 1rem 0!important}#content .avatar>img{border-radius:50%;float:right;margin:-8px 0 0 16px;height:90px;width:90px}#content .webbuttons{display:flex;flex-direction:row;gap:5px}#content .webbuttons>figure{margin:0}#content ol{counter-reset:list;list-style:none;padding-left:2rem}#content ol>li{display:table-row}#content ol>li:before{content:"[" counter(list,decimal)"] ";counter-increment:list;display:table-cell;text-align:right;padding-right:.5em}#content .container>ol,#content .footnotes>ol{padding-left:0}#content ul{list-style:inside;padding-left:2rem}#content ul>li{list-style-position:outside;margin-left:1em}#content .container>ul,#content .footnotes>ul{padding-left:0}#content table{margin:1rem auto;width:100%}#content table th{font-weight:700}#content table tr:nth-child(2n){background-color:#f8f8f8}#content .table-no-header th{font-weight:400}#content .table-no-header table{margin:0 0 .5rem}#content blockquote{border-left:4px solid;font-style:italic;margin:1rem 0;padding:8px}#content code{color:#222;background-color:#f8f8f8;border:1px solid #ccc;border-radius:10%;padding:0 4px;font-family:monospace!important}#content code span{font-family:monospace}#content pre code{all:unset;font-size:95%}#content .highlight{margin:1rem auto;border:1px solid #ccc}#content .highlight>pre{padding:8px;margin-bottom:0}#content .abstract{margin-top:12px;margin-bottom:12px;padding-left:72px;padding-right:72px}#content .abstract p:first-of-type::before{content:"Abstract: ";font-weight:700}#content span.underline{text-decoration:underline}
@font-face{font-family:inconsolata lgc;font-style:normal;font-weight:400;src:local(""),url(fonts/inconsolatalgc-scaled-down.woff2)format("woff2")}#content a,.nav-link{color:#dc3545;text-decoration:none}#content a *,.nav-link *{color:#dc3545}#content a:hover,.nav-link:hover{color:#dc3545;text-decoration:underline}#footer a,.navbar-brand{color:#222;text-decoration:none}#footer a *,.navbar-brand *{color:#222}#footer a:hover,.navbar-brand:hover{color:#222;text-decoration:underline}#content table td,#content table th{border:1px solid #ccc;padding:6px 12px;text-align:left}*{color:#222;font-family:inconsolata,inconsolata lgc;line-height:1.2}.text-ru{font-family:inconsolata lgc,inconsolata}.root{display:flex;flex-direction:column}.table-of-contents{order:0}.table-of-contents ul{padding-left:1rem !important}.table-of-contents ul>li{margin-left:.3em !important}.table-of-contents a.active{font-weight:700}.table-of-contents a:hover{cursor:pointer}@media(max-width:578px){.table-of-contents{align-self:center}}.container{max-width:750px;order:1}#title-large-screen{display:none}#title-small-screen{margin-left:15px !important}@media(max-width:578px){#title-small-screen{align-self:center}}@media(max-width:1125px){.root{margin-right:auto;margin-left:auto;width:100%;max-width:750px}.table-of-contents{padding-left:15px;padding-right:15px}}@media(min-width:1275px){.root{margin-left:calc((100vw - 750px)/2)}#actual-content{margin:0}}@media(min-width:1125px){.root{flex-direction:row}.table-of-contents{width:350px;order:2;position:sticky;top:0;padding:1em;align-self:start;scrollbar-width:thin}.table-of-contents .table-of-contents-text{overflow-x:hidden;overflow-y:auto;max-height:calc(100vh - 155px)}.table-of-contents .hidden{display:none}#title-small-screen{display:none}#title-large-screen{display:block}}.navbar-brand{font-size:2rem}#content p{margin-bottom:.6rem}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{font-size:medium;font-weight:700;margin:1rem 0 .6rem}#content h1{font-size:1.8rem}#content h2{font-size:1.6rem}#content h3{font-size:1.4rem}#content h4{font-size:1.2rem}#content img{display:block;margin:1rem auto;max-width:100%}#content a>img{margin:1rem 4px 1rem 0 !important}#content .avatar>img{border-radius:50%;float:right;margin:-8px 0 0 16px;height:90px;width:90px}#content .webbuttons{display:flex;flex-direction:row;gap:5px}#content .webbuttons>figure{margin:0}#content ol{counter-reset:list;list-style:none;padding-left:2rem}#content ol>li{display:table-row}#content ol>li:before{content:"[" counter(list,decimal)"] ";counter-increment:list;display:table-cell;text-align:right;padding-right:.5em}#content .container>ol,#content .footnotes>ol{padding-left:0}#content ul{list-style:inside;padding-left:2rem}#content ul>li{list-style-position:outside;margin-left:1em}#content .container>ul,#content .footnotes>ul{padding-left:0}#content table{margin:1rem auto;width:100%}#content table th{font-weight:700}#content table tr:nth-child(2n){background-color:#f8f8f8}#content .table-no-header th{font-weight:400}#content .table-no-header table{margin:0 0 .5rem}#content blockquote{border-left:4px solid;font-style:italic;margin:1rem 0;padding:8px}#content code{color:#222;background-color:#f8f8f8;border:1px solid #ccc;border-radius:10%;padding:0 4px;font-family:monospace !important}#content code span{font-family:monospace}#content pre code{all:unset;font-size:95%}#content .highlight{margin:1rem auto;border:1px solid #ccc}#content .highlight>pre{padding:8px;margin-bottom:0}#content .abstract{margin-top:12px;margin-bottom:12px;padding-left:72px;padding-right:72px}#content .abstract p:first-of-type::before{content:"Abstract: ";font-weight:700}#content span.underline{text-decoration:underline}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 65 KiB