#include "control_interface.hpp" #include "filesystem.hpp" #include "optional.hpp" #include "setting.hpp" #include "wallpaper.hpp" #include #include #include #include #include namespace { constexpr auto image_filter = [](auto const &path) { static auto const extensions = std::set{ std::filesystem::path{".jpg"}, std::filesystem::path{".png"}, }; if (!std::filesystem::is_regular_file(path)) { return false; } return extensions.find(path.extension()) != extensions.cend(); }; } // namespace int main() { using namespace wanda::std_ext; with(wanda::scan({"/usr/share/backgrounds"}, image_filter), [](auto const &list) { auto wallpaper = wanda::random_pick(list); wanda::set_wallpaper(wallpaper); auto service = boost::asio::io_service{}; auto interface = wanda::make_interface(service, ".wanda_interface"); auto status = interface->start(); if (status) { return; } auto signals = boost::asio::signal_set{service, SIGINT}; signals.async_wait([&](auto const &error, auto const signal) { if (!error && signal == SIGINT) { interface->shutdown(); service.stop(); } }); service.run(); }) || [] { std::cerr << "Directory does not exist\n"; }; }