display clients count in monocle symbol
- Replicate missing functionality from dwl to display the client count in monocle mode - Add ltsymbol field to Monitor struct - Display client count in monocle mode when greater than zero - Tested with somebar and dwlb
This commit is contained in:
		
				
					committed by
					
						
						Leonardo Hernández Hernández
					
				
			
			
				
	
			
			
			
						parent
						
							21930621ee
						
					
				
				
					commit
					bbdf2a913b
				
			
							
								
								
									
										12
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								dwl.c
									
									
									
									
									
								
							@@ -190,6 +190,7 @@ struct Monitor {
 | 
			
		||||
	unsigned int tagset[2];
 | 
			
		||||
	double mfact;
 | 
			
		||||
	int nmaster;
 | 
			
		||||
	char ltsymbol[16];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
@@ -482,6 +483,8 @@ arrange(Monitor *m)
 | 
			
		||||
	wlr_scene_node_set_enabled(&m->fullscreen_bg->node,
 | 
			
		||||
			(c = focustop(m)) && c->isfullscreen);
 | 
			
		||||
 | 
			
		||||
	if (m)
 | 
			
		||||
		strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, LENGTH(m->ltsymbol));
 | 
			
		||||
	if (m && m->lt[m->sellt]->arrange)
 | 
			
		||||
		m->lt[m->sellt]->arrange(m);
 | 
			
		||||
	motionnotify(0);
 | 
			
		||||
@@ -970,6 +973,7 @@ createmon(struct wl_listener *listener, void *data)
 | 
			
		||||
		wlr_output_layout_add_auto(output_layout, wlr_output);
 | 
			
		||||
	else
 | 
			
		||||
		wlr_output_layout_add(output_layout, wlr_output, m->m.x, m->m.y);
 | 
			
		||||
	strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, LENGTH(m->ltsymbol));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -1592,12 +1596,16 @@ void
 | 
			
		||||
monocle(Monitor *m)
 | 
			
		||||
{
 | 
			
		||||
	Client *c;
 | 
			
		||||
	int n = 0;
 | 
			
		||||
 | 
			
		||||
	wl_list_for_each(c, &clients, link) {
 | 
			
		||||
		if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen)
 | 
			
		||||
			continue;
 | 
			
		||||
		resize(c, m->w, 0);
 | 
			
		||||
		n++;
 | 
			
		||||
	}
 | 
			
		||||
	if (n)
 | 
			
		||||
		snprintf(m->ltsymbol, LENGTH(m->ltsymbol), "[%d]", n);
 | 
			
		||||
	if ((c = focustop(m)))
 | 
			
		||||
		wlr_scene_node_raise_to_top(&c->scene->node);
 | 
			
		||||
}
 | 
			
		||||
@@ -1851,7 +1859,7 @@ printstatus(void)
 | 
			
		||||
		printf("%s selmon %u\n", m->wlr_output->name, m == selmon);
 | 
			
		||||
		printf("%s tags %u %u %u %u\n", m->wlr_output->name, occ, m->tagset[m->seltags],
 | 
			
		||||
				sel, urg);
 | 
			
		||||
		printf("%s layout %s\n", m->wlr_output->name, m->lt[m->sellt]->symbol);
 | 
			
		||||
		printf("%s layout %s\n", m->wlr_output->name, m->ltsymbol);
 | 
			
		||||
	}
 | 
			
		||||
	fflush(stdout);
 | 
			
		||||
}
 | 
			
		||||
@@ -2044,7 +2052,7 @@ setlayout(const Arg *arg)
 | 
			
		||||
		selmon->sellt ^= 1;
 | 
			
		||||
	if (arg && arg->v)
 | 
			
		||||
		selmon->lt[selmon->sellt] = (Layout *)arg->v;
 | 
			
		||||
	/* TODO change layout symbol? */
 | 
			
		||||
	strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, LENGTH(selmon->ltsymbol));
 | 
			
		||||
	arrange(selmon);
 | 
			
		||||
	printstatus();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user