Wave2d is a very simple Python code to investigate a few properties of linear waves encountered in fluids: surface waves, internal gravity waves and Rossby waves. The code illustrates their dispersive effects through the evolution of the wave field. The code offers three different ways to generate waves: a localized initial perturbation, a moving object, generating a wake, and an oscillating wavemaker. The code also illustrates two aspects of the wave energy: injection or conservation, depending on the generation mechanism, and propagation in space. This last aspect is so central that it could be almost the definition of a wave: a wave is a process able to transport energy with negligible mass transport (quote from R. Feynman).