diff --git a/include/util/chrono.hpp b/include/util/chrono.hpp index e33f9d32..39695b4f 100644 --- a/include/util/chrono.hpp +++ b/include/util/chrono.hpp @@ -74,7 +74,9 @@ struct SleeperThread { { do_run_ = false; condvar_.notify_all(); - thread_.detach(); + if (thread_.joinable()) { + thread_.detach(); + } } private: diff --git a/src/client.cpp b/src/client.cpp index 611c7868..8c38ce39 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1,10 +1,16 @@ #include "client.hpp" waybar::Client::Client(int argc, char* argv[]) - : gtk_app(Gtk::Application::create(argc, argv, "org.alexays.waybar")), - gdk_display(Gdk::Display::get_default()), - wl_display(gdk_wayland_display_get_wl_display(gdk_display->gobj())) + : gtk_app(Gtk::Application::create(argc, argv, "fr.arouillard.waybar")), + gdk_display(Gdk::Display::get_default()) { + if (!gdk_display) { + throw std::runtime_error("Can't find display"); + } + if (!GDK_IS_WAYLAND_DISPLAY(gdk_display->gobj())) { + throw std::runtime_error("Bar need to run under Wayland"); + } + wl_display = gdk_wayland_display_get_wl_display(gdk_display->gobj()); auto getFirstValidPath = [] (std::vector possiblePaths) { wordexp_t p; diff --git a/src/modules/sway/ipc/client.cpp b/src/modules/sway/ipc/client.cpp index da26b562..ac9be062 100644 --- a/src/modules/sway/ipc/client.cpp +++ b/src/modules/sway/ipc/client.cpp @@ -48,7 +48,7 @@ int waybar::modules::sway::Ipc::open(const std::string& socketPath) const addr.sun_path[sizeof(addr.sun_path) - 1] = 0; int l = sizeof(struct sockaddr_un); if (::connect(fd, reinterpret_cast(&addr), l) == -1) { - throw std::runtime_error("Unable to connect to " + socketPath); + throw std::runtime_error("Unable to connect to Sway"); } return fd; }