diff options
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp index fb2e0bf..38fdf7f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,13 +4,25 @@ #include <iostream> #include <string> -int main() { +#include <typeinfo> + +int main() +{ using namespace wanda::literals; using namespace wanda::std_ext; + using namespace std::string_literals; - with("org.gnome.desktop.background"_setting, [](auto & setting){ - with(setting.template get<std::string>("picture-uri"_key), [](auto & value){ - std::cout << value << '\n'; - }) || []{ std::cerr << "No such key!\n"; }; - }) || []{ std::cerr << "No such setting!\n"; }; + with("org.gnome.desktop.background"_setting, [](auto &setting) { + with(setting["picture-uri"_key], [](auto &value) { + std::visit([](auto &&value) { + using ValueType = std::decay_t<decltype(value)>; + if constexpr (std::is_same_v<ValueType, std::string>) + { + std::cout << value << '\n'; + } + }, + *value); + std::cout << (value = "file:///"s) << '\n'; + }) || [] { std::cerr << "No such key!\n"; }; + }) || [] { std::cerr << "No such setting!\n"; }; } |
