mirror of
				https://github.com/Zedfrigg/ironbar.git
				synced 2025-10-30 21:21:55 +01:00 
			
		
		
		
	feat(workspaces): support for toggling showing workspaces for all monitors
This commit is contained in:
		
					parent
					
						
							
								a358037d3e
							
						
					
				
			
			
				commit
				
					
						53adaa846c
					
				
			
		
					 4 changed files with 62 additions and 22 deletions
				
			
		
							
								
								
									
										17
									
								
								src/main.rs
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								src/main.rs
									
										
									
									
									
								
							|  | @ -11,6 +11,14 @@ use crate::style::load_css; | |||
| use dirs::config_dir; | ||||
| use gtk::prelude::*; | ||||
| use gtk::{gdk, Application}; | ||||
| use ksway::client::Client; | ||||
| use ksway::IpcCommand; | ||||
| use serde::Deserialize; | ||||
| 
 | ||||
| #[derive(Deserialize)] | ||||
| struct SwayOutput { | ||||
|     name: String, | ||||
| } | ||||
| 
 | ||||
| #[tokio::main] | ||||
| async fn main() { | ||||
|  | @ -18,7 +26,11 @@ async fn main() { | |||
|         .application_id("dev.jstanger.waylandbar") | ||||
|         .build(); | ||||
| 
 | ||||
|     app.connect_activate(|app| { | ||||
|     let mut sway_client = Client::connect().expect("Failed to connect to Sway IPC"); | ||||
|     let outputs = sway_client.ipc(IpcCommand::GetOutputs).expect("Failed to get Sway outputs"); | ||||
|     let outputs = serde_json::from_slice::<Vec<SwayOutput>>(&outputs).expect("Failed to deserialize outputs message from Sway IPC"); | ||||
| 
 | ||||
|     app.connect_activate(move |app| { | ||||
|         let config = Config::load().unwrap_or_default(); | ||||
| 
 | ||||
|         // TODO: Better logging (https://crates.io/crates/tracing)
 | ||||
|  | @ -30,12 +42,13 @@ async fn main() { | |||
|         let num_monitors = display.n_monitors(); | ||||
|         for i in 0..num_monitors { | ||||
|             let monitor = display.monitor(i).unwrap(); | ||||
|             let monitor_name = &outputs.get(i as usize).expect("GTK monitor output differs from Sway's").name; | ||||
| 
 | ||||
|             let config = config.monitors.as_ref().map_or(&config, |monitor_config| { | ||||
|                 monitor_config.get(i as usize).unwrap_or(&config) | ||||
|             }); | ||||
| 
 | ||||
|             create_bar(app, &monitor, config.clone()); | ||||
|             create_bar(app, &monitor, monitor_name, config.clone()); | ||||
|         } | ||||
| 
 | ||||
|         let style_path = config_dir() | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue