← Back to home

Blog

Short but useful notes from day to day

Wallpaper-driven theme switcher

NeurAlch

Wallpaper-driven theme switcher

I created a small Fish alias ,tw ( theme-switch --wallpaper). It launches an fzf picker inside Kitty, previews every image in ~/Wallpapers, and lets me lock in the mood based on the image I choose.

Behind the scenes the script hands the chosen file to pywal, grabs the generated 16-color palette, and feeds it to a helper that rewrites all my theme snippets (Hyprland, Waybar, Kitty, Walker, btop, mako, swayosd, etc.).

The fresh palette is saved as a new theme directory, the wallpaper is set via hyprpaper, and the regular theme-switch routine copies everything into place before reloading.

,tw  # pick wallpaper → extract palette → theme everything → reload

fzf wallpaper picker with matching desktop theme

Notes

  • I generate my Wallpaper images with MidJourney
  • I started using Kitty because of the image support (and ligatures).
  • The inspiration came from Aether (for Omarchy) tool.

Understanding code faster with color

NeurAlch

Understanding code faster with color

It all started when I had like 100 ToDo items on my ToDo.md file.

I wanted my eyes to ignore the ones that are already completed, and see more prominently the ones left.

So I did something like this, mutted the ones done already to the point that I can barely see them, and made more obvious the ones left to do.

Markdown

Markdown buffer highlighting

Neovim checkbox highlights

Here is the tiny snippet living in my after/ftplugin/markdown.lua to give todo lists their color pop:

-- Drop this in after/ftplugin/markdown.lua
vim.api.nvim_set_hl(0, "TodoUnchecked", { fg = "#ff6984" })
vim.api.nvim_set_hl(0, "TodoChecked", { fg = "#30502f", strikethrough = true })
vim.fn.matchadd("TodoUnchecked", "^.*\\[ \\].*$")
vim.fn.matchadd("TodoChecked", "^.*\\[x\\].*$")

TSX/TS

Then I realized the same technique can be used for things like try/catch, where I want to make it obvious that this is important (red).

Then there is making it easier to read HTML/JSX, a bunch of nested JSX/HTML tags? Why not mute the closing ones like </Tag>? This makes it pretty easy to read, feels a bit like Python indentation (maybe?).

A hundred className=? Let us also mute that noise…

Is a condition positive or negative? Like != is not the same as ==, so why not use different colors? Same for boolean true/false.

TSX buffer highlighting

Python

I tried a few things with Python as well, still a work in progress.

Python buffer highlighting

Conclusion

This experiment turned out a success, I managed to speed up my reading/understanding time.

Still improving but so far, I love it.