I wrote a small tool. Itās merely more than a script, actually. This tool has been immensely helpful for me over the past few weeks and so Iām sharing it more broadly.
lnks
1 is a command line tool that allows you to search through a list of bookmark and open them in your default browser.
Search and open your bookmarks from the command line
You can find the code and more instructions on my GitHub repository.
Setup
Hereās all you need to do to get started:
- Install
fzf
git clone
the repository or download the.sh
and.txt
files yourself if thatās your thing- Edit the
bookmarks.txt
file and put your bookmarks in there (see Managing Bookmarks for details)
Usage
Run the script from your command line.
./lnks.sh
Use the ā / ā arrows or Ctrl + P / Ctrl + N to navigate the list of visible bookmarks up and down.
Hit Enter to open a selected bookmark in your browser.
Type some text to run a fuzzy search against all your bookmarks. Delete typed characters with Backspace.
Exit lnks
with Esc or Ctrl + C.
Managing Bookmarks
The script will read all .txt
files that are located in the same directory as the lnks.sh
script itself to create your list of bookmarks. You can add all your bookmarks to a single bookmarks.txt
file, or create multiple .txt
files, totally up to you.
A bookmark text file needs to follow these conventions:
- One bookmark per line
- Each line has a searchable name and a URL
- The URL is the last part of your line, separated from the searchable name with a
space
- A bookmark file needs to have the
.txt
extension - You can have as many bookmark files next to your
lnks.sh
script as you want
Demo
Hereās lnks
in action.
Create an Alias for Easier Access
Hereās a pro-tip: to make opening your bookmarks a little more convenient, add an alias to your ~/.bashrc
, ~/.zshrc
, or ~/.profile
:
alias lnks='~/your/directory/lnks/lnks.sh'
This way you can open your bookmarks from anywhere simply by typing lnks
.
Or Bind it to a Hotkey
You could take this one step further by binding lnks
to a global keyboard shortcut. That way, your bookmarks will pop up by triggering a key-combo of your choice.
How to can bind custom commands to certain keyboard shortcuts depends on your operating system (and desktop environment) of choice. On Mac, youād have to dig into Automator. On Gnome on Linux, you can set up a custom keyboard shortcut in your keyboard settings. Other desktop environments will allow similar customization. In window managers like i3 or Sway, you can bind a custom command to a key combination in your config (check out how I did this in my own Sway config).
You get the idea. You tell your operating system launch your terminal application of choice and then execute the lnks.sh
script from the right directory whenever you trigger the right key combination. Depending on your terminal application the command to trigger will look slightly different, but it should be somewhat similar to one of these:
# gnome-terminal:
gnome-terminal -- bash -c ~/dev/lnks/lnks.sh
# -> replace this ^^^^ with your shell of choice if you're not a bash user
# alacritty:
alacritty -e bash -c ~/dev/lnks/lnks.sh
# foot
foot bash -c ~/dev/lnks/lnks.sh
This is going to be much more fun if your terminal and shell startup times are fairly snappy.
How the Sausage is Made
lnks
uses fzf
- the incredibly practical command-line fuzzy finder to do all the heavy lifting of searching and displaying stuff in a neat UI. lnks
is merely orchestrating a few Unix tools, really.
The script simply reads all adjacent .txt
files and passes their content over to fzf
. fzf
then lists each bookmark on one line. As you select a line, fzf
shows the last segment of the line (the actual URL) in a preview window at the top. The rest of a line will be used as the name of the bookmark, this is also what fzf
runs your search query against. Finally, I configured up a key binding in fzf
so that pressing the Enter key opens the bookmarkās URL in your default browser.
Why You Might Want to Use This
As software developers, we often access a lot of bookmarks and important URLs throughout our day. Production systems, staging environments, bug trackers, observability tools, CI/CD pipelines, you know what Iām talking about.
Of course you could manage these bookmarks within your browser like a normal person. But you didnāt click the link to this blog post because youāre looking for vanilla solutions to everyday problems, did you?
Chances are that youāve got a terminal open all day so navigating bookmarks from a terminal might feel like second nature. And if you use something like tmux
(check out my tmux guide if you donāt!) you can dedicate a small pane to keep lnks
open at all times.
The nice thing about keeping all your bookmarks in plain .txt
files is that you can share them easily with people you work with. Most likely they will need access to the same things as you do, so sharing these bookmarks is a great way to keep important bookmarks up to date and point people to the right places at all times. A good way to do this is to fork the GitHub repository, check in your own bookmark files, and share your fork with your team.
I learned to love this kind of bookmark sharing when I worked with a software development team at Otto, a German online retailer. We did a lot of pair programming and switched machines frequently. Someone on the team had built a small bookmarks website that looked pretty much just like lnks
and allowed you to search through important bookmarks for the team. As we were pairing, we could always rely on having quick and easy access to that bookmark website and therefore to all our test environments, logs, bug trackers, code repos, you name it.
Iām getting a lot of mileage out of this small script. I hope you find it helpful, too.
Footnotes
-
thatās ālinksā for people who want to save a keystroke ā my contribution to the myth of German efficiency! ā©