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_expose(XEvent*);
|
||||
|
||||
void update_title();
|
||||
|
||||
static void (*handler[LASTEvent])(XEvent*) = {
|
||||
[Expose] = on_expose,
|
||||
[ConfigureNotify] = on_configurenotify,
|
||||
@ -44,6 +46,9 @@ const char **filenames;
|
||||
unsigned int filecnt;
|
||||
unsigned int fileidx;
|
||||
|
||||
#define TITLE_LEN 256
|
||||
char win_title[TITLE_LEN];
|
||||
|
||||
void run() {
|
||||
XEvent ev;
|
||||
|
||||
@ -90,6 +95,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
img_load(&img, filenames[fileidx]);
|
||||
img_display(&img, &win);
|
||||
update_title();
|
||||
|
||||
run();
|
||||
|
||||
@ -127,6 +133,7 @@ void on_keypress(XEvent *ev) {
|
||||
if (fileidx + 1 < filecnt) {
|
||||
img_load(&img, filenames[++fileidx]);
|
||||
img_display(&img, &win);
|
||||
update_title();
|
||||
}
|
||||
break;
|
||||
case XK_p:
|
||||
@ -134,6 +141,7 @@ void on_keypress(XEvent *ev) {
|
||||
if (fileidx > 0) {
|
||||
img_load(&img, filenames[--fileidx]);
|
||||
img_display(&img, &win);
|
||||
update_title();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -153,3 +161,18 @@ void on_expose(XEvent *ev) {
|
||||
img_render(&img, &win, ev->xexpose.x, ev->xexpose.y,
|
||||
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,
|
||||
StructureNotifyMask | ExposureMask | KeyPressMask);
|
||||
|
||||
XStoreName(e->dpy, win->xwin, "sxiv");
|
||||
XSetIconName(e->dpy, win->xwin, "Sxiv");
|
||||
win_set_title(win, "sxiv");
|
||||
|
||||
if ((classhint = XAllocClassHint())) {
|
||||
classhint->res_name = "sxiv";
|
||||
@ -94,6 +93,17 @@ void win_close(win_t *win) {
|
||||
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 changed;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user