mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:12:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <LibGUI/GDesktop.h>
 | |
| #include <LibGUI/GEventLoop.h>
 | |
| #include <string.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| GDesktop& GDesktop::the()
 | |
| {
 | |
|     static GDesktop* the;
 | |
|     if (!the)
 | |
|         the = new GDesktop;
 | |
|     return *the;
 | |
| }
 | |
| 
 | |
| GDesktop::GDesktop()
 | |
| {
 | |
| }
 | |
| 
 | |
| void GDesktop::did_receive_screen_rect(Badge<GEventLoop>, const Rect& rect)
 | |
| {
 | |
|     if (m_rect == rect)
 | |
|         return;
 | |
|     m_rect = rect;
 | |
|     if (on_rect_change)
 | |
|         on_rect_change(rect);
 | |
| }
 | |
| 
 | |
| bool GDesktop::set_wallpaper(const String& path)
 | |
| {
 | |
|     WSAPI_ClientMessage message;
 | |
|     message.type = WSAPI_ClientMessage::Type::SetWallpaper;
 | |
|     ASSERT(path.length() < (int)sizeof(message.text));
 | |
|     strncpy(message.text, path.characters(), path.length());
 | |
|     message.text_length = path.length();
 | |
|     auto response = GEventLoop::current().sync_request(message, WSAPI_ServerMessage::Type::DidSetWallpaper);
 | |
|     return response.value;
 | |
| }
 | |
| 
 | |
| String GDesktop::wallpaper() const
 | |
| {
 | |
|     WSAPI_ClientMessage message;
 | |
|     message.type = WSAPI_ClientMessage::Type::GetWallpaper;
 | |
|     auto response = GEventLoop::current().sync_request(message, WSAPI_ServerMessage::Type::DidGetWallpaper);
 | |
|     return String(response.text, response.text_length);
 | |
| }
 | 
