2.2 KiB
title | date | permalink | tags | snippet | ||
---|---|---|---|---|---|---|
Easy customisation using patches | 2025-01-13 | daily/2025/01/13/patches |
|
I haven't written a patch file for a while, but I did this week to customise a script I use on my computer and to make everything more maintainable. |
I'm a long-time Vim and tmux user.
I used them before I switched to using Neovim full time in July 2021.
More recently, I've used a script that creates and attaches to tmux sessions based on the directories in my Code directory, making it easy to switch between projects.
It was based on others by Jess Archer and ThePrimeagen, although Prime recently created a new version of his as its own project, so I decided to switch to his version.
But there was one issue - the paths to search for directory names is hard-coded and don't match mine.
I started by duplicating his and changing the paths, but that would mean missing any future updates and having to maintain my version separately.
Until I realised I could use his version and apply patches to it for my changes and customisations.
This is something I'm familiar with from my Drupal contributions, as we used to attach patch files to issues before moving to GitLab and merge requests.
I was able to make my changes and easily apply the patch easily as part of my Nix derivation.
This means I'll get any future updates to the script, keep my changes and Nix will automatically apply my patch whenever I rebuild my system.
I really like this approach, as I'm no longer duplicating the script and don't have the maintenance overhead whilst still making any customisations I need.
In fact, there are Linux applications such as dwm, dmenu and st (a simple terminal), all written by suckless.org, that use this approach as the main method of configuration and customisation.
They release the core package and people write and contribute patch files to customise it as they need.
Although patches are no longer used on Drupal.org, they're still a great way to customise and contribute to open source software.