77 lines
3 KiB
Plaintext
77 lines
3 KiB
Plaintext
|
||
|
||
<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 user’s 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 ST’s 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/ > \
|
||
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>
|
||
|
||
|