Recommended Method for Changing the Shell Used in Qubes

Is there a recommended approach to changing the default shell in Qubes, specifically to set fish as the system-wide shell (excluding Dom0)? Is booting into a template and running the chsh command the ideal way to achieve this?

You can change the shell of user user in a template to /usr/bin/fish, it will automatically propagate to all AppVMs using that template.

This should look like this, after you installed fish in the template:

sudo usermod -s /usr/bin/fish user

I have this salt snippet for that

user:
  user.present:
    - shell: /usr/bin/fish
    - groups:
      - user
      - qubes

With salt, you have to list the groups otherwise they are removed, see Changing user's shell with salt - #11 by unman