Heat the olive oil in a large, heavy saucepan over medium heat, then add the onion, shallots, garlic and salt. Sauté, stirring constantly, for about 4 minutes, or until the onion begins to soften.
Add the barley to the pot and stir until coated with a nice sheen, then add the wine and simmer for 3 or 4 minutes, until the barley has absorbed the liquid a bit. Adjust heat to maintain a gentle, active simmer.
In increments, add about 6 cups of water (or broth), 1 cup at a time, letting the barley absorb most of the liquid between additions. This should take around 40 minutes altogether—sometimes I only end up using 4 or 5 cups of water before reaching the desired texture and degree of doneness. Stir regularly because you don’t want the grains on the bottom to scorch. You will know when the barley is cooked because it won’t offer up much resistance when chewing (it will be chewier than arborio rice, though). I like my risotto on the brothy side, so I don’t worry if there is a bit of unabsorbed liquid in the pot.
When the barley is tender, remove from heat and stir in the lemon zest, mascarpone and most of the Parmesan. Then stir in the seaweed and lastly the chopped spinach. Taste and adjust the seasoning if needed, adding a bit of lemon juice too if needed. Serve topped with walnuts and the remaining Parmesan.