emacs/var/elfeed/db/data/a5/a5c9706f91bed54eb3ee51e941f75cdd26b671b0
2022-01-03 12:49:32 -06:00

77 lines
3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>The Suckless community recently announced the release of
<a href="https://st.suckless.org/">st-0.8.2</a>. Seeing as I maintain <a href="https://gitlab.com/protesilaos/st">a soft
fork</a>, it was time to refactor my
repo. I took this opportunity to also review my build, which led me to
the realisation that I need no added features whatsoever. The generic
terminal emulator is good enough.</p>
<h2>What my fork is about</h2>
<p>In terms of functionality, I build <code>st</code> in the users home directory.
This is how I have designed my custom desktop session (distributed via
<a href="https://gitlab.com/protesilaos/dotfiles">my dotfiles</a>): there is
<code>$HOME/bin</code> which is added to <code>$PATH</code>.</p>
<p>As for aesthetics:</p>
<ul>
<li>I have modified the font definition to leverage my <code>fonts.conf</code>
settings in order to use my custom typefaces (see my dotfiles).</li>
<li>All options related to colours are sourced from another file via an
<code>#include</code> directive. This allows me to (i) add my <a href="https://protesilaos.com/tempus-themes/">Tempus
themes</a> and (ii) control STs appearance through
scripts that are part of my custom desktop session (where I perform
live theme switches across the entire environment).</li>
</ul>
<p>Here are a couple of video demonstrations:</p>
<ul>
<li>Basics of <a href="https://protesilaos.com/codelog/2018-12-27-bspwm-demo-video/">my BSPWM session</a>.</li>
<li>Using <a href="https://protesilaos.com/codelog/2019-01-13-tmux-demo-bspwm/">ST and TMUX with BSPWM</a>.</li>
</ul>
<h2>How I prepared my fork</h2>
<p>Downloaded the latest release tarball and extracted it in place:</p>
<pre><code>tar xf st-0.8.2.tar.gz
</code></pre>
<p>I made two copies of the decompressed directory. The one served as
a reference point, while the other was used to apply my modifications.</p>
<p>Once I was done altering the source code, I did:</p>
<pre><code>diff -up ~/st-0.8.2-upstream ~/st-0.8.2-prot-soft-fork/ &gt; \
st-protesilaos-stavrou-soft-fork-0.8.2.diff
</code></pre>
<p>The generated <code>.diff</code> could then be applied to the upstream code base
with the following:</p>
<pre><code>patch path/to/st-protesilaos-stavrou-soft-fork-0.8.2.diff
</code></pre>
<h2>Review and refactor</h2>
<p>After applying my changes, I decided to review my use of upstream
patches, such as the one offering clipboard support, or the other that
improves the appearance of box-drawing characters.</p>
<p>All of them have been removed from my fork in the interest of long-term
maintainability. It is difficult to guarantee that such features will
work with new upstream releases. Plus their functionality is
inessential to my workflow… Learn to work with less!</p>
<p>To use [my] <code>st-0.8.2</code> on Debian Buster we need:</p>
<pre><code>sudo apt install libx11-dev libxft-dev libxext-dev libfreetype6-dev pkgconf
</code></pre>
<p>Simplifying things makes my life easier. It is now trivial to maintain my
fork, which is an integral part of my custom desktop session.</p>