Do you want to play the tune so that it sounds in the concert key of F Major? Or do you want to play the tune using the F Major scale fingering? Those are the same thing only on a D whistle.
If the first, then Congratulations’ answer is definitely the easiest solution! Just let the whistle do the transposing for you automagically.
If the second, then PallasAthena has the right idea. You can write out the two scales and match them up. Or note that the difference between D and F is 3 half-steps. So just move each note of the tune up 3 half-steps, and the tune will be transposed from D to F. Showing these 3 half-steps for each scale note:
D → D# → E → F
E → F → F# → G
F# → G → G# → A
G → G# → A → Bb
A → A# → B → c
B → c → c# → d
c# → d → d# → e
d → d# → e → f
For example, Silver Spear:
D: |FA~A2 BAFA|dfed BdAG| etc. (key sig = F# C#)
F: |Ac~c2 dcAc|fagf dfcB| etc. (key sig = Bb)
If you’re reading from written music, here’s a visual trick. You can mentally move each note in a space up one space, and each note on a line up one line, and change the key signature to 1 flat (Bb). Even better … If you can read both treble and bass clefs, just pretend that your treble clef melody is really written in bass clef, and read it like that with the changed key signature. Voilà!
As for your P.S. - There’s no reason a half-holed F-nat should sound shrill and unpleasant, though it can be a bit awkward and weak-sounding. Experiment with different B2 finger angles, and different partial coverings toward the bottom and side of the B2 hole. In the upper octave, the F-nat fingering xxx oxx also works on many whistles. F-nat occurs often enough in trad tunes that it’s worth being able to play.
Of course, to play in the key/fingering of F Major, you also need a good cross-fingered or half-holed Bb.
And, hey, the software solution is kind of cheating.

Good luck!