Melt the butter over medium heat in a big pot. Add the sliced onions and cook for about 30 minutes, stirring occasionally, until caramelized and golden brown.
Add the minced garlic to the pot and cook for an additional 2 minutes.
Add the water and beef broth. Add salt, pepper, bay leaf, and the dried thyme. Stir thoroughly, then simmer the soup. To allow the flavors to meld, turn the heat to low and let the food cook for 30 minutes.
While the soup is simmering, preheat your broiler. Place the French bread slices on a baking sheet and broil until toasted.
From the soup, take out the bay leaf and season to taste, making any necessary adjustments.
Ladle the soup into oven-safe bowls. Place a slice of toasted French bread on top of each bowl and sprinkle with shredded Gruyere cheese.
Place the bowls under the broiler for two to three minutes, or until the cheese is melted and bubbly.
Carefully remove the bowls from the broiler (they will be hot!) and let them cool slightly before serving.