mirror of
https://github.com/SqrtMinusOne/sqrtminusone.github.io.git
synced 2025-12-10 15:53:03 +03:00
deploy: 58890541c4
This commit is contained in:
parent
23dab61452
commit
a399736a5f
67 changed files with 3337 additions and 3569 deletions
7
404.html
7
404.html
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
135
_cv/index.html
135
_cv/index.html
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -98,82 +91,82 @@
|
|||
<p><strong>Pursuing a degree of Candidate of Engineering Sciences</strong> (2022 - current)</p>
|
||||
<div class="table-no-header">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Specialty</th>
|
||||
<th>2.3.5 Mathematical and Software Support For Computer Systems, Complexes and Computer Networks</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Supervisor</td>
|
||||
<td>Ivan I. Kholod</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Department</td>
|
||||
<td>Department of Information Systems</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Faculty</td>
|
||||
<td>Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dissertation title</td>
|
||||
<td>Examination of Application of Federated Learning For Text Analysis in Recommender Systems</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Specialty</th>
|
||||
<th style="text-align: left">2.3.5 Mathematical and Software Support For Computer Systems, Complexes and Computer Networks</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Supervisor</td>
|
||||
<td style="text-align: left">Ivan I. Kholod</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Department</td>
|
||||
<td style="text-align: left">Department of Information Systems</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Faculty</td>
|
||||
<td style="text-align: left">Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Dissertation title</td>
|
||||
<td style="text-align: left">Examination of Application of Federated Learning For Text Analysis in Recommender Systems</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr />
|
||||
<p><strong>Master’s Degree</strong> (2020 - 2022)</p>
|
||||
<div class="table-no-header">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Specialty</th>
|
||||
<th>09.04.04 Software Engineering</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Department</td>
|
||||
<td>Department of Software Engineering and Computer Applications</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Faculty</td>
|
||||
<td>Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Thesis title</td>
|
||||
<td>Application of Text Analysis Methods to Recommend Educational Trajectories</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Specialty</th>
|
||||
<th style="text-align: left">09.04.04 Software Engineering</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Department</td>
|
||||
<td style="text-align: left">Department of Software Engineering and Computer Applications</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Faculty</td>
|
||||
<td style="text-align: left">Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Thesis title</td>
|
||||
<td style="text-align: left">Application of Text Analysis Methods to Recommend Educational Trajectories</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr />
|
||||
<p><strong>Bachelor’s Degree</strong> (2016 - 2020)</p>
|
||||
<div class="table-no-header">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Specialty</th>
|
||||
<th>09.03.04 Software Engineering</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Department</td>
|
||||
<td>Department of Software Engineering and Computer Applications</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Faculty</td>
|
||||
<td>Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Thesis title</td>
|
||||
<td>Development of the Software of Generation of Data Accounting System Mockups</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Specialty</th>
|
||||
<th style="text-align: left">09.03.04 Software Engineering</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Department</td>
|
||||
<td style="text-align: left">Department of Software Engineering and Computer Applications</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Faculty</td>
|
||||
<td style="text-align: left">Faculty of Computer Science and Technology</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Thesis title</td>
|
||||
<td style="text-align: left">Development of the Software of Generation of Data Accounting System Mockups</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 id="professional-history">Professional History</h2>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/categories/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -208,16 +201,16 @@
|
|||
</span></span><span style="display:flex;"><span><span style="color:#008000">export</span> <span style="color:#19177c">MANPATH</span><span style="color:#666">=</span><span style="color:#ba2121">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#19177c">MANPATH</span><span style="color:#008000;font-weight:bold">:-$(</span>manpath<span style="color:#008000;font-weight:bold">)</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#ba2121">:</span><span style="color:#19177c">$NPM_PACKAGES</span><span style="color:#ba2121">/share/man"</span>
|
||||
</span></span></code></pre></div><h3 id="xresources">XResources</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>xrdb</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">xrdb</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<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> -z <span style="color:#ba2121">"</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">"</span> <span style="color:#666">]</span>; <span style="color:#008000;font-weight:bold">then</span>
|
||||
</span></span><span style="display:flex;"><span> xrdb ~/.Xresources
|
||||
|
|
@ -282,16 +275,16 @@
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> /etc/bashrc
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
|
||||
</span></span></code></pre></div><table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>xhost</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">xhost</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Allow other users to access X server. Necessary for stuff like aw-watcher-window.</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>xhost +local:root > /dev/null 2>&<span style="color:#666">1</span>
|
||||
|
|
@ -435,18 +428,18 @@
|
|||
</span></span><span style="display:flex;"><span><span style="color:#666">}</span>
|
||||
</span></span></code></pre></div><h2 id="fish">Fish</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>fish</td>
|
||||
<td>An alternative non POSIX-compliant shell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">fish</td>
|
||||
<td style="text-align: left">An alternative non POSIX-compliant shell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://fishshell.com/">Fish shell</a> is a non-POSIX-compliant shell, which offers some fancy UI & UX features.</p>
|
||||
<p>Launch starship</p>
|
||||
|
|
@ -474,16 +467,16 @@
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">alias </span><span style="color:#19177c">ll</span><span style="color:#666">=</span><span style="color:#ba2121">"ls -h"</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
|
||||
</span></span></code></pre></div><table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>dt-colorscripts</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">dt-colorscripts</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Launch a random <a href="https://gitlab.com/dwt1/shell-color-scripts">DT’s colorscript</a> unless ran inside tmux or Emacs.</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fish" data-lang="fish"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> ! test <span style="color:#7d9029">-n</span> <span style="color:#ba2121">"</span><span style="color:#19177c">$TMUX</span><span style="color:#ba2121">"</span>; <span style="color:#008000;font-weight:bold">and</span> ! test <span style="color:#7d9029">-n</span> <span style="color:#ba2121">"</span><span style="color:#19177c">$IS_EMACS</span><span style="color:#ba2121">"</span>; <span style="color:#008000;font-weight:bold">and</span> <span style="color:#008000">type</span> <span style="color:#7d9029">-q</span> colorscript
|
||||
|
|
@ -544,32 +537,32 @@
|
|||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">end</span>
|
||||
</span></span></code></pre></div><h2 id="nushell">Nushell</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>nushell-bin</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">nushell-bin</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>A structured shell. I don’t use it as of now, but perhaps one day.</p>
|
||||
<h2 id="starship-prompt">Starship prompt</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>starship-bin</td>
|
||||
<td>my prompt of choice</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">starship-bin</td>
|
||||
<td style="text-align: left">my prompt of choice</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://starship.rs/">Starship</a> is a nice cross-shell prompt, written in Rust.</p>
|
||||
<p>References:</p>
|
||||
|
|
@ -654,19 +647,19 @@
|
|||
</span></span><span style="display:flex;"><span>symbol = <span style="color:#ba2121">" "</span>
|
||||
</span></span></code></pre></div><h2 id="tmux">Tmux</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>tmux</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>python-tmuxp</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">tmux</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">python-tmuxp</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://github.com/tmux/tmux">tmux</a> is my terminal multiplexer of choice.</p>
|
||||
<p>It provides pretty sane defaults, so the config is not too large. I rebind the prefix to <code>C-a</code> though.</p>
|
||||
|
|
@ -702,16 +695,16 @@
|
|||
<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>bind r source-file ~/.tmux.conf
|
||||
</span></span></code></pre></div><h3 id="copy-to-clipboard">Copy to clipboard</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>xclip</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">xclip</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Make tmux copy to clipboard as well</p>
|
||||
<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>bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel <span style="color:#ba2121">"xclip -selection clipboard -i"</span>
|
||||
|
|
@ -741,16 +734,16 @@
|
|||
<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>source ~/.tmux.line.conf
|
||||
</span></span></code></pre></div><h2 id="alacritty">Alacritty</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>alacritty</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">alacritty</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://github.com/alacritty/alacritty">Alacritty</a> is a GPU-accelerated terminal emulator. I haven’t found it to be an inch faster than st, but <code>yml</code> configuration is way more convenient than patches.</p>
|
||||
<p>References:</p>
|
||||
|
|
@ -827,18 +820,18 @@
|
|||
</span></span></span><span style="display:flex;"><span><span style="color:#bbb"> </span>- {<span style="color:#bbb"> </span><span style="color:#008000;font-weight:bold">key: NumpadSubtract, mods: Control, action</span>:<span style="color:#bbb"> </span>DecreaseFontSize }<span style="color:#bbb">
|
||||
</span></span></span></code></pre></div><h2 id="bottom">Bottom</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>bottom-bin</td>
|
||||
<td>resource monitor</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">bottom-bin</td>
|
||||
<td style="text-align: left">resource monitor</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://github.com/ClementTsang/bottom">bottom</a> is a TUI system monitor.</p>
|
||||
<p>See the <a href="https://github.com/ClementTsang/bottom/blob/master/sample_configs/default_config.toml">default config</a> for the avaliable options.</p>
|
||||
|
|
@ -859,106 +852,106 @@
|
|||
</span></span><span style="display:flex;"><span>keymap_mode = <span style="color:#ba2121">"vim-insert"</span>
|
||||
</span></span></code></pre></div><h2 id="various-console-applications">Various console applications</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>ncurses</td>
|
||||
<td>Provides stuff like <code>clear</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>exa</td>
|
||||
<td><code>ls</code> replacement, written in Rust</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bat</td>
|
||||
<td><code>cat</code> clone with syntax highlighting</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>htop</td>
|
||||
<td>Interactive process viewer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nethogs</td>
|
||||
<td>A tool to group processed by used bandwidth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>osync</td>
|
||||
<td>rsync wrapper</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>neofetch</td>
|
||||
<td>Fetch system info</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>fzf</td>
|
||||
<td>fuzzy finder</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p7zip</td>
|
||||
<td>archiver</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>password-store</td>
|
||||
<td>CLI password manager</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>zip</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unzip</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>jmtpfs</td>
|
||||
<td>A tool to mount MTP devices (e.g. Android)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>tokei</td>
|
||||
<td>Count lines of code</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sshfs</td>
|
||||
<td>Mount stuff over SSH</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>lftp</td>
|
||||
<td>File transfer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>git-lfs</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>glibc-locales</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>direnv</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>jless-bin</td>
|
||||
<td>JSON viewer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>megacmd</td>
|
||||
<td>mega.nz client</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ncdu</td>
|
||||
<td>disk usage analyzer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>openssl</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">ncurses</td>
|
||||
<td style="text-align: left">Provides stuff like <code>clear</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">exa</td>
|
||||
<td style="text-align: left"><code>ls</code> replacement, written in Rust</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">bat</td>
|
||||
<td style="text-align: left"><code>cat</code> clone with syntax highlighting</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">htop</td>
|
||||
<td style="text-align: left">Interactive process viewer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">nethogs</td>
|
||||
<td style="text-align: left">A tool to group processed by used bandwidth</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">osync</td>
|
||||
<td style="text-align: left">rsync wrapper</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">neofetch</td>
|
||||
<td style="text-align: left">Fetch system info</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">fzf</td>
|
||||
<td style="text-align: left">fuzzy finder</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">p7zip</td>
|
||||
<td style="text-align: left">archiver</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">password-store</td>
|
||||
<td style="text-align: left">CLI password manager</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">zip</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">unzip</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">jmtpfs</td>
|
||||
<td style="text-align: left">A tool to mount MTP devices (e.g. Android)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">tokei</td>
|
||||
<td style="text-align: left">Count lines of code</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">sshfs</td>
|
||||
<td style="text-align: left">Mount stuff over SSH</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">lftp</td>
|
||||
<td style="text-align: left">File transfer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">git-lfs</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">glibc-locales</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">direnv</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">jless-bin</td>
|
||||
<td style="text-align: left">JSON viewer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">megacmd</td>
|
||||
<td style="text-align: left">mega.nz client</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">ncdu</td>
|
||||
<td style="text-align: left">disk usage analyzer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">openssl</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="ripgrep-config">ripgrep config</h3>
|
||||
<p>Occasionally I can’t exclude certain files from ripgrep via the VCS settings, so here is a simple config to ignore certain files globally.</p>
|
||||
|
|
@ -986,20 +979,20 @@
|
|||
<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>autocommit <repository> [-F]
|
||||
</span></span></code></pre></div><p>Environment:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Variable</th>
|
||||
<th>Description</th>
|
||||
<th>Default value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>TIMEOUT_MIN</code></td>
|
||||
<td>Default timeout</td>
|
||||
<td>60</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Variable</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
<th style="text-align: left">Default value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>TIMEOUT_MIN</code></td>
|
||||
<td style="text-align: left">Default timeout</td>
|
||||
<td style="text-align: left">60</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Here’s roughly what the script is doing:</p>
|
||||
<ul>
|
||||
|
|
@ -1093,61 +1086,61 @@
|
|||
<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>pkg update
|
||||
</span></span></code></pre></div><p>Then install the following packages:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>yadm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gnupg</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>git</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>which</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>starship</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>atuin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vim</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>tmux</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>emacs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>make</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>clang</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ripgrep</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>cmake</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gperf</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>iproute2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>wakatime-cli</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Package</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">yadm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">gnupg</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">git</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">which</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">starship</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">atuin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">vim</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">tmux</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">emacs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">make</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">clang</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">ripgrep</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">cmake</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">gperf</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">iproute2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">wakatime-cli</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Run</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>termux-setup-storage
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -546,72 +539,72 @@
|
|||
<p>Don’t forget to install <code>JetBrainsMono Nerd Font</code>.</p>
|
||||
<h2 id="misc-software-and-notes">Misc software & notes</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>patchelf</td>
|
||||
<td>A program to modify existsing ELF executables</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>glibc</td>
|
||||
<td>A lot of stuff, including ELF interpeter and <code>ldd</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>tor-client</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>torsocks</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>vnstat</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>nss-certs</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">patchelf</td>
|
||||
<td style="text-align: left">A program to modify existsing ELF executables</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">glibc</td>
|
||||
<td style="text-align: left">A lot of stuff, including ELF interpeter and <code>ldd</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">tor-client</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">torsocks</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">vnstat</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">nss-certs</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="openvpn">OpenVPN</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>openvpn</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>openvpn-update-resolve-conf</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>openresolv</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>system</td>
|
||||
<td>vpnc</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">openvpn</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">openvpn-update-resolve-conf</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">openresolv</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">system</td>
|
||||
<td style="text-align: left">vpnc</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Update <span class="timestamp-wrapper"><span class="timestamp">[2023-06-29 Thu]</span></span>: My censors seem to be putting sticks in the wheels of OpenVPN… Switched to Wireguard for now. It can be configured with Network Manager.</p>
|
||||
<p>I’m not sure how to properly spin up VPN on Guix, so here is what ended I’m doing after some trial and error.</p>
|
||||
|
|
@ -787,18 +780,18 @@ Also not necessary now. Just <code>herd stop vpn</code> and <code>sudo pkill vpn
|
|||
</span></span><span style="display:flex;"><span>sudo herd restart libvirtd
|
||||
</span></span></code></pre></div><h3 id="wakatime-cli">wakatime-cli</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Note</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>TODO</td>
|
||||
<td>Package this for Guix</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Note</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">TODO</td>
|
||||
<td style="text-align: left">Package this for Guix</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Before I figure out how to package this for Guix:</p>
|
||||
<ul>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/configs/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -12,42 +12,42 @@
|
|||
<link>https://sqrtminusone.xyz/configs/console/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/console/</guid>
|
||||
<description>No matter from which side you approach penguins, more always come from behind
A friend of mine Colors Noweb function to get colors.
(let ((color (or (my/color-value name)))) (if (&gt; quote 0) (concat &#34;\&#34;&#34; color &#34;\&#34;&#34;) color)) (let ((val (if (ct-light-p (my/color-value name)) (my/color-value &#39;black) (my/color-value &#39;white)))) (if (eq quote 1) (concat &#34;\&#34;&#34; val &#34;\&#34;&#34;) val)) (setq-local org-confirm-babel-evaluate nil) .profile Environment export QT_QPA_PLATFORMTHEME=&#34;qt5ct&#34; export QT_AUTO_SCREEN_SCALE_FACTOR=0 Set ripgrep config path</description>
|
||||
<description><blockquote>
<p>No matter from which side you approach penguins, more always come from behind</p>
</blockquote>
<ul>
<li>A friend of mine</li>
</ul>
<h2 id="colors">Colors</h2>
<p>Noweb function to get colors.</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:#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></pr</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Desktop</title>
|
||||
<link>https://sqrtminusone.xyz/configs/desktop/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/desktop/</guid>
|
||||
<description>My general desktop environment configuration.
Parts prefixed with (OFF) are not used, but kept for historic purposes. For some reason GitHub&rsquo;s org renderer ignores TODO status, hence such a prefix. Round brackets instead of square ones to prevent GitHub&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. Some remarks Removed features:
Feature Last commit rofi-buku e22476b0cc6315e104e5ce4de5559a61c830c429 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>
|
||||
<description><p>My general desktop environment configuration.</p>
<p>Parts prefixed with (OFF) are not used, but kept for historic purposes. For some reason GitHub&rsquo;s org renderer ignores TODO status, hence such a prefix. Round brackets instead of square ones to prevent GitHub&rsquo;s org renderer from screwing up.</p>
<p>References:</p>
<ul>
<li><a href="https://sqrtminusone.xyz/posts/2022-02-12-literate/">A few cases of literate configuration</a>. A few interesting ways in which literate configuration is used in this file.</li>
</ul>
<h2 id="some-remarks">Some remarks</h2>
<p>Removed features:</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Emacs config</title>
|
||||
<link>https://sqrtminusone.xyz/configs/emacs/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/emacs/</guid>
|
||||
<description>One day we won&rsquo;t hate one another, no young boy will march to war and I will clean up my Emacs config. But that day isn&rsquo;t today.
Me, &lt;2021-05-27 Thu 17:35&gt; in commit 93a0573. Adapted from The Dark Element - &ldquo;The Pallbearer Walks Alone&rdquo;. T_T Introduction My configuration of GNU Emacs, an awesome text editor piece of software that can do almost anything.
At the moment of writing this, that &ldquo;almost anything&rdquo; includes:</description>
|
||||
<description><blockquote>
<p>One day we won&rsquo;t hate one another, no young boy will march to war and I will clean up my Emacs config. But that day isn&rsquo;t today.</p>
</blockquote>
<ul>
<li>Me, <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-05-27 Thu 17:35&gt; </span></span> in commit 93a0573. Adapted from <a href="https://www.youtube.com/watch?v=pIdBinlW40E">The Dark Element - &ldquo;The Pallbearer Walks Alone&rdquo;</a>. T_T</li>
</ul>
<h2 id="introduction">Introduction</h2>
<p>My configuration of <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>, an awesome <del>text editor</del> piece of software that can do almost anything.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Guix</title>
|
||||
<link>https://sqrtminusone.xyz/configs/guix/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/guix/</guid>
|
||||
<description>GNU Guix is (1) a transactional package manager and (2) a GNU/Linux distribution.
My personal selling points are declarative package configuration and transactional upgrades.
References:
Official help System Crafters wiki Pjotr Prins&rsquo; Guix notes Davil Wilson&rsquo;s YouTube series Profiles A profile is a way to group Guix packages. Amongst its advantages, profiles can be defined by manifests, which in turn can be stored in VCS.
References:
Guix Profiles in Practice Activate profiles A script to activate guix profiles.</description>
|
||||
<description><p><a href="https://guix.gnu.org/">GNU Guix</a> is (1) a transactional package manager and (2) a GNU/Linux distribution.</p>
<p>My personal selling points are declarative package configuration and transactional upgrades.</p>
<p>References:</p>
<ul>
<li><a href="https://guix.gnu.org/en/help/">Official help</a></li>
<li><a href="https://wiki.systemcrafters.cc/guix">System Crafters wiki</a></li>
<li><a href="https://gitlab.com/pjotrp/guix-notes">Pjotr Prins&rsquo; Guix notes</a></li>
<li><a href="https://www.youtube.com/watch?v=iBaqOK75cho&amp;list=PLEoMzSkcN8oNxnj7jm5V2ZcGc52002pQU">Davil Wilson&rsquo;s YouTube series</a></li>
</ul>
<h2 id="profiles">Profiles</h2>
<p>A profile is a way to group Guix packages. Amongst its advantages, profiles can be defined by manifests, which in turn can be stored in VCS.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Mail</title>
|
||||
<link>https://sqrtminusone.xyz/configs/mail/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/mail/</guid>
|
||||
<description>:TOC: :include all :depth 3
My email configration. Currently I use lieer to fetch emails from Gmail, davmail &amp; offlineimap to fetch emails from MS Exchange, notmuch to index, msmtp to send emails. Also using notmuch frontend from Emacs.
My problem with any particular mail setup was that I use Gmail labels quite extensively, and handling these over IMAP is rather awkward. Notmuch seems to be the only software that provides the same first-class support for labels.</description>
|
||||
<description><p>:TOC: :include all :depth 3</p>
<p>My email configration. Currently I use <a href="https://github.com/gauteh/lieer">lieer</a> to fetch emails from Gmail, <a href="http://davmail.sourceforge.net/">davmail</a> &amp; <a href="http://www.offlineimap.org/">offlineimap</a> to fetch emails from MS Exchange, <a href="https://notmuchmail.org/">notmuch</a> to index, <a href="https://marlam.de/msmtp/">msmtp</a> to send emails. Also using notmuch frontend from Emacs.</p>
<p>My problem with any particular mail setup was that I use Gmail labels quite extensively, and handling these over IMAP is rather awkward. Notmuch seems to be the only software that provides the same first-class support for labels.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>My dotfiles</title>
|
||||
<link>https://sqrtminusone.xyz/configs/readme/</link>
|
||||
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/configs/readme/</guid>
|
||||
<description>These are my GNU/Linux configuration files. View at GitHub.
I use the literate configuration strategy via Emacs&rsquo; Org Mode wherever possible. It has its pros and cons, but I find it pretty nice to keep the configs interweaved with comments in a handful of files.
The files themselves are managed and deployed via yadm, although I use Org Mode for things like config templating.
My current GNU/Linux distribution is GNU Guix.</description>
|
||||
<description><figure><img src="https://sqrtminusone.xyz/ox-hugo/works-on-my-machine.svg">
</figure>

<p>These are my GNU/Linux configuration files. <a href="https://github.com/SqrtMinusOne/dotfiles">View at GitHub</a>.</p>
<p>I use the <a href="https://leanpub.com/lit-config/read">literate configuration</a> strategy via Emacs&rsquo; <a href="https://orgmode.org/">Org Mode</a> wherever possible. It has its pros and cons, but I find it pretty nice to keep the configs interweaved with comments in a handful of files.</p>
<p>The files themselves are managed and deployed via <a href="https://yadm.io/">yadm</a>, although I use Org Mode for things like config templating.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -92,16 +85,16 @@
|
|||
</ul>
|
||||
<h2 id="lieer">Lieer</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>python-lieer</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">python-lieer</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Lieer is a program to link up Gmail and notmuch. Basically, it downloads mail from Gmail via API, stores them in Maildir, and synchronizes labels with notmuch.</p>
|
||||
<p>I have a separate directory in my <code>~/Mail</code> for each address. To init lieer, run the following command in the directory:</p>
|
||||
|
|
@ -134,16 +127,16 @@
|
|||
</span></span></code></pre></div><p>Shepherd service is defined in <a href="/configs/desktop/#davmail">Desktop.org</a>.</p>
|
||||
<h2 id="offlineimap">OfflineIMAP</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>offlineimap</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">offlineimap</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://github.com/OfflineIMAP/offlineimap">OfflineIMAP</a> is a program that can synchronize IMAP mailbox and Maildir. Lieer does everything by itself, but my pirate Exchange IMAP needs this program. There is also <a href="https://isync.sourceforge.io/">isync</a>, but there I had some weird issues with duplicate UIDs, which don’t occur for OfflineIMAP.</p>
|
||||
<p>I have a few options for setting a username and password. First, I can run <code>pass</code> in <code>remotepasswordeval</code>, and while this will work, it will keep my keyring unlocked because I want to run <code>offlineimap</code> every couple of minutes.</p>
|
||||
|
|
@ -175,19 +168,19 @@
|
|||
</span></span><span style="display:flex;"><span><span style="color:#7d9029">sslcacertfile</span> <span style="color:#666">=</span> <span style="color:#ba2121">/etc/ssl/certs/ca-certificates.crt</span>
|
||||
</span></span></code></pre></div><h2 id="notmuch">Notmuch</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>notmuch</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>parallel</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">notmuch</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">parallel</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Notmuch is an email indexer program, which handles labels in a way somewhat similar to Gmail. It also provides a frontend for Emacs, but it’s not the only one available.</p>
|
||||
<h3 id="config">Config</h3>
|
||||
|
|
@ -224,66 +217,66 @@
|
|||
<p>So, here are the rules which match tags & folders:</p>
|
||||
<p><a id="table--pvkorytov-tags"></a></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>tag</th>
|
||||
<th>folder</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>inbox</td>
|
||||
<td>INBOX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sent</td>
|
||||
<td>Sent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>spam</td>
|
||||
<td>Junk</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>trash</td>
|
||||
<td>Trash</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital</td>
|
||||
<td>Job_Digital</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital.docs</td>
|
||||
<td>Job_Digital.Docs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital.support</td>
|
||||
<td>Job_Digital.Support</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital.superservice</td>
|
||||
<td>Job_Digital.Superservice</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital.applicants</td>
|
||||
<td>Job_Digital.Applicants</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.digital.testers</td>
|
||||
<td>Job_Digital.Testers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>job.moevm</td>
|
||||
<td>Job_Moevm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>etu</td>
|
||||
<td>Etu</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>etu.grad-school</td>
|
||||
<td>Etu.Grad_School</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">tag</th>
|
||||
<th style="text-align: left">folder</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">inbox</td>
|
||||
<td style="text-align: left">INBOX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">sent</td>
|
||||
<td style="text-align: left">Sent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">spam</td>
|
||||
<td style="text-align: left">Junk</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">trash</td>
|
||||
<td style="text-align: left">Trash</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital</td>
|
||||
<td style="text-align: left">Job_Digital</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital.docs</td>
|
||||
<td style="text-align: left">Job_Digital.Docs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital.support</td>
|
||||
<td style="text-align: left">Job_Digital.Support</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital.superservice</td>
|
||||
<td style="text-align: left">Job_Digital.Superservice</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital.applicants</td>
|
||||
<td style="text-align: left">Job_Digital.Applicants</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.digital.testers</td>
|
||||
<td style="text-align: left">Job_Digital.Testers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">job.moevm</td>
|
||||
<td style="text-align: left">Job_Moevm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">etu</td>
|
||||
<td style="text-align: left">Etu</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">etu.grad-school</td>
|
||||
<td style="text-align: left">Etu.Grad_School</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>And below is a noweb function, which generates the following commands for notmuch to execute:</p>
|
||||
<ul>
|
||||
|
|
@ -406,16 +399,16 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
|
|||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#00f">job</span> <span style="color:#ba2121">"*/5 * * * * "</span> <span style="color:#ba2121">"~/bin/scripts/check-email"</span>)
|
||||
</span></span></code></pre></div><h2 id="msmtp">MSMTP</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>msmtp</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">msmtp</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Sending emails can be done with MSMTP. It automatially chooses the email address and server based on the contents of the message, which is handy if there are multiple mailboxes to be managed.</p>
|
||||
<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>defaults
|
||||
|
|
@ -448,16 +441,16 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
|
|||
</span></span><span style="display:flex;"><span>passwordeval <span style="color:#ba2121">"pass show Job/Digital/Email/pvkorytov@etu.ru | head -n 1"</span>
|
||||
</span></span></code></pre></div><h2 id="emacs">Emacs</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>emacs-notmuch</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">emacs-notmuch</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Finally, Emacs configuration. Let’s start with some variables:</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">user-mail-address</span> <span style="color:#ba2121">"thexcloud@gmail.com"</span>)
|
||||
|
|
@ -522,62 +515,62 @@ 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">notmuch-message-mode</span> <span style="color:#666">0</span> <span style="color:#ba2121">"mail"</span>)
|
||||
</span></span></code></pre></div><p><a id="table--root-tags"></a></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Root tag</th>
|
||||
<th>Prefix</th>
|
||||
<th>Keybinding description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>main</td>
|
||||
<td>m</td>
|
||||
<td><a href="mailto:thexcloud@gmail.com">thexcloud@gmail.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>progin</td>
|
||||
<td>p</td>
|
||||
<td><a href="mailto:progin6304@gmail.com">progin6304@gmail.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pvkorytov</td>
|
||||
<td>v</td>
|
||||
<td><a href="mailto:pvkorytov@etu.ru">pvkorytov@etu.ru</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Root tag</th>
|
||||
<th style="text-align: left">Prefix</th>
|
||||
<th style="text-align: left">Keybinding description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">main</td>
|
||||
<td style="text-align: left">m</td>
|
||||
<td style="text-align: left"><a href="mailto:thexcloud@gmail.com">thexcloud@gmail.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">progin</td>
|
||||
<td style="text-align: left">p</td>
|
||||
<td style="text-align: left"><a href="mailto:progin6304@gmail.com">progin6304@gmail.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">pvkorytov</td>
|
||||
<td style="text-align: left">v</td>
|
||||
<td style="text-align: left"><a href="mailto:pvkorytov@etu.ru">pvkorytov@etu.ru</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a id="table--filter-tags"></a></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Tag</th>
|
||||
<th>Prefix</th>
|
||||
<th>Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>inbox</td>
|
||||
<td>i</td>
|
||||
<td>inbox</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unread</td>
|
||||
<td>u</td>
|
||||
<td>unread</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sent</td>
|
||||
<td>s</td>
|
||||
<td>sent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>a</td>
|
||||
<td>all mail</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Tag</th>
|
||||
<th style="text-align: left">Prefix</th>
|
||||
<th style="text-align: left">Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">inbox</td>
|
||||
<td style="text-align: left">i</td>
|
||||
<td style="text-align: left">inbox</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">unread</td>
|
||||
<td style="text-align: left">u</td>
|
||||
<td style="text-align: left">unread</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">sent</td>
|
||||
<td style="text-align: left">s</td>
|
||||
<td style="text-align: left">sent</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left">a</td>
|
||||
<td style="text-align: left">all mail</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The following formats the tables above to a proper syntax for <code>setq notmuch-saved-searches</code>:</p>
|
||||
<p><a id="code-snippet--format-notmuch-saved-searches"></a></p>
|
||||
|
|
@ -617,6 +610,7 @@ 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">sign</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">encrypt</span>))))
|
||||
</span></span></code></pre></div><h3 id="tuning-signature">Tuning signature</h3>
|
||||
<p>Edit <span class="timestamp-wrapper"><span class="timestamp"><2024-08-19 Mon></span></span>: Apparently this was a feature, not a bug. Disabling this.</p>
|
||||
<p>By default, <code>message.el</code> inserts the signature at the bottom of the message, like this:</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><message text>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
|
|
@ -640,8 +634,9 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
|
|||
</span></span><span style="display:flex;"><span>> Stuff
|
||||
</span></span></code></pre></div><p>So here I modifiy the citation function to insert the signature like in the second example for <del>certain cases</del>.</p>
|
||||
<p>Edit <span class="timestamp-wrapper"><span class="timestamp"><2022-10-27 Thu></span></span>: for consistency’s sake, I’ll make the signature on the top for all cases.</p>
|
||||
<p>Edit <span class="timestamp-wrapper"><span class="timestamp"><2024-08-19 Mon></span></span>: see above</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/message-insert-signature-need-on-top</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#800">nil</span>)
|
||||
</span></span></code></pre></div><p>Then advice the <code>notmuch-mua-reply</code> function:</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/message-maybe-fix-signature</span> (<span style="color:#008000">&rest</span> <span style="color:#19177c">_</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">my/message-insert-signature-need-on-top</span>)
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -149,13 +142,13 @@
|
|||
<li>Git repo: <a href="https://github.com/SqrtMinusOne/elfeed-summary">https://github.com/SqrtMinusOne/elfeed-summary</a></li>
|
||||
<li>Package at MELPA: <a href="https://melpa.org/#/elfeed-summary">https://melpa.org/#/elfeed-summary</a></li>
|
||||
</ul>
|
||||
<h2 id="password-store-ivy">password-store-ivy</h2>
|
||||
<p>Auto-type fields from <a href="https://www.passwordstore.org/">pass</a> entries. Essentially, this is a reimplementation of <a href="https://github.com/carnager/rofi-pass">rofi-pass</a> with <a href="https://github.com/abo-abo/swiper">Ivy</a> which I made after migrating to <a href="https://github.com/ch11ng/exwm">EXWM</a>. I used to use the package with <a href="https://github.com/tumashu/ivy-posframe">ivy-posframe</a>, but the latter turned out to be unnecessary.</p>
|
||||
<p>I might archive this if I switch to a different completion framework (or even ditch the WM), which is why I’m not submitting it anywhere. But the package is pretty simple.</p>
|
||||
<h2 id="password-store-completion">password-store-completion</h2>
|
||||
<p>Auto-type fields from <a href="https://www.passwordstore.org/">pass</a> entries. Essentially, this is a reimplementation of <a href="https://github.com/carnager/rofi-pass">rofi-pass</a> with <code>completing-read</code> which I made after migrating to <a href="https://github.com/ch11ng/exwm">EXWM</a>.</p>
|
||||
<p>It was called <code>password-store-ivy</code> before, but I’ve changed the name after I switched to vertico and added <code>completing-read</code> (+ embark integration) to the package.</p>
|
||||
<ul>
|
||||
<li>Package name: <code>password-store-ivy</code></li>
|
||||
<li>Homepage: <a href="https://sqrtminusone.xyz/packages/password-store-ivy">https://sqrtminusone.xyz/packages/password-store-ivy</a></li>
|
||||
<li>Git repo: <a href="https://github.com/SqrtMinusOne/password-store-ivy">https://github.com/SqrtMinusOne/password-store-ivy</a></li>
|
||||
<li>Package name: <code>password-store-completion</code></li>
|
||||
<li>Homepage: <a href="https://sqrtminusone.xyz/packages/password-store-completion">https://sqrtminusone.xyz/packages/password-store-completion</a></li>
|
||||
<li>Git repo: <a href="https://github.com/SqrtMinusOne/password-store-completion">https://github.com/SqrtMinusOne/password-store-completion</a></li>
|
||||
</ul>
|
||||
<h2 id="org-journal-tags">Org Journal Tags</h2>
|
||||
<p>The package extends <a href="https://github.com/bastibe/org-journal">org-journal</a> by introducing “tags” that reference a journal section or subset thereof. These tags can be later queried. The package also provides a UI with statistics about tags and things like records on this day a year ago.</p>
|
||||
|
|
@ -215,7 +208,7 @@
|
|||
<li><a href="#elfeed-sync">Elfeed Sync</a></li>
|
||||
<li><a href="#avy-dired">avy-dired</a></li>
|
||||
<li><a href="#elfeed-summary">Elfeed Summary</a></li>
|
||||
<li><a href="#password-store-ivy">password-store-ivy</a></li>
|
||||
<li><a href="#password-store-completion">password-store-completion</a></li>
|
||||
<li><a href="#org-journal-tags">Org Journal Tags</a></li>
|
||||
<li><a href="#exwm-modeline">EXWM Modeline</a></li>
|
||||
<li><a href="#perspective-exwm">perspective-exwm</a></li>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang=""><head>
|
||||
<meta name="generator" content="Hugo 0.131.0">
|
||||
<meta name="generator" content="Hugo 0.134.1">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
|
|
@ -20,13 +20,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
673
index.xml
673
index.xml
|
|
@ -37,55 +37,55 @@
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">eshell-atuin-history-format</span> <span style="color:#ba2121">&#34;%-160c %t + %d&#34;</span>)
|
||||
</span></span></code></pre></div><p>The available flags are:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Flag</th>
|
||||
<th>atuin field (see <code>help atuin search</code>)</th>
|
||||
<th>Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>%t</td>
|
||||
<td><code>time</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%c</td>
|
||||
<td><code>command</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%e</td>
|
||||
<td><code>exit</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%d</td>
|
||||
<td><code>duration</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%i</td>
|
||||
<td><code>directory</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%u</td>
|
||||
<td><code>user</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%h</td>
|
||||
<td><code>host</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%r</td>
|
||||
<td><code>relativetime</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Flag</th>
|
||||
<th style="text-align: left">atuin field (see <code>help atuin search</code>)</th>
|
||||
<th style="text-align: left">Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">%t</td>
|
||||
<td style="text-align: left"><code>time</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%c</td>
|
||||
<td style="text-align: left"><code>command</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%e</td>
|
||||
<td style="text-align: left"><code>exit</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%d</td>
|
||||
<td style="text-align: left"><code>duration</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%i</td>
|
||||
<td style="text-align: left"><code>directory</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%u</td>
|
||||
<td style="text-align: left"><code>user</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%h</td>
|
||||
<td style="text-align: left"><code>host</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%r</td>
|
||||
<td style="text-align: left"><code>relativetime</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>See <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Custom-Format-Strings.html">(emacs) Custom Format Strings</a> for information on the general <code>format-spec</code> syntax.</p>
|
||||
<p>I suspect the package might be slow if your history has a lot of records (I haven&rsquo;t checked yet). In this case, it might be worth setting a limit:</p>
|
||||
|
|
@ -186,70 +186,70 @@
|
|||
</span></span><span style="display:flex;"><span>- [2023-12-13 Wed 19:30]--[2023-12-13 Wed 19:40] =&gt; 0:10 : DONE Thing 1
|
||||
</span></span></code></pre></div><p>The following built-in predicates are currently available:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Comment</th>
|
||||
<th>Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Category</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Org file</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Outline path</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tags</td>
|
||||
<td>Sorted alphabetically</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Headline</td>
|
||||
<td>Last item of the outline path</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Day</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Week</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Month</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TODO keyword</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Is done</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Selected props</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Name</th>
|
||||
<th style="text-align: left">Comment</th>
|
||||
<th style="text-align: left">Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Category</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Org file</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Tags</td>
|
||||
<td style="text-align: left">Sorted alphabetically</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Headline</td>
|
||||
<td style="text-align: left">Last item of the outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Day</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Week</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Month</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">TODO keyword</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Is done</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Selected props</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Ensure to use <code>setopt</code> to set the variables; otherwise, the customization logic will not be invoked:</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">setopt</span> <span style="color:#19177c">org-clock-agg-properties</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;PROJECT_NAME&#34;</span>))
|
||||
|
|
@ -2783,50 +2783,50 @@ To mark such entries as read, run <code>M-x elfeed-sync-read-ttrss-old<
|
|||
<p>Groups can also be generated automatically.</p>
|
||||
<p>Available keybindings in the summary mode:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Keybinding</th>
|
||||
<th>Command</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>RET</code></td>
|
||||
<td><code>elfeed-summary--action</code></td>
|
||||
<td>Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>M-RET</code></td>
|
||||
<td><code>elfeed-summary--action-show-read</code></td>
|
||||
<td>Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>q</code></td>
|
||||
<td>&hellip;</td>
|
||||
<td>Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>r</code></td>
|
||||
<td><code>elfeed-summary--refresh</code></td>
|
||||
<td>Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>R</code></td>
|
||||
<td><code>elfeed-summary-update</code></td>
|
||||
<td>Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>u</code></td>
|
||||
<td><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td>Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>U</code></td>
|
||||
<td><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td>Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Keybinding</th>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>M-RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-show-read</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>q</code></td>
|
||||
<td style="text-align: left">&hellip;</td>
|
||||
<td style="text-align: left">Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>r</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--refresh</code></td>
|
||||
<td style="text-align: left">Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>R</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-update</code></td>
|
||||
<td style="text-align: left">Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>u</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td style="text-align: left">Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>U</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td style="text-align: left">Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The standard keybindings from <a href="https://magit.vc/manual/magit.html#Sections">magit-section</a> are also available, for instance <code>TAB</code> toggles the visibility of the current group. <a href="https://github.com/emacs-evil/evil">evil-mode</a> is also supported.</p>
|
||||
<h2 id="configuration">Configuration</h2>
|
||||
|
|
@ -3145,39 +3145,44 @@ assigned to group with the least amount of members.</li>
|
|||
</item>
|
||||
|
||||
<item>
|
||||
<title>password-store-ivy</title>
|
||||
<link>https://sqrtminusone.xyz/packages/password-store-ivy/</link>
|
||||
<title>password-store-completion</title>
|
||||
<link>https://sqrtminusone.xyz/packages/password-store-completion/</link>
|
||||
<pubDate>Sun, 13 Feb 2022 00:00:00 +0000</pubDate>
|
||||
|
||||
<guid>https://sqrtminusone.xyz/packages/password-store-ivy/</guid>
|
||||
<guid>https://sqrtminusone.xyz/packages/password-store-completion/</guid>
|
||||
<content type="html">
|
||||
<p>A <a href="https://www.passwordstore.org/">pass</a> frontend based on <a href="https://github.com/abo-abo/swiper#ivy">Ivy</a>, made primarily to use with <a href="https://github.com/ch11ng/exwm">EXWM</a> and <a href="https://github.com/tumashu/ivy-posframe">ivy-posframe</a>. Types fields from entries.</p>
|
||||
<p>Also take a look at Nicolas Petton&rsquo;s <a href="https://github.com/NicolasPetton/pass">pass</a>, <code>password-store-ivy</code> is designed as complementary to the Nicolas&rsquo; package.</p>
|
||||
<p>This package is made with Ivy because I need some fine-tuning like actions and turning off sorting in some completions, and Ivy happens to be the completion system I&rsquo;m using now.</p>
|
||||
<p>A completion-based pass frontend inspired by <a href="https://github.com/carnager/rofi-pass">rofi-pass</a>. Integrates with <a href="https://github.com/abo-abo/swiper">Ivy</a> or <a href="https://github.com/oantolin/embark">Embark</a>.</p>
|
||||
<p>The main purpose is typing passwords with <code>xdotool</code> (useful in <a href="https://github.com/emacs-exwm/exwm">EXWM</a>).</p>
|
||||
<p>Also take a look at Nicolas Petton&rsquo;s <a href="https://github.com/NicolasPetton/pass">pass</a>. <code>password-store-completion</code> is designed as complementary to Nicolas&rsquo; package.</p>
|
||||
<h2 id="installation">Installation</h2>
|
||||
<p>As the package isn’t yet available anywhere but in this repository, you can clone the repository, add it to the load-path and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-ivy</span>
|
||||
</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/password-store-ivy&#34;</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">exwm</span>))
|
||||
</span></span></code></pre></div><p>This package types stuff with <code>xdotool</code>, so you need to have that available in your <code>$PATH</code>.</p>
|
||||
<h2 id="usage">Usage</h2>
|
||||
<p>As the package isn&rsquo;t yet available anywhere but in this repository, you can clone the repository, add it to the load-path, and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-completion</span>
|
||||
</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/password-store-completion&#34;</span>))
|
||||
</span></span></code></pre></div><p><code>xdotool</code> has to be available in <code>$PATH</code>.</p>
|
||||
<p>For Ivy integration:</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">require</span> <span style="color:#19177c">&#39;password-store-ivy</span>)
|
||||
</span></span></code></pre></div><p>Also be sure to load the main package before Ivy.</p>
|
||||
<p>For Embark integration:</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">require</span> <span style="color:#19177c">&#39;password-store-embark</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">password-store-embark-mode</span>)
|
||||
</span></span></code></pre></div><h2 id="usage">Usage</h2>
|
||||
<p>Emacs&rsquo; built-in <a href="https://www.gnu.org/software/emacs/manual/html_node/auth/The-Unix-password-store.html">password store</a> integration has to be set up.</p>
|
||||
<p>The only command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<p>For Ivy integration, the command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<ul>
|
||||
<li><code>M-a</code>. Perform autotype</li>
|
||||
<li><code>M-p</code>. Type password</li>
|
||||
<li><code>M-u</code>. Type username</li>
|
||||
<li><code>M-U</code>. Type url</li>
|
||||
<li><code>M-f</code>. Select a field to type</li>
|
||||
<li><code>M-a</code>: Perform autotype</li>
|
||||
<li><code>M-p</code>: Type password</li>
|
||||
<li><code>M-u</code>: Type username</li>
|
||||
<li><code>M-U</code>: Type URL</li>
|
||||
<li><code>M-f</code>: Select a field to type</li>
|
||||
</ul>
|
||||
<p>For other completion frameworks, run <code>M-x password-store-completion</code>. If Embark integration is enabled, the same actions are added.</p>
|
||||
<h2 id="customization">Customization</h2>
|
||||
<p>There are a few parameters that control delays:</p>
|
||||
<p>The following parameters control delays:</p>
|
||||
<ul>
|
||||
<li><code>password-store-ivy-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-ivy-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
<li><code>password-store-completion-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-completion-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
</ul>
|
||||
<p>There is also <code>password-store-ivy-sequences</code> that determines the sequence of actions <code>password-store-ivy</code> performs.</p>
|
||||
<p>It is an alist with the following required keys (corresponding to the basic actions):</p>
|
||||
<p><code>password-store-completion-sequences</code> determines the steps of sequences. It is an alist; the keys correspond to the default sequences:</p>
|
||||
<ul>
|
||||
<li><code>autotype</code></li>
|
||||
<li><code>password</code></li>
|
||||
|
|
@ -3186,12 +3191,12 @@ assigned to group with the least amount of members.</li>
|
|||
</ul>
|
||||
<p>The values are lists of the following elements:</p>
|
||||
<ul>
|
||||
<li><code>wait</code>. Wait for <code>password-store-ivy-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait &lt;milliseconds&gt;)</code>. Wait for <code>&lt;milliseconds&gt;</code>.</li>
|
||||
<li><code>(key &lt;key&gt;)</code>. Type <code>&lt;key&gt;</code>.</li>
|
||||
<li><code>(field &lt;field&gt;)</code>. Type <code>&lt;field&gt;</code> of entry.</li>
|
||||
<li><code>wait</code>: Wait for <code>password-store-completion-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait &lt;milliseconds&gt;)</code>: Wait for <code>&lt;milliseconds&gt;</code></li>
|
||||
<li><code>(key &lt;key&gt;)</code>: Type <code>&lt;key&gt;</code></li>
|
||||
<li><code>(field &lt;field&gt;)</code>: Type <code>&lt;field&gt;</code> of entry</li>
|
||||
</ul>
|
||||
<p>For example, the starting values:</p>
|
||||
<p>The default value is as follows:</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:#666">&#39;</span>((<span style="color:#19177c">autotype</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;username&#34;</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">key</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;Tab&#34;</span>)
|
||||
|
|
@ -3200,13 +3205,19 @@ assigned to group with the least amount of members.</li>
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">password</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#19177c">secret</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">username</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;username&#34;</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">url</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;url&#34;</span>))))
|
||||
</span></span></code></pre></div><p>In addition to the global override, sequences can be overriden per-entry with a field called <code>sequence-&lt;name&gt;</code>, where <code>&lt;name&gt;</code> is a key of <code>password-store-ivy-sequences</code>.</p>
|
||||
<p>For example, here is an override to press <code>Tab</code> twice:</p>
|
||||
</span></span></code></pre></div><p>Sequences can also be overridden in a particular entry with a field called <code>sequence-&lt;name&gt;</code>, where <code>&lt;name&gt;</code> is a key of <code>password-store-completion-sequences</code>.</p>
|
||||
<p>For example, to press <code>Tab</code> twice in the <code>autotype</code> sequence:</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>&lt;pass&gt;
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: &lt;url&gt;
|
||||
</span></span><span style="display:flex;"><span>sequence-autotype: (wait (field . &#34;username&#34;) (key . &#34;Tab&#34;) (key . &#34;Tab&#34;) (field . secret) (key . &#34;Return&#34;))
|
||||
</span></span></code></pre></div>
|
||||
</span></span></code></pre></div><p>Or, create a custom sequence:</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>&lt;pass&gt;
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: &lt;url&gt;
|
||||
</span></span><span style="display:flex;"><span>sequence-doubletab: (wait (field . &#34;username&#34;) (key . &#34;Tab&#34;) (key . &#34;Tab&#34;) (field . secret) (key . &#34;Return&#34;))
|
||||
</span></span></code></pre></div><p>Custom sequences can be run in the field selection interface (<code>M-f</code> in Ivy, <code>M-x embark-act f</code> in Embark).</p>
|
||||
|
||||
</content>
|
||||
</item>
|
||||
|
||||
|
|
@ -3353,33 +3364,33 @@ assigned to group with the least amount of members.</li>
|
|||
</span></span><span style="display:flex;"><span>#+end_src
|
||||
</span></span></code></pre></div><p><code>sunwait</code> is declared in an Org table that looks like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Such tables are spread through my <code>Desktop.org</code>, for instance, here is another one for a polybar module that depends on dateutils:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus I made a function that extracts packages from all such tables from the current Org buffer. The rules are as follows:</p>
|
||||
<ul>
|
||||
|
|
@ -3498,28 +3509,28 @@ assigned to group with the least amount of members.</li>
|
|||
<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>block1 block2
|
||||
</span></span></code></pre></div><p>And set the foreground and background colors like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>block1</th>
|
||||
<th>glyph</th>
|
||||
<th>block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>foreground</td>
|
||||
<td>F1</td>
|
||||
<td>B2</td>
|
||||
<td>F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>background</td>
|
||||
<td>B1</td>
|
||||
<td>B1</td>
|
||||
<td>B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left"></th>
|
||||
<th style="text-align: left">block1</th>
|
||||
<th style="text-align: left">glyph</th>
|
||||
<th style="text-align: left">block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">foreground</td>
|
||||
<td style="text-align: left">F1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
<td style="text-align: left">F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">background</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>So, that&rsquo;s a start. First, let&rsquo;s define the glyph symbols in the polybar config:</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">[glyph]</span>
|
||||
|
|
@ -3818,35 +3829,35 @@ timestamps by their date.</li>
|
|||
<p>Pressing <code>RET</code> opens the corresponding org-journal entry.</p>
|
||||
<p>Pressing <code>s</code> opens the query constructor buffer. If opened from inside the query results, the query constructor has 4 additional options:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Command</th>
|
||||
<th>Set operation</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Union</strong></td>
|
||||
<td>old ∪ new</td>
|
||||
<td>Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Intersection</strong></td>
|
||||
<td>old ∩ new</td>
|
||||
<td>Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference from current</strong></td>
|
||||
<td>old \ new</td>
|
||||
<td>Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference to current</strong></td>
|
||||
<td>new \ old</td>
|
||||
<td>Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Set operation</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Union</strong></td>
|
||||
<td style="text-align: left">old ∪ new</td>
|
||||
<td style="text-align: left">Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Intersection</strong></td>
|
||||
<td style="text-align: left">old ∩ new</td>
|
||||
<td style="text-align: left">Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference from current</strong></td>
|
||||
<td style="text-align: left">old \ new</td>
|
||||
<td style="text-align: left">Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference to current</strong></td>
|
||||
<td style="text-align: left">new \ old</td>
|
||||
<td style="text-align: left">Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus it is possible to make any query that can be described as a sequence of such set operations.</p>
|
||||
<h2 id="advanced-usage">Advanced usage</h2>
|
||||
|
|
@ -4538,74 +4549,74 @@ interval = 1
|
|||
<h2 id="alternatives">Alternatives</h2>
|
||||
<p>There is a number of packages with a similar purpose, here is a rough comparison of features:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
<th>3rd party integrations</th>
|
||||
<th>Control method (1)</th>
|
||||
<th>Persistent history</th>
|
||||
<th>Persistent state</th>
|
||||
<th>Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td>-</td>
|
||||
<td>transient.el</td>
|
||||
<td>CSV</td>
|
||||
<td>+</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td>Org Mode!</td>
|
||||
<td>via Org commands</td>
|
||||
<td>via Org mode</td>
|
||||
<td>-</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>custom delimited format?</td>
|
||||
<td>+, but saving on-demand</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td>-</td>
|
||||
<td>mode-line icon</td>
|
||||
<td>+</td>
|
||||
<td>-</td>
|
||||
<td>sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td>GTK panel</td>
|
||||
<td>CLI</td>
|
||||
<td>-</td>
|
||||
<td>-, but the program is independent of Emacs</td>
|
||||
<td>GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Package</th>
|
||||
<th style="text-align: left">3rd party integrations</th>
|
||||
<th style="text-align: left">Control method (1)</th>
|
||||
<th style="text-align: left">Persistent history</th>
|
||||
<th style="text-align: left">Persistent state</th>
|
||||
<th style="text-align: left">Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">transient.el</td>
|
||||
<td style="text-align: left">CSV</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td style="text-align: left">Org Mode!</td>
|
||||
<td style="text-align: left">via Org commands</td>
|
||||
<td style="text-align: left">via Org mode</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">custom delimited format?</td>
|
||||
<td style="text-align: left">+, but saving on-demand</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">mode-line icon</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td style="text-align: left">GTK panel</td>
|
||||
<td style="text-align: left">CLI</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-, but the program is independent of Emacs</td>
|
||||
<td style="text-align: left">GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Be sure to check those out if this one doesn&rsquo;t quite fit your workflow!</p>
|
||||
<p>(1) Means of timer control with exception to Emacs interactive commands</p>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -110,50 +103,50 @@
|
|||
<p>Groups can also be generated automatically.</p>
|
||||
<p>Available keybindings in the summary mode:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Keybinding</th>
|
||||
<th>Command</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>RET</code></td>
|
||||
<td><code>elfeed-summary--action</code></td>
|
||||
<td>Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>M-RET</code></td>
|
||||
<td><code>elfeed-summary--action-show-read</code></td>
|
||||
<td>Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>q</code></td>
|
||||
<td>…</td>
|
||||
<td>Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>r</code></td>
|
||||
<td><code>elfeed-summary--refresh</code></td>
|
||||
<td>Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>R</code></td>
|
||||
<td><code>elfeed-summary-update</code></td>
|
||||
<td>Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>u</code></td>
|
||||
<td><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td>Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>U</code></td>
|
||||
<td><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td>Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Keybinding</th>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>M-RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-show-read</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>q</code></td>
|
||||
<td style="text-align: left">…</td>
|
||||
<td style="text-align: left">Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>r</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--refresh</code></td>
|
||||
<td style="text-align: left">Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>R</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-update</code></td>
|
||||
<td style="text-align: left">Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>u</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td style="text-align: left">Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>U</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td style="text-align: left">Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The standard keybindings from <a href="https://magit.vc/manual/magit.html#Sections">magit-section</a> are also available, for instance <code>TAB</code> toggles the visibility of the current group. <a href="https://github.com/emacs-evil/evil">evil-mode</a> is also supported.</p>
|
||||
<h2 id="configuration">Configuration</h2>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -109,55 +102,55 @@
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">eshell-atuin-history-format</span> <span style="color:#ba2121">"%-160c %t + %d"</span>)
|
||||
</span></span></code></pre></div><p>The available flags are:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Flag</th>
|
||||
<th>atuin field (see <code>help atuin search</code>)</th>
|
||||
<th>Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>%t</td>
|
||||
<td><code>time</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%c</td>
|
||||
<td><code>command</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%e</td>
|
||||
<td><code>exit</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%d</td>
|
||||
<td><code>duration</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%i</td>
|
||||
<td><code>directory</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%u</td>
|
||||
<td><code>user</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%h</td>
|
||||
<td><code>host</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%r</td>
|
||||
<td><code>relativetime</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Flag</th>
|
||||
<th style="text-align: left">atuin field (see <code>help atuin search</code>)</th>
|
||||
<th style="text-align: left">Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">%t</td>
|
||||
<td style="text-align: left"><code>time</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%c</td>
|
||||
<td style="text-align: left"><code>command</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%e</td>
|
||||
<td style="text-align: left"><code>exit</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%d</td>
|
||||
<td style="text-align: left"><code>duration</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%i</td>
|
||||
<td style="text-align: left"><code>directory</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%u</td>
|
||||
<td style="text-align: left"><code>user</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%h</td>
|
||||
<td style="text-align: left"><code>host</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%r</td>
|
||||
<td style="text-align: left"><code>relativetime</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>See <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Custom-Format-Strings.html">(emacs) Custom Format Strings</a> for information on the general <code>format-spec</code> syntax.</p>
|
||||
<p>I suspect the package might be slow if your history has a lot of records (I haven’t checked yet). In this case, it might be worth setting a limit:</p>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/packages/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -92,7 +85,7 @@
|
|||
|
||||
<li><a href="https://sqrtminusone.xyz/packages/elfeed-summary/">2022-03-26 | elfeed-summary</a></li>
|
||||
|
||||
<li><a href="https://sqrtminusone.xyz/packages/password-store-ivy/">2022-02-13 | password-store-ivy</a></li>
|
||||
<li><a href="https://sqrtminusone.xyz/packages/password-store-completion/">2022-02-13 | password-store-completion</a></li>
|
||||
|
||||
<li><a href="https://sqrtminusone.xyz/packages/org-journal-tags/">2022-02-06 | org-journal-tags</a></li>
|
||||
|
||||
|
|
|
|||
|
|
@ -37,55 +37,55 @@
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">eshell-atuin-history-format</span> <span style="color:#ba2121">&#34;%-160c %t + %d&#34;</span>)
|
||||
</span></span></code></pre></div><p>The available flags are:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Flag</th>
|
||||
<th>atuin field (see <code>help atuin search</code>)</th>
|
||||
<th>Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>%t</td>
|
||||
<td><code>time</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%c</td>
|
||||
<td><code>command</code></td>
|
||||
<td><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%e</td>
|
||||
<td><code>exit</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%d</td>
|
||||
<td><code>duration</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%i</td>
|
||||
<td><code>directory</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%u</td>
|
||||
<td><code>user</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%h</td>
|
||||
<td><code>host</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>%r</td>
|
||||
<td><code>relativetime</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Flag</th>
|
||||
<th style="text-align: left">atuin field (see <code>help atuin search</code>)</th>
|
||||
<th style="text-align: left">Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">%t</td>
|
||||
<td style="text-align: left"><code>time</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%c</td>
|
||||
<td style="text-align: left"><code>command</code></td>
|
||||
<td style="text-align: left"><strong>+</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%e</td>
|
||||
<td style="text-align: left"><code>exit</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%d</td>
|
||||
<td style="text-align: left"><code>duration</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%i</td>
|
||||
<td style="text-align: left"><code>directory</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%u</td>
|
||||
<td style="text-align: left"><code>user</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%h</td>
|
||||
<td style="text-align: left"><code>host</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">%r</td>
|
||||
<td style="text-align: left"><code>relativetime</code></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>See <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Custom-Format-Strings.html">(emacs) Custom Format Strings</a> for information on the general <code>format-spec</code> syntax.</p>
|
||||
<p>I suspect the package might be slow if your history has a lot of records (I haven&rsquo;t checked yet). In this case, it might be worth setting a limit:</p>
|
||||
|
|
@ -186,70 +186,70 @@
|
|||
</span></span><span style="display:flex;"><span>- [2023-12-13 Wed 19:30]--[2023-12-13 Wed 19:40] =&gt; 0:10 : DONE Thing 1
|
||||
</span></span></code></pre></div><p>The following built-in predicates are currently available:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Comment</th>
|
||||
<th>Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Category</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Org file</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Outline path</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tags</td>
|
||||
<td>Sorted alphabetically</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Headline</td>
|
||||
<td>Last item of the outline path</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Day</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Week</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Month</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TODO keyword</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Is done</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Selected props</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Name</th>
|
||||
<th style="text-align: left">Comment</th>
|
||||
<th style="text-align: left">Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Category</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Org file</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Tags</td>
|
||||
<td style="text-align: left">Sorted alphabetically</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Headline</td>
|
||||
<td style="text-align: left">Last item of the outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Day</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Week</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Month</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">TODO keyword</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Is done</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Selected props</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Ensure to use <code>setopt</code> to set the variables; otherwise, the customization logic will not be invoked:</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">setopt</span> <span style="color:#19177c">org-clock-agg-properties</span> <span style="color:#666">&#39;</span>(<span style="color:#ba2121">&#34;PROJECT_NAME&#34;</span>))
|
||||
|
|
@ -795,50 +795,50 @@ To mark such entries as read, run <code>M-x elfeed-sync-read-ttrss-old<
|
|||
<p>Groups can also be generated automatically.</p>
|
||||
<p>Available keybindings in the summary mode:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Keybinding</th>
|
||||
<th>Command</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>RET</code></td>
|
||||
<td><code>elfeed-summary--action</code></td>
|
||||
<td>Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>M-RET</code></td>
|
||||
<td><code>elfeed-summary--action-show-read</code></td>
|
||||
<td>Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>q</code></td>
|
||||
<td>&hellip;</td>
|
||||
<td>Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>r</code></td>
|
||||
<td><code>elfeed-summary--refresh</code></td>
|
||||
<td>Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>R</code></td>
|
||||
<td><code>elfeed-summary-update</code></td>
|
||||
<td>Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>u</code></td>
|
||||
<td><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td>Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>U</code></td>
|
||||
<td><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td>Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Keybinding</th>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor (a feed, search, or a group). If there is at least one unread item, it will show only unread items.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>M-RET</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-show-read</code></td>
|
||||
<td style="text-align: left">Open thing under the cursor, but always include read items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>q</code></td>
|
||||
<td style="text-align: left">&hellip;</td>
|
||||
<td style="text-align: left">Quit the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>r</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--refresh</code></td>
|
||||
<td style="text-align: left">Refresh the summary buffer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>R</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-update</code></td>
|
||||
<td style="text-align: left">Run update for elfeed feeds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>u</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary-toggle-only-unread</code></td>
|
||||
<td style="text-align: left">Toggle showing only unread entries</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><code>U</code></td>
|
||||
<td style="text-align: left"><code>elfeed-summary--action-mark-read</code></td>
|
||||
<td style="text-align: left">Mark everything in the entry under the cursor as read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The standard keybindings from <a href="https://magit.vc/manual/magit.html#Sections">magit-section</a> are also available, for instance <code>TAB</code> toggles the visibility of the current group. <a href="https://github.com/emacs-evil/evil">evil-mode</a> is also supported.</p>
|
||||
<h2 id="configuration">Configuration</h2>
|
||||
|
|
@ -1157,39 +1157,44 @@ assigned to group with the least amount of members.</li>
|
|||
</item>
|
||||
|
||||
<item>
|
||||
<title>password-store-ivy</title>
|
||||
<link>https://sqrtminusone.xyz/packages/password-store-ivy/</link>
|
||||
<title>password-store-completion</title>
|
||||
<link>https://sqrtminusone.xyz/packages/password-store-completion/</link>
|
||||
<pubDate>Sun, 13 Feb 2022 00:00:00 +0000</pubDate>
|
||||
|
||||
<guid>https://sqrtminusone.xyz/packages/password-store-ivy/</guid>
|
||||
<guid>https://sqrtminusone.xyz/packages/password-store-completion/</guid>
|
||||
<content type="html">
|
||||
<p>A <a href="https://www.passwordstore.org/">pass</a> frontend based on <a href="https://github.com/abo-abo/swiper#ivy">Ivy</a>, made primarily to use with <a href="https://github.com/ch11ng/exwm">EXWM</a> and <a href="https://github.com/tumashu/ivy-posframe">ivy-posframe</a>. Types fields from entries.</p>
|
||||
<p>Also take a look at Nicolas Petton&rsquo;s <a href="https://github.com/NicolasPetton/pass">pass</a>, <code>password-store-ivy</code> is designed as complementary to the Nicolas&rsquo; package.</p>
|
||||
<p>This package is made with Ivy because I need some fine-tuning like actions and turning off sorting in some completions, and Ivy happens to be the completion system I&rsquo;m using now.</p>
|
||||
<p>A completion-based pass frontend inspired by <a href="https://github.com/carnager/rofi-pass">rofi-pass</a>. Integrates with <a href="https://github.com/abo-abo/swiper">Ivy</a> or <a href="https://github.com/oantolin/embark">Embark</a>.</p>
|
||||
<p>The main purpose is typing passwords with <code>xdotool</code> (useful in <a href="https://github.com/emacs-exwm/exwm">EXWM</a>).</p>
|
||||
<p>Also take a look at Nicolas Petton&rsquo;s <a href="https://github.com/NicolasPetton/pass">pass</a>. <code>password-store-completion</code> is designed as complementary to Nicolas&rsquo; package.</p>
|
||||
<h2 id="installation">Installation</h2>
|
||||
<p>As the package isn’t yet available anywhere but in this repository, you can clone the repository, add it to the load-path and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-ivy</span>
|
||||
</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/password-store-ivy&#34;</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">exwm</span>))
|
||||
</span></span></code></pre></div><p>This package types stuff with <code>xdotool</code>, so you need to have that available in your <code>$PATH</code>.</p>
|
||||
<h2 id="usage">Usage</h2>
|
||||
<p>As the package isn&rsquo;t yet available anywhere but in this repository, you can clone the repository, add it to the load-path, and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-completion</span>
|
||||
</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/password-store-completion&#34;</span>))
|
||||
</span></span></code></pre></div><p><code>xdotool</code> has to be available in <code>$PATH</code>.</p>
|
||||
<p>For Ivy integration:</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">require</span> <span style="color:#19177c">&#39;password-store-ivy</span>)
|
||||
</span></span></code></pre></div><p>Also be sure to load the main package before Ivy.</p>
|
||||
<p>For Embark integration:</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">require</span> <span style="color:#19177c">&#39;password-store-embark</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">password-store-embark-mode</span>)
|
||||
</span></span></code></pre></div><h2 id="usage">Usage</h2>
|
||||
<p>Emacs&rsquo; built-in <a href="https://www.gnu.org/software/emacs/manual/html_node/auth/The-Unix-password-store.html">password store</a> integration has to be set up.</p>
|
||||
<p>The only command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<p>For Ivy integration, the command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<ul>
|
||||
<li><code>M-a</code>. Perform autotype</li>
|
||||
<li><code>M-p</code>. Type password</li>
|
||||
<li><code>M-u</code>. Type username</li>
|
||||
<li><code>M-U</code>. Type url</li>
|
||||
<li><code>M-f</code>. Select a field to type</li>
|
||||
<li><code>M-a</code>: Perform autotype</li>
|
||||
<li><code>M-p</code>: Type password</li>
|
||||
<li><code>M-u</code>: Type username</li>
|
||||
<li><code>M-U</code>: Type URL</li>
|
||||
<li><code>M-f</code>: Select a field to type</li>
|
||||
</ul>
|
||||
<p>For other completion frameworks, run <code>M-x password-store-completion</code>. If Embark integration is enabled, the same actions are added.</p>
|
||||
<h2 id="customization">Customization</h2>
|
||||
<p>There are a few parameters that control delays:</p>
|
||||
<p>The following parameters control delays:</p>
|
||||
<ul>
|
||||
<li><code>password-store-ivy-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-ivy-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
<li><code>password-store-completion-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-completion-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
</ul>
|
||||
<p>There is also <code>password-store-ivy-sequences</code> that determines the sequence of actions <code>password-store-ivy</code> performs.</p>
|
||||
<p>It is an alist with the following required keys (corresponding to the basic actions):</p>
|
||||
<p><code>password-store-completion-sequences</code> determines the steps of sequences. It is an alist; the keys correspond to the default sequences:</p>
|
||||
<ul>
|
||||
<li><code>autotype</code></li>
|
||||
<li><code>password</code></li>
|
||||
|
|
@ -1198,12 +1203,12 @@ assigned to group with the least amount of members.</li>
|
|||
</ul>
|
||||
<p>The values are lists of the following elements:</p>
|
||||
<ul>
|
||||
<li><code>wait</code>. Wait for <code>password-store-ivy-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait &lt;milliseconds&gt;)</code>. Wait for <code>&lt;milliseconds&gt;</code>.</li>
|
||||
<li><code>(key &lt;key&gt;)</code>. Type <code>&lt;key&gt;</code>.</li>
|
||||
<li><code>(field &lt;field&gt;)</code>. Type <code>&lt;field&gt;</code> of entry.</li>
|
||||
<li><code>wait</code>: Wait for <code>password-store-completion-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait &lt;milliseconds&gt;)</code>: Wait for <code>&lt;milliseconds&gt;</code></li>
|
||||
<li><code>(key &lt;key&gt;)</code>: Type <code>&lt;key&gt;</code></li>
|
||||
<li><code>(field &lt;field&gt;)</code>: Type <code>&lt;field&gt;</code> of entry</li>
|
||||
</ul>
|
||||
<p>For example, the starting values:</p>
|
||||
<p>The default value is as follows:</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:#666">&#39;</span>((<span style="color:#19177c">autotype</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;username&#34;</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">key</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;Tab&#34;</span>)
|
||||
|
|
@ -1212,13 +1217,19 @@ assigned to group with the least amount of members.</li>
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">password</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#19177c">secret</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">username</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;username&#34;</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">url</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;url&#34;</span>))))
|
||||
</span></span></code></pre></div><p>In addition to the global override, sequences can be overriden per-entry with a field called <code>sequence-&lt;name&gt;</code>, where <code>&lt;name&gt;</code> is a key of <code>password-store-ivy-sequences</code>.</p>
|
||||
<p>For example, here is an override to press <code>Tab</code> twice:</p>
|
||||
</span></span></code></pre></div><p>Sequences can also be overridden in a particular entry with a field called <code>sequence-&lt;name&gt;</code>, where <code>&lt;name&gt;</code> is a key of <code>password-store-completion-sequences</code>.</p>
|
||||
<p>For example, to press <code>Tab</code> twice in the <code>autotype</code> sequence:</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>&lt;pass&gt;
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: &lt;url&gt;
|
||||
</span></span><span style="display:flex;"><span>sequence-autotype: (wait (field . &#34;username&#34;) (key . &#34;Tab&#34;) (key . &#34;Tab&#34;) (field . secret) (key . &#34;Return&#34;))
|
||||
</span></span></code></pre></div>
|
||||
</span></span></code></pre></div><p>Or, create a custom sequence:</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>&lt;pass&gt;
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: &lt;url&gt;
|
||||
</span></span><span style="display:flex;"><span>sequence-doubletab: (wait (field . &#34;username&#34;) (key . &#34;Tab&#34;) (key . &#34;Tab&#34;) (field . secret) (key . &#34;Return&#34;))
|
||||
</span></span></code></pre></div><p>Custom sequences can be run in the field selection interface (<code>M-f</code> in Ivy, <code>M-x embark-act f</code> in Embark).</p>
|
||||
|
||||
</content>
|
||||
</item>
|
||||
|
||||
|
|
@ -1319,35 +1330,35 @@ timestamps by their date.</li>
|
|||
<p>Pressing <code>RET</code> opens the corresponding org-journal entry.</p>
|
||||
<p>Pressing <code>s</code> opens the query constructor buffer. If opened from inside the query results, the query constructor has 4 additional options:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Command</th>
|
||||
<th>Set operation</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Union</strong></td>
|
||||
<td>old ∪ new</td>
|
||||
<td>Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Intersection</strong></td>
|
||||
<td>old ∩ new</td>
|
||||
<td>Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference from current</strong></td>
|
||||
<td>old \ new</td>
|
||||
<td>Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference to current</strong></td>
|
||||
<td>new \ old</td>
|
||||
<td>Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Set operation</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Union</strong></td>
|
||||
<td style="text-align: left">old ∪ new</td>
|
||||
<td style="text-align: left">Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Intersection</strong></td>
|
||||
<td style="text-align: left">old ∩ new</td>
|
||||
<td style="text-align: left">Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference from current</strong></td>
|
||||
<td style="text-align: left">old \ new</td>
|
||||
<td style="text-align: left">Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference to current</strong></td>
|
||||
<td style="text-align: left">new \ old</td>
|
||||
<td style="text-align: left">Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus it is possible to make any query that can be described as a sequence of such set operations.</p>
|
||||
<h2 id="advanced-usage">Advanced usage</h2>
|
||||
|
|
@ -1652,74 +1663,74 @@ interval = 1
|
|||
<h2 id="alternatives">Alternatives</h2>
|
||||
<p>There is a number of packages with a similar purpose, here is a rough comparison of features:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
<th>3rd party integrations</th>
|
||||
<th>Control method (1)</th>
|
||||
<th>Persistent history</th>
|
||||
<th>Persistent state</th>
|
||||
<th>Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td>-</td>
|
||||
<td>transient.el</td>
|
||||
<td>CSV</td>
|
||||
<td>+</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td>Org Mode!</td>
|
||||
<td>via Org commands</td>
|
||||
<td>via Org mode</td>
|
||||
<td>-</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>custom delimited format?</td>
|
||||
<td>+, but saving on-demand</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td>-</td>
|
||||
<td>mode-line icon</td>
|
||||
<td>+</td>
|
||||
<td>-</td>
|
||||
<td>sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td>GTK panel</td>
|
||||
<td>CLI</td>
|
||||
<td>-</td>
|
||||
<td>-, but the program is independent of Emacs</td>
|
||||
<td>GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Package</th>
|
||||
<th style="text-align: left">3rd party integrations</th>
|
||||
<th style="text-align: left">Control method (1)</th>
|
||||
<th style="text-align: left">Persistent history</th>
|
||||
<th style="text-align: left">Persistent state</th>
|
||||
<th style="text-align: left">Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">transient.el</td>
|
||||
<td style="text-align: left">CSV</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td style="text-align: left">Org Mode!</td>
|
||||
<td style="text-align: left">via Org commands</td>
|
||||
<td style="text-align: left">via Org mode</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">custom delimited format?</td>
|
||||
<td style="text-align: left">+, but saving on-demand</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">mode-line icon</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td style="text-align: left">GTK panel</td>
|
||||
<td style="text-align: left">CLI</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-, but the program is independent of Emacs</td>
|
||||
<td style="text-align: left">GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Be sure to check those out if this one doesn&rsquo;t quite fit your workflow!</p>
|
||||
<p>(1) Means of timer control with exception to Emacs interactive commands</p>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -150,70 +143,70 @@
|
|||
</span></span><span style="display:flex;"><span>- [2023-12-13 Wed 19:30]--[2023-12-13 Wed 19:40] => 0:10 : DONE Thing 1
|
||||
</span></span></code></pre></div><p>The following built-in predicates are currently available:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Comment</th>
|
||||
<th>Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Category</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Org file</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Outline path</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tags</td>
|
||||
<td>Sorted alphabetically</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Headline</td>
|
||||
<td>Last item of the outline path</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Day</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Week</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Month</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TODO keyword</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Is done</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Selected props</td>
|
||||
<td></td>
|
||||
<td><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Name</th>
|
||||
<th style="text-align: left">Comment</th>
|
||||
<th style="text-align: left">Customization variables</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">Category</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Org file</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Tags</td>
|
||||
<td style="text-align: left">Sorted alphabetically</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Headline</td>
|
||||
<td style="text-align: left">Last item of the outline path</td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Day</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-day-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Week</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-week-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Month</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-month-format</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">TODO keyword</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Is done</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">Selected props</td>
|
||||
<td style="text-align: left"></td>
|
||||
<td style="text-align: left"><code>org-clock-agg-properties</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Ensure to use <code>setopt</code> to set the variables; otherwise, the customization logic will not be invoked:</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">setopt</span> <span style="color:#19177c">org-clock-agg-properties</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"PROJECT_NAME"</span>))
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -176,35 +169,35 @@ timestamps by their date.</li>
|
|||
<p>Pressing <code>RET</code> opens the corresponding org-journal entry.</p>
|
||||
<p>Pressing <code>s</code> opens the query constructor buffer. If opened from inside the query results, the query constructor has 4 additional options:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Command</th>
|
||||
<th>Set operation</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Union</strong></td>
|
||||
<td>old ∪ new</td>
|
||||
<td>Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Intersection</strong></td>
|
||||
<td>old ∩ new</td>
|
||||
<td>Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference from current</strong></td>
|
||||
<td>old \ new</td>
|
||||
<td>Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Difference to current</strong></td>
|
||||
<td>new \ old</td>
|
||||
<td>Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Command</th>
|
||||
<th style="text-align: left">Set operation</th>
|
||||
<th style="text-align: left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Union</strong></td>
|
||||
<td style="text-align: left">old ∪ new</td>
|
||||
<td style="text-align: left">Add records of the new query to the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Intersection</strong></td>
|
||||
<td style="text-align: left">old ∩ new</td>
|
||||
<td style="text-align: left">Leave only those records that are both displayed and in the new query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference from current</strong></td>
|
||||
<td style="text-align: left">old \ new</td>
|
||||
<td style="text-align: left">Exclude records of the new query from the displayed records</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><strong>Difference to current</strong></td>
|
||||
<td style="text-align: left">new \ old</td>
|
||||
<td style="text-align: left">Exclude displayed records from ones of the new query</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus it is possible to make any query that can be described as a sequence of such set operations.</p>
|
||||
<h2 id="advanced-usage">Advanced usage</h2>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<title>password-store-ivy</title>
|
||||
<title>password-store-completion</title>
|
||||
<meta name="description" content="Freedom is a state of mind">
|
||||
<meta name="author" content='SqrtMinusOne'>
|
||||
|
||||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -74,45 +67,50 @@
|
|||
<script defer language="javascript" type="text/javascript" src="/js/dynamic-toc.js"></script>
|
||||
<div class="root">
|
||||
<h1 id="title-small-screen">
|
||||
password-store-ivy
|
||||
password-store-completion
|
||||
|
||||
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=password-store-ivy&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
|
||||
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=password-store-completion&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
|
||||
|
||||
</h1>
|
||||
<div class="container" id="actual-content">
|
||||
<h1 id="title-large-screen" class="dotfiles-title">
|
||||
password-store-ivy
|
||||
password-store-completion
|
||||
|
||||
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=password-store-ivy&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
|
||||
<iframe src="https://ghbtns.com/github-btn.html?user=SqrtMinusOne&repo=password-store-completion&type=star&count=true" frameborder="0" scrolling="0" width="150" height="20" title="GitHub"></iframe>
|
||||
|
||||
</h1>
|
||||
<p>A <a href="https://www.passwordstore.org/">pass</a> frontend based on <a href="https://github.com/abo-abo/swiper#ivy">Ivy</a>, made primarily to use with <a href="https://github.com/ch11ng/exwm">EXWM</a> and <a href="https://github.com/tumashu/ivy-posframe">ivy-posframe</a>. Types fields from entries.</p>
|
||||
<p>Also take a look at Nicolas Petton’s <a href="https://github.com/NicolasPetton/pass">pass</a>, <code>password-store-ivy</code> is designed as complementary to the Nicolas’ package.</p>
|
||||
<p>This package is made with Ivy because I need some fine-tuning like actions and turning off sorting in some completions, and Ivy happens to be the completion system I’m using now.</p>
|
||||
<p>A completion-based pass frontend inspired by <a href="https://github.com/carnager/rofi-pass">rofi-pass</a>. Integrates with <a href="https://github.com/abo-abo/swiper">Ivy</a> or <a href="https://github.com/oantolin/embark">Embark</a>.</p>
|
||||
<p>The main purpose is typing passwords with <code>xdotool</code> (useful in <a href="https://github.com/emacs-exwm/exwm">EXWM</a>).</p>
|
||||
<p>Also take a look at Nicolas Petton’s <a href="https://github.com/NicolasPetton/pass">pass</a>. <code>password-store-completion</code> is designed as complementary to Nicolas’ package.</p>
|
||||
<h2 id="installation">Installation</h2>
|
||||
<p>As the package isn’t yet available anywhere but in this repository, you can clone the repository, add it to the load-path and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-ivy</span>
|
||||
</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">"SqrtMinusOne/password-store-ivy"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">exwm</span>))
|
||||
</span></span></code></pre></div><p>This package types stuff with <code>xdotool</code>, so you need to have that available in your <code>$PATH</code>.</p>
|
||||
<h2 id="usage">Usage</h2>
|
||||
<p>As the package isn’t yet available anywhere but in this repository, you can clone the repository, add it to the load-path, and require the package. My preferred way is <code>use-package</code> with <code>straight</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:#008000">use-package</span> <span style="color:#19177c">password-store-completion</span>
|
||||
</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">"SqrtMinusOne/password-store-completion"</span>))
|
||||
</span></span></code></pre></div><p><code>xdotool</code> has to be available in <code>$PATH</code>.</p>
|
||||
<p>For Ivy integration:</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">require</span> <span style="color:#19177c">'password-store-ivy</span>)
|
||||
</span></span></code></pre></div><p>Also be sure to load the main package before Ivy.</p>
|
||||
<p>For Embark integration:</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">require</span> <span style="color:#19177c">'password-store-embark</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">password-store-embark-mode</span>)
|
||||
</span></span></code></pre></div><h2 id="usage">Usage</h2>
|
||||
<p>Emacs’ built-in <a href="https://www.gnu.org/software/emacs/manual/html_node/auth/The-Unix-password-store.html">password store</a> integration has to be set up.</p>
|
||||
<p>The only command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<p>For Ivy integration, the command is <code>M-x password-store-ivy</code>, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:</p>
|
||||
<ul>
|
||||
<li><code>M-a</code>. Perform autotype</li>
|
||||
<li><code>M-p</code>. Type password</li>
|
||||
<li><code>M-u</code>. Type username</li>
|
||||
<li><code>M-U</code>. Type url</li>
|
||||
<li><code>M-f</code>. Select a field to type</li>
|
||||
<li><code>M-a</code>: Perform autotype</li>
|
||||
<li><code>M-p</code>: Type password</li>
|
||||
<li><code>M-u</code>: Type username</li>
|
||||
<li><code>M-U</code>: Type URL</li>
|
||||
<li><code>M-f</code>: Select a field to type</li>
|
||||
</ul>
|
||||
<p>For other completion frameworks, run <code>M-x password-store-completion</code>. If Embark integration is enabled, the same actions are added.</p>
|
||||
<h2 id="customization">Customization</h2>
|
||||
<p>There are a few parameters that control delays:</p>
|
||||
<p>The following parameters control delays:</p>
|
||||
<ul>
|
||||
<li><code>password-store-ivy-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-ivy-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
<li><code>password-store-completion-initial-wait</code> controls the initial delay before starting to type a sequence (in milliseconds)</li>
|
||||
<li><code>password-store-completion-delay</code> controls the delay between typing characters (in milliseconds)</li>
|
||||
</ul>
|
||||
<p>There is also <code>password-store-ivy-sequences</code> that determines the sequence of actions <code>password-store-ivy</code> performs.</p>
|
||||
<p>It is an alist with the following required keys (corresponding to the basic actions):</p>
|
||||
<p><code>password-store-completion-sequences</code> determines the steps of sequences. It is an alist; the keys correspond to the default sequences:</p>
|
||||
<ul>
|
||||
<li><code>autotype</code></li>
|
||||
<li><code>password</code></li>
|
||||
|
|
@ -121,12 +119,12 @@
|
|||
</ul>
|
||||
<p>The values are lists of the following elements:</p>
|
||||
<ul>
|
||||
<li><code>wait</code>. Wait for <code>password-store-ivy-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait <milliseconds>)</code>. Wait for <code><milliseconds></code>.</li>
|
||||
<li><code>(key <key>)</code>. Type <code><key></code>.</li>
|
||||
<li><code>(field <field>)</code>. Type <code><field></code> of entry.</li>
|
||||
<li><code>wait</code>: Wait for <code>password-store-completion-initial-wait</code> milliseconds</li>
|
||||
<li><code>(wait <milliseconds>)</code>: Wait for <code><milliseconds></code></li>
|
||||
<li><code>(key <key>)</code>: Type <code><key></code></li>
|
||||
<li><code>(field <field>)</code>: Type <code><field></code> of entry</li>
|
||||
</ul>
|
||||
<p>For example, the starting values:</p>
|
||||
<p>The default value is as follows:</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:#666">'</span>((<span style="color:#19177c">autotype</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">"username"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">key</span> <span style="color:#666">.</span> <span style="color:#ba2121">"Tab"</span>)
|
||||
|
|
@ -135,13 +133,19 @@
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">password</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#19177c">secret</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">username</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">"username"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">url</span> <span style="color:#666">.</span> (<span style="color:#19177c">wait</span> (<span style="color:#19177c">field</span> <span style="color:#666">.</span> <span style="color:#ba2121">"url"</span>))))
|
||||
</span></span></code></pre></div><p>In addition to the global override, sequences can be overriden per-entry with a field called <code>sequence-<name></code>, where <code><name></code> is a key of <code>password-store-ivy-sequences</code>.</p>
|
||||
<p>For example, here is an override to press <code>Tab</code> twice:</p>
|
||||
</span></span></code></pre></div><p>Sequences can also be overridden in a particular entry with a field called <code>sequence-<name></code>, where <code><name></code> is a key of <code>password-store-completion-sequences</code>.</p>
|
||||
<p>For example, to press <code>Tab</code> twice in the <code>autotype</code> sequence:</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><pass>
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: <url>
|
||||
</span></span><span style="display:flex;"><span>sequence-autotype: (wait (field . "username") (key . "Tab") (key . "Tab") (field . secret) (key . "Return"))
|
||||
</span></span></code></pre></div>
|
||||
</span></span></code></pre></div><p>Or, create a custom sequence:</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><pass>
|
||||
</span></span><span style="display:flex;"><span>username: thexcloud@gmail.com
|
||||
</span></span><span style="display:flex;"><span>url: <url>
|
||||
</span></span><span style="display:flex;"><span>sequence-doubletab: (wait (field . "username") (key . "Tab") (key . "Tab") (field . secret) (key . "Return"))
|
||||
</span></span></code></pre></div><p>Custom sequences can be run in the field selection interface (<code>M-f</code> in Ivy, <code>M-x embark-act f</code> in Embark).</p>
|
||||
|
||||
</div>
|
||||
<div class="table-of-contents">
|
||||
<div class="table-of-contents-text">
|
||||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -195,74 +188,74 @@ interval = 1
|
|||
<h2 id="alternatives">Alternatives</h2>
|
||||
<p>There is a number of packages with a similar purpose, here is a rough comparison of features:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
<th>3rd party integrations</th>
|
||||
<th>Control method (1)</th>
|
||||
<th>Persistent history</th>
|
||||
<th>Persistent state</th>
|
||||
<th>Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td>-</td>
|
||||
<td>transient.el</td>
|
||||
<td>CSV</td>
|
||||
<td>+</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td>Org Mode!</td>
|
||||
<td>via Org commands</td>
|
||||
<td>via Org mode</td>
|
||||
<td>-</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>custom delimited format?</td>
|
||||
<td>+, but saving on-demand</td>
|
||||
<td>alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td>-</td>
|
||||
<td>self-cooked interactive buffer</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td>-</td>
|
||||
<td>mode-line icon</td>
|
||||
<td>+</td>
|
||||
<td>-</td>
|
||||
<td>sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td>GTK panel</td>
|
||||
<td>CLI</td>
|
||||
<td>-</td>
|
||||
<td>-, but the program is independent of Emacs</td>
|
||||
<td>GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Package</th>
|
||||
<th style="text-align: left">3rd party integrations</th>
|
||||
<th style="text-align: left">Control method (1)</th>
|
||||
<th style="text-align: left">Persistent history</th>
|
||||
<th style="text-align: left">Persistent state</th>
|
||||
<th style="text-align: left">Notifications</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/SqrtMinusOne/pomm.el">pomm.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">transient.el</td>
|
||||
<td style="text-align: left">CSV</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/marcinkoziej/org-pomodoro/tree/master">org-pomodoro</a></td>
|
||||
<td style="text-align: left">Org Mode!</td>
|
||||
<td style="text-align: left">via Org commands</td>
|
||||
<td style="text-align: left">via Org mode</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/TatriX/pomidor/">pomidor</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">custom delimited format?</td>
|
||||
<td style="text-align: left">+, but saving on-demand</td>
|
||||
<td style="text-align: left">alert.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/baudtack/pomodoro.el/">pomodoro.el</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">notifications.el + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/konr/tomatinho/">tomatinho</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">self-cooked interactive buffer</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">message + sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/ferfebles/redtick">redtick</a></td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">mode-line icon</td>
|
||||
<td style="text-align: left">+</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">sounds</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left"><a href="https://github.com/abo-abo/gtk-pomodoro-indicator">gtk-pomodoro-indicator</a></td>
|
||||
<td style="text-align: left">GTK panel</td>
|
||||
<td style="text-align: left">CLI</td>
|
||||
<td style="text-align: left">-</td>
|
||||
<td style="text-align: left">-, but the program is independent of Emacs</td>
|
||||
<td style="text-align: left">GTK notifications</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Be sure to check those out if this one doesn’t quite fit your workflow!</p>
|
||||
<p>(1) Means of timer control with exception to Emacs interactive commands</p>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
@ -213,33 +206,33 @@
|
|||
</span></span><span style="display:flex;"><span>#+end_src
|
||||
</span></span></code></pre></div><p><code>sunwait</code> is declared in an Org table that looks like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Such tables are spread through my <code>Desktop.org</code>, for instance, here is another one for a polybar module that depends on dateutils:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus I made a function that extracts packages from all such tables from the current Org buffer. The rules are as follows:</p>
|
||||
<ul>
|
||||
|
|
@ -358,28 +351,28 @@
|
|||
<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>block1 block2
|
||||
</span></span></code></pre></div><p>And set the foreground and background colors like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>block1</th>
|
||||
<th>glyph</th>
|
||||
<th>block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>foreground</td>
|
||||
<td>F1</td>
|
||||
<td>B2</td>
|
||||
<td>F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>background</td>
|
||||
<td>B1</td>
|
||||
<td>B1</td>
|
||||
<td>B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left"></th>
|
||||
<th style="text-align: left">block1</th>
|
||||
<th style="text-align: left">glyph</th>
|
||||
<th style="text-align: left">block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">foreground</td>
|
||||
<td style="text-align: left">F1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
<td style="text-align: left">F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">background</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>So, that’s a start. First, let’s define the glyph symbols in the polybar config:</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">[glyph]</span>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -18,13 +18,6 @@
|
|||
<link rel="icon" type="image/ico" href="https://sqrtminusone.xyz/favicon.ico">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/posts/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -2138,33 +2138,33 @@ I&rsquo;ve seen a couple of cases where people would swap their username and
|
|||
</span></span><span style="display:flex;"><span>#+end_src
|
||||
</span></span></code></pre></div><p><code>sunwait</code> is declared in an Org table that looks like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">sunwait</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Such tables are spread through my <code>Desktop.org</code>, for instance, here is another one for a polybar module that depends on dateutils:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>desktop-polybar</td>
|
||||
<td>dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left">Category</th>
|
||||
<th style="text-align: left">Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">desktop-polybar</td>
|
||||
<td style="text-align: left">dateutils</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Thus I made a function that extracts packages from all such tables from the current Org buffer. The rules are as follows:</p>
|
||||
<ul>
|
||||
|
|
@ -2283,28 +2283,28 @@ I&rsquo;ve seen a couple of cases where people would swap their username and
|
|||
<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>block1 block2
|
||||
</span></span></code></pre></div><p>And set the foreground and background colors like that:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>block1</th>
|
||||
<th>glyph</th>
|
||||
<th>block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>foreground</td>
|
||||
<td>F1</td>
|
||||
<td>B2</td>
|
||||
<td>F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>background</td>
|
||||
<td>B1</td>
|
||||
<td>B1</td>
|
||||
<td>B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: left"></th>
|
||||
<th style="text-align: left">block1</th>
|
||||
<th style="text-align: left">glyph</th>
|
||||
<th style="text-align: left">block2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left">foreground</td>
|
||||
<td style="text-align: left">F1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
<td style="text-align: left">F2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left">background</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B1</td>
|
||||
<td style="text-align: left">B2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>So, that&rsquo;s a start. First, let&rsquo;s define the glyph symbols in the polybar config:</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">[glyph]</span>
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@
|
|||
|
||||
|
||||
<url>
|
||||
<loc>https://sqrtminusone.xyz/packages/password-store-ivy/</loc>
|
||||
<loc>https://sqrtminusone.xyz/packages/password-store-completion/</loc>
|
||||
<lastmod>2022-02-13T00:00:00+00:00</lastmod>
|
||||
|
||||
|
||||
|
|
|
|||
BIN
stats/all.png
BIN
stats/all.png
Binary file not shown.
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/elfeed/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2022-09-16-vosk/</link>
|
||||
<pubDate>Fri, 16 Sep 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-09-16-vosk/</guid>
|
||||
<description>Edit &lt;2022-10-13 Thu&gt;: Just a couple of days after this post, OpenAI released a speech recognition model called Whisper, which is so much better than anything I&rsquo;ve ever seen before. I&rsquo;ve decided to leave this post as it is, but check the Emacs config for the updated version.
In my experience, finding something in a podcast is particularly troublesome. For example, occasionally I want to refer to some line in the podcast to make an org-roam node, e.</description>
|
||||
<description><p><strong>Edit <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-10-13 Thu&gt;</span></span>:</strong> Just a couple of days after this post, OpenAI released a speech recognition model called <a href="https://openai.com/blog/whisper/">Whisper</a>, which is so much better than anything I&rsquo;ve ever seen before. I&rsquo;ve decided to leave this post as it is, but check the <a href="https://sqrtminusone.xyz/configs/emacs/#podcast-transcripts">Emacs config</a> for the updated version.</p>
<p>In my experience, finding something in a podcast is particularly troublesome. For example, occasionally I want to refer to some line in the podcast to make an <a href="https://github.com/org-roam/org-roam">org-roam</a> node, e.g. I want to check that I got that part right.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>My EMMS and elfeed setup</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2021-09-07-emms/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-09-07-emms/</guid>
|
||||
<description>Intro This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.
Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.
The respective emacs packages, elfeed and EMMS, proved somewhat tricky to set up, i.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<figure><img src="https://sqrtminusone.xyz/images/emms/emms-screenshot.png">
</figure>

<p>This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.</p>
<p>Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/emacs/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,77 +13,77 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2023-11-11-index/</link>
|
||||
<pubDate>Sat, 11 Nov 2023 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2023-11-11-index/</guid>
|
||||
<description>The post describes a Johnny.Decimal-inspired filesystem structure, declared in an org file and synchronized across machines. Different folders are available on different machines.
Intro My filesystem is, shall we say, not the most orderly place.
It&rsquo;s been somewhat messy, and messy in different ways across my three machines. For instance, my laptop had work projects in ~/Code/Job, my work machine had just ~/Code, and so forth.
Strangely, I couldn&rsquo;t find and existing solution to that problem.</description>
|
||||
<description><div class="abstract">
<p>The post describes a Johnny.Decimal-inspired filesystem structure, declared in an org file and synchronized across machines. Different folders are available on different machines.</p>
</div>
<h2 id="intro">Intro</h2>
<p>My filesystem is, shall we say, not the most orderly place.</p>
<center>
<iframe src="https://emacs.ch/@sqrtminusone/110514686718545191/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="500" allowfullscreen="allowfullscreen"></iframe><script src="https://emacs.ch/embed.js" async="async"></script>
</center>
<p>It&rsquo;s been somewhat messy, and messy in different ways across my three machines. For instance, my laptop had work projects in <code>~/Code/Job</code>, my work machine had just <code>~/Code</code>, and so forth.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>916 days of Emacs</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2023-04-13-emacs/</link>
|
||||
<pubDate>Thu, 13 Apr 2023 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2023-04-13-emacs/</guid>
|
||||
<description>Poof I made my free-time disappear
- Ellis Kenyő, on being called an "elisp mage" Little did I know on the fateful day of [2020-10-09 Fri], when I had installed GNU Emacs. I wasn&rsquo;t thinking about the ethical aspects of free software, the aesthetics of Lisp, or these other things with which an occasional layperson might explain how an almost half a century old program can still be in active use.</description>
|
||||
<description><style>
 .quote-title {
 margin-left: 24px;
 }
</style>
<blockquote>
<p>Poof I made my free-time disappear</p>
</blockquote>
<p class="quote-title">- <a href="https://elken.dev">Ellis Kenyő</a>, on being called an "elisp mage"
<p>Little did I know on the fateful day of <strong><span class="timestamp-wrapper"><span class="timestamp">[2020-10-09 Fri]</span></span></strong>, when I had installed <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>. I wasn&rsquo;t thinking about the <a href="https://www.gnu.org/philosophy/philosophy.html">ethical aspects</a> of free software, the <a href="https://www.webofstories.com/play/marvin.minsky/44">aesthetics of Lisp</a>, or these other things with which an occasional layperson might explain how an almost <a href="https://www.jwz.org/doc/emacs-timeline.html">half a century old</a> program can still be in <a href="https://emacsconf.org/2022/talks/survey/">active use</a>.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Running Gource with Emacs</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2023-01-02-gource/</link>
|
||||
<pubDate>Mon, 02 Jan 2023 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2023-01-02-gource/</guid>
|
||||
<description>Gource is a program that draws an animated graph of users changing the repository over time.
Although it can work without extra effort (just run gource in a git repo), there are some tweaks that can be done:
Gource supports using custom pictures for users. Gravatar is an obvious place to get these. Occasionally, the same people have different names and/or emails in history.
It may happen when people use forges like GitLab or just have different settings on different machines.</description>
|
||||
<description><figure><img src="https://sqrtminusone.xyz/images/gource/gource.png">
</figure>

<p><a href="https://gource.io/">Gource</a> is a program that draws an animated graph of users changing the repository over time.</p>
<p>Although it can work without extra effort (just run <code>gource</code> in a <a href="https://git-scm.com/">git</a> repo), there are some tweaks that can be done:</p>
<ul>
<li>Gource supports using custom pictures for users. <a href="https://en.gravatar.com/">Gravatar</a> is an obvious place to get these.</li>
<li>Occasionally, the same people have different names and/or emails in history.<br />
It may happen when people use forges like <a href="https://gitlab.com/">GitLab</a> or just have different settings on different machines. It would be nice to merge these names.</li>
<li>Visualizing the history of multiple repositories (e.g. frontend and backend) requires combining multiple gource logs.</li>
</ul>
<p>So, why not try doing that with Emacs?</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Podcast transcripts with elfeed & speech recognition engine</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2022-09-16-vosk/</link>
|
||||
<pubDate>Fri, 16 Sep 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-09-16-vosk/</guid>
|
||||
<description>Edit &lt;2022-10-13 Thu&gt;: Just a couple of days after this post, OpenAI released a speech recognition model called Whisper, which is so much better than anything I&rsquo;ve ever seen before. I&rsquo;ve decided to leave this post as it is, but check the Emacs config for the updated version.
In my experience, finding something in a podcast is particularly troublesome. For example, occasionally I want to refer to some line in the podcast to make an org-roam node, e.</description>
|
||||
<description><p><strong>Edit <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-10-13 Thu&gt;</span></span>:</strong> Just a couple of days after this post, OpenAI released a speech recognition model called <a href="https://openai.com/blog/whisper/">Whisper</a>, which is so much better than anything I&rsquo;ve ever seen before. I&rsquo;ve decided to leave this post as it is, but check the <a href="https://sqrtminusone.xyz/configs/emacs/#podcast-transcripts">Emacs config</a> for the updated version.</p>
<p>In my experience, finding something in a podcast is particularly troublesome. For example, occasionally I want to refer to some line in the podcast to make an <a href="https://github.com/org-roam/org-roam">org-roam</a> node, e.g. I want to check that I got that part right.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Extending elfeed with PDF viewer and subtitles fetcher</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2022-05-09-pdf/</link>
|
||||
<pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-05-09-pdf/</guid>
|
||||
<description>Intro elfeed is one of the most popular Emacs packages, and it&rsquo;s also one in which I ended up investing a lot of effort. I wrote about the EMMS integration and even made a custom frontpage to my liking.
However, sites frequently limit the amount of information shipped in the RSS feed. Oftentimes the entry doesn&rsquo;t include the entire content (of which, by the way, this blog was guilty).
Also, there&rsquo;s non-textual content, of which in this post I consider YouTube subscriptions.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p><a href="https://github.com/skeeto/elfeed">elfeed</a> is one of the most popular Emacs packages, and it&rsquo;s also one in which I ended up investing a lot of effort. I wrote about the <a href="https://sqrtminusone.xyz/posts/2021-09-07-emms/">EMMS integration</a> and even made a <a href="https://github.com/SqrtMinusOne/elfeed-summary">custom frontpage</a> to my liking.</p>
<p>However, sites frequently limit the amount of information shipped in the RSS feed. Oftentimes the entry doesn&rsquo;t include the entire content (of which, by the way, this blog was guilty).</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>A few cases of literate configuration</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2022-02-12-literate/</link>
|
||||
<pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-02-12-literate/</guid>
|
||||
<description>A post that arose from the discussion of literate configuration on the System Crafters Discord.
I am using the literate configuration strategy (based on Emacs&rsquo; Org Mode) to manage most of my configuration files. A piece of such a configuration can be as simple as an Org file, which is tangled to one or many plain-text configuration files, but it can be more.
In my opinion, a literate configuration can be more straightforward and concise than a &ldquo;normal&rdquo; one, thanks to Org Mode&rsquo;s capabilities of working with source code.</description>
|
||||
<description><p>A post that arose from the discussion of literate configuration on the <a href="https://systemcrafters.net/">System Crafters</a> Discord.</p>
<p>I am using the <a href="https://leanpub.com/lit-config">literate configuration</a> strategy (based on <a href="https://orgmode.org/">Emacs&rsquo; Org Mode</a>) to manage most of my configuration files. A piece of such a configuration can be as simple as an Org file, which is tangled to one or many plain-text configuration files, but it can be more.</p>
<p>In my opinion, a literate configuration can be more straightforward and concise than a &ldquo;normal&rdquo; one, thanks to Org Mode&rsquo;s capabilities of <a href="https://orgmode.org/manual/Working-with-Source-Code.html">working with source code</a>. So here I present a few examples from my configuration where I think this is the case:</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Using EXWM and perspective.el on multi-monitor setup</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2022-01-03-exwm/</link>
|
||||
<pubDate>Mon, 03 Jan 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-01-03-exwm/</guid>
|
||||
<description>I wrote about Emacs and i3 integration around two months ago. Shortly after however, I decided to give EXWM another try, mainly because my largest reservation - lack of performance - seems to have been resolved by updates to the native compilation since my first attempt. Or I may have lost some sensitivity to that issue. Regardless, the second dive into EXWM thus far feels successful, and I think it&rsquo;s the right time to share some of my thoughts on the subject.</description>
|
||||
<description><p>I wrote about <a href="https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/">Emacs and i3</a> integration around two months ago. Shortly after however, I decided to give EXWM another try, mainly because my largest reservation - lack of performance - seems to have been resolved by updates to the native compilation since my first attempt. Or I may have lost some sensitivity to that issue. Regardless, the second dive into EXWM thus far feels successful, and I think it&rsquo;s the right time to share some of my thoughts on the subject.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Getting a consistent set of keybindings between i3 and Emacs</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/</link>
|
||||
<pubDate>Wed, 06 Oct 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/</guid>
|
||||
<description>Intro One advantage of EXWM for an Emacs user is that EXWM gives one set of keybindings to manage both Emacs windows and X windows. In every other WM, like my preferred i3wm, two orthogonal keymaps seem to be necessary. But, as both programs are quite customizable, I want to see whether I can replicate at least some part of the EXWM goodness in i3.
But why not just use EXWM?</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p>One advantage of EXWM for an Emacs user is that EXWM gives one set of keybindings to manage both Emacs windows and X windows. In every other WM, like my preferred <a href="https://i3wm.org">i3wm</a>, two orthogonal keymaps seem to be necessary. But, as both programs are quite customizable, I want to see whether I can replicate at least some part of the EXWM goodness in i3.</p>
<p>But why not just use EXWM? One key reason is that to my taste (and perhaps on my hardware) EXWM didn&rsquo;t feel snappy enough. Also, I really like i3&rsquo;s tree-based layout structure; I feel like it fits my workflow much better than anything else I tried, including the master/stack paradigm of <a href="https://xmonad.org/">XMonad</a>, for instance.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>My EMMS and elfeed setup</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2021-09-07-emms/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-09-07-emms/</guid>
|
||||
<description>Intro This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.
Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.
The respective emacs packages, elfeed and EMMS, proved somewhat tricky to set up, i.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<figure><img src="https://sqrtminusone.xyz/images/emms/emms-screenshot.png">
</figure>

<p>This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.</p>
<p>Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Replacing Jupyter Notebook with Org Mode</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2021-05-01-org-python/</link>
|
||||
<pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-05-01-org-python/</guid>
|
||||
<description>Why? Jupyter Notebook and its successor Jupyter Lab providing an interactive development environment for many programming languages are in lots of ways great pieces of software.
But while I was using the former, and then the latter, I was also an as-full-time-as-one-can-get NeoVim user. &ldquo;As one can get&rdquo; is because, of course, there is no sensible way to extend the NeoVim editing experience to the Jupyter ecosystem.
A possibility for change appeared with my discovery of Emacs not so long ago.</description>
|
||||
<description><figure><img src="https://sqrtminusone.xyz/images/org-python/org-python-screenshot.png">
</figure>

<h2 id="why">Why?</h2>
<p><a href="https://jupyter-notebook.readthedocs.io/en/stable/">Jupyter Notebook</a> and its successor <a href="https://jupyterlab.readthedocs.io/en/stable/">Jupyter Lab</a> providing an interactive development environment for many programming languages are in lots of ways great pieces of software.</p>
<p>But while I was using the former, and then the latter, I was also an as-full-time-as-one-can-get NeoVim user. &ldquo;As one can get&rdquo; is because, of course, there is no sensible way to extend the NeoVim editing experience to the Jupyter ecosystem.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Multiple Gmail accounts & labels with Emacs</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2021-02-27-gmail/</link>
|
||||
<pubDate>Sat, 27 Feb 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-02-27-gmail/</guid>
|
||||
<description>Intro For quite some time, e-mail seemed like an anomaly in my workflow. I am a long time Gmail user, and my decade-old account has a somewhat formidable quantity of labels and filters. My messages are often assigned multiple labels, and I also like to keep only a bunch of messages in the inbox.
Although, in my opinion, Gmail web UI was and still is leagues ahead of many of its competitors and even allows keyboard-centric workflow, it&rsquo;s awkward to use with a keyboard-driven browser, and for no money on Earth I would enable browser notifications.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p>For quite some time, e-mail seemed like an anomaly in my workflow. I am a long time Gmail user, and my decade-old account has a somewhat formidable quantity of labels and filters. My messages are often assigned multiple labels, and I also like to keep only a bunch of messages in the inbox.</p>
<p>Although, in my opinion, Gmail web UI was and still is leagues ahead of many of its competitors and even allows keyboard-centric workflow, it&rsquo;s awkward to use with a keyboard-driven browser, and for no money on Earth I would enable browser notifications.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/emms/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2021-09-07-emms/</link>
|
||||
<pubDate>Wed, 08 Sep 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-09-07-emms/</guid>
|
||||
<description>Intro This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.
Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.
The respective emacs packages, elfeed and EMMS, proved somewhat tricky to set up, i.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<figure><img src="https://sqrtminusone.xyz/images/emms/emms-screenshot.png">
</figure>

<p>This is the current state of my quest to live in Emacs, at least in part of reading RSS and music.</p>
<p>Even before I lost my mind about customizing obscure keyboard-driven software, I tried Inoreader, self-hosted FreshRSS, and then newsboat from the RSS side and ncmpcpp+MPD from the audio player side. At some point, I got curious about whether I can do the same in Emacs.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/exwm/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2022-01-03-exwm/</link>
|
||||
<pubDate>Mon, 03 Jan 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-01-03-exwm/</guid>
|
||||
<description>I wrote about Emacs and i3 integration around two months ago. Shortly after however, I decided to give EXWM another try, mainly because my largest reservation - lack of performance - seems to have been resolved by updates to the native compilation since my first attempt. Or I may have lost some sensitivity to that issue. Regardless, the second dive into EXWM thus far feels successful, and I think it&rsquo;s the right time to share some of my thoughts on the subject.</description>
|
||||
<description><p>I wrote about <a href="https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/">Emacs and i3</a> integration around two months ago. Shortly after however, I decided to give EXWM another try, mainly because my largest reservation - lack of performance - seems to have been resolved by updates to the native compilation since my first attempt. Or I may have lost some sensitivity to that issue. Regardless, the second dive into EXWM thus far feels successful, and I think it&rsquo;s the right time to share some of my thoughts on the subject.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/i3wm/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/</link>
|
||||
<pubDate>Wed, 06 Oct 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-10-04-emacs-i3/</guid>
|
||||
<description>Intro One advantage of EXWM for an Emacs user is that EXWM gives one set of keybindings to manage both Emacs windows and X windows. In every other WM, like my preferred i3wm, two orthogonal keymaps seem to be necessary. But, as both programs are quite customizable, I want to see whether I can replicate at least some part of the EXWM goodness in i3.
But why not just use EXWM?</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p>One advantage of EXWM for an Emacs user is that EXWM gives one set of keybindings to manage both Emacs windows and X windows. In every other WM, like my preferred <a href="https://i3wm.org">i3wm</a>, two orthogonal keymaps seem to be necessary. But, as both programs are quite customizable, I want to see whether I can replicate at least some part of the EXWM goodness in i3.</p>
<p>But why not just use EXWM? One key reason is that to my taste (and perhaps on my hardware) EXWM didn&rsquo;t feel snappy enough. Also, I really like i3&rsquo;s tree-based layout structure; I feel like it fits my workflow much better than anything else I tried, including the master/stack paradigm of <a href="https://xmonad.org/">XMonad</a>, for instance.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/mail/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2021-02-27-gmail/</link>
|
||||
<pubDate>Sat, 27 Feb 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-02-27-gmail/</guid>
|
||||
<description>Intro For quite some time, e-mail seemed like an anomaly in my workflow. I am a long time Gmail user, and my decade-old account has a somewhat formidable quantity of labels and filters. My messages are often assigned multiple labels, and I also like to keep only a bunch of messages in the inbox.
Although, in my opinion, Gmail web UI was and still is leagues ahead of many of its competitors and even allows keyboard-centric workflow, it&rsquo;s awkward to use with a keyboard-driven browser, and for no money on Earth I would enable browser notifications.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p>For quite some time, e-mail seemed like an anomaly in my workflow. I am a long time Gmail user, and my decade-old account has a somewhat formidable quantity of labels and filters. My messages are often assigned multiple labels, and I also like to keep only a bunch of messages in the inbox.</p>
<p>Although, in my opinion, Gmail web UI was and still is leagues ahead of many of its competitors and even allows keyboard-centric workflow, it&rsquo;s awkward to use with a keyboard-driven browser, and for no money on Earth I would enable browser notifications.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/org-mode/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2022-05-09-pdf/</link>
|
||||
<pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-05-09-pdf/</guid>
|
||||
<description>Intro elfeed is one of the most popular Emacs packages, and it&rsquo;s also one in which I ended up investing a lot of effort. I wrote about the EMMS integration and even made a custom frontpage to my liking.
However, sites frequently limit the amount of information shipped in the RSS feed. Oftentimes the entry doesn&rsquo;t include the entire content (of which, by the way, this blog was guilty).
Also, there&rsquo;s non-textual content, of which in this post I consider YouTube subscriptions.</description>
|
||||
<description><h2 id="intro">Intro</h2>
<p><a href="https://github.com/skeeto/elfeed">elfeed</a> is one of the most popular Emacs packages, and it&rsquo;s also one in which I ended up investing a lot of effort. I wrote about the <a href="https://sqrtminusone.xyz/posts/2021-09-07-emms/">EMMS integration</a> and even made a <a href="https://github.com/SqrtMinusOne/elfeed-summary">custom frontpage</a> to my liking.</p>
<p>However, sites frequently limit the amount of information shipped in the RSS feed. Oftentimes the entry doesn&rsquo;t include the entire content (of which, by the way, this blog was guilty).</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>A few cases of literate configuration</title>
|
||||
<link>https://sqrtminusone.xyz/posts/2022-02-12-literate/</link>
|
||||
<pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2022-02-12-literate/</guid>
|
||||
<description>A post that arose from the discussion of literate configuration on the System Crafters Discord.
I am using the literate configuration strategy (based on Emacs&rsquo; Org Mode) to manage most of my configuration files. A piece of such a configuration can be as simple as an Org file, which is tangled to one or many plain-text configuration files, but it can be more.
In my opinion, a literate configuration can be more straightforward and concise than a &ldquo;normal&rdquo; one, thanks to Org Mode&rsquo;s capabilities of working with source code.</description>
|
||||
<description><p>A post that arose from the discussion of literate configuration on the <a href="https://systemcrafters.net/">System Crafters</a> Discord.</p>
<p>I am using the <a href="https://leanpub.com/lit-config">literate configuration</a> strategy (based on <a href="https://orgmode.org/">Emacs&rsquo; Org Mode</a>) to manage most of my configuration files. A piece of such a configuration can be as simple as an Org file, which is tangled to one or many plain-text configuration files, but it can be more.</p>
<p>In my opinion, a literate configuration can be more straightforward and concise than a &ldquo;normal&rdquo; one, thanks to Org Mode&rsquo;s capabilities of <a href="https://orgmode.org/manual/Working-with-Source-Code.html">working with source code</a>. So here I present a few examples from my configuration where I think this is the case:</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/org/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2021-05-01-org-python/</link>
|
||||
<pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2021-05-01-org-python/</guid>
|
||||
<description>Why? Jupyter Notebook and its successor Jupyter Lab providing an interactive development environment for many programming languages are in lots of ways great pieces of software.
But while I was using the former, and then the latter, I was also an as-full-time-as-one-can-get NeoVim user. &ldquo;As one can get&rdquo; is because, of course, there is no sensible way to extend the NeoVim editing experience to the Jupyter ecosystem.
A possibility for change appeared with my discovery of Emacs not so long ago.</description>
|
||||
<description><figure><img src="https://sqrtminusone.xyz/images/org-python/org-python-screenshot.png">
</figure>

<h2 id="why">Why?</h2>
<p><a href="https://jupyter-notebook.readthedocs.io/en/stable/">Jupyter Notebook</a> and its successor <a href="https://jupyterlab.readthedocs.io/en/stable/">Jupyter Lab</a> providing an interactive development environment for many programming languages are in lots of ways great pieces of software.</p>
<p>But while I was using the former, and then the latter, I was also an as-full-time-as-one-can-get NeoVim user. &ldquo;As one can get&rdquo; is because, of course, there is no sensible way to extend the NeoVim editing experience to the Jupyter ecosystem.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@
|
|||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="https://sqrtminusone.xyz/tags/orgmode/index.xml" title="SqrtMinusOne" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer data-domain="sqrtminusone.xyz" src="https://plausible.sqrtminusone.xyz/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<link>https://sqrtminusone.xyz/posts/2023-11-11-index/</link>
|
||||
<pubDate>Sat, 11 Nov 2023 00:00:00 +0000</pubDate>
|
||||
<guid>https://sqrtminusone.xyz/posts/2023-11-11-index/</guid>
|
||||
<description>The post describes a Johnny.Decimal-inspired filesystem structure, declared in an org file and synchronized across machines. Different folders are available on different machines.
Intro My filesystem is, shall we say, not the most orderly place.
It&rsquo;s been somewhat messy, and messy in different ways across my three machines. For instance, my laptop had work projects in ~/Code/Job, my work machine had just ~/Code, and so forth.
Strangely, I couldn&rsquo;t find and existing solution to that problem.</description>
|
||||
<description><div class="abstract">
<p>The post describes a Johnny.Decimal-inspired filesystem structure, declared in an org file and synchronized across machines. Different folders are available on different machines.</p>
</div>
<h2 id="intro">Intro</h2>
<p>My filesystem is, shall we say, not the most orderly place.</p>
<center>
<iframe src="https://emacs.ch/@sqrtminusone/110514686718545191/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="500" allowfullscreen="allowfullscreen"></iframe><script src="https://emacs.ch/embed.js" async="async"></script>
</center>
<p>It&rsquo;s been somewhat messy, and messy in different ways across my three machines. For instance, my laptop had work projects in <code>~/Code/Job</code>, my work machine had just <code>~/Code</code>, and so forth.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue