mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 16:02:43 +01:00 
			
		
		
		
	| @@ -14,6 +14,7 @@ class Client { | ||||
|  public: | ||||
|   static Client *inst(); | ||||
|   int            main(int argc, char *argv[]); | ||||
|   void           reset(); | ||||
|  | ||||
|   Glib::RefPtr<Gtk::Application>      gtk_app; | ||||
|   Glib::RefPtr<Gdk::Display>          gdk_display; | ||||
|   | ||||
| @@ -269,10 +269,9 @@ int waybar::Client::main(int argc, char *argv[]) { | ||||
|   gtk_app->hold(); | ||||
|   gtk_app->run(); | ||||
|   bars.clear(); | ||||
|   zxdg_output_manager_v1_destroy(xdg_output_manager); | ||||
|   zwlr_layer_shell_v1_destroy(layer_shell); | ||||
|   zwp_idle_inhibit_manager_v1_destroy(idle_inhibit_manager); | ||||
|   wl_registry_destroy(registry); | ||||
|   wl_display_disconnect(wl_display); | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| void waybar::Client::reset() { | ||||
|   gtk_app->quit(); | ||||
| } | ||||
|   | ||||
							
								
								
									
										15
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/main.cpp
									
									
									
									
									
								
							| @@ -8,6 +8,7 @@ | ||||
|  | ||||
| std::mutex reap_mtx; | ||||
| std::list<pid_t> reap; | ||||
| volatile bool reload; | ||||
|  | ||||
| void* signalThread(void* args) { | ||||
|   int err, signum; | ||||
| @@ -70,12 +71,19 @@ void startSignalThread(void) { | ||||
| int main(int argc, char* argv[]) { | ||||
|   try { | ||||
|     auto client = waybar::Client::inst(); | ||||
|  | ||||
|     std::signal(SIGUSR1, [](int /*signal*/) { | ||||
|       for (auto& bar : waybar::Client::inst()->bars) { | ||||
|         bar->toggle(); | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|     std::signal(SIGUSR2, [](int /*signal*/) { | ||||
|         spdlog::info("Reloading..."); | ||||
|         reload = true; | ||||
|         waybar::Client::inst()->reset(); | ||||
|     }); | ||||
|  | ||||
|     for (int sig = SIGRTMIN + 1; sig <= SIGRTMAX; ++sig) { | ||||
|       std::signal(sig, [](int sig) { | ||||
|         for (auto& bar : waybar::Client::inst()->bars) { | ||||
| @@ -85,7 +93,12 @@ int main(int argc, char* argv[]) { | ||||
|     } | ||||
|     startSignalThread(); | ||||
|  | ||||
|     auto ret = client->main(argc, argv); | ||||
|     auto ret = 0; | ||||
|     do { | ||||
|       reload = false; | ||||
|       ret = client->main(argc, argv); | ||||
|     } while (reload); | ||||
|  | ||||
|     delete client; | ||||
|     return ret; | ||||
|   } catch (const std::exception& e) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Renee D'Netto
					Renee D'Netto