This turns the values of window rewrite rules in hyprland/workspaces from static strings to format strings with the values {class} and {title} available.
		
	
		
			
				
	
	
		
			160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| waybar-hyprland-workspaces(5)
 | |
| 
 | |
| # NAME
 | |
| 
 | |
| waybar - hyprland workspaces module
 | |
| 
 | |
| # DESCRIPTION
 | |
| 
 | |
| The *workspaces* module displays the currently used workspaces in hyprland compositor.
 | |
| 
 | |
| # CONFIGURATION
 | |
| 
 | |
| Addressed by *hyprland/workspaces*
 | |
| 
 | |
| *format*: ++
 | |
| 	typeof: string ++
 | |
| 	default: {id} ++
 | |
| 	The format, how information should be displayed.
 | |
| 
 | |
| *format-icons*: ++
 | |
| 	typeof: array ++
 | |
| 	Based on the workspace ID and state, the corresponding icon gets selected. See *icons*.
 | |
| 
 | |
| *window-rewrite*: ++
 | |
| 	typeof: object ++
 | |
| 	Regex rules to map window class to an icon or preferred method of representation for a workspace's window.
 | |
| 	Keys are the rules, while the values are the methods of representation. Values may use the placeholders {class} and {title} to use the window's original class and/or title respectively.
 | |
| 	Rules may specify `class<...>`, `title<...>`, or both in order to fine-tune the matching.
 | |
| 
 | |
| *window-rewrite-default*:
 | |
| 	typeof: string ++
 | |
| 	default: "?" ++
 | |
| 	The default method of representation for a workspace's window. This will be used for windows whose classes do not match any of the rules in *window-rewrite*.
 | |
| 
 | |
| *format-window-separator*: ++
 | |
| 	typeof: string ++
 | |
| 	default: " " ++
 | |
| 	The separator to be used between windows in a workspace.
 | |
| 
 | |
| *show-special*: ++
 | |
| 	typeof: bool ++
 | |
| 	default: false ++
 | |
| 	If set to true, special workspaces will be shown.
 | |
| 
 | |
| *all-outputs*: ++
 | |
| 	typeof: bool ++
 | |
| 	default: false ++
 | |
| 	If set to false workspaces group will be shown only in assigned output. Otherwise, all workspace groups are shown.
 | |
| 
 | |
| *active-only*: ++
 | |
| 	typeof: bool ++
 | |
| 	default: false ++
 | |
| 	If set to true, only the active workspace will be shown.
 | |
| 
 | |
| *ignore-workspaces*: ++
 | |
| 	typeof: array ++
 | |
| 	default: [] ++
 | |
| 	Regexes to match against workspaces names. If there's a match, the workspace will not be shown. This takes precedence over *show-special*, *all-outputs*, and *active-only*.
 | |
| 
 | |
| *sort-by*: ++
 | |
| 	typeof: string ++
 | |
| 	default: "default" ++
 | |
| 	If set to number, workspaces will sort by number.
 | |
| 	If set to name, workspaces will sort by name.
 | |
| 	If set to id, workspaces will sort by id.
 | |
| 	If none of those, workspaces will sort with default behavior.
 | |
| 
 | |
| # FORMAT REPLACEMENTS
 | |
| 
 | |
| *{id}*: id of workspace assigned by compositor
 | |
| 
 | |
| *{name}*: workspace name assigned by compositor
 | |
| 
 | |
| *{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 match is found and none of the below conditions have defined icons.
 | |
| - *active*: Will be shown, when workspace is active
 | |
| - *special*: Will be shown on non-active special workspaces
 | |
| - *empty*: Will be shown on non-active, non-special empty persistent workspaces
 | |
| - *visible*: Will be shown on workspaces that are visible but not active. For example: this is useful if you want your visible workspaces on other monitors to have the same look as active.
 | |
| - *persistent*: Will be shown on non-empty persistent workspaces
 | |
| 
 | |
| # EXAMPLES
 | |
| 
 | |
| ```
 | |
| "hyprland/workspaces": {
 | |
| 	"format": "{name}: {icon}",
 | |
| 	"format-icons": {
 | |
| 		"1": "",
 | |
| 		"2": "",
 | |
| 		"3": "",
 | |
| 		"4": "",
 | |
| 		"5": "",
 | |
| 		"active": "",
 | |
| 		"default": ""
 | |
| 	},
 | |
| 	"persistent-workspaces": {
 | |
| 		"*": 5, // 5 workspaces by default on every monitor
 | |
| 		"HDMI-A-1": 3 // but only three on HDMI-A-1
 | |
| 	}
 | |
| }
 | |
| ```
 | |
| 
 | |
| ```
 | |
| "hyprland/workspaces": {
 | |
| 	"format": "{name}: {icon}",
 | |
| 	"format-icons": {
 | |
| 		"1": "",
 | |
| 		"2": "",
 | |
| 		"3": "",
 | |
| 		"4": "",
 | |
| 		"5": "",
 | |
| 		"active": "",
 | |
| 		"default": ""
 | |
| 	},
 | |
| 	"persistent-workspaces": {
 | |
| 		"*": [ 2,3,4,5 ], // 2-5 on every monitor
 | |
| 		"HDMI-A-1": [ 1 ] // but only workspace 1 on HDMI-A-1
 | |
| 	}
 | |
| }
 | |
| ```
 | |
| 
 | |
| ```
 | |
| "hyprland/workspaces": {
 | |
| 	"format": "{name}\n{windows}",
 | |
| 	"format-window-separator": "\n",
 | |
| 	"window-rewrite-default": "",
 | |
| 	"window-rewrite": {
 | |
| 		"title<.*youtube.*>": "", // Windows whose titles contain "youtube"
 | |
| 		"class<firefox>": "", // Windows whose classes are "firefox"
 | |
| 		"class<firefox> title<.*github.*>": "", // Windows whose class is "firefox" and title contains "github". Note that "class" always comes first.
 | |
| 		"foot": "", // Windows that contain "foot" in either class or title. For optimization reasons, it will only match against a title if at least one other window explicitly matches against a title.
 | |
| 		"code": "",
 | |
| 	}
 | |
| }
 | |
| ```
 | |
| 
 | |
| "hyprland/workspaces": {
 | |
| 	// Formatting omitted for brevity
 | |
| 	"ignore-workspaces": [
 | |
| 		"(special:)?chrome-sharing-indicator"
 | |
| 	]
 | |
| }
 | |
| ```
 | |
| 
 | |
| # Style
 | |
| 
 | |
| - *#workspaces*
 | |
| - *#workspaces button*
 | |
| - *#workspaces button.active*
 | |
| - *#workspaces button.empty*
 | |
| - *#workspaces button.visible*
 | |
| - *#workspaces button.persistent*
 | |
| - *#workspaces button.special*
 | |
| - *#workspaces button.urgent*
 |