| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | # vim: ft=ruby | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | class BspwmPager < Worker | 
					
						
							|  |  |  | 	def mainloop() | 
					
						
							| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | 		while true do | 
					
						
							| 
									
										
										
										
											2016-09-27 13:03:14 +03:00
										 |  |  | 			pipe = IO.popen("bspc subscribe") | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 			pipe.each do |line| | 
					
						
							| 
									
										
										
										
											2016-09-29 17:05:35 +03:00
										 |  |  | 				monitor = line.split(":")[0] | 
					
						
							| 
									
										
										
										
											2016-09-29 17:03:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-04 15:34:25 +03:00
										 |  |  | 				if @my_config.has_key?("monitors") == false || @my_config['monitors'].include?(monitor) | 
					
						
							| 
									
										
										
										
											2016-09-29 17:03:30 +03:00
										 |  |  | 					self.write parse_data(line) | 
					
						
							|  |  |  | 				end | 
					
						
							| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | 			end | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 	end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	def parse_data(string) | 
					
						
							|  |  |  | 		# Example: WMDVI-I-1:o1:o2:f3:f4:O5:f6:f7:f8:f9:fh:LT:TF:G | 
					
						
							|  |  |  | 		out = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		string.split(":").each do |part| | 
					
						
							|  |  |  | 			n = part[1..-1] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-04 15:34:25 +03:00
										 |  |  | 			if @my_config['blacklist'] != nil | 
					
						
							|  |  |  | 				if @my_config['blacklist'].include? n | 
					
						
							| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | 					next | 
					
						
							|  |  |  | 				end | 
					
						
							|  |  |  | 			end | 
					
						
							|  |  |  | 				 | 
					
						
							|  |  |  | 			case part | 
					
						
							|  |  |  | 				when /^(O|F|U).+/ | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | 					out << "%{B#{@config['colours']['bg_focused']}} #{n} %{B-}" | 
					
						
							| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | 				when /^u.+/ | 
					
						
							|  |  |  | 					out << "%{A:bspc desktop -f #{n}:}%{R} #{n} %{R}%{A}" | 
					
						
							|  |  |  | 				when /^o.+/ | 
					
						
							|  |  |  | 					out << "%{A:bspc desktop -f #{n}:} #{n} %{A}" | 
					
						
							|  |  |  | 				when /^f.+/ | 
					
						
							| 
									
										
										
										
											2016-10-04 15:34:25 +03:00
										 |  |  | 					if @my_config['show_empty_desktops'] | 
					
						
							| 
									
										
										
										
											2016-09-27 04:18:43 +03:00
										 |  |  | 						out << " #{n} " | 
					
						
							|  |  |  | 					end | 
					
						
							|  |  |  | 				when /^L.+/ | 
					
						
							|  |  |  | 					@layout = n | 
					
						
							|  |  |  | 			end | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		case @layout | 
					
						
							|  |  |  | 			when "T" | 
					
						
							|  |  |  | 				layout_flag = "t" | 
					
						
							|  |  |  | 			when "M" | 
					
						
							|  |  |  | 				layout_flag = "m" | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		out << " #{layout_flag} " | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return out.join.chomp | 
					
						
							|  |  |  | 	end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | Modules.add("bspwm_pager", "BspwmPager") |