Better History Search

No, I’m not talking about Atuin. 1 I improved my search experience with just one tool - fzf As you might know, fzf is a general purpose fuzzy finder. 2 But adding just source <(fzf --zsh) at the end of ~/.zshrc (and/or running it in your existing session) improves your Ctrl+r experience. See the demo yourself. I must confess that I’m tempted multiple times. But I think their USP is history sync, which is not my use case right now.

Continue Reading »

Terminal : How to copy files showing progress

While copying large amounts of files (lots of photos) I used to use Finder in the macOS. Good ol’ drag-n-drop Usually it is reliable, but lately I’m facing some problems when copying files to external disk. Finder itself would become unresponsive. So I decided to use terminal instead. It worked (kinda) but it took 51 minutes to finish the copy (There were a lot of files) and as you know traditionally cp does not show progress.

Continue Reading »

Omakub : Lazyvim

As I wrote earlier, I skipped over neovim initially, but then got curious. I installed Neovim and configured it to use Lazyvim. I was blown away by how nice it is. My last serious affair with neovim was two years ago. 1 Lot has changed since then. Lazyvim wasn’t even born when I stopped using neovim 2 It is quite polished.3 The hotekys are mnemonic and intuitive (coming from doom emacs, at least)

Continue Reading »

→ Zellij Plugins : zellij-forgot

I didn’t even know Zellij had such extensive plugin system.

I’m going to explore more of those in coming days.

Let me start with Zellij Forgot

While the main (original?) purpose was (I assume) to remember various Zellij Keybindings, it can be extended to remember anything. 1

While default/out of the box config will load the existing keybindings, it is a bit weird. It shows things like Some(Down, None) which seems more of Rust internal code and may not be directly useful to the user.

Instead, (as the README suggested) I added my own “pairs” (This is also given in the README, I just copy/pasted it)

By default, this adds to the existing list.

Not what I wanted.

Luckily, adding "LOAD_ZELLIJ_BINDINGS" "false" to the config will disable automatic keybinding loading.


  1. The README has example of buy eggs 😄. Personally, I don’t think it is very good example. If you remember to look it up, you’ll also remember to buy eggs anyway. IMO, this is meant for things that one does not use frequently, and needs to “look up” ↩︎

→ Omakub

Yesterday, I came across this new script released by Basecamp.

The one-line pitch is:

Turn a fresh Ubuntu installation into a fully-configured, beautiful, and modern web development system by running a single command.

This was started by DHH, but now has a lot of contributors.

Since I’m not on Ubuntu, I can’t directly use it. But I’m tempted to set up Ubuntu on a spare (?) machine just to try this out.

Since this is how DHH wanted his machine to be setup, it installs apps like Zoom and Signal etc among others.

But as the intro post says :

the heart of the pre-configuration lies in the terminal

Since I also spend a lot of time in the terminal on macOS, it was something I could try. Luckily, most of the tools are available for macOS too.

I really liked tokyo-night everywhere.

Here is what I have done so far.

  1. Switched to Alacritty from Wezterm
  2. Configured Alacritty and Zellij 1 based on omakub config
  3. Installed flameshot. Earlier, I used to use Zappy for annotating screenshots (To be shared with bug report or a fix.)
  4. Installed eza replacement for ls I had tried exa - before eza was forked out of it since exa was unmaintained, and for some reason, forgot to install it when I reinstalled macOS recently.
  5. Made same font as omakub my default for Alacritty

Things I did not install:

  1. mise : I already use asdf, so I don’t see much use switching. mise also has task runner functionality, but I use just in place of make, so I’m good.
  2. Neovim 2 : Happy with Emacs and Helix. Thank you very much. Update
  3. Lazygit : I tried to use it. But I couldn’t learnt the keybindings and felt like I can’t use it. For now, I’m happy with magit when in Emacs, and just plain ol’ terminal when writing in Helix
  4. lazydocker seems interesting. I might try it when I need to interact with docker a lot
  5. Typora: Since I use Helix for markdown (like these posts), I skipped that section of the demo video. omakub also installs VScode (which I already have) which can very easily be used for markdown, why an editor just for markdown ? It might make sense for DHH - who I assume writes lot more text than me.

Overall, this exploration was much fun.


  1. Since I was already using Zellij, this was nothing more than theme change. ↩︎

  2. It is not like I’ve not spent enough time configuring neovim “just right” 😄 ↩︎

macOS: How to render thin(ner) strokes in Alacritty

After going through omakub 1 and its source, I wanted to recreate it on macOS as much as possible. The first thing was to use Alacritty. I had tried it in the past, but moved to Wezterm. The reason I stopped was because there was no support for panes or tabs (which is by design) But now that I’m anyway using Zellij for that, I decided to give Alacritty another chance.

Continue Reading »

How Zellij saved me

OK, title is a bit of clickbait. It saved me some inconvinence 😉 Yesterday, Wezterm crashed. At first, I was worried that all my “work” is lost (few blog posts were in-progress and open in helix) But I had forgotten that I always start zellij these days. So all my “work” was indeed there. All I had to do was zellij ls followed by zellij a my_session1 (and my_session2 and so on)

Continue Reading »

How to create IDE like experience in terminal using Zellij

(undocumented?) Zellij Keybindings Undocumented, because these don’t show up in the default configuration, which shows (I assume) most useful key bindings. I had to look for these, and found them in Github discussions/issues. Ctrl p d Ctrl p is for pane, but d after that (which I assume stands for down) is not documented. This creates a new terminal in horizontal split fashion 1 Ctrl n - to reduce the size of the terminal.

Continue Reading »

Why I switched to Zellij

I had tried switching to tmux for local shell sessions in past, but never truly understood why I might need it. I extensively used tmux for remote sessions. But why might I need it locally ? Then slowly I stopped using tmux and switched to wezterm which provided multiple tabs. Fast-forward several years later. Recently I came across Zellij. I decided to give it a go. When I had tried tmux it took some time to get used to the keybinding.

Continue Reading »

How I generated 2000 parallel requests using nu-shell

At work, I need to load test new framework I had deployed. Usually, I work with QA team. They use JMeter (with Azure Load test) for such task. But today, the QA person was busy with other tasks, and I didn’t want to get blocked. Since I am learning rust, (nu-shell is built in rust) I remembered that it may be possible to run parallel requests in nu-shell. and it is!

Continue Reading »