Put some useful information in the window title
This commit is contained in:
		
							parent
							
								
									eeb58886a5
								
							
						
					
					
						commit
						08018427c6
					
				
							
								
								
									
										23
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								main.c
									
									
									
									
									
								
							| @ -31,6 +31,8 @@ void on_keypress(XEvent*); | |||||||
| void on_configurenotify(XEvent*); | void on_configurenotify(XEvent*); | ||||||
| void on_expose(XEvent*); | void on_expose(XEvent*); | ||||||
| 
 | 
 | ||||||
|  | void update_title(); | ||||||
|  | 
 | ||||||
| static void (*handler[LASTEvent])(XEvent*) = { | static void (*handler[LASTEvent])(XEvent*) = { | ||||||
| 	[Expose] = on_expose, | 	[Expose] = on_expose, | ||||||
| 	[ConfigureNotify] = on_configurenotify, | 	[ConfigureNotify] = on_configurenotify, | ||||||
| @ -44,6 +46,9 @@ const char **filenames; | |||||||
| unsigned int filecnt; | unsigned int filecnt; | ||||||
| unsigned int fileidx; | unsigned int fileidx; | ||||||
| 
 | 
 | ||||||
|  | #define TITLE_LEN 256 | ||||||
|  | char win_title[TITLE_LEN]; | ||||||
|  | 
 | ||||||
| void run() { | void run() { | ||||||
| 	XEvent ev; | 	XEvent ev; | ||||||
| 
 | 
 | ||||||
| @ -90,6 +95,7 @@ int main(int argc, char **argv) { | |||||||
| 
 | 
 | ||||||
| 	img_load(&img, filenames[fileidx]); | 	img_load(&img, filenames[fileidx]); | ||||||
| 	img_display(&img, &win); | 	img_display(&img, &win); | ||||||
|  | 	update_title(); | ||||||
| 
 | 
 | ||||||
| 	run(); | 	run(); | ||||||
| 
 | 
 | ||||||
| @ -127,6 +133,7 @@ void on_keypress(XEvent *ev) { | |||||||
| 			if (fileidx + 1 < filecnt) { | 			if (fileidx + 1 < filecnt) { | ||||||
| 				img_load(&img, filenames[++fileidx]); | 				img_load(&img, filenames[++fileidx]); | ||||||
| 				img_display(&img, &win); | 				img_display(&img, &win); | ||||||
|  | 				update_title(); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		case XK_p: | 		case XK_p: | ||||||
| @ -134,6 +141,7 @@ void on_keypress(XEvent *ev) { | |||||||
| 			if (fileidx > 0) { | 			if (fileidx > 0) { | ||||||
| 				img_load(&img, filenames[--fileidx]); | 				img_load(&img, filenames[--fileidx]); | ||||||
| 				img_display(&img, &win); | 				img_display(&img, &win); | ||||||
|  | 				update_title(); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 	} | 	} | ||||||
| @ -153,3 +161,18 @@ void on_expose(XEvent *ev) { | |||||||
| 	img_render(&img, &win, ev->xexpose.x, ev->xexpose.y, | 	img_render(&img, &win, ev->xexpose.x, ev->xexpose.y, | ||||||
| 	           ev->xexpose.width, ev->xexpose.height); | 	           ev->xexpose.width, ev->xexpose.height); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void update_title() { | ||||||
|  | 	int n; | ||||||
|  | 
 | ||||||
|  | 	n = snprintf(win_title, TITLE_LEN, "sxiv: [%d/%d] <%d%%> %s", fileidx + 1, | ||||||
|  | 	             filecnt, (int) (img.zoom * 100.0), filenames[fileidx]); | ||||||
|  | 	 | ||||||
|  | 	if (n >= TITLE_LEN) { | ||||||
|  | 		win_title[TITLE_LEN - 2] = '.'; | ||||||
|  | 		win_title[TITLE_LEN - 3] = '.'; | ||||||
|  | 		win_title[TITLE_LEN - 4] = '.'; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	win_set_title(&win, win_title); | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								window.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								window.c
									
									
									
									
									
								
							| @ -72,8 +72,7 @@ void win_open(win_t *win) { | |||||||
| 	XSelectInput(e->dpy, win->xwin, | 	XSelectInput(e->dpy, win->xwin, | ||||||
| 	             StructureNotifyMask | ExposureMask | KeyPressMask); | 	             StructureNotifyMask | ExposureMask | KeyPressMask); | ||||||
| 
 | 
 | ||||||
| 	XStoreName(e->dpy, win->xwin, "sxiv"); | 	win_set_title(win, "sxiv"); | ||||||
| 	XSetIconName(e->dpy, win->xwin, "Sxiv"); |  | ||||||
| 
 | 
 | ||||||
| 	if ((classhint = XAllocClassHint())) { | 	if ((classhint = XAllocClassHint())) { | ||||||
| 		classhint->res_name = "sxiv"; | 		classhint->res_name = "sxiv"; | ||||||
| @ -94,6 +93,17 @@ void win_close(win_t *win) { | |||||||
| 	XCloseDisplay(win->env.dpy); | 	XCloseDisplay(win->env.dpy); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void win_set_title(win_t *win, const char *title) { | ||||||
|  | 	if (!win) | ||||||
|  | 		return; | ||||||
|  | 
 | ||||||
|  | 	if (!title) | ||||||
|  | 		title = "sxiv"; | ||||||
|  | 
 | ||||||
|  | 	XStoreName(win->env.dpy, win->xwin, title); | ||||||
|  | 	XSetIconName(win->env.dpy, win->xwin, title); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int win_configure(win_t *win, XConfigureEvent *cev) { | int win_configure(win_t *win, XConfigureEvent *cev) { | ||||||
| 	int changed; | 	int changed; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								window.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								window.h
									
									
									
									
									
								
							| @ -46,6 +46,8 @@ typedef struct win_s { | |||||||
| void win_open(win_t*); | void win_open(win_t*); | ||||||
| void win_close(win_t*); | void win_close(win_t*); | ||||||
| 
 | 
 | ||||||
|  | void win_set_title(win_t*, const char*); | ||||||
|  | 
 | ||||||
| int win_configure(win_t*, XConfigureEvent*); | int win_configure(win_t*, XConfigureEvent*); | ||||||
| void win_clear(win_t*); | void win_clear(win_t*); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert