mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 16:02:43 +01:00 
			
		
		
		
	Add docs and adjust sorting
This commit is contained in:
		
							
								
								
									
										69
									
								
								man/waybar-wlr-workspaces.5.scd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								man/waybar-wlr-workspaces.5.scd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| waybar-wlr-workspaces(5) | ||||
|  | ||||
| # NAME | ||||
|  | ||||
| waybar - wlr workspaces module | ||||
|  | ||||
| # DESCRIPTION | ||||
|  | ||||
| The *workspaces* module displays the currently used workspaces in waynland compositor. | ||||
|  | ||||
| # CONFIGURATION | ||||
|  | ||||
| Addressed by *wlr/workspaces* | ||||
|  | ||||
| *format*: ++ | ||||
| 	typeof: string ++ | ||||
| 	default: {name} ++ | ||||
| 	The format, how information should be displayed. | ||||
|  | ||||
| *format-icons*: ++ | ||||
| 	typeof: array ++ | ||||
| 	Based on the workspace name and state, the corresponding icon gets selected. See *icons*. | ||||
|  | ||||
| *sort-by-name*: ++ | ||||
| 	typeof: bool ++ | ||||
| 	default: true ++ | ||||
| 	Should workspaces be sorted by name. | ||||
|  | ||||
| *sort-by-coordinates*: ++ | ||||
| 	typeof: bool ++ | ||||
| 	default: false ++ | ||||
| 	Should workspaces be sorted by coordinates. | ||||
| 	Note that if both  *sort-by-name* and *sort-by-coordinates* are true sort by name will be first. | ||||
| 	If both are false - sort by id will be performed. | ||||
|  | ||||
| # FORMAT REPLACEMENTS | ||||
|  | ||||
| *{name}*: Number stripped from workspace value. | ||||
|  | ||||
| *{icon}*: Icon, as defined in *format-icons*. | ||||
|  | ||||
| # ICONS | ||||
|  | ||||
| Additional to workspace name matching, the following *format-icons* can be set. | ||||
|  | ||||
| - *default*: Will be shown, when no string matches is found. | ||||
| - *focused*: Will be shown, when workspace is focused | ||||
|  | ||||
| # EXAMPLES | ||||
|  | ||||
| ``` | ||||
| "wlr/workspaces": { | ||||
| 	"format": "{name}: {icon}", | ||||
| 	"format-icons": { | ||||
| 		"1": "", | ||||
| 		"2": "", | ||||
| 		"3": "", | ||||
| 		"4": "", | ||||
| 		"5": "", | ||||
| 		"focused": "", | ||||
| 		"default": "" | ||||
| 	} | ||||
| } | ||||
| ``` | ||||
|  | ||||
| # Style | ||||
|  | ||||
| - *#workspaces button* | ||||
| - *#workspaces button.focused* | ||||
| @@ -197,5 +197,6 @@ Valid options for the "rotate" property are: 0, 90, 180 and 270. | ||||
| - *waybar-sway-window(5)* | ||||
| - *waybar-sway-workspaces(5)* | ||||
| - *waybar-wlr-taskbar(5)* | ||||
| - *waybar-wlr-workspaces(5)* | ||||
| - *waybar-temperature(5)* | ||||
| - *waybar-tray(5)* | ||||
|   | ||||
| @@ -272,6 +272,7 @@ if scdoc.found() | ||||
|         'waybar-tray.5.scd', | ||||
|         'waybar-states.5.scd', | ||||
|         'waybar-wlr-taskbar.5.scd', | ||||
|         'waybar-wlr-workspaces.5.scd', | ||||
|         'waybar-bluetooth.5.scd', | ||||
|     ] | ||||
|  | ||||
|   | ||||
| @@ -101,12 +101,12 @@ WorkspaceGroup::WorkspaceGroup(const Bar &bar, Gtk::Box &box, const Json::Value | ||||
|       workspace_group_handle_(workspace_group_handle), | ||||
|       id_(id) { | ||||
|   add_workspace_group_listener(workspace_group_handle, this); | ||||
|   auto config_sort_by_name = config_["sort_by_name"]; | ||||
|   auto config_sort_by_name = config_["sort-by-name"]; | ||||
|   if (config_sort_by_name.isBool()) { | ||||
|     sort_by_name = config_sort_by_name.asBool(); | ||||
|   } | ||||
|  | ||||
|   auto config_sort_by_coordinates = config_["sort_by_coordinates"]; | ||||
|   auto config_sort_by_coordinates = config_["sort-by-coordinates"]; | ||||
|   if (config_sort_by_coordinates.isBool()) { | ||||
|     sort_by_coordinates = config_sort_by_coordinates.asBool(); | ||||
|   } | ||||
| @@ -180,12 +180,25 @@ auto WorkspaceGroup::commit() -> void { workspace_manager_.commit(); } | ||||
|  | ||||
| auto WorkspaceGroup::sort_workspaces() -> void { | ||||
|   auto cmp = [=](std::unique_ptr<Workspace> &lhs, std::unique_ptr<Workspace> &rhs) { | ||||
|     if (sort_by_name && lhs->get_name() != rhs->get_name()) { | ||||
|       return lhs->get_name() < rhs->get_name(); | ||||
|     auto is_name_less = lhs->get_name() < rhs->get_name(); | ||||
|     auto is_name_eq = lhs->get_name() == rhs->get_name(); | ||||
|     auto is_coords_less = lhs->get_coords() < rhs->get_coords(); | ||||
|     if (sort_by_name) { | ||||
|       if (sort_by_coordinates) { | ||||
|         return is_name_eq ? is_coords_less : is_name_less; | ||||
|       } | ||||
|       else { | ||||
|         return is_name_less; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return lhs->get_coords() < rhs->get_coords(); | ||||
|     if (sort_by_coordinates) { | ||||
|       return is_coords_less; | ||||
|     } | ||||
|  | ||||
|     return lhs->id() < rhs->id(); | ||||
|   }; | ||||
|  | ||||
|   std::sort(workspaces_.begin(), workspaces_.end(), cmp); | ||||
|   for (size_t i = 0; i < workspaces_.size(); ++i) { | ||||
|     for (auto &workspace : workspaces_) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 dmitry
					dmitry