gtk3: support multiple backends