<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>How-To on tigger.dev</title><link>https://tigger.dev/tags/how-to/</link><description>Recent content in How-To on tigger.dev</description><generator>Hugo</generator><language>en-gb-oed</language><copyright>© Tadhg O'Brien</copyright><lastBuildDate>Tue, 03 Feb 2026 14:28:52 +0000</lastBuildDate><atom:link href="https://tigger.dev/tags/how-to/index.xml" rel="self" type="application/rss+xml"/><item><title>DIY Audiobooks with make-audiobook</title><link>https://tigger.dev/make-audiobook/</link><pubDate>Tue, 03 Feb 2026 14:28:52 +0000</pubDate><guid>https://tigger.dev/make-audiobook/</guid><description>&lt;p&gt;
For six months in 2022, I stared at a hospital ceiling. Paralysed from the neck down, audiobooks weren&amp;#39;t a luxury—they were my lifeline to the outside world.&lt;/p&gt;
&lt;p&gt;
That experience taught me something important: access to audio content shouldn&amp;#39;t depend on whether a publisher has bothered to record it, whether you can afford the audiobook price, or whether you&amp;#39;re willing to hand your reading habits to a cloud service.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
The Problem
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;
Most ebook-to-audio tools I found fell into three camps: cloud-based services that upload your books to someone else&amp;#39;s servers, complex setups requiring GPU clusters and Python dependency hell, or clunky commercial software with subscription fees.&lt;/p&gt;</description></item><item><title>A file renaming tool for humans</title><link>https://tigger.dev/smart-rename/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><guid>https://tigger.dev/smart-rename/</guid><description>&lt;p&gt;
I deal with a lot of PDFs. Medical invoices, insurance correspondence, bank statements, tax documents—they all arrive with names like &lt;code class="verbatim"&gt;e134-a1cf-4b4b-af65-ccf83c5270cb.pdf&lt;/code&gt; or &lt;code class="verbatim"&gt;Document(3).pdf&lt;/code&gt; or, my personal favourite, &lt;code class="verbatim"&gt;scan.pdf&lt;/code&gt;. Every. Single. Time.&lt;/p&gt;
&lt;p&gt;
So I started renaming files to something like &lt;code class="verbatim"&gt;2025-09-30-125.00-rahona-clinic.pdf&lt;/code&gt;. Now I know what it is without opening the thing - an invoice, with the date and amount right there in the name. I&amp;#39;m halfway to the spreadsheet already. And thanks to ISO date format, they sort nicely too.&lt;/p&gt;</description></item><item><title>Setup &amp; Harden a Linux Server in 2026</title><link>https://tigger.dev/harden-linux-server/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://tigger.dev/harden-linux-server/</guid><description>&lt;p&gt;If you spin up a fresh Linux box today, it&amp;#39;s not &amp;#34;new&amp;#34; for long. The moment it&amp;#39;s reachable, it&amp;#39;s being scanned, prodded, and occasionally hammered by automated traffic. That&amp;#39;s not paranoia, it&amp;#39;s just the background noise of the modern internet. Honeypot data has been consistent for years: a brand-new instance with a public IP will typically see its first SSH probe within minutes, and credential-stuffing attempts shortly after.&lt;/p&gt;
&lt;p&gt;
Cloud providers have made it trivially easy to create compute instances. What they haven&amp;#39;t done is make them safe by default. You still get a general-purpose system with a wide attack surface, and it&amp;#39;s on you to reduce that surface before you put anything meaningful on it.&lt;/p&gt;</description></item><item><title>Using Git Submodules with Local Overrides</title><link>https://tigger.dev/git-submodule-local-lib/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0000</pubDate><guid>https://tigger.dev/git-submodule-local-lib/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Introduction
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;Managing your own libraries as Git submodules can be awkward: 
normally, you&amp;#39;d have to push and pull between different directories to keep
everything in sync. &lt;/p&gt;
&lt;p&gt;
But there&amp;#39;s a handy trick: keep the submodule pointing at your public remote
(for others who clone your project), while locally overriding the submodule&amp;#39;s
URL to use your &lt;strong&gt;own&lt;/strong&gt; local checkout. This way you get fast iteration, and
others still have a smooth experience.&lt;/p&gt;</description></item><item><title>Image manipulation from the command line</title><link>https://tigger.dev/magick-get-image-res/</link><pubDate>Fri, 04 Jul 2025 18:17:43 +0100</pubDate><guid>https://tigger.dev/magick-get-image-res/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Get an image&amp;#39;s resolution
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick identify going-fishing.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;going-fishing.jpg JPEG 5422x3648 5422x3648+0+0 8-bit sRGB 12.2217MiB 0.000u 0:00.003&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
Convert an image to a different format
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg going-fishing.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
Resize an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -resize 800x600 going-fishing-resized.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
Only specify width or height
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -resize 800x going-fishing-resized-width.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -resize x600 going-fishing-resized-height.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-5" class="outline-3"&gt;
&lt;h3 id="headline-5"&gt;
By percentage
&lt;/h3&gt;
&lt;div id="outline-text-headline-5" class="outline-text-3"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -resize 50% going-fishing-resized-percent.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-6" class="outline-2"&gt;
&lt;h2 id="headline-6"&gt;
Crop an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-6" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -crop 800x600+100+100 going-fishing-cropped.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-7" class="outline-2"&gt;
&lt;h2 id="headline-7"&gt;
Rotate an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-7" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -rotate &lt;span style="color:#ae81ff"&gt;90&lt;/span&gt; going-fishing-rotated.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-8" class="outline-2"&gt;
&lt;h2 id="headline-8"&gt;
Add a border to an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-8" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -bordercolor black -border 10x10 going-fishing-bordered.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-9" class="outline-2"&gt;
&lt;h2 id="headline-9"&gt;
Add text to an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-9" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -gravity South -pointsize &lt;span style="color:#ae81ff"&gt;36&lt;/span&gt; -fill white -annotate +0+10 &lt;span style="color:#e6db74"&gt;&amp;#34;Going Fishing&amp;#34;&lt;/span&gt; going-fishing-text.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-10" class="outline-2"&gt;
&lt;h2 id="headline-10"&gt;
Convert an image to grayscale
&lt;/h2&gt;
&lt;div id="outline-text-headline-10" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -colorspace Gray going-fishing-grayscale.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-11" class="outline-2"&gt;
&lt;h2 id="headline-11"&gt;
Create a thumbnail
&lt;/h2&gt;
&lt;div id="outline-text-headline-11" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg -thumbnail 150x150 going-fishing-thumbnail.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-12" class="outline-2"&gt;
&lt;h2 id="headline-12"&gt;
Combine multiple images into a single image
&lt;/h2&gt;
&lt;div id="outline-text-headline-12" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert image1.jpg image2.jpg image3.jpg +append combined-horizontal.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert image1.jpg image2.jpg image3.jpg -append combined-vertical.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-13" class="outline-2"&gt;
&lt;h2 id="headline-13"&gt;
Watermark an image
&lt;/h2&gt;
&lt;div id="outline-text-headline-13" class="outline-text-2"&gt;
&lt;div class="src src-bash"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ magick convert going-fishing.jpg watermark.png -gravity southeast -geometry +10+10 -composite going-fishing-watermarked.jpg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Watch Youtube with Auto-Translated Captions</title><link>https://tigger.dev/youtube-auto-translate-captions/</link><pubDate>Sun, 08 Jun 2025 22:13:49 +0100</pubDate><guid>https://tigger.dev/youtube-auto-translate-captions/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Instructions for Subtitles in English
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;How to get English (or any other language!) subtitles auto-generated while watching a video in another language&lt;/p&gt;
&lt;p&gt;
On the Youtube video you&amp;#39;ll see a little button that looks like a &amp;#34;gear&amp;#34; with cogs, something you might see if you opened up an old wrist watch :)&lt;/p&gt;
&lt;p&gt;
&lt;img src="youtube-captions-translate-01.png" alt="youtube-captions-translate-01.png" title="youtube-captions-translate-01.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Click this, then choose &lt;em&gt;Subtitles&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;
&lt;img src="youtube-captions-translate-02.png" alt="youtube-captions-translate-02.png" title="youtube-captions-translate-02.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Here you can see three options, click &lt;em&gt;Auto-Translate:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="youtube-captions-translate-03.png" alt="youtube-captions-translate-03.png" title="youtube-captions-translate-03.png" /&gt;&lt;/p&gt;
&lt;p&gt;
Now you will have to scroll down to find English … or whatever your preferred language is! Danish is in there, even Irish!&lt;/p&gt;</description></item><item><title>Bulk delete bookmarks in Microsoft Word</title><link>https://tigger.dev/microsoft-word-delete-bookmarks/</link><pubDate>Tue, 22 Apr 2025 03:26:57 +0100</pubDate><guid>https://tigger.dev/microsoft-word-delete-bookmarks/</guid><description>&lt;p&gt;
When I convert from orgmode to Word via Open Document format, I often find the document is littered with superfluous bookmarks. These don&amp;#39;t really do much of anything in Word, but if you share it further and someone opens it with Google Workspace vis Gmail or Google Drive, you find the doc has become a big ugly morass where you can barely read the doc. Thanks Google.&lt;/p&gt;
&lt;p&gt;
In Word&amp;#39;s Developer tab, click on Visual Basic to open the VBA editor. In the editor, go to Insert &amp;gt; Module to create a new module. Then add the following code:&lt;/p&gt;</description></item><item><title>Firefox: disable autofill in forms</title><link>https://tigger.dev/ff-autofill/</link><pubDate>Fri, 18 Apr 2025 11:23:46 +0100</pubDate><guid>https://tigger.dev/ff-autofill/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
How to disable autofill (or autocompletion) in Firefox forms
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;For some reason they don&amp;#39;t make this so straightforward any more.&lt;/p&gt;
&lt;p&gt;
Just go to &lt;code class="verbatim"&gt;about:config&lt;/code&gt; and set&lt;/p&gt;
&lt;div class="src src-text"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;browser.formfill.enable = false
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;browser.formfill.expire_days = 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;services.sync.prefs.sync.browser.formfill.enable = false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
There&amp;#39;s a suggestion that setting &lt;code class="verbatim"&gt;browser.formfill.expre_days&lt;/code&gt; to &lt;code class="verbatim"&gt;0&lt;/code&gt; is more secure for expiring existing saved data, however &lt;code class="verbatim"&gt;0&lt;/code&gt; often means &lt;em&gt;never expire&lt;/em&gt;. Without looking at the code, I&amp;#39;m just going to err on the (to my mind) safer bet of setting it at &lt;code class="verbatim"&gt;1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Filtering and searching in hledger</title><link>https://tigger.dev/hledger-filter-queries/</link><pubDate>Wed, 19 Mar 2025 03:45:29 +0000</pubDate><guid>https://tigger.dev/hledger-filter-queries/</guid><description>&lt;p&gt;
I am an advocate of plaintext accounting, and hledger is my go-to tool for this. A &lt;a href="https://hledger.org/"&gt;good summary of WTF and why on their landing page&lt;/a&gt;. All of the various bank accounts and cards I use have some sort of CSV or XML export function. Feeding these in to hledger gives me a powerful direct view on my finances that I can analyze in aggregate for budgeting and planning, but also zoom in to a specific transaction or range of transactions.&lt;/p&gt;</description></item><item><title>Auto-Deploy Hugo from Github</title><link>https://tigger.dev/deploy-linode-github-actions/</link><pubDate>Sun, 16 Mar 2025 10:17:46 +0000</pubDate><guid>https://tigger.dev/deploy-linode-github-actions/</guid><description>&lt;p&gt;
GitHub is pretty good with &lt;a href="https://github.com/marketplace/actions/deploy-to-github-pages"&gt;out-of-box options for auto-deploying Hugo or Jekyll sites to GitHub Pages&lt;/a&gt;. But say you have your own VPS (e.g. Linode) - you can still take advantage of GitHub Actions which is a surprisingly versatile piece of CI/CD automation to rival anything you can do on the big cloud providers.&lt;/p&gt;
&lt;p&gt;
Or, if you just want to deploy to GitHub Pages, the out-of-box workflows that GitHub will create for you in the UI will hard-code a few things that you really don&amp;#39;t want hard-coded, such as the Hugo version (you always want to take advantage of the most recent dot-release, for security reasons if nothing else.) I have provided an example below that should remedy this issue.&lt;/p&gt;</description></item><item><title>Firefox: Vertical tabs are here!</title><link>https://tigger.dev/vertical-tabs/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://tigger.dev/vertical-tabs/</guid><description>&lt;p&gt;
With the demise of Arc Browser, fear not, vertical tabs are finally here in Firefox (with a little help).&lt;/p&gt;
&lt;p&gt;
It&amp;#39;s built and deployed, just not yet set loose on the masses. But all it needs is a little tweak.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &lt;code class="verbatim"&gt;about:config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;set &lt;code class="verbatim"&gt;sidebar.verticalTabs&lt;/code&gt; to &lt;code class="verbatim"&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;questionable: sometimes setting &lt;code class="verbatim"&gt;sidebar.revamp&lt;/code&gt; to &lt;code class="verbatim"&gt;true&lt;/code&gt; is also necessary, but in my case it was automatically set.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;img src="vertical-tabs1.png" alt="vertical-tabs1.png" title="vertical-tabs1.png" /&gt;&lt;figcaption&gt;
Voilà! Vertical tabs
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;img src="vertical-tabs2.png" alt="vertical-tabs2.png" title="vertical-tabs2.png" /&gt;&lt;figcaption&gt;
Resize the tab area with mouse to see tab names, adjust to taste.
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Firefox: How to add a search engine manually</title><link>https://tigger.dev/manually-add-search/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://tigger.dev/manually-add-search/</guid><description>&lt;p&gt;
Mostly you can add to your list of search engines just right-clicking. Why bother? Well, maybe you have a niche default search preference, but also it&amp;#39;s extraordinarily handy for setting up shortcuts IMHO.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
Example: add YouTube to Firefox as a search engine
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;Go to YouTube&lt;/li&gt;
&lt;li&gt;Right-click the URL&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;img src="youtube-rightclick-search.png" alt="youtube-rightclick-search.png" title="youtube-rightclick-search.png" /&gt;&lt;figcaption&gt;
Right-click menu on YouTube URL in Firefox
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Now you&amp;#39;ll find YouTube in Firefox settings:&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;img src="ff-search-settings-youtube.png" alt="ff-search-settings-youtube.png" title="ff-search-settings-youtube.png" /&gt;&lt;figcaption&gt;
YouTube search engine in Firefox Search settings
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
If you give it keyworkd &lt;code class="verbatim"&gt;y&lt;/code&gt; for example, now when you type &lt;code class="verbatim"&gt;y laika party&lt;/code&gt; in the search bar, you&amp;#39;ll get the YouTube search results for &amp;#34;laika party&amp;#34;.&lt;/p&gt;</description></item></channel></rss>