This may sound a bit odd but how about just the sandwich filling so no bread, or less bread? ie just the cheese, or meat slices as finger food? Fish (canned tuna, mackerel for instance) doesn't need to be in a sandwich.
Depending what you make for dinner the night before perhaps you can save a portion for his lunch the following day? I used to put an extra portion of veggies into the steamer to keep for the next day, or bake some extra veg wedges/chips.
An extra portion of pasta thrown into the pan when cooking dinner works too, either mix it with your sauce and put aside for the next day or take out a portion of pasta before it goes in the sauce and serve the next day cold with whatever you might have put in the sandwich, chunks of cheese, sliced toms, cucumber etc.
If you want to batch cook I used to make lots of veggie and bean pancake/fritter/bean burger type things all in one go and interweave with baking parchment before freezing. Because they are already cooked you can lift a couple out the night before or even in the morning and they are defrosted by lunch and can even be served cold. I used to use drained canned beans (they are pre-cooked, no salt, no sugar) or lentils with left over veggies and just add some flour and an egg, whizz it and fry.
Maybe serve a smaller portion of bread, or crackers if you are worried about the amount of bread?
If you want filling foods then I'd opt for a bit more protein.