This is just a quick note to point out that my port of the linkding browser extension for Chrome and Firefox is now available on both of the respective extension stores.
Firefox via the Firefox extensions marketplace
Chrome via Chrome Web Store
Hope you find it useful!
Like or share this post on Mastodon, Bluesky, or Twitter.
BrettTerpstra.com is supported by readers like you. Click here if you'd
like to help out.
Find Brett on Mastodon, Bluesky, GitHub, and everywhere
The Unite Pro giveaway has ended, and I have winners to announce!
The winners!
Congratulations to:
Sven Sackers
Michael Steadman
Jake Bordens
David Banham
You should have received an email with details, please let me know if you didn’t hear anything!
But I didn’t win!
If you didn’t win, sorry, but Unite Pro is still worth checking out. Turn your favorite websites into apps with Unite Pro! You might not have won, but you can still save 20% at bzgapps.com/unite
Thanks to Aptonic and Dropzone for sponsoring BrettTerpstra.com this week! I’ve been a Dropzone fan for as long as I can remember, and yes, I use it every day. It’s a wonderfully extensible tool that’s always available for things like sharing files, processing images, and opening apps. I’ve also gotten really used to using it’s drop drawer as a way to collect files, and even started incorporating the command line tool for all kinds of automation.
Dropzone is a m
Thanks to Aptonic and Dropzone for sponsoring BrettTerpstra.com this week! I’ve been a Dropzone fan for as long as I can remember, and yes, I use it every day. It’s a wonderfully extensible tool that’s always available for things like sharing files, processing images, and opening apps. I’ve also gotten really used to using it’s drop drawer as a way to collect files, and even started incorporating the command line tool for all kinds of automation.
Dropzone is a menu bar productivity tool that gives you a faster way to move, copy, and share files, launch apps, and trigger all sorts of time-saving drag-and-drop actions without breaking your flow.
The newly released Dropzone 5 is a substantial update and has been redesigned for macOS Tahoe with a cleaner interface, smoother animations and support for Liquid Glass.
The update also adds several workflow-focused improvements. Multiple grids make it easy to separate actions by project or context, deeper grid customization gives you more control over categories, columns, and layout, and folder-based actions can now display the custom icons and colors you’ve assigned in Finder, which makes it easier to identify your folders in Dropzone at a glance.
If you like to automate from the command line, Dropzone 5 includes a powerful command line tool for Terminal integration too. You can run actions, manage files in Drop Bar, and switch between grids via the command line tool, making Dropzone 5 a better fit for scripted workflows than ever before.
Dropzone 5 is available as a free download from Aptonic, with a Pro upgrade available that adds more advanced features.
For a limited time, the Pro upgrade is available at a 30% discount with the coupon code LAUNCH.
Big update for doing: a lot of quality-of-life work since my last post, plus some genuinely useful time-reporting features.
If you want the full docs, start with the wiki.
Time Budgets
You can now set time budgets per tag and see how much you have left as you track work.
doing budget dev 100h
doing budget meetings 10h
doing budget
doing budget dev --remove
Totals output now shows remaining budget per tag and an overall “total budgets left” footer when budgets are configured. T
You can now set time budgets per tag and see how much you have left as you track work.
doing budget dev 100h
doing budget meetings 10h
doing budget
doing budget dev --remove
Totals output now shows remaining budget per tag and an overall “total budgets left” footer when budgets are configured. The byday export also includes budget info in daily and grand totals.
More Flexible Totals Grouping
Totals can now be grouped by tags or sections, and you can repeat grouping flags to control output order.
doing show --totals --by section --by tags
doing show --totals --by tags --by section
There are also aliases for section grouping (project, p), so this works too:
doing show --totals --by project
New Totals Formats, Including Averages
You can now pick the totals time format directly from the command line with --totals_format.
doing show --totals --totals_format hmclock
doing show --totals --totals_format natural
There is also a new averages mode that appends hours/minutes and average hours per day to the total line.
doing show --totals --totals_format averages
That gives you output in the spirit of:
Total tracked: 26:03 (26h 3 min, 8.12h/day)
You can set a default with the totals_format config key and still override it per command when needed.
Better Export Consistency
Totals grouping now carries through exports more consistently, including HTML, Markdown, JSON, Day One, template, and wiki outputs. JSON totals also gained budget-related fields (budget, remaining, remaining_formatted) for each tag, which makes downstream automation easier.
Ruby 4 compatibility improved by falling back to reline when readline is unavailable.
Dashed aliases now work for underscore flags and subcommands (--only-timed, --tag-sort, doing tag-dir, etc.).
Interactive finish handling was fixed for section filters that can resolve to multiple values.
Time range parsing and normalization got several fixes (done --from, noon/12pm edge cases, and reset formatting issues).
Non-interactive runs no longer reopen /dev/tty for defaults.
Human totals box formatting and table alignment were cleaned up.
A few config and test harness rough edges were fixed.
As usual, if you run into anything odd, open an issue or PR. This was a nice round of polish plus some features that should make time reporting much more useful day to day.
If you write documentation, tutorials, or notes that include keyboard shortcuts, you know how annoying consistency can be. Sometimes you want plain text like Shift-Command-K, sometimes you want nice symbolic output like ⇧⌘K, and sometimes you want HTML keycaps.
This project started as a Jekyll plugin, then became a WordPress plugin, and now I’m offering it as a CLI and Automator Actions you can use anywhere.
If you write documentation, tutorials, or notes that include keyboard shortcuts, you know how annoying consistency can be. Sometimes you want plain text like Shift-Command-K, sometimes you want nice symbolic output like ⇧⌘K, and sometimes you want HTML keycaps.
Apex can render Markdown to the terminal (-t terminal or -t terminal256) with ANSI colors and themes. As of 0.1.100, it can also draw images inline when stdout is a real TTY: your  images show up as actual graphics instead of only link-style text.
What actually draws the image
Apex does not embed a rasterizer. It looks for an external viewer on your PATH, in this order:
imgcat (iTerm2-style inline images)
chafa
viu
catimg
The first one that exists wins. If none
Apex can render Markdown to the terminal (-t terminal or -t terminal256) with ANSI colors and themes. As of 0.1.100, it can also draw images inline when stdout is a real TTY: your  images show up as actual graphics instead of only link-style text.
What actually draws the image
Apex does not embed a rasterizer. It looks for an external viewer on your PATH, in this order:
The first one that exists wins. If none are found, or something fails, or you are piping output (not a TTY), you get the same link-style fallback as a normal terminal link: styled alt text plus the URL in parentheses.
Remote http:// and https:// images are downloaded with curl (temp file under TMPDIR or /tmp, then deleted). There is a size cap and timeout so runaway downloads do not blow up your session.
Flags and metadata
--no-terminal-images turns inline rendering off entirely (always link-style).
--terminal-image-width N sets the maximum width in character cells (default 50). This is separate from --width, which wraps prose.
You can also set terminal.inline_images / terminal_inline_images and terminal.image_width / terminal_image_width in metadata or config.
Installing the viewers (macOS)
iTerm2 ships imgcat on your PATH when you use its utilities, so you may already have the first choice. The others are a quick Homebrew install:
# Optional: pick one or more (Apex uses the first available on PATH)
brew install chafa viu catimg
On Linux, use your distro packages or the projects’ install notes; the same binary names apply.
Other stuff
Since 0.1.95, this line of releases also landed a bunch of other work. Highlights:
CSV/TSV includes with custom delimiters ({delimiter=X} or {;}) across iA Writer, Marked, and MultiMarkdown include styles.
Metadata handling improved: mode-aware extraction, better MultiMarkdown / Unified / Kramdown behavior, and standalone HTML now emits generic metadata as proper <meta name="..."> tags.
MultiMarkdown includes and transclusions accept embedded delimiter overrides without breaking on braces in paths.
Swift tooling: ApexC exposes the C API for SwiftPM, collision fixes for apex_* symbols, and NSString.defaultApexOptions() for plugins that need low-level options.
HTML output shape:--to xhtml serializes void elements in XML style (<br />, self-closing meta/link, and so on). --to strict-xhtml goes further for full documents: with --standalone it adds polyglot XHTML scaffolding (XML declaration, XHTML namespace, application/xhtml+xml metadata). Use one or the other; they target different strictness levels.
The keyboard is the most powerful tool we have when using our Macs, which is why I’ve curated what might seem like an overwhelming combination of keyboard utilities that I use daily.
Each of these tools enhances my productivity in unique ways, so whether you’re looking to streamline your workflow or just want to explore some interesting keyboard hacks, I hope the following links and descriptions can help you find something valuable.
Keyboard Navigation
When it comes to navigati
The keyboard is the most powerful tool we have when using our Macs, which is why I’ve curated what might seem like an overwhelming combination of keyboard utilities that I use daily.
Each of these tools enhances my productivity in unique ways, so whether you’re looking to streamline your workflow or just want to explore some interesting keyboard hacks, I hope the following links and descriptions can help you find something valuable.
Keyboard Navigation
When it comes to navigating my system with speed and precision, a few key utilities stand out. I use Superkey to enhance my existing keyboard shortcuts, making application navigation smoother and more efficient. It searches text on the screen and simulates a mouse click anywhere there’s matching text. It allows me to access features and functions without ever taking my fingers off the keyboard. For those looking for a similar solution, Wooshy offers a compelling alternative, providing seamless keyboard control for navigating all UI elements in an app.
Another indispensable tool in my toolkit is KindaVim, which brings Vim-like key bindings to any application, allowing me to navigate text with great efficiency. It’s perfect for those who appreciate the keyboard-centric ease of Vim.
KindaVim isn’t perfect, but it’s constantly improving. But as an example, if I use V and h/j/k/l in MultiMarkdown Composer to make a selection, when I hit X to kill the selection, the cursor jumps up a few paragraphs. It’s a bit jarring, but for basic Vim navigation like h/j/k/l/u/d/a/i, etc., it’s perfect, and enhances every app I write in.
There are always keyboard shortcuts for common menu items in any Mac app. I frequently access menu bars with ⇧+⌘+? and use the help field to find menu items, and try to memorize ones that have the keyboard shortcut indicated on them. I have an as-of-yet-unpublished script based on NiftyMenu that scans any app for every available shortcut and generates Dash cheatsheets or Cheaters pages for it.
Speaking of menu item keyboard shortcuts, Paletro is amazing. It gives me a ⇧+⌘+P shortcut in any app, with fuzzy type-ahead searching for any menu item. I use it daily.
Lastly, Scrolla is a game-changer for scrolling through documents and long text, enabling me to keep my hands on the keyboard whenever I need to go through lengthy content.
Keyboard Modifications
For deeper customization, I rely on a mix of tools that modify key functions and introduce new shortcuts.
BetterTouchTool is a powerhouse for managing trackpad gestures and keyboard shortcuts, letting me create personalized commands that fit my workflow perfectly.
Karabiner-Elements takes it a step further with its ability to remap keys at the system level, modifying their behavior. I’ve set up my Hyper key using this tool, which unlocks numerous possibilities for shortcuts and personalizations (check out my Karabiner mods for some advanced tweaks).
Additionally, my DefaultKeyBindings.dict file is essential for crafting custom keyboard shortcuts tailored to my preferences. MacOS’s built-in key mapping features allow for sophisticated combinations that further enhance my efficiency. Coupled with Keyboard Maestro, which automates repetitive tasks and creates amazing automations, I’m able to truly streamline my text editing.
Launchers
When it comes to launching apps and managing my clipboard, LaunchBar reigns supreme in my daily workflow. I’ve experimented with every launcher out there, but nothing has stuck quite like LaunchBar. Its intuitive interface complements my muscle memory, allowing me to access apps, files, and even perform quick calculations without losing focus.
With LaunchBar, I can access my entire clipboard history across reboots, copying things back into the pasteboard or pasting them directly. And I can double-tap the option key to “Instant Send” any selected file to LaunchBar, then hit tab to open it in an app or perform a custom action on it. Combined with KindaVim’s ability to navigate Finder with ease and SuperKey’s ability to select any file I can see on my screen, it’s crazy how useful LaunchBar is.
Though LeaderKey might seem redundant alongside LaunchBar, it offers the benefit of static, single-key sequences for launching frequently used applications and URLs. This has also become a part of my muscle memory, enabling quick access without sifting through multiple options. Combining these tools gives me a powerful launching and navigating experience.
Text Expansion
In the realm of text expansion, I’ve been a longtime user of TextExpander, with its snippet search capabilities and reminders making it an indispensable part of my writing process. I’ve also started using TextBlaze, but I’ve found myself confusingly using both tools at once. TextExpander’s ability to run shell scripts gives it an edge that can’t be ignored, and its expansion after whitespace is something that TextBlaze doesn’t quite match.
My current favorite text expansion tool, however, is Cotypist. This innovative tool offers automatic text completion as I type in any application. It predicts my inputs with uncanny accuracy, making it my go-to for prose writing. I don’t have to create a ton of snippets, it just figures out what I’m typing and fills in the blanks. It works great in apps like Cursor, too, completing instructions and prompts accurately.
Window Management
For window management, Moom is my weapon of choice. It allows me to move and resize windows with ease, using keyboard shortcuts that fit seamlessly into my workflow. The grid mode, in particular, lets me draw sizes and positions for windows on the fly, making multitasking a breeze and alleviating the need to have a thousand shortcuts for different positioning.
Web Browsing
In my browsing experience, Vimium has become indispensable. It enhances productivity in my favorite browsers by adding Vim-style navigation to web pages. If I type F, it tags every visible link with key sequences, enabling navigation that feels quick and fluid.
Coupled with my preferred search engine, Kagi, which provides the ability to navigate search results entirely with the keyboard, my online experience is streamlined. While DuckDuckGo offers similar shortcuts, Kagi’s advanced AI slop filtering adds to its appeal, making it a superior choice for my digital searches.
I hope you’ve found something new in all of this. I’d love to hear about your own favorite keyboard tools and shortcuts: please share them over at the forum and let’s master the keyboard!
Here’s a combined list of every app mentioned in this post:
Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee.
The worst decline of democracy ever recorded could have been far worse.
The institutions that were supposed to be the brakes either surrendered or stumbled over each other. The people put themselves in the gears.
I don’t make this blog very political, which is odd given how political I am in my personal life. But this
The institutions that were supposed to be the brakes either surrendered or stumbled over each other. The people put themselves in the gears.
I don’t make this blog very political, which is odd given how political I am in my personal life. But this shouldn’t be a partisan post. This is about all of us.
Not a perfect parallel to my own experience (I’ve never had a top open source project or gotten into keynoting) but this rings very familiar to me. My acclaimed “productivity” has been the result of some very trying bipolar episodes that plagued me for years, leading to burnout.
Steno is a native macOS voice-to-text app. Hold a key, speak, release — text appears instantly in any app. Sub-second transcription, voice commands, text snippets, and dictation history. Built with Swift for speed and accuracy.
Impressive AI-driven dictation with great privacy features and local-only mode (Apple Intelligence).