summaryrefslogtreecommitdiff
path: root/config/nvim-1/undo/%home%coast%.local%src%dmenu%dmenu.c
blob: baea793d9c85b793e8531dd7c49534ad04398884 (plain)
ofshex dumpascii
0000 56 69 6d 9f 55 6e 44 6f e5 00 03 6e 34 0b 9c ff b3 7a 98 9c a5 44 e6 bb 78 0a 2c 78 90 1d 3f b3 Vim.UnDo...n4....z...D..x.,x..?.
0020 37 38 76 85 11 a3 06 17 af a0 1d 00 00 00 01 00 00 00 17 20 20 2f 2f 62 68 20 3d 20 64 72 77 2d 78v..................//bh.=.drw-
0040 3e 66 6f 6e 74 73 2d 3e 68 3b 00 00 02 f6 00 00 00 00 00 00 00 07 00 00 00 0b 00 00 00 00 00 00 >fonts->h;......................
0060 00 0b 00 00 00 0b 00 00 00 0b 00 00 00 00 69 a1 0f dd 04 01 00 00 00 04 00 5f d0 00 00 00 00 00 ..............i.........._......
0080 00 00 08 00 00 00 01 00 00 00 00 00 00 00 07 00 00 02 f3 00 00 00 13 00 00 00 00 ff ff ff ff 00 ................................
00a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 f3 00 00 00 ................................
01e0 02 00 00 00 00 00 00 02 f3 00 00 00 01 00 00 00 00 00 00 00 76 00 00 00 04 00 00 00 00 69 a1 0f ....................v........i..
0200 90 04 01 00 00 00 02 00 f5 18 00 00 00 0a 00 00 03 a2 00 00 03 a0 00 00 03 95 00 00 00 15 23 69 ..............................#i
0220 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 nclude.<X11/Xlib.h>....#include.
0240 3c 58 31 31 2f 58 61 74 6f 6d 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 <X11/Xatom.h>....#include.<X11/X
0260 75 74 69 6c 2e 68 3e 00 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 24 23 69 util.h>....#ifdef.XINERAMA...$#i
0280 6e 63 6c 75 64 65 20 3c 58 31 31 2f 65 78 74 65 6e 73 69 6f 6e 73 2f 58 69 6e 65 72 61 6d 61 2e nclude.<X11/extensions/Xinerama.
02a0 68 3e 00 00 00 06 23 65 6e 64 69 66 00 00 00 18 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 66 h>....#endif....#include.<X11/Xf
02c0 74 2f 58 66 74 2e 68 3e 00 00 00 00 00 00 00 10 23 69 6e 63 6c 75 64 65 20 22 64 72 77 2e 68 22 t/Xft.h>........#include."drw.h"
02e0 00 00 00 11 23 69 6e 63 6c 75 64 65 20 22 75 74 69 6c 2e 68 22 00 00 00 00 00 00 00 0c 2f 2a 20 ....#include."util.h"......../*.
0300 6d 61 63 72 6f 73 20 2a 2f 00 00 00 5f 23 64 65 66 69 6e 65 20 49 4e 54 45 52 53 45 43 54 28 78 macros.*/..._#define.INTERSECT(x
0320 2c 79 2c 77 2c 68 2c 72 29 20 20 28 4d 41 58 28 30 2c 20 4d 49 4e 28 28 78 29 2b 28 77 29 2c 28 ,y,w,h,r)..(MAX(0,.MIN((x)+(w),(
0340 72 29 2e 78 5f 6f 72 67 2b 28 72 29 2e 77 69 64 74 68 29 20 20 2d 20 4d 41 58 28 28 78 29 2c 28 r).x_org+(r).width)..-.MAX((x),(
0360 72 29 2e 78 5f 6f 72 67 29 29 20 5c 00 00 00 5e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r).x_org)).\...^................
0380 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 4d 41 58 28 30 2c 20 4d 49 4e 28 28 79 29 2b 28 68 .............*.MAX(0,.MIN((y)+(h
03a0 29 2c 28 72 29 2e 79 5f 6f 72 67 2b 28 72 29 2e 68 65 69 67 68 74 29 20 2d 20 4d 41 58 28 28 79 ),(r).y_org+(r).height).-.MAX((y
03c0 29 2c 28 72 29 2e 79 5f 6f 72 67 29 29 29 00 00 00 46 23 64 65 66 69 6e 65 20 54 45 58 54 57 28 ),(r).y_org)))...F#define.TEXTW(
03e0 58 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 72 77 5f 66 6f 6e 74 73 65 74 5f 67 65 74 X)..............(drw_fontset_get
0400 77 69 64 74 68 28 64 72 77 2c 20 28 58 29 29 20 2b 20 6c 72 70 61 64 29 00 00 00 00 00 00 00 0b width(drw,.(X)).+.lrpad)........
0420 2f 2a 20 65 6e 75 6d 73 20 2a 2f 00 00 00 4a 65 6e 75 6d 20 7b 20 53 63 68 65 6d 65 4e 6f 72 6d /*.enums.*/...Jenum.{.SchemeNorm
0440 2c 20 53 63 68 65 6d 65 53 65 6c 2c 20 53 63 68 65 6d 65 4f 75 74 2c 20 53 63 68 65 6d 65 4c 61 ,.SchemeSel,.SchemeOut,.SchemeLa
0460 73 74 20 7d 3b 20 2f 2a 20 63 6f 6c 6f 72 20 73 63 68 65 6d 65 73 20 2a 2f 00 00 00 00 00 00 00 st.};./*.color.schemes.*/.......
0480 0d 73 74 72 75 63 74 20 69 74 65 6d 20 7b 00 00 00 0c 09 63 68 61 72 20 2a 74 65 78 74 3b 00 00 .struct.item.{.....char.*text;..
04a0 00 1b 09 73 74 72 75 63 74 20 69 74 65 6d 20 2a 6c 65 66 74 2c 20 2a 72 69 67 68 74 3b 00 00 00 ...struct.item.*left,.*right;...
04c0 09 09 69 6e 74 20 6f 75 74 3b 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1e 73 74 61 74 69 63 20 63 ..int.out;....};........static.c
04e0 68 61 72 20 74 65 78 74 5b 42 55 46 53 49 5a 5d 20 3d 20 22 22 3b 00 00 00 13 73 74 61 74 69 63 har.text[BUFSIZ].=."";....static
0500 20 63 68 61 72 20 2a 65 6d 62 65 64 3b 00 00 00 16 73 74 61 74 69 63 20 69 6e 74 20 62 68 2c 20 .char.*embed;....static.int.bh,.
0520 6d 77 2c 20 6d 68 3b 00 00 00 34 73 74 61 74 69 63 20 69 6e 74 20 64 6d 78 20 3d 20 30 3b 20 2f mw,.mh;...4static.int.dmx.=.0;./
0540 2a 20 70 75 74 20 64 6d 65 6e 75 20 61 74 20 74 68 69 73 20 78 20 6f 66 66 73 65 74 20 2a 2f 00 *.put.dmenu.at.this.x.offset.*/.
0560 00 00 5e 73 74 61 74 69 63 20 69 6e 74 20 64 6d 79 20 3d 20 30 3b 20 2f 2a 20 70 75 74 20 64 6d ..^static.int.dmy.=.0;./*.put.dm
0580 65 6e 75 20 61 74 20 74 68 69 73 20 79 20 6f 66 66 73 65 74 20 28 6d 65 61 73 75 72 65 64 20 66 enu.at.this.y.offset.(measured.f
05a0 72 6f 6d 20 74 68 65 20 62 6f 74 74 6f 6d 20 69 66 20 74 6f 70 62 61 72 20 69 73 20 30 29 20 2a rom.the.bottom.if.topbar.is.0).*
05c0 2f 00 00 00 37 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 6d 77 20 3d 20 30 /...7static.unsigned.int.dmw.=.0
05e0 3b 20 2f 2a 20 6d 61 6b 65 20 64 6d 65 6e 75 20 74 68 69 73 20 77 69 64 65 20 2a 2f 00 00 00 1f ;./*.make.dmenu.this.wide.*/....
0600 73 74 61 74 69 63 20 69 6e 74 20 69 6e 70 75 74 77 20 3d 20 30 2c 20 70 72 6f 6d 70 74 77 3b 00 static.int.inputw.=.0,.promptw;.
0620 00 00 35 73 74 61 74 69 63 20 69 6e 74 20 6c 72 70 61 64 3b 20 2f 2a 20 73 75 6d 20 6f 66 20 6c ..5static.int.lrpad;./*.sum.of.l
0640 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 70 61 64 64 69 6e 67 20 2a 2f 00 00 00 15 73 74 61 74 eft.and.right.padding.*/....stat
0660 69 63 20 73 69 7a 65 5f 74 20 63 75 72 73 6f 72 3b 00 00 00 21 73 74 61 74 69 63 20 73 74 72 75 ic.size_t.cursor;...!static.stru
0680 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 73 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 61 74 69 63 ct.item.*items.=.NULL;...'static
06a0 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 6d 61 74 63 68 65 73 2c 20 2a 6d 61 74 63 68 65 6e 64 .struct.item.*matches,.*matchend
06c0 3b 00 00 00 2d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 70 72 65 76 2c 20 2a ;...-static.struct.item.*prev,.*
06e0 63 75 72 72 2c 20 2a 6e 65 78 74 2c 20 2a 73 65 6c 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 curr,.*next,.*sel;....static.int
0700 20 6d 6f 6e 20 3d 20 2d 31 2c 20 73 63 72 65 65 6e 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 .mon.=.-1,.screen;........static
0720 20 41 74 6f 6d 20 63 6c 69 70 2c 20 75 74 66 38 3b 00 00 00 14 73 74 61 74 69 63 20 44 69 73 70 .Atom.clip,.utf8;....static.Disp
0740 6c 61 79 20 2a 64 70 79 3b 00 00 00 23 73 74 61 74 69 63 20 57 69 6e 64 6f 77 20 72 6f 6f 74 2c lay.*dpy;...#static.Window.root,
0760 20 70 61 72 65 6e 74 77 69 6e 2c 20 77 69 6e 3b 00 00 00 0f 73 74 61 74 69 63 20 58 49 43 20 78 .parentwin,.win;....static.XIC.x
0780 69 63 3b 00 00 00 00 00 00 00 10 73 74 61 74 69 63 20 44 72 77 20 2a 64 72 77 3b 00 00 00 1f 73 ic;........static.Drw.*drw;....s
07a0 74 61 74 69 63 20 43 6c 72 20 2a 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4c 61 73 74 5d 3b 00 00 tatic.Clr.*scheme[SchemeLast];..
07c0 00 00 00 00 00 13 23 69 6e 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 00 00 00 00 00 00 00 ......#include."config.h".......
07e0 45 73 74 61 74 69 63 20 69 6e 74 20 28 2a 66 73 74 72 6e 63 6d 70 29 28 63 6f 6e 73 74 20 63 68 Estatic.int.(*fstrncmp)(const.ch
0800 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 73 69 7a 65 5f 74 29 20 3d 20 73 74 ar.*,.const.char.*,.size_t).=.st
0820 72 6e 63 6d 70 3b 00 00 00 3d 73 74 61 74 69 63 20 63 68 61 72 20 2a 28 2a 66 73 74 72 73 74 72 rncmp;...=static.char.*(*fstrstr
0840 29 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 20 3d 20 )(const.char.*,.const.char.*).=.
0860 73 74 72 73 74 72 3b 00 00 00 00 00 00 00 13 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 strstr;........static.unsigned.i
0880 6e 74 00 00 00 2c 74 65 78 74 77 5f 63 6c 61 6d 70 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 nt...,textw_clamp(const.char.*st
08a0 72 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6e 29 00 00 00 01 7b 00 00 00 42 09 75 6e 73 69 r,.unsigned.int.n)....{...B.unsi
08c0 67 6e 65 64 20 69 6e 74 20 77 20 3d 20 64 72 77 5f 66 6f 6e 74 73 65 74 5f 67 65 74 77 69 64 74 gned.int.w.=.drw_fontset_getwidt
08e0 68 5f 63 6c 61 6d 70 28 64 72 77 2c 20 73 74 72 2c 20 6e 29 20 2b 20 6c 72 70 61 64 3b 00 00 00 h_clamp(drw,.str,.n).+.lrpad;...
0900 12 09 72 65 74 75 72 6e 20 4d 49 4e 28 77 2c 20 6e 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b ..return.MIN(w,.n);....}........
0920 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 45 61 70 70 65 6e 64 69 74 65 6d 28 73 74 72 75 63 74 static.void...Eappenditem(struct
0940 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 2a 6c 69 73 74 2c .item.*item,.struct.item.**list,
0960 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 2a 6c 61 73 74 29 00 00 00 01 7b 00 00 00 0b 09 69 66 .struct.item.**last)....{.....if
0980 20 28 2a 6c 61 73 74 29 00 00 00 18 09 09 28 2a 6c 61 73 74 29 2d 3e 72 69 67 68 74 20 3d 20 69 .(*last)......(*last)->right.=.i
09a0 74 65 6d 3b 00 00 00 05 09 65 6c 73 65 00 00 00 0f 09 09 2a 6c 69 73 74 20 3d 20 69 74 65 6d 3b tem;.....else......*list.=.item;
09c0 00 00 00 00 00 00 00 14 09 69 74 65 6d 2d 3e 6c 65 66 74 20 3d 20 2a 6c 61 73 74 3b 00 00 00 14 .........item->left.=.*last;....
09e0 09 69 74 65 6d 2d 3e 72 69 67 68 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 0e 09 2a 6c 61 73 74 20 3d .item->right.=.NULL;.....*last.=
0a00 20 69 74 65 6d 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 .item;....}........static.void..
0a20 00 11 63 61 6c 63 6f 66 66 73 65 74 73 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0a 09 69 6e 74 ..calcoffsets(void)....{.....int
0a40 20 69 2c 20 6e 3b 00 00 00 00 00 00 00 0f 09 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 .i,.n;.........if.(lines.>.0)...
0a60 11 09 09 6e 20 3d 20 6c 69 6e 65 73 20 2a 20 62 68 3b 00 00 00 05 09 65 6c 73 65 00 00 00 38 09 ...n.=.lines.*.bh;.....else...8.
0a80 09 6e 20 3d 20 6d 77 20 2d 20 28 70 72 6f 6d 70 74 77 20 2b 20 69 6e 70 75 74 77 20 2b 20 54 45 .n.=.mw.-.(promptw.+.inputw.+.TE
0aa0 58 54 57 28 22 3c 22 29 20 2b 20 54 45 58 54 57 28 22 3e 22 29 29 3b 00 00 00 47 09 2f 2a 20 63 XTW("<").+.TEXTW(">"));...G./*.c
0ac0 61 6c 63 75 6c 61 74 65 20 77 68 69 63 68 20 69 74 65 6d 73 20 77 69 6c 6c 20 62 65 67 69 6e 20 alculate.which.items.will.begin.
0ae0 74 68 65 20 6e 65 78 74 20 70 61 67 65 20 61 6e 64 20 70 72 65 76 69 6f 75 73 20 70 61 67 65 20 the.next.page.and.previous.page.
0b00 2a 2f 00 00 00 33 09 66 6f 72 20 28 69 20 3d 20 30 2c 20 6e 65 78 74 20 3d 20 63 75 72 72 3b 20 */...3.for.(i.=.0,.next.=.curr;.
0b20 6e 65 78 74 3b 20 6e 65 78 74 20 3d 20 6e 65 78 74 2d 3e 72 69 67 68 74 29 00 00 00 3f 09 09 69 next;.next.=.next->right)...?..i
0b40 66 20 28 28 69 20 2b 3d 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 3f 20 62 68 20 3a 20 74 65 78 74 f.((i.+=.(lines.>.0).?.bh.:.text
0b60 77 5f 63 6c 61 6d 70 28 6e 65 78 74 2d 3e 74 65 78 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 09 w_clamp(next->text,.n)).>.n)....
0b80 09 09 09 62 72 65 61 6b 3b 00 00 00 40 09 66 6f 72 20 28 69 20 3d 20 30 2c 20 70 72 65 76 20 3d ...break;...@.for.(i.=.0,.prev.=
0ba0 20 63 75 72 72 3b 20 70 72 65 76 20 26 26 20 70 72 65 76 2d 3e 6c 65 66 74 3b 20 70 72 65 76 20 .curr;.prev.&&.prev->left;.prev.
0bc0 3d 20 70 72 65 76 2d 3e 6c 65 66 74 29 00 00 00 45 09 09 69 66 20 28 28 69 20 2b 3d 20 28 6c 69 =.prev->left)...E..if.((i.+=.(li
0be0 6e 65 73 20 3e 20 30 29 20 3f 20 62 68 20 3a 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 70 72 65 76 nes.>.0).?.bh.:.textw_clamp(prev
0c00 2d 3e 6c 65 66 74 2d 3e 74 65 78 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 09 09 09 09 62 72 65 ->left->text,.n)).>.n).......bre
0c20 61 6b 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 0d 63 ak;....}........static.void....c
0c40 6c 65 61 6e 75 70 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0a 09 73 69 7a 65 5f 74 20 69 3b 00 leanup(void)....{.....size_t.i;.
0c60 00 00 00 00 00 00 23 09 58 55 6e 67 72 61 62 4b 65 79 62 6f 61 72 64 28 64 70 79 2c 20 43 75 72 ......#.XUngrabKeyboard(dpy,.Cur
0c80 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 21 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 53 rentTime);...!.for.(i.=.0;.i.<.S
0ca0 63 68 65 6d 65 4c 61 73 74 3b 20 69 2b 2b 29 00 00 00 12 09 09 66 72 65 65 28 73 63 68 65 6d 65 chemeLast;.i++)......free(scheme
0cc0 5b 69 5d 29 3b 00 00 00 29 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 74 65 6d 73 20 26 26 20 69 [i]);...).for.(i.=.0;.items.&&.i
0ce0 74 65 6d 73 5b 69 5d 2e 74 65 78 74 3b 20 2b 2b 69 29 00 00 00 16 09 09 66 72 65 65 28 69 74 65 tems[i].text;.++i)......free(ite
0d00 6d 73 5b 69 5d 2e 74 65 78 74 29 3b 00 00 00 0d 09 66 72 65 65 28 69 74 65 6d 73 29 3b 00 00 00 ms[i].text);.....free(items);...
0d20 0f 09 64 72 77 5f 66 72 65 65 28 64 72 77 29 3b 00 00 00 13 09 58 53 79 6e 63 28 64 70 79 2c 20 ..drw_free(drw);.....XSync(dpy,.
0d40 46 61 6c 73 65 29 3b 00 00 00 14 09 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 64 70 79 29 3b 00 False);.....XCloseDisplay(dpy);.
0d60 00 00 01 7d 00 00 00 00 00 00 00 0d 73 74 61 74 69 63 20 63 68 61 72 20 2a 00 00 00 26 63 69 73 ...}........static.char.*...&cis
0d80 74 72 73 74 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 68 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 trstr(const.char.*h,.const.char.
0da0 2a 6e 29 00 00 00 01 7b 00 00 00 0a 09 73 69 7a 65 5f 74 20 69 3b 00 00 00 00 00 00 00 0b 09 69 *n)....{.....size_t.i;.........i
0dc0 66 20 28 21 6e 5b 30 5d 29 00 00 00 13 09 09 72 65 74 75 72 6e 20 28 63 68 61 72 20 2a 29 68 3b f.(!n[0])......return.(char.*)h;
0de0 00 00 00 00 00 00 00 12 09 66 6f 72 20 28 3b 20 2a 68 3b 20 2b 2b 68 29 20 7b 00 00 00 35 09 09 .........for.(;.*h;.++h).{...5..
0e00 66 6f 72 20 28 69 20 3d 20 30 3b 20 6e 5b 69 5d 20 26 26 20 74 6f 6c 6f 77 65 72 28 28 75 6e 73 for.(i.=.0;.n[i].&&.tolower((uns
0e20 69 67 6e 65 64 20 63 68 61 72 29 6e 5b 69 5d 29 20 3d 3d 00 00 00 30 09 09 20 20 20 20 20 20 20 igned.char)n[i]).==...0.........
0e40 20 20 20 20 20 74 6f 6c 6f 77 65 72 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 68 5b 69 5d .....tolower((unsigned.char)h[i]
0e60 29 3b 20 2b 2b 69 29 00 00 00 04 09 09 09 3b 00 00 00 13 09 09 69 66 20 28 6e 5b 69 5d 20 3d 3d );.++i).......;......if.(n[i].==
0e80 20 27 5c 30 27 29 00 00 00 14 09 09 09 72 65 74 75 72 6e 20 28 63 68 61 72 20 2a 29 68 3b 00 00 .'\0').......return.(char.*)h;..
0ea0 00 02 09 7d 00 00 00 0d 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 01 7d 00 00 00 00 00 00 ...}.....return.NULL;....}......
0ec0 00 0a 73 74 61 74 69 63 20 69 6e 74 00 00 00 30 64 72 61 77 69 74 65 6d 28 73 74 72 75 63 74 20 ..static.int...0drawitem(struct.
0ee0 69 74 65 6d 20 2a 69 74 65 6d 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e 74 20 77 29 item.*item,.int.x,.int.y,.int.w)
0f00 00 00 00 01 7b 00 00 00 11 09 69 66 20 28 69 74 65 6d 20 3d 3d 20 73 65 6c 29 00 00 00 28 09 09 ....{.....if.(item.==.sel)...(..
0f20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 drw_setscheme(drw,.scheme[Scheme
0f40 53 65 6c 5d 29 3b 00 00 00 14 09 65 6c 73 65 20 69 66 20 28 69 74 65 6d 2d 3e 6f 75 74 29 00 00 Sel]);.....else.if.(item->out)..
0f60 00 28 09 09 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 .(..drw_setscheme(drw,.scheme[Sc
0f80 68 65 6d 65 4f 75 74 5d 29 3b 00 00 00 05 09 65 6c 73 65 00 00 00 29 09 09 64 72 77 5f 73 65 74 hemeOut]);.....else...)..drw_set
0fa0 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b scheme(drw,.scheme[SchemeNorm]);
0fc0 00 00 00 00 00 00 00 3d 09 72 65 74 75 72 6e 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c .......=.return.drw_text(drw,.x,
0fe0 20 79 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 69 74 65 6d 2d 3e 74 65 78 74 .y,.w,.bh,.lrpad./.2,.item->text
1000 2c 20 30 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 ,.0);....}........static.void...
1020 0e 64 72 61 77 6d 65 6e 75 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 15 09 75 6e 73 69 67 6e 65 .drawmenu(void)....{.....unsigne
1040 64 20 69 6e 74 20 63 75 72 70 6f 73 3b 00 00 00 13 09 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 d.int.curpos;.....struct.item.*i
1060 74 65 6d 3b 00 00 00 15 09 69 6e 74 20 78 20 3d 20 30 2c 20 79 20 3d 20 30 2c 20 77 3b 00 00 00 tem;.....int.x.=.0,.y.=.0,.w;...
1080 00 00 00 00 28 09 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b ....(.drw_setscheme(drw,.scheme[
10a0 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 23 09 64 72 77 5f 72 65 63 74 28 64 72 77 2c 20 SchemeNorm]);...#.drw_rect(drw,.
10c0 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 2c 20 31 2c 20 31 29 3b 00 00 00 00 00 00 00 19 09 69 66 20 0,.0,.mw,.mh,.1,.1);.........if.
10e0 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 20 7b 00 00 00 28 09 09 64 72 77 5f 73 (prompt.&&.*prompt).{...(..drw_s
1100 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 53 65 6c 5d 29 etscheme(drw,.scheme[SchemeSel])
1120 3b 00 00 00 3d 09 09 78 20 3d 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 70 ;...=..x.=.drw_text(drw,.x,.0,.p
1140 72 6f 6d 70 74 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 70 72 6f 6d 70 74 2c 20 30 romptw,.bh,.lrpad./.2,.prompt,.0
1160 29 3b 00 00 00 02 09 7d 00 00 00 17 09 2f 2a 20 64 72 61 77 20 69 6e 70 75 74 20 66 69 65 6c 64 );.....}...../*.draw.input.field
1180 20 2a 2f 00 00 00 2f 09 77 20 3d 20 28 6c 69 6e 65 73 20 3e 20 30 20 7c 7c 20 21 6d 61 74 63 68 .*/.../.w.=.(lines.>.0.||.!match
11a0 65 73 29 20 3f 20 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 77 3b 00 00 00 28 09 64 72 77 5f 73 es).?.mw.-.x.:.inputw;...(.drw_s
11c0 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d etscheme(drw,.scheme[SchemeNorm]
11e0 29 3b 00 00 00 30 09 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 77 2c 20 62 68 );...0.drw_text(drw,.x,.0,.w,.bh
1200 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 74 65 78 74 2c 20 30 29 3b 00 00 00 00 00 00 00 2d 09 63 ,.lrpad./.2,.text,.0);.......-.c
1220 75 72 70 6f 73 20 3d 20 54 45 58 54 57 28 74 65 78 74 29 20 2d 20 54 45 58 54 57 28 26 74 65 78 urpos.=.TEXTW(text).-.TEXTW(&tex
1240 74 5b 63 75 72 73 6f 72 5d 29 3b 00 00 00 25 09 69 66 20 28 28 63 75 72 70 6f 73 20 2b 3d 20 6c t[cursor]);...%.if.((curpos.+=.l
1260 72 70 61 64 20 2f 20 32 20 2d 20 31 29 20 3c 20 77 29 20 7b 00 00 00 29 09 09 64 72 77 5f 73 65 rpad./.2.-.1).<.w).{...)..drw_se
1280 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 tscheme(drw,.scheme[SchemeNorm])
12a0 3b 00 00 00 30 09 09 64 72 77 5f 72 65 63 74 28 64 72 77 2c 20 78 20 2b 20 63 75 72 70 6f 73 2c ;...0..drw_rect(drw,.x.+.curpos,
12c0 20 32 2c 20 32 2c 20 62 68 20 2d 20 34 2c 20 31 2c 20 30 29 3b 00 00 00 02 09 7d 00 00 00 00 00 .2,.2,.bh.-.4,.1,.0);.....}.....
12e0 00 00 11 09 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 7b 00 00 00 1a 09 09 2f 2a 20 64 72 61 ....if.(lines.>.0).{....../*.dra
1300 77 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 35 09 09 66 6f 72 20 28 69 74 65 w.vertical.list.*/...5..for.(ite
1320 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 m.=.curr;.item.!=.next;.item.=.i
1340 74 65 6d 2d 3e 72 69 67 68 74 29 00 00 00 26 09 09 09 64 72 61 77 69 74 65 6d 28 69 74 65 6d 2c tem->right)...&...drawitem(item,
1360 20 78 2c 20 79 20 2b 3d 20 62 68 2c 20 6d 77 20 2d 20 78 29 3b 00 00 00 16 09 7d 20 65 6c 73 65 .x,.y.+=.bh,.mw.-.x);.....}.else
1380 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 1c 09 09 2f 2a 20 64 72 61 77 20 68 6f 72 .if.(matches).{....../*.draw.hor
13a0 69 7a 6f 6e 74 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 0e 09 09 78 20 2b 3d 20 69 6e 70 75 74 77 izontal.list.*/......x.+=.inputw
13c0 3b 00 00 00 11 09 09 77 20 3d 20 54 45 58 54 57 28 22 3c 22 29 3b 00 00 00 13 09 09 69 66 20 28 ;......w.=.TEXTW("<");......if.(
13e0 63 75 72 72 2d 3e 6c 65 66 74 29 20 7b 00 00 00 2a 09 09 09 64 72 77 5f 73 65 74 73 63 68 65 6d curr->left).{...*...drw_setschem
1400 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 31 09 e(drw,.scheme[SchemeNorm]);...1.
1420 09 09 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 77 2c 20 62 68 2c 20 6c 72 70 ..drw_text(drw,.x,.0,.w,.bh,.lrp
1440 61 64 20 2f 20 32 2c 20 22 3c 22 2c 20 30 29 3b 00 00 00 03 09 09 7d 00 00 00 09 09 09 78 20 2b ad./.2,."<",.0);......}......x.+
1460 3d 20 77 3b 00 00 00 35 09 09 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d =.w;...5..for.(item.=.curr;.item
1480 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 00 00 00 .!=.next;.item.=.item->right)...
14a0 4a 09 09 09 78 20 3d 20 64 72 61 77 69 74 65 6d 28 69 74 65 6d 2c 20 78 2c 20 30 2c 20 74 65 78 J...x.=.drawitem(item,.x,.0,.tex
14c0 74 77 5f 63 6c 61 6d 70 28 69 74 65 6d 2d 3e 74 65 78 74 2c 20 6d 77 20 2d 20 78 20 2d 20 54 45 tw_clamp(item->text,.mw.-.x.-.TE
14e0 58 54 57 28 22 3e 22 29 29 29 3b 00 00 00 0d 09 09 69 66 20 28 6e 65 78 74 29 20 7b 00 00 00 12 XTW(">")));......if.(next).{....
1500 09 09 09 77 20 3d 20 54 45 58 54 57 28 22 3e 22 29 3b 00 00 00 2a 09 09 09 64 72 77 5f 73 65 74 ...w.=.TEXTW(">");...*...drw_set
1520 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b scheme(drw,.scheme[SchemeNorm]);
1540 00 00 00 36 09 09 09 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 6d 77 20 2d 20 77 2c 20 30 2c 20 ...6...drw_text(drw,.mw.-.w,.0,.
1560 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 22 3e 22 2c 20 30 29 3b 00 00 00 03 09 09 w,.bh,.lrpad./.2,.">",.0);......
1580 7d 00 00 00 02 09 7d 00 00 00 21 09 64 72 77 5f 6d 61 70 28 64 72 77 2c 20 77 69 6e 2c 20 30 2c }.....}...!.drw_map(drw,.win,.0,
15a0 20 30 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 .0,.mw,.mh);....}........static.
15c0 76 6f 69 64 00 00 00 0f 67 72 61 62 66 6f 63 75 73 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 3c void....grabfocus(void)....{...<
15e0 09 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 20 3d 20 7b 20 2e 74 76 5f 73 65 63 20 .struct.timespec.ts.=.{..tv_sec.
1600 3d 20 30 2c 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 30 30 30 30 20 20 7d 3b 00 00 00 11 =.0,..tv_nsec.=.10000000..};....
1620 09 57 69 6e 64 6f 77 20 66 6f 63 75 73 77 69 6e 3b 00 00 00 12 09 69 6e 74 20 69 2c 20 72 65 76 .Window.focuswin;.....int.i,.rev
1640 65 72 74 77 69 6e 3b 00 00 00 00 00 00 00 1c 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 ertwin;.........for.(i.=.0;.i.<.
1660 31 30 30 3b 20 2b 2b 69 29 20 7b 00 00 00 2d 09 09 58 47 65 74 49 6e 70 75 74 46 6f 63 75 73 28 100;.++i).{...-..XGetInputFocus(
1680 64 70 79 2c 20 26 66 6f 63 75 73 77 69 6e 2c 20 26 72 65 76 65 72 74 77 69 6e 29 3b 00 00 00 16 dpy,.&focuswin,.&revertwin);....
16a0 09 09 69 66 20 28 66 6f 63 75 73 77 69 6e 20 3d 3d 20 77 69 6e 29 00 00 00 0a 09 09 09 72 65 74 ..if.(focuswin.==.win).......ret
16c0 75 72 6e 3b 00 00 00 38 09 09 58 53 65 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 79 2c 20 77 69 urn;...8..XSetInputFocus(dpy,.wi
16e0 6e 2c 20 52 65 76 65 72 74 54 6f 50 61 72 65 6e 74 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b n,.RevertToParent,.CurrentTime);
1700 00 00 00 17 09 09 6e 61 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e 55 4c 4c 29 3b 00 00 00 02 09 ......nanosleep(&ts,.NULL);.....
1720 7d 00 00 00 1a 09 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 61 62 20 66 6f 63 75 73 22 29 3b 00 }.....die("cannot.grab.focus");.
1740 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 12 67 72 61 62 6b ...}........static.void....grabk
1760 65 79 62 6f 61 72 64 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 3b 09 73 74 72 75 63 74 20 74 69 eyboard(void)....{...;.struct.ti
1780 6d 65 73 70 65 63 20 74 73 20 3d 20 7b 20 2e 74 76 5f 73 65 63 20 3d 20 30 2c 20 2e 74 76 5f 6e mespec.ts.=.{..tv_sec.=.0,..tv_n
17a0 73 65 63 20 3d 20 31 30 30 30 30 30 30 20 20 7d 3b 00 00 00 07 09 69 6e 74 20 69 3b 00 00 00 00 sec.=.1000000..};.....int.i;....
17c0 00 00 00 0b 09 69 66 20 28 65 6d 62 65 64 29 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 4e .....if.(embed)......return;...N
17e0 09 2f 2a 20 74 72 79 20 74 6f 20 67 72 61 62 20 6b 65 79 62 6f 61 72 64 2c 20 77 65 20 6d 61 79 ./*.try.to.grab.keyboard,.we.may
1800 20 68 61 76 65 20 74 6f 20 77 61 69 74 20 66 6f 72 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 .have.to.wait.for.another.proces
1820 73 20 74 6f 20 75 6e 67 72 61 62 20 2a 2f 00 00 00 1d 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 s.to.ungrab.*/.....for.(i.=.0;.i
1840 20 3c 20 31 30 30 30 3b 20 69 2b 2b 29 20 7b 00 00 00 45 09 09 69 66 20 28 58 47 72 61 62 4b 65 .<.1000;.i++).{...E..if.(XGrabKe
1860 79 62 6f 61 72 64 28 64 70 79 2c 20 44 65 66 61 75 6c 74 52 6f 6f 74 57 69 6e 64 6f 77 28 64 70 yboard(dpy,.DefaultRootWindow(dp
1880 79 29 2c 20 54 72 75 65 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 00 00 00 3f 09 09 20 20 y),.True,.GrabModeAsync,...?....
18a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 43 ................GrabModeAsync,.C
18c0 75 72 72 65 6e 74 54 69 6d 65 29 20 3d 3d 20 47 72 61 62 53 75 63 63 65 73 73 29 00 00 00 0a 09 urrentTime).==.GrabSuccess).....
18e0 09 09 72 65 74 75 72 6e 3b 00 00 00 17 09 09 6e 61 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e 55 ..return;......nanosleep(&ts,.NU
1900 4c 4c 29 3b 00 00 00 02 09 7d 00 00 00 1d 09 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 61 62 20 LL);.....}.....die("cannot.grab.
1920 6b 65 79 62 6f 61 72 64 22 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 keyboard");....}........static.v
1940 6f 69 64 00 00 00 0b 6d 61 74 63 68 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 1b 09 73 74 61 74 oid....match(void)....{.....stat
1960 69 63 20 63 68 61 72 20 2a 2a 74 6f 6b 76 20 3d 20 4e 55 4c 4c 3b 00 00 00 15 09 73 74 61 74 69 ic.char.**tokv.=.NULL;.....stati
1980 63 20 69 6e 74 20 74 6f 6b 6e 20 3d 20 30 3b 00 00 00 00 00 00 00 1b 09 63 68 61 72 20 62 75 66 c.int.tokn.=.0;.........char.buf
19a0 5b 73 69 7a 65 6f 66 20 74 65 78 74 5d 2c 20 2a 73 3b 00 00 00 11 09 69 6e 74 20 69 2c 20 74 6f [sizeof.text],.*s;.....int.i,.to
19c0 6b 63 20 3d 20 30 3b 00 00 00 16 09 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 74 65 78 74 73 69 7a 65 kc.=.0;.....size_t.len,.textsize
19e0 3b 00 00 00 3f 09 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 2a 6c 70 72 65 66 69 ;...?.struct.item.*item,.*lprefi
1a00 78 2c 20 2a 6c 73 75 62 73 74 72 2c 20 2a 70 72 65 66 69 78 65 6e 64 2c 20 2a 73 75 62 73 74 72 x,.*lsubstr,.*prefixend,.*substr
1a20 65 6e 64 3b 00 00 00 00 00 00 00 13 09 73 74 72 63 70 79 28 62 75 66 2c 20 74 65 78 74 29 3b 00 end;.........strcpy(buf,.text);.
1a40 00 00 41 09 2f 2a 20 73 65 70 61 72 61 74 65 20 69 6e 70 75 74 20 74 65 78 74 20 69 6e 74 6f 20 ..A./*.separate.input.text.into.
1a60 74 6f 6b 65 6e 73 20 74 6f 20 62 65 20 6d 61 74 63 68 65 64 20 69 6e 64 69 76 69 64 75 61 6c 6c tokens.to.be.matched.individuall
1a80 79 20 2a 2f 00 00 00 49 09 66 6f 72 20 28 73 20 3d 20 73 74 72 74 6f 6b 28 62 75 66 2c 20 22 20 y.*/...I.for.(s.=.strtok(buf,.".
1aa0 22 29 3b 20 73 3b 20 74 6f 6b 76 5b 74 6f 6b 63 20 2d 20 31 5d 20 3d 20 73 2c 20 73 20 3d 20 73 ");.s;.tokv[tokc.-.1].=.s,.s.=.s
1ac0 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 22 29 29 00 00 00 46 09 09 69 66 20 28 2b 2b 74 6f 6b trtok(NULL,."."))...F..if.(++tok
1ae0 63 20 3e 20 74 6f 6b 6e 20 26 26 20 21 28 74 6f 6b 76 20 3d 20 72 65 61 6c 6c 6f 63 28 74 6f 6b c.>.tokn.&&.!(tokv.=.realloc(tok
1b00 76 2c 20 2b 2b 74 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b 76 29 29 29 00 00 00 39 09 v,.++tokn.*.sizeof.*tokv)))...9.
1b20 09 09 64 69 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c 6c 6f 63 20 25 7a 75 20 62 79 74 65 73 3a ..die("cannot.realloc.%zu.bytes:
1b40 22 2c 20 74 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b 76 29 3b 00 00 00 22 09 6c 65 6e ",.tokn.*.sizeof.*tokv);...".len
1b60 20 3d 20 74 6f 6b 63 20 3f 20 73 74 72 6c 65 6e 28 74 6f 6b 76 5b 30 5d 29 20 3a 20 30 3b 00 00 .=.tokc.?.strlen(tokv[0]).:.0;..
1b80 00 00 00 00 00 47 09 6d 61 74 63 68 65 73 20 3d 20 6c 70 72 65 66 69 78 20 3d 20 6c 73 75 62 73 .....G.matches.=.lprefix.=.lsubs
1ba0 74 72 20 3d 20 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 65 66 69 78 65 6e 64 20 3d 20 73 75 62 73 tr.=.matchend.=.prefixend.=.subs
1bc0 74 72 65 6e 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 1d 09 74 65 78 74 73 69 7a 65 20 3d 20 73 74 72 trend.=.NULL;.....textsize.=.str
1be0 6c 65 6e 28 74 65 78 74 29 20 2b 20 31 3b 00 00 00 31 09 66 6f 72 20 28 69 74 65 6d 20 3d 20 69 len(text).+.1;...1.for.(item.=.i
1c00 74 65 6d 73 3b 20 69 74 65 6d 20 26 26 20 69 74 65 6d 2d 3e 74 65 78 74 3b 20 69 74 65 6d 2b 2b tems;.item.&&.item->text;.item++
1c20 29 20 7b 00 00 00 1c 09 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 74 6f 6b 63 3b 20 69 ).{......for.(i.=.0;.i.<.tokc;.i
1c40 2b 2b 29 00 00 00 25 09 09 09 69 66 20 28 21 66 73 74 72 73 74 72 28 69 74 65 6d 2d 3e 74 65 78 ++)...%...if.(!fstrstr(item->tex
1c60 74 2c 20 74 6f 6b 76 5b 69 5d 29 29 00 00 00 0a 09 09 09 09 62 72 65 61 6b 3b 00 00 00 2b 09 09 t,.tokv[i]))........break;...+..
1c80 69 66 20 28 69 20 21 3d 20 74 6f 6b 63 29 20 2f 2a 20 6e 6f 74 20 61 6c 6c 20 74 6f 6b 65 6e 73 if.(i.!=.tokc)./*.not.all.tokens
1ca0 20 6d 61 74 63 68 20 2a 2f 00 00 00 0c 09 09 09 63 6f 6e 74 69 6e 75 65 3b 00 00 00 3e 09 09 2f .match.*/.......continue;...>../
1cc0 2a 20 65 78 61 63 74 20 6d 61 74 63 68 65 73 20 67 6f 20 66 69 72 73 74 2c 20 74 68 65 6e 20 70 *.exact.matches.go.first,.then.p
1ce0 72 65 66 69 78 65 73 2c 20 74 68 65 6e 20 73 75 62 73 74 72 69 6e 67 73 20 2a 2f 00 00 00 35 09 refixes,.then.substrings.*/...5.
1d00 09 69 66 20 28 21 74 6f 6b 63 20 7c 7c 20 21 66 73 74 72 6e 63 6d 70 28 74 65 78 74 2c 20 69 74 .if.(!tokc.||.!fstrncmp(text,.it
1d20 65 6d 2d 3e 74 65 78 74 2c 20 74 65 78 74 73 69 7a 65 29 29 00 00 00 29 09 09 09 61 70 70 65 6e em->text,.textsize))...)...appen
1d40 64 69 74 65 6d 28 69 74 65 6d 2c 20 26 6d 61 74 63 68 65 73 2c 20 26 6d 61 74 63 68 65 6e 64 29 ditem(item,.&matches,.&matchend)
1d60 3b 00 00 00 2f 09 09 65 6c 73 65 20 69 66 20 28 21 66 73 74 72 6e 63 6d 70 28 74 6f 6b 76 5b 30 ;.../..else.if.(!fstrncmp(tokv[0
1d80 5d 2c 20 69 74 65 6d 2d 3e 74 65 78 74 2c 20 6c 65 6e 29 29 00 00 00 2a 09 09 09 61 70 70 65 6e ],.item->text,.len))...*...appen
1da0 64 69 74 65 6d 28 69 74 65 6d 2c 20 26 6c 70 72 65 66 69 78 2c 20 26 70 72 65 66 69 78 65 6e 64 ditem(item,.&lprefix,.&prefixend
1dc0 29 3b 00 00 00 06 09 09 65 6c 73 65 00 00 00 2a 09 09 09 61 70 70 65 6e 64 69 74 65 6d 28 69 74 );......else...*...appenditem(it
1de0 65 6d 2c 20 26 6c 73 75 62 73 74 72 2c 20 26 73 75 62 73 74 72 65 6e 64 29 3b 00 00 00 02 09 7d em,.&lsubstr,.&substrend);.....}
1e00 00 00 00 0f 09 69 66 20 28 6c 70 72 65 66 69 78 29 20 7b 00 00 00 10 09 09 69 66 20 28 6d 61 74 .....if.(lprefix).{......if.(mat
1e20 63 68 65 73 29 20 7b 00 00 00 1d 09 09 09 6d 61 74 63 68 65 6e 64 2d 3e 72 69 67 68 74 20 3d 20 ches).{.......matchend->right.=.
1e40 6c 70 72 65 66 69 78 3b 00 00 00 1c 09 09 09 6c 70 72 65 66 69 78 2d 3e 6c 65 66 74 20 3d 20 6d lprefix;.......lprefix->left.=.m
1e60 61 74 63 68 65 6e 64 3b 00 00 00 08 09 09 7d 20 65 6c 73 65 00 00 00 15 09 09 09 6d 61 74 63 68 atchend;......}.else.......match
1e80 65 73 20 3d 20 6c 70 72 65 66 69 78 3b 00 00 00 17 09 09 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 es.=.lprefix;......matchend.=.pr
1ea0 65 66 69 78 65 6e 64 3b 00 00 00 02 09 7d 00 00 00 0f 09 69 66 20 28 6c 73 75 62 73 74 72 29 20 efixend;.....}.....if.(lsubstr).
1ec0 7b 00 00 00 10 09 09 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 1d 09 09 09 6d 61 74 63 {......if.(matches).{.......matc
1ee0 68 65 6e 64 2d 3e 72 69 67 68 74 20 3d 20 6c 73 75 62 73 74 72 3b 00 00 00 1c 09 09 09 6c 73 75 hend->right.=.lsubstr;.......lsu
1f00 62 73 74 72 2d 3e 6c 65 66 74 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 08 09 09 7d 20 65 6c bstr->left.=.matchend;......}.el
1f20 73 65 00 00 00 15 09 09 09 6d 61 74 63 68 65 73 20 3d 20 6c 73 75 62 73 74 72 3b 00 00 00 17 09 se.......matches.=.lsubstr;.....
1f40 09 6d 61 74 63 68 65 6e 64 20 3d 20 73 75 62 73 74 72 65 6e 64 3b 00 00 00 02 09 7d 00 00 00 16 .matchend.=.substrend;.....}....
1f60 09 63 75 72 72 20 3d 20 73 65 6c 20 3d 20 6d 61 74 63 68 65 73 3b 00 00 00 0f 09 63 61 6c 63 6f .curr.=.sel.=.matches;.....calco
1f80 66 66 73 65 74 73 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 ffsets();....}........static.voi
1fa0 64 00 00 00 22 69 6e 73 65 72 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 2c 20 73 73 69 d..."insert(const.char.*str,.ssi
1fc0 7a 65 5f 74 20 6e 29 00 00 00 01 7b 00 00 00 28 09 69 66 20 28 73 74 72 6c 65 6e 28 74 65 78 74 ze_t.n)....{...(.if.(strlen(text
1fe0 29 20 2b 20 6e 20 3e 20 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 31 29 00 00 00 09 09 09 72 65 ).+.n.>.sizeof.text.-.1)......re
2000 74 75 72 6e 3b 00 00 00 4c 09 2f 2a 20 6d 6f 76 65 20 65 78 69 73 74 69 6e 67 20 74 65 78 74 20 turn;...L./*.move.existing.text.
2020 6f 75 74 20 6f 66 20 74 68 65 20 77 61 79 2c 20 69 6e 73 65 72 74 20 6e 65 77 20 74 65 78 74 2c out.of.the.way,.insert.new.text,
2040 20 61 6e 64 20 75 70 64 61 74 65 20 63 75 72 73 6f 72 20 2a 2f 00 00 00 4d 09 6d 65 6d 6d 6f 76 .and.update.cursor.*/...M.memmov
2060 65 28 26 74 65 78 74 5b 63 75 72 73 6f 72 20 2b 20 6e 5d 2c 20 26 74 65 78 74 5b 63 75 72 73 6f e(&text[cursor.+.n],.&text[curso
2080 72 5d 2c 20 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 63 75 72 73 6f 72 20 2d 20 4d 41 58 28 6e r],.sizeof.text.-.cursor.-.MAX(n
20a0 2c 20 30 29 29 3b 00 00 00 0b 09 69 66 20 28 6e 20 3e 20 30 29 00 00 00 20 09 09 6d 65 6d 63 70 ,.0));.....if.(n.>.0)......memcp
20c0 79 28 26 74 65 78 74 5b 63 75 72 73 6f 72 5d 2c 20 73 74 72 2c 20 6e 29 3b 00 00 00 0d 09 63 75 y(&text[cursor],.str,.n);.....cu
20e0 72 73 6f 72 20 2b 3d 20 6e 3b 00 00 00 09 09 6d 61 74 63 68 28 29 3b 00 00 00 01 7d 00 00 00 00 rsor.+=.n;.....match();....}....
2100 00 00 00 0d 73 74 61 74 69 63 20 73 69 7a 65 5f 74 00 00 00 11 6e 65 78 74 72 75 6e 65 28 69 6e ....static.size_t....nextrune(in
2120 74 20 69 6e 63 29 00 00 00 01 7b 00 00 00 0b 09 73 73 69 7a 65 5f 74 20 6e 3b 00 00 00 00 00 00 t.inc)....{.....ssize_t.n;......
2140 00 4a 09 2f 2a 20 72 65 74 75 72 6e 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 6e 65 78 74 20 75 74 .J./*.return.location.of.next.ut
2160 66 38 20 72 75 6e 65 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 64 69 72 65 63 74 69 6f 6e 20 28 f8.rune.in.the.given.direction.(
2180 2b 31 20 6f 72 20 2d 31 29 20 2a 2f 00 00 00 4b 09 66 6f 72 20 28 6e 20 3d 20 63 75 72 73 6f 72 +1.or.-1).*/...K.for.(n.=.cursor
21a0 20 2b 20 69 6e 63 3b 20 6e 20 2b 20 69 6e 63 20 3e 3d 20 30 20 26 26 20 28 74 65 78 74 5b 6e 5d .+.inc;.n.+.inc.>=.0.&&.(text[n]
21c0 20 26 20 30 78 63 30 29 20 3d 3d 20 30 78 38 30 3b 20 6e 20 2b 3d 20 69 6e 63 29 00 00 00 03 09 .&.0xc0).==.0x80;.n.+=.inc).....
21e0 09 3b 00 00 00 0a 09 72 65 74 75 72 6e 20 6e 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 .;.....return.n;....}........sta
2200 74 69 63 20 76 6f 69 64 00 00 00 15 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 69 6e 74 20 64 69 72 tic.void....movewordedge(int.dir
2220 29 00 00 00 01 7b 00 00 00 39 09 69 66 20 28 64 69 72 20 3c 20 30 29 20 7b 20 2f 2a 20 6d 6f 76 )....{...9.if.(dir.<.0).{./*.mov
2240 65 20 63 75 72 73 6f 72 20 74 6f 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 77 6f 72 e.cursor.to.the.start.of.the.wor
2260 64 2a 2f 00 00 00 42 09 09 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 73 74 d*/...B..while.(cursor.>.0.&&.st
2280 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 rchr(worddelimiters,.text[nextru
22a0 6e 65 28 2d 31 29 5d 29 29 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e ne(-1)])).......cursor.=.nextrun
22c0 65 28 2d 31 29 3b 00 00 00 43 09 09 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 e(-1);...C..while.(cursor.>.0.&&
22e0 20 21 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 .!strchr(worddelimiters,.text[ne
2300 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 3d 20 6e 65 78 xtrune(-1)])).......cursor.=.nex
2320 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 32 09 7d 20 65 6c 73 65 20 7b 20 2f 2a 20 6d 6f 76 65 20 trune(-1);...2.}.else.{./*.move.
2340 63 75 72 73 6f 72 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 77 6f 72 64 20 2a 2f cursor.to.the.end.of.the.word.*/
2360 00 00 00 3e 09 09 77 68 69 6c 65 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 73 74 72 ...>..while.(text[cursor].&&.str
2380 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 63 75 72 73 6f 72 5d chr(worddelimiters,.text[cursor]
23a0 29 29 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 )).......cursor.=.nextrune(+1);.
23c0 00 00 3f 09 09 77 68 69 6c 65 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 21 73 74 72 ..?..while.(text[cursor].&&.!str
23e0 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 63 75 72 73 6f 72 5d chr(worddelimiters,.text[cursor]
2400 29 29 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 )).......cursor.=.nextrune(+1);.
2420 00 00 02 09 7d 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 ....}....}........static.void...
2440 17 6b 65 79 70 72 65 73 73 28 58 4b 65 79 45 76 65 6e 74 20 2a 65 76 29 00 00 00 01 7b 00 00 00 .keypress(XKeyEvent.*ev)....{...
2460 0e 09 63 68 61 72 20 62 75 66 5b 36 34 5d 3b 00 00 00 09 09 69 6e 74 20 6c 65 6e 3b 00 00 00 18 ..char.buf[64];.....int.len;....
2480 09 4b 65 79 53 79 6d 20 6b 73 79 6d 20 3d 20 4e 6f 53 79 6d 62 6f 6c 3b 00 00 00 0f 09 53 74 61 .KeySym.ksym.=.NoSymbol;.....Sta
24a0 74 75 73 20 73 74 61 74 75 73 3b 00 00 00 00 00 00 00 41 09 6c 65 6e 20 3d 20 58 6d 62 4c 6f 6f tus.status;.......A.len.=.XmbLoo
24c0 6b 75 70 53 74 72 69 6e 67 28 78 69 63 2c 20 65 76 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 20 62 kupString(xic,.ev,.buf,.sizeof.b
24e0 75 66 2c 20 26 6b 73 79 6d 2c 20 26 73 74 61 74 75 73 29 3b 00 00 00 12 09 73 77 69 74 63 68 20 uf,.&ksym,.&status);.....switch.
2500 28 73 74 61 74 75 73 29 20 7b 00 00 00 2c 09 64 65 66 61 75 6c 74 3a 20 2f 2a 20 58 4c 6f 6f 6b (status).{...,.default:./*.XLook
2520 75 70 4e 6f 6e 65 2c 20 58 42 75 66 66 65 72 4f 76 65 72 66 6c 6f 77 20 2a 2f 00 00 00 09 09 09 upNone,.XBufferOverflow.*/......
2540 72 65 74 75 72 6e 3b 00 00 00 3b 09 63 61 73 65 20 58 4c 6f 6f 6b 75 70 43 68 61 72 73 3a 20 2f return;...;.case.XLookupChars:./
2560 2a 20 63 6f 6d 70 6f 73 65 64 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 69 6e 70 75 74 20 6d 65 74 *.composed.string.from.input.met
2580 68 6f 64 20 2a 2f 00 00 00 0e 09 09 67 6f 74 6f 20 69 6e 73 65 72 74 3b 00 00 00 14 09 63 61 73 hod.*/......goto.insert;.....cas
25a0 65 20 58 4c 6f 6f 6b 75 70 4b 65 79 53 79 6d 3a 00 00 00 47 09 63 61 73 65 20 58 4c 6f 6f 6b 75 e.XLookupKeySym:...G.case.XLooku
25c0 70 42 6f 74 68 3a 20 2f 2a 20 61 20 4b 65 79 53 79 6d 20 61 6e 64 20 61 20 73 74 72 69 6e 67 20 pBoth:./*.a.KeySym.and.a.string.
25e0 61 72 65 20 72 65 74 75 72 6e 65 64 3a 20 75 73 65 20 6b 65 79 73 79 6d 20 2a 2f 00 00 00 08 09 are.returned:.use.keysym.*/.....
2600 09 62 72 65 61 6b 3b 00 00 00 02 09 7d 00 00 00 00 00 00 00 1f 09 69 66 20 28 65 76 2d 3e 73 74 .break;.....}.........if.(ev->st
2620 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 20 7b 00 00 00 10 09 09 73 77 69 74 63 68 ate.&.ControlMask).{......switch
2640 28 6b 73 79 6d 29 20 7b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 61 3a 20 6b 73 79 6d 20 3d 20 (ksym).{...(..case.XK_a:.ksym.=.
2660 58 4b 5f 48 6f 6d 65 3b 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 XK_Home;......break;...(..case.X
2680 4b 5f 62 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 4c 65 66 74 3b 20 20 20 20 20 20 62 72 65 61 6b 3b K_b:.ksym.=.XK_Left;......break;
26a0 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 63 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 61 70 ...(..case.XK_c:.ksym.=.XK_Escap
26c0 65 3b 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 64 3a 20 6b 73 79 e;....break;...(..case.XK_d:.ksy
26e0 6d 20 3d 20 58 4b 5f 44 65 6c 65 74 65 3b 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 m.=.XK_Delete;....break;...(..ca
2700 73 65 20 58 4b 5f 65 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 6e 64 3b 20 20 20 20 20 20 20 62 72 se.XK_e:.ksym.=.XK_End;.......br
2720 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 66 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 52 eak;...(..case.XK_f:.ksym.=.XK_R
2740 69 67 68 74 3b 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 67 3a ight;.....break;...(..case.XK_g:
2760 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 61 70 65 3b 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 .ksym.=.XK_Escape;....break;...(
2780 09 09 63 61 73 65 20 58 4b 5f 68 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 42 61 63 6b 53 70 61 63 65 ..case.XK_h:.ksym.=.XK_BackSpace
27a0 3b 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 69 3a 20 6b 73 79 6d 20 3d 20 ;.break;...(..case.XK_i:.ksym.=.
27c0 58 4b 5f 54 61 62 3b 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 1e 09 09 63 61 73 65 20 58 XK_Tab;.......break;......case.X
27e0 4b 5f 6a 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 1e 09 09 63 61 73 65 K_j:./*.fallthrough.*/......case
2800 20 58 4b 5f 4a 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 1e 09 09 63 61 .XK_J:./*.fallthrough.*/......ca
2820 73 65 20 58 4b 5f 6d 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 40 09 09 se.XK_m:./*.fallthrough.*/...@..
2840 63 61 73 65 20 58 4b 5f 4d 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 52 65 74 75 72 6e 3b 20 65 76 2d case.XK_M:.ksym.=.XK_Return;.ev-
2860 3e 73 74 61 74 65 20 26 3d 20 7e 43 6f 6e 74 72 6f 6c 4d 61 73 6b 3b 20 62 72 65 61 6b 3b 00 00 >state.&=.~ControlMask;.break;..
2880 00 28 09 09 63 61 73 65 20 58 4b 5f 6e 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 44 6f 77 6e 3b 20 20 .(..case.XK_n:.ksym.=.XK_Down;..
28a0 20 20 20 20 62 72 65 61 6b 3b 00 00 00 28 09 09 63 61 73 65 20 58 4b 5f 70 3a 20 6b 73 79 6d 20 ....break;...(..case.XK_p:.ksym.
28c0 3d 20 58 4b 5f 55 70 3b 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 00 00 00 00 1f 09 09 =.XK_Up;........break;..........
28e0 63 61 73 65 20 58 4b 5f 6b 3a 20 2f 2a 20 64 65 6c 65 74 65 20 72 69 67 68 74 20 2a 2f 00 00 00 case.XK_k:./*.delete.right.*/...
2900 17 09 09 09 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0b 09 09 09 6d ....text[cursor].=.'\0';.......m
2920 61 74 63 68 28 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 1e 09 09 63 61 73 65 20 58 atch();.......break;......case.X
2940 4b 5f 75 3a 20 2f 2a 20 64 65 6c 65 74 65 20 6c 65 66 74 20 2a 2f 00 00 00 1c 09 09 09 69 6e 73 K_u:./*.delete.left.*/.......ins
2960 65 72 74 28 4e 55 4c 4c 2c 20 30 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 09 09 09 09 62 72 65 ert(NULL,.0.-.cursor);.......bre
2980 61 6b 3b 00 00 00 1e 09 09 63 61 73 65 20 58 4b 5f 77 3a 20 2f 2a 20 64 65 6c 65 74 65 20 77 6f ak;......case.XK_w:./*.delete.wo
29a0 72 64 20 2a 2f 00 00 00 43 09 09 09 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 rd.*/...C...while.(cursor.>.0.&&
29c0 20 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 .strchr(worddelimiters,.text[nex
29e0 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 28 09 09 09 09 69 6e 73 65 72 74 28 4e 55 4c 4c 2c trune(-1)]))...(....insert(NULL,
2a00 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 44 09 09 09 77 .nextrune(-1).-.cursor);...D...w
2a20 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 21 73 74 72 63 68 72 28 77 6f 72 64 hile.(cursor.>.0.&&.!strchr(word
2a40 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 delimiters,.text[nextrune(-1)]))
2a60 00 00 00 28 09 09 09 09 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 ...(....insert(NULL,.nextrune(-1
2a80 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 22 09 09 63 ).-.cursor);.......break;..."..c
2aa0 61 73 65 20 58 4b 5f 79 3a 20 2f 2a 20 70 61 73 74 65 20 73 65 6c 65 63 74 69 6f 6e 20 2a 2f 00 ase.XK_y:./*.paste.selection.*/.
2ac0 00 00 0c 09 09 63 61 73 65 20 58 4b 5f 59 3a 00 00 00 46 09 09 09 58 43 6f 6e 76 65 72 74 53 65 .....case.XK_Y:...F...XConvertSe
2ae0 6c 65 63 74 69 6f 6e 28 64 70 79 2c 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 53 68 69 66 74 4d lection(dpy,.(ev->state.&.ShiftM
2b00 61 73 6b 29 20 3f 20 63 6c 69 70 20 3a 20 58 41 5f 50 52 49 4d 41 52 59 2c 00 00 00 33 09 09 09 ask).?.clip.:.XA_PRIMARY,...3...
2b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 66 38 2c 20 75 74 66 38 2c 20 77 69 ..................utf8,.utf8,.wi
2b40 6e 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 n,.CurrentTime);.......return;..
2b60 00 0f 09 09 63 61 73 65 20 58 4b 5f 4c 65 66 74 3a 00 00 00 12 09 09 63 61 73 65 20 58 4b 5f 4b ....case.XK_Left:......case.XK_K
2b80 50 5f 4c 65 66 74 3a 00 00 00 14 09 09 09 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2d 31 29 3b 00 P_Left:.......movewordedge(-1);.
2ba0 00 00 0d 09 09 09 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 10 09 09 63 61 73 65 20 58 4b 5f 52 69 ......goto.draw;......case.XK_Ri
2bc0 67 68 74 3a 00 00 00 13 09 09 63 61 73 65 20 58 4b 5f 4b 50 5f 52 69 67 68 74 3a 00 00 00 14 09 ght:......case.XK_KP_Right:.....
2be0 09 09 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2b 31 29 3b 00 00 00 0d 09 09 09 67 6f 74 6f 20 64 ..movewordedge(+1);.......goto.d
2c00 72 61 77 3b 00 00 00 11 09 09 63 61 73 65 20 58 4b 5f 52 65 74 75 72 6e 3a 00 00 00 13 09 09 63 raw;......case.XK_Return:......c
2c20 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 72 3a 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 ase.XK_KP_Enter:.......break;...
2c40 16 09 09 63 61 73 65 20 58 4b 5f 62 72 61 63 6b 65 74 6c 65 66 74 3a 00 00 00 0d 09 09 09 63 6c ...case.XK_bracketleft:.......cl
2c60 65 61 6e 75 70 28 29 3b 00 00 00 0b 09 09 09 65 78 69 74 28 31 29 3b 00 00 00 0a 09 09 64 65 66 eanup();.......exit(1);......def
2c80 61 75 6c 74 3a 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 00 03 09 09 7d 00 00 00 23 09 7d ault:.......return;......}...#.}
2ca0 20 65 6c 73 65 20 69 66 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 4d 6f 64 31 4d 61 73 6b 29 20 .else.if.(ev->state.&.Mod1Mask).
2cc0 7b 00 00 00 10 09 09 73 77 69 74 63 68 28 6b 73 79 6d 29 20 7b 00 00 00 0c 09 09 63 61 73 65 20 {......switch(ksym).{......case.
2ce0 58 4b 5f 62 3a 00 00 00 14 09 09 09 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2d 31 29 3b 00 00 00 XK_b:.......movewordedge(-1);...
2d00 0d 09 09 09 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 0c 09 09 63 61 73 65 20 58 4b 5f 66 3a 00 00 ....goto.draw;......case.XK_f:..
2d20 00 14 09 09 09 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2b 31 29 3b 00 00 00 0d 09 09 09 67 6f 74 .....movewordedge(+1);.......got
2d40 6f 20 64 72 61 77 3b 00 00 00 24 09 09 63 61 73 65 20 58 4b 5f 67 3a 20 6b 73 79 6d 20 3d 20 58 o.draw;...$..case.XK_g:.ksym.=.X
2d60 4b 5f 48 6f 6d 65 3b 20 20 62 72 65 61 6b 3b 00 00 00 24 09 09 63 61 73 65 20 58 4b 5f 47 3a 20 K_Home;..break;...$..case.XK_G:.
2d80 6b 73 79 6d 20 3d 20 58 4b 5f 45 6e 64 3b 20 20 20 62 72 65 61 6b 3b 00 00 00 24 09 09 63 61 73 ksym.=.XK_End;...break;...$..cas
2da0 65 20 58 4b 5f 68 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 55 70 3b 20 20 20 20 62 72 65 61 6b 3b 00 e.XK_h:.ksym.=.XK_Up;....break;.
2dc0 00 00 24 09 09 63 61 73 65 20 58 4b 5f 6a 3a 20 6b 73 79 6d 20 3d 20 58 4b 5f 4e 65 78 74 3b 20 ..$..case.XK_j:.ksym.=.XK_Next;.
2de0 20 62 72 65 61 6b 3b 00 00 00 24 09 09 63 61 73 65 20 58 4b 5f 6b 3a 20 6b 73 79 6d 20 3d 20 58 .break;...$..case.XK_k:.ksym.=.X
2e00 4b 5f 50 72 69 6f 72 3b 20 62 72 65 61 6b 3b 00 00 00 24 09 09 63 61 73 65 20 58 4b 5f 6c 3a 20 K_Prior;.break;...$..case.XK_l:.
2e20 6b 73 79 6d 20 3d 20 58 4b 5f 44 6f 77 6e 3b 20 20 62 72 65 61 6b 3b 00 00 00 0a 09 09 64 65 66 ksym.=.XK_Down;..break;......def
2e40 61 75 6c 74 3a 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 00 03 09 09 7d 00 00 00 02 09 7d ault:.......return;......}.....}
2e60 00 00 00 00 00 00 00 0f 09 73 77 69 74 63 68 28 6b 73 79 6d 29 20 7b 00 00 00 09 09 64 65 66 61 .........switch(ksym).{.....defa
2e80 75 6c 74 3a 00 00 00 07 69 6e 73 65 72 74 3a 00 00 00 24 09 09 69 66 20 28 21 69 73 63 6e 74 72 ult:....insert:...$..if.(!iscntr
2ea0 6c 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 2a 62 75 66 29 29 00 00 00 14 09 09 09 69 6e l((unsigned.char)*buf)).......in
2ec0 73 65 72 74 28 62 75 66 2c 20 6c 65 6e 29 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 10 09 sert(buf,.len);......break;.....
2ee0 63 61 73 65 20 58 4b 5f 44 65 6c 65 74 65 3a 00 00 00 13 09 63 61 73 65 20 58 4b 5f 4b 50 5f 44 case.XK_Delete:.....case.XK_KP_D
2f00 65 6c 65 74 65 3a 00 00 00 1b 09 09 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 3d 20 elete:......if.(text[cursor].==.
2f20 27 5c 30 27 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 00 18 09 09 63 75 72 73 6f 72 20 '\0').......return;......cursor.
2f40 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 00 00 13 09 09 2f 2a 20 66 61 6c 6c 74 68 72 6f =.nextrune(+1);....../*.fallthro
2f60 75 67 68 20 2a 2f 00 00 00 13 09 63 61 73 65 20 58 4b 5f 42 61 63 6b 53 70 61 63 65 3a 00 00 00 ugh.*/.....case.XK_BackSpace:...
2f80 12 09 09 69 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 30 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e ...if.(cursor.==.0).......return
2fa0 3b 00 00 00 26 09 09 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 ;...&..insert(NULL,.nextrune(-1)
2fc0 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 0d 09 63 61 73 65 .-.cursor);......break;.....case
2fe0 20 58 4b 5f 45 6e 64 3a 00 00 00 10 09 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 64 3a 00 00 00 1d .XK_End:.....case.XK_KP_End:....
3000 09 09 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 21 3d 20 27 5c 30 27 29 20 7b 00 00 00 ..if.(text[cursor].!=.'\0').{...
3020 19 09 09 09 63 75 72 73 6f 72 20 3d 20 73 74 72 6c 65 6e 28 74 65 78 74 29 3b 00 00 00 09 09 09 ....cursor.=.strlen(text);......
3040 09 62 72 65 61 6b 3b 00 00 00 03 09 09 7d 00 00 00 0d 09 09 69 66 20 28 6e 65 78 74 29 20 7b 00 .break;......}......if.(next).{.
3060 00 00 3a 09 09 09 2f 2a 20 6a 75 6d 70 20 74 6f 20 65 6e 64 20 6f 66 20 6c 69 73 74 20 61 6e 64 ..:.../*.jump.to.end.of.list.and
3080 20 70 6f 73 69 74 69 6f 6e 20 69 74 65 6d 73 20 69 6e 20 72 65 76 65 72 73 65 20 2a 2f 00 00 00 .position.items.in.reverse.*/...
30a0 13 09 09 09 63 75 72 72 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 11 09 09 09 63 61 6c 63 6f ....curr.=.matchend;.......calco
30c0 66 66 73 65 74 73 28 29 3b 00 00 00 0f 09 09 09 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 11 ffsets();.......curr.=.prev;....
30e0 09 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 27 09 09 09 77 68 69 6c 65 20 28 6e ...calcoffsets();...'...while.(n
3100 65 78 74 20 26 26 20 28 63 75 72 72 20 3d 20 63 75 72 72 2d 3e 72 69 67 68 74 29 29 00 00 00 12 ext.&&.(curr.=.curr->right))....
3120 09 09 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 03 09 09 7d 00 00 00 11 09 09 73 ....calcoffsets();......}......s
3140 65 6c 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 10 09 63 el.=.matchend;......break;.....c
3160 61 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 00 00 00 0c 09 09 63 6c 65 61 6e 75 70 28 29 3b 00 00 ase.XK_Escape:......cleanup();..
3180 00 0a 09 09 65 78 69 74 28 31 29 3b 00 00 00 0e 09 63 61 73 65 20 58 4b 5f 48 6f 6d 65 3a 00 00 ....exit(1);.....case.XK_Home:..
31a0 00 11 09 63 61 73 65 20 58 4b 5f 4b 50 5f 48 6f 6d 65 3a 00 00 00 17 09 09 69 66 20 28 73 65 6c ...case.XK_KP_Home:......if.(sel
31c0 20 3d 3d 20 6d 61 74 63 68 65 73 29 20 7b 00 00 00 0e 09 09 09 63 75 72 73 6f 72 20 3d 20 30 3b .==.matches).{.......cursor.=.0;
31e0 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 03 09 09 7d 00 00 00 17 09 09 73 65 6c 20 3d 20 .......break;......}......sel.=.
3200 63 75 72 72 20 3d 20 6d 61 74 63 68 65 73 3b 00 00 00 10 09 09 63 61 6c 63 6f 66 66 73 65 74 73 curr.=.matches;......calcoffsets
3220 28 29 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 0e 09 63 61 73 65 20 58 4b 5f 4c 65 66 74 ();......break;.....case.XK_Left
3240 3a 00 00 00 11 09 63 61 73 65 20 58 4b 5f 4b 50 5f 4c 65 66 74 3a 00 00 00 38 09 09 69 66 20 28 :.....case.XK_KP_Left:...8..if.(
3260 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 28 21 73 65 6c 20 7c 7c 20 21 73 65 6c 2d 3e 6c 65 66 cursor.>.0.&&.(!sel.||.!sel->lef
3280 74 20 7c 7c 20 6c 69 6e 65 73 20 3e 20 30 29 29 20 7b 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 t.||.lines.>.0)).{.......cursor.
32a0 3d 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 03 =.nextrune(-1);.......break;....
32c0 09 09 7d 00 00 00 10 09 09 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 0a 09 09 09 72 65 ..}......if.(lines.>.0).......re
32e0 74 75 72 6e 3b 00 00 00 13 09 09 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 0c turn;....../*.fallthrough.*/....
3300 09 63 61 73 65 20 58 4b 5f 55 70 3a 00 00 00 0f 09 63 61 73 65 20 58 4b 5f 4b 50 5f 55 70 3a 00 .case.XK_Up:.....case.XK_KP_Up:.
3320 00 00 3d 09 09 69 66 20 28 73 65 6c 20 26 26 20 73 65 6c 2d 3e 6c 65 66 74 20 26 26 20 28 73 65 ..=..if.(sel.&&.sel->left.&&.(se
3340 6c 20 3d 20 73 65 6c 2d 3e 6c 65 66 74 29 2d 3e 72 69 67 68 74 20 3d 3d 20 63 75 72 72 29 20 7b l.=.sel->left)->right.==.curr).{
3360 00 00 00 0f 09 09 09 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 11 09 09 09 63 61 6c 63 6f 66 .......curr.=.prev;.......calcof
3380 66 73 65 74 73 28 29 3b 00 00 00 03 09 09 7d 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 0e 09 fsets();......}......break;.....
33a0 63 61 73 65 20 58 4b 5f 4e 65 78 74 3a 00 00 00 11 09 63 61 73 65 20 58 4b 5f 4b 50 5f 4e 65 78 case.XK_Next:.....case.XK_KP_Nex
33c0 74 3a 00 00 00 0c 09 09 69 66 20 28 21 6e 65 78 74 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b t:......if.(!next).......return;
33e0 00 00 00 14 09 09 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 10 09 09 63 61 ......sel.=.curr.=.next;......ca
3400 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 0f 09 63 61 73 lcoffsets();......break;.....cas
3420 65 20 58 4b 5f 50 72 69 6f 72 3a 00 00 00 12 09 63 61 73 65 20 58 4b 5f 4b 50 5f 50 72 69 6f 72 e.XK_Prior:.....case.XK_KP_Prior
3440 3a 00 00 00 0c 09 09 69 66 20 28 21 70 72 65 76 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 :......if.(!prev).......return;.
3460 00 00 14 09 09 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 10 09 09 63 61 6c .....sel.=.curr.=.prev;......cal
3480 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 10 09 63 61 73 65 coffsets();......break;.....case
34a0 20 58 4b 5f 52 65 74 75 72 6e 3a 00 00 00 12 09 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 72 .XK_Return:.....case.XK_KP_Enter
34c0 3a 00 00 00 3d 09 09 70 75 74 73 28 28 73 65 6c 20 26 26 20 21 28 65 76 2d 3e 73 74 61 74 65 20 :...=..puts((sel.&&.!(ev->state.
34e0 26 20 53 68 69 66 74 4d 61 73 6b 29 29 20 3f 20 73 65 6c 2d 3e 74 65 78 74 20 3a 20 74 65 78 74 &.ShiftMask)).?.sel->text.:.text
3500 29 3b 00 00 00 23 09 09 69 66 20 28 21 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f );...#..if.(!(ev->state.&.Contro
3520 6c 4d 61 73 6b 29 29 20 7b 00 00 00 0d 09 09 09 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0b 09 09 lMask)).{.......cleanup();......
3540 09 65 78 69 74 28 30 29 3b 00 00 00 03 09 09 7d 00 00 00 0a 09 09 69 66 20 28 73 65 6c 29 00 00 .exit(0);......}......if.(sel)..
3560 00 10 09 09 09 73 65 6c 2d 3e 6f 75 74 20 3d 20 31 3b 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 .....sel->out.=.1;......break;..
3580 00 0f 09 63 61 73 65 20 58 4b 5f 52 69 67 68 74 3a 00 00 00 12 09 63 61 73 65 20 58 4b 5f 4b 50 ...case.XK_Right:.....case.XK_KP
35a0 5f 52 69 67 68 74 3a 00 00 00 1d 09 09 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 21 3d _Right:......if.(text[cursor].!=
35c0 20 27 5c 30 27 29 20 7b 00 00 00 19 09 09 09 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 .'\0').{.......cursor.=.nextrune
35e0 28 2b 31 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 03 09 09 7d 00 00 00 10 09 09 69 (+1);.......break;......}......i
3600 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 00 13 09 f.(lines.>.0).......return;.....
3620 09 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 0e 09 63 61 73 65 20 58 4b 5f 44 ./*.fallthrough.*/.....case.XK_D
3640 6f 77 6e 3a 00 00 00 11 09 63 61 73 65 20 58 4b 5f 4b 50 5f 44 6f 77 6e 3a 00 00 00 38 09 09 69 own:.....case.XK_KP_Down:...8..i
3660 66 20 28 73 65 6c 20 26 26 20 73 65 6c 2d 3e 72 69 67 68 74 20 26 26 20 28 73 65 6c 20 3d 20 73 f.(sel.&&.sel->right.&&.(sel.=.s
3680 65 6c 2d 3e 72 69 67 68 74 29 20 3d 3d 20 6e 65 78 74 29 20 7b 00 00 00 0f 09 09 09 63 75 72 72 el->right).==.next).{.......curr
36a0 20 3d 20 6e 65 78 74 3b 00 00 00 11 09 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 .=.next;.......calcoffsets();...
36c0 03 09 09 7d 00 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 0d 09 63 61 73 65 20 58 4b 5f 54 61 62 ...}......break;.....case.XK_Tab
36e0 3a 00 00 00 0b 09 09 69 66 20 28 21 73 65 6c 29 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 00 :......if.(!sel).......return;..
3700 00 2f 09 09 63 75 72 73 6f 72 20 3d 20 73 74 72 6e 6c 65 6e 28 73 65 6c 2d 3e 74 65 78 74 2c 20 ./..cursor.=.strnlen(sel->text,.
3720 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 31 29 3b 00 00 00 22 09 09 6d 65 6d 63 70 79 28 74 65 sizeof.text.-.1);..."..memcpy(te
3740 78 74 2c 20 73 65 6c 2d 3e 74 65 78 74 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 16 09 09 74 65 78 xt,.sel->text,.cursor);......tex
3760 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0a 09 09 6d 61 74 63 68 28 29 3b 00 t[cursor].=.'\0';......match();.
3780 00 00 08 09 09 62 72 65 61 6b 3b 00 00 00 02 09 7d 00 00 00 00 00 00 00 05 64 72 61 77 3a 00 00 .....break;.....}........draw:..
37a0 00 0c 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 ...drawmenu();....}........stati
37c0 63 20 76 6f 69 64 00 00 00 16 62 75 74 74 6f 6e 70 72 65 73 73 28 58 45 76 65 6e 74 20 2a 65 29 c.void....buttonpress(XEvent.*e)
37e0 00 00 00 01 7b 00 00 00 13 09 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 3b 00 00 00 27 ....{.....struct.item.*item;...'
3800 09 58 42 75 74 74 6f 6e 50 72 65 73 73 65 64 45 76 65 6e 74 20 2a 65 76 20 3d 20 26 65 2d 3e 78 .XButtonPressedEvent.*ev.=.&e->x
3820 62 75 74 74 6f 6e 3b 00 00 00 1d 09 69 6e 74 20 78 20 3d 20 30 2c 20 79 20 3d 20 30 2c 20 68 20 button;.....int.x.=.0,.y.=.0,.h.
3840 3d 20 62 68 2c 20 77 3b 00 00 00 00 00 00 00 17 09 69 66 20 28 65 76 2d 3e 77 69 6e 64 6f 77 20 =.bh,.w;.........if.(ev->window.
3860 21 3d 20 77 69 6e 29 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 00 00 00 00 18 09 2f 2a 20 !=.win)......return;........./*.
3880 72 69 67 68 74 2d 63 6c 69 63 6b 3a 20 65 78 69 74 20 2a 2f 00 00 00 1b 09 69 66 20 28 65 76 2d right-click:.exit.*/.....if.(ev-
38a0 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 00 00 00 0a 09 09 65 78 69 74 28 31 29 >button.==.Button3)......exit(1)
38c0 3b 00 00 00 00 00 00 00 17 09 69 66 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 ;.........if.(prompt.&&.*prompt)
38e0 00 00 00 0f 09 09 78 20 2b 3d 20 70 72 6f 6d 70 74 77 3b 00 00 00 00 00 00 00 12 09 2f 2a 20 69 ......x.+=.promptw;........./*.i
3900 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 2f 09 77 20 3d 20 28 6c 69 6e 65 73 20 3e 20 30 nput.field.*/.../.w.=.(lines.>.0
3920 20 7c 7c 20 21 6d 61 74 63 68 65 73 29 20 3f 20 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 77 3b .||.!matches).?.mw.-.x.:.inputw;
3940 00 00 00 00 00 00 00 25 09 2f 2a 20 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 6e 70 75 74 3a .......%./*.left-click.on.input:
3960 20 63 6c 65 61 72 20 69 6e 70 75 74 2c 00 00 00 42 09 20 2a 20 4e 4f 54 45 3a 20 69 66 20 74 68 .clear.input,...B..*.NOTE:.if.th
3980 65 72 65 20 69 73 20 6e 6f 20 6c 65 66 74 2d 61 72 72 6f 77 20 74 68 65 20 73 70 61 63 65 20 66 ere.is.no.left-arrow.the.space.f
39a0 6f 72 20 3c 20 69 73 20 72 65 73 65 72 76 65 64 20 73 6f 00 00 00 28 09 20 2a 20 20 20 20 20 20 or.<.is.reserved.so...(..*......
39c0 20 61 64 64 20 74 68 61 74 20 74 6f 20 74 68 65 20 69 6e 70 75 74 20 77 69 64 74 68 20 2a 2f 00 .add.that.to.the.input.width.*/.
39e0 00 00 1d 09 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 31 20 26 26 ....if.(ev->button.==.Button1.&&
3a00 00 00 00 32 09 20 20 20 28 28 6c 69 6e 65 73 20 3c 3d 20 30 20 26 26 20 65 76 2d 3e 78 20 3e 3d ...2....((lines.<=.0.&&.ev->x.>=
3a20 20 30 20 26 26 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 20 2b 00 00 00 31 09 20 20 20 28 28 .0.&&.ev->x.<=.x.+.w.+...1....((
3a40 21 70 72 65 76 20 7c 7c 20 21 63 75 72 72 2d 3e 6c 65 66 74 29 20 3f 20 54 45 58 54 57 28 22 3c !prev.||.!curr->left).?.TEXTW("<
3a60 22 29 20 3a 20 30 29 29 20 7c 7c 00 00 00 33 09 20 20 20 28 6c 69 6e 65 73 20 3e 20 30 20 26 26 ").:.0)).||...3....(lines.>.0.&&
3a80 20 65 76 2d 3e 79 20 3e 3d 20 79 20 26 26 20 65 76 2d 3e 79 20 3c 3d 20 79 20 2b 20 68 29 29 29 .ev->y.>=.y.&&.ev->y.<=.y.+.h)))
3aa0 20 7b 00 00 00 18 09 09 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 2d 63 75 72 73 6f 72 29 3b 00 00 .{......insert(NULL,.-cursor);..
3ac0 00 0d 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 02 ....drawmenu();......return;....
3ae0 09 7d 00 00 00 2a 09 2f 2a 20 6d 69 64 64 6c 65 2d 6d 6f 75 73 65 20 63 6c 69 63 6b 3a 20 70 61 .}...*./*.middle-mouse.click:.pa
3b00 73 74 65 20 73 65 6c 65 63 74 69 6f 6e 20 2a 2f 00 00 00 1d 09 69 66 20 28 65 76 2d 3e 62 75 74 ste.selection.*/.....if.(ev->but
3b20 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 32 29 20 7b 00 00 00 45 09 09 58 43 6f 6e 76 65 72 74 53 ton.==.Button2).{...E..XConvertS
3b40 65 6c 65 63 74 69 6f 6e 28 64 70 79 2c 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 53 68 69 66 74 election(dpy,.(ev->state.&.Shift
3b60 4d 61 73 6b 29 20 3f 20 63 6c 69 70 20 3a 20 58 41 5f 50 52 49 4d 41 52 59 2c 00 00 00 32 09 09 Mask).?.clip.:.XA_PRIMARY,...2..
3b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 66 38 2c 20 75 74 66 38 2c 20 77 69 ..................utf8,.utf8,.wi
3ba0 6e 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 0d 09 09 64 72 61 77 6d 65 6e 75 28 29 n,.CurrentTime);......drawmenu()
3bc0 3b 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 02 09 7d 00 00 00 10 09 2f 2a 20 73 63 72 6f ;......return;.....}...../*.scro
3be0 6c 6c 20 75 70 20 2a 2f 00 00 00 25 09 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 ll.up.*/...%.if.(ev->button.==.B
3c00 75 74 74 6f 6e 34 20 26 26 20 70 72 65 76 29 20 7b 00 00 00 14 09 09 73 65 6c 20 3d 20 63 75 72 utton4.&&.prev).{......sel.=.cur
3c20 72 20 3d 20 70 72 65 76 3b 00 00 00 10 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 r.=.prev;......calcoffsets();...
3c40 0d 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 02 09 ...drawmenu();......return;.....
3c60 7d 00 00 00 12 09 2f 2a 20 73 63 72 6f 6c 6c 20 64 6f 77 6e 20 2a 2f 00 00 00 25 09 69 66 20 28 }...../*.scroll.down.*/...%.if.(
3c80 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 35 20 26 26 20 6e 65 78 74 29 20 7b ev->button.==.Button5.&&.next).{
3ca0 00 00 00 14 09 09 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 10 09 09 63 61 ......sel.=.curr.=.next;......ca
3cc0 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0d 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 lcoffsets();......drawmenu();...
3ce0 09 09 09 72 65 74 75 72 6e 3b 00 00 00 02 09 7d 00 00 00 1b 09 69 66 20 28 65 76 2d 3e 62 75 74 ...return;.....}.....if.(ev->but
3d00 74 6f 6e 20 21 3d 20 42 75 74 74 6f 6e 31 29 00 00 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 1e ton.!=.Button1)......return;....
3d20 09 69 66 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 7e 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 00 00 .if.(ev->state.&.~ControlMask)..
3d40 00 09 09 09 72 65 74 75 72 6e 3b 00 00 00 11 09 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 7b ....return;.....if.(lines.>.0).{
3d60 00 00 00 2f 09 09 2f 2a 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 3a 20 28 63 74 72 6c 29 6c 65 .../../*.vertical.list:.(ctrl)le
3d80 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 74 65 6d 20 2a 2f 00 00 00 0d 09 09 77 20 3d 20 6d 77 20 ft-click.on.item.*/......w.=.mw.
3da0 2d 20 78 3b 00 00 00 37 09 09 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d -.x;...7..for.(item.=.curr;.item
3dc0 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 20 7b 00 .!=.next;.item.=.item->right).{.
3de0 00 00 0a 09 09 09 79 20 2b 3d 20 68 3b 00 00 00 28 09 09 09 69 66 20 28 65 76 2d 3e 79 20 3e 3d ......y.+=.h;...(...if.(ev->y.>=
3e00 20 79 20 26 26 20 65 76 2d 3e 79 20 3c 3d 20 28 79 20 2b 20 68 29 29 20 7b 00 00 00 15 09 09 09 .y.&&.ev->y.<=.(y.+.h)).{.......
3e20 09 70 75 74 73 28 69 74 65 6d 2d 3e 74 65 78 74 29 3b 00 00 00 23 09 09 09 09 69 66 20 28 21 28 .puts(item->text);...#....if.(!(
3e40 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 00 00 00 0d 09 09 09 ev->state.&.ControlMask)).......
3e60 09 09 65 78 69 74 28 30 29 3b 00 00 00 0f 09 09 09 09 73 65 6c 20 3d 20 69 74 65 6d 3b 00 00 00 ..exit(0);........sel.=.item;...
3e80 0e 09 09 09 09 69 66 20 28 73 65 6c 29 20 7b 00 00 00 12 09 09 09 09 09 73 65 6c 2d 3e 6f 75 74 .....if.(sel).{.........sel->out
3ea0 20 3d 20 31 3b 00 00 00 10 09 09 09 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 05 09 09 09 .=.1;.........drawmenu();.......
3ec0 09 7d 00 00 00 0b 09 09 09 09 72 65 74 75 72 6e 3b 00 00 00 04 09 09 09 7d 00 00 00 03 09 09 7d .}........return;.......}......}
3ee0 00 00 00 16 09 7d 20 65 6c 73 65 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 20 09 09 .....}.else.if.(matches).{......
3f00 2f 2a 20 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 6c 65 66 74 20 61 72 72 6f 77 20 2a 2f 00 00 /*.left-click.on.left.arrow.*/..
3f20 00 0e 09 09 78 20 2b 3d 20 69 6e 70 75 74 77 3b 00 00 00 11 09 09 77 20 3d 20 54 45 58 54 57 28 ....x.+=.inputw;......w.=.TEXTW(
3f40 22 3c 22 29 3b 00 00 00 1b 09 09 69 66 20 28 70 72 65 76 20 26 26 20 63 75 72 72 2d 3e 6c 65 66 "<");......if.(prev.&&.curr->lef
3f60 74 29 20 7b 00 00 00 26 09 09 09 69 66 20 28 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d t).{...&...if.(ev->x.>=.x.&&.ev-
3f80 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 16 09 09 09 09 73 65 6c 20 3d 20 63 75 72 72 >x.<=.x.+.w).{........sel.=.curr
3fa0 20 3d 20 70 72 65 76 3b 00 00 00 12 09 09 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 .=.prev;........calcoffsets();..
3fc0 00 0f 09 09 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 09 09 09 09 72 65 74 75 72 6e 3b ......drawmenu();........return;
3fe0 00 00 00 04 09 09 09 7d 00 00 00 03 09 09 7d 00 00 00 31 09 09 2f 2a 20 68 6f 72 69 7a 6f 6e 74 .......}......}...1../*.horizont
4000 61 6c 20 6c 69 73 74 3a 20 28 63 74 72 6c 29 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 74 65 al.list:.(ctrl)left-click.on.ite
4020 6d 20 2a 2f 00 00 00 37 09 09 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d m.*/...7..for.(item.=.curr;.item
4040 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 20 7b 00 .!=.next;.item.=.item->right).{.
4060 00 00 0a 09 09 09 78 20 2b 3d 20 77 3b 00 00 00 33 09 09 09 77 20 3d 20 4d 49 4e 28 54 45 58 54 ......x.+=.w;...3...w.=.MIN(TEXT
4080 57 28 69 74 65 6d 2d 3e 74 65 78 74 29 2c 20 6d 77 20 2d 20 78 20 2d 20 54 45 58 54 57 28 22 3e W(item->text),.mw.-.x.-.TEXTW(">
40a0 22 29 29 3b 00 00 00 26 09 09 09 69 66 20 28 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d "));...&...if.(ev->x.>=.x.&&.ev-
40c0 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 15 09 09 09 09 70 75 74 73 28 69 74 65 6d 2d >x.<=.x.+.w).{........puts(item-
40e0 3e 74 65 78 74 29 3b 00 00 00 23 09 09 09 09 69 66 20 28 21 28 65 76 2d 3e 73 74 61 74 65 20 26 >text);...#....if.(!(ev->state.&
4100 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 00 00 00 0d 09 09 09 09 09 65 78 69 74 28 30 29 3b 00 .ControlMask)).........exit(0);.
4120 00 00 0f 09 09 09 09 73 65 6c 20 3d 20 69 74 65 6d 3b 00 00 00 0e 09 09 09 09 69 66 20 28 73 65 .......sel.=.item;........if.(se
4140 6c 29 20 7b 00 00 00 12 09 09 09 09 09 73 65 6c 2d 3e 6f 75 74 20 3d 20 31 3b 00 00 00 10 09 09 l).{.........sel->out.=.1;......
4160 09 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 05 09 09 09 09 7d 00 00 00 0b 09 09 09 09 72 ...drawmenu();........}........r
4180 65 74 75 72 6e 3b 00 00 00 04 09 09 09 7d 00 00 00 03 09 09 7d 00 00 00 21 09 09 2f 2a 20 6c 65 eturn;.......}......}...!../*.le
41a0 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 72 69 67 68 74 20 61 72 72 6f 77 20 2a 2f 00 00 00 11 09 09 ft-click.on.right.arrow.*/......
41c0 77 20 3d 20 54 45 58 54 57 28 22 3e 22 29 3b 00 00 00 0d 09 09 78 20 3d 20 6d 77 20 2d 20 77 3b w.=.TEXTW(">");......x.=.mw.-.w;
41e0 00 00 00 2d 09 09 69 66 20 28 6e 65 78 74 20 26 26 20 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 ...-..if.(next.&&.ev->x.>=.x.&&.
4200 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 15 09 09 09 73 65 6c 20 3d 20 63 75 ev->x.<=.x.+.w).{.......sel.=.cu
4220 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 11 09 09 09 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 rr.=.next;.......calcoffsets();.
4240 00 00 0e 09 09 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0a 09 09 09 72 65 74 75 72 6e 3b 00 ......drawmenu();.......return;.
4260 00 00 03 09 09 7d 00 00 00 02 09 7d 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 .....}.....}....}........static.
4280 76 6f 69 64 00 00 00 0b 70 61 73 74 65 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 0d 09 63 68 61 void....paste(void)....{.....cha
42a0 72 20 2a 70 2c 20 2a 71 3b 00 00 00 08 09 69 6e 74 20 64 69 3b 00 00 00 12 09 75 6e 73 69 67 6e r.*p,.*q;.....int.di;.....unsign
42c0 65 64 20 6c 6f 6e 67 20 64 6c 3b 00 00 00 09 09 41 74 6f 6d 20 64 61 3b 00 00 00 00 00 00 00 49 ed.long.dl;.....Atom.da;.......I
42e0 09 2f 2a 20 77 65 20 68 61 76 65 20 62 65 65 6e 20 67 69 76 65 6e 20 74 68 65 20 63 75 72 72 65 ./*.we.have.been.given.the.curre
4300 6e 74 20 73 65 6c 65 63 74 69 6f 6e 2c 20 6e 6f 77 20 69 6e 73 65 72 74 20 69 74 20 69 6e 74 6f nt.selection,.now.insert.it.into
4320 20 69 6e 70 75 74 20 2a 2f 00 00 00 48 09 69 66 20 28 58 47 65 74 57 69 6e 64 6f 77 50 72 6f 70 .input.*/...H.if.(XGetWindowProp
4340 65 72 74 79 28 64 70 79 2c 20 77 69 6e 2c 20 75 74 66 38 2c 20 30 2c 20 28 73 69 7a 65 6f 66 20 erty(dpy,.win,.utf8,.0,.(sizeof.
4360 74 65 78 74 20 2f 20 34 29 20 2b 20 31 2c 20 46 61 6c 73 65 2c 00 00 00 43 09 20 20 20 20 20 20 text./.4).+.1,.False,...C.......
4380 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 66 38 2c 20 26 64 61 2c 20 26 64 69 2c 20 26 64 6c .............utf8,.&da,.&di,.&dl
43a0 2c 20 26 64 6c 2c 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2a 29 26 70 29 00 00 00 17 ,.&dl,.(unsigned.char.**)&p)....
43c0 09 20 20 20 20 3d 3d 20 53 75 63 63 65 73 73 20 26 26 20 70 29 20 7b 00 00 00 40 09 09 69 6e 73 .....==.Success.&&.p).{...@..ins
43e0 65 72 74 28 70 2c 20 28 71 20 3d 20 73 74 72 63 68 72 28 70 2c 20 27 5c 6e 27 29 29 20 3f 20 71 ert(p,.(q.=.strchr(p,.'\n')).?.q
4400 20 2d 20 70 20 3a 20 28 73 73 69 7a 65 5f 74 29 73 74 72 6c 65 6e 28 70 29 29 3b 00 00 00 0b 09 .-.p.:.(ssize_t)strlen(p));.....
4420 09 58 46 72 65 65 28 70 29 3b 00 00 00 02 09 7d 00 00 00 0c 09 64 72 61 77 6d 65 6e 75 28 29 3b .XFree(p);.....}.....drawmenu();
4440 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 0f 72 65 61 64 ....}........static.void....read
4460 73 74 64 69 6e 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 13 09 63 68 61 72 20 2a 6c 69 6e 65 20 stdin(void)....{.....char.*line.
4480 3d 20 4e 55 4c 4c 3b 00 00 00 24 09 73 69 7a 65 5f 74 20 69 2c 20 69 74 65 6d 73 69 7a 20 3d 20 =.NULL;...$.size_t.i,.itemsiz.=.
44a0 30 2c 20 6c 69 6e 65 73 69 7a 20 3d 20 30 3b 00 00 00 0d 09 73 73 69 7a 65 5f 74 20 6c 65 6e 3b 0,.linesiz.=.0;.....ssize_t.len;
44c0 00 00 00 00 00 00 00 3c 09 2f 2a 20 72 65 61 64 20 65 61 63 68 20 6c 69 6e 65 20 66 72 6f 6d 20 .......<./*.read.each.line.from.
44e0 73 74 64 69 6e 20 61 6e 64 20 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 69 74 65 6d 20 6c 69 73 stdin.and.add.it.to.the.item.lis
4500 74 20 2a 2f 00 00 00 42 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 28 6c 65 6e 20 3d 20 67 65 74 6c t.*/...B.for.(i.=.0;.(len.=.getl
4520 69 6e 65 28 26 6c 69 6e 65 2c 20 26 6c 69 6e 65 73 69 7a 2c 20 73 74 64 69 6e 29 29 20 21 3d 20 ine(&line,.&linesiz,.stdin)).!=.
4540 2d 31 3b 20 69 2b 2b 29 20 7b 00 00 00 19 09 09 69 66 20 28 69 20 2b 20 31 20 3e 3d 20 69 74 65 -1;.i++).{......if.(i.+.1.>=.ite
4560 6d 73 69 7a 29 20 7b 00 00 00 12 09 09 09 69 74 65 6d 73 69 7a 20 2b 3d 20 32 35 36 3b 00 00 00 msiz).{.......itemsiz.+=.256;...
4580 3b 09 09 09 69 66 20 28 21 28 69 74 65 6d 73 20 3d 20 72 65 61 6c 6c 6f 63 28 69 74 65 6d 73 2c ;...if.(!(items.=.realloc(items,
45a0 20 69 74 65 6d 73 69 7a 20 2a 20 73 69 7a 65 6f 66 28 2a 69 74 65 6d 73 29 29 29 29 00 00 00 3f .itemsiz.*.sizeof(*items))))...?
45c0 09 09 09 09 64 69 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c 6c 6f 63 20 25 7a 75 20 62 79 74 65 ....die("cannot.realloc.%zu.byte
45e0 73 3a 22 2c 20 69 74 65 6d 73 69 7a 20 2a 20 73 69 7a 65 6f 66 28 2a 69 74 65 6d 73 29 29 3b 00 s:",.itemsiz.*.sizeof(*items));.
4600 00 00 03 09 09 7d 00 00 00 1c 09 09 69 66 20 28 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 3d .....}......if.(line[len.-.1].==
4620 20 27 5c 6e 27 29 00 00 00 18 09 09 09 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 20 27 5c 30 .'\n').......line[len.-.1].=.'\0
4640 27 3b 00 00 00 26 09 09 69 66 20 28 21 28 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 20 3d 20 73 74 ';...&..if.(!(items[i].text.=.st
4660 72 64 75 70 28 6c 69 6e 65 29 29 29 00 00 00 12 09 09 09 64 69 65 28 22 73 74 72 64 75 70 3a 22 rdup(line))).......die("strdup:"
4680 29 3b 00 00 00 00 00 00 00 13 09 09 69 74 65 6d 73 5b 69 5d 2e 6f 75 74 20 3d 20 30 3b 00 00 00 );..........items[i].out.=.0;...
46a0 02 09 7d 00 00 00 0c 09 66 72 65 65 28 6c 69 6e 65 29 3b 00 00 00 0b 09 69 66 20 28 69 74 65 6d ..}.....free(line);.....if.(item
46c0 73 29 00 00 00 17 09 09 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 s)......items[i].text.=.NULL;...
46e0 17 09 6c 69 6e 65 73 20 3d 20 4d 49 4e 28 6c 69 6e 65 73 2c 20 69 29 3b 00 00 00 01 7d 00 00 00 ..lines.=.MIN(lines,.i);....}...
4700 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 09 72 75 6e 28 76 6f 69 64 29 00 00 00 .....static.void....run(void)...
4720 01 7b 00 00 00 0b 09 58 45 76 65 6e 74 20 65 76 3b 00 00 00 00 00 00 00 20 09 77 68 69 6c 65 20 .{.....XEvent.ev;.........while.
4740 28 21 58 4e 65 78 74 45 76 65 6e 74 28 64 70 79 2c 20 26 65 76 29 29 20 7b 00 00 00 1d 09 09 69 (!XNextEvent(dpy,.&ev)).{......i
4760 66 20 28 58 46 69 6c 74 65 72 45 76 65 6e 74 28 26 65 76 2c 20 77 69 6e 29 29 00 00 00 0c 09 09 f.(XFilterEvent(&ev,.win))......
4780 09 63 6f 6e 74 69 6e 75 65 3b 00 00 00 13 09 09 73 77 69 74 63 68 28 65 76 2e 74 79 70 65 29 20 .continue;......switch(ev.type).
47a0 7b 00 00 00 15 09 09 63 61 73 65 20 44 65 73 74 72 6f 79 4e 6f 74 69 66 79 3a 00 00 00 27 09 09 {......case.DestroyNotify:...'..
47c0 09 69 66 20 28 65 76 2e 78 64 65 73 74 72 6f 79 77 69 6e 64 6f 77 2e 77 69 6e 64 6f 77 20 21 3d .if.(ev.xdestroywindow.window.!=
47e0 20 77 69 6e 29 00 00 00 0a 09 09 09 09 62 72 65 61 6b 3b 00 00 00 0d 09 09 09 63 6c 65 61 6e 75 .win)........break;.......cleanu
4800 70 28 29 3b 00 00 00 0b 09 09 09 65 78 69 74 28 31 29 3b 00 00 00 13 09 09 63 61 73 65 20 42 75 p();.......exit(1);......case.Bu
4820 74 74 6f 6e 50 72 65 73 73 3a 00 00 00 14 09 09 09 62 75 74 74 6f 6e 70 72 65 73 73 28 26 65 76 ttonPress:.......buttonpress(&ev
4840 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 0e 09 09 63 61 73 65 20 45 78 70 6f 73 65 );.......break;......case.Expose
4860 3a 00 00 00 1d 09 09 09 69 66 20 28 65 76 2e 78 65 78 70 6f 73 65 2e 63 6f 75 6e 74 20 3d 3d 20 :.......if.(ev.xexpose.count.==.
4880 30 29 00 00 00 24 09 09 09 09 64 72 77 5f 6d 61 70 28 64 72 77 2c 20 77 69 6e 2c 20 30 2c 20 30 0)...$....drw_map(drw,.win,.0,.0
48a0 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 0f 09 09 63 61 73 ,.mw,.mh);.......break;......cas
48c0 65 20 46 6f 63 75 73 49 6e 3a 00 00 00 28 09 09 09 2f 2a 20 72 65 67 72 61 62 20 66 6f 63 75 73 e.FocusIn:...(.../*.regrab.focus
48e0 20 66 72 6f 6d 20 70 61 72 65 6e 74 20 77 69 6e 64 6f 77 20 2a 2f 00 00 00 1f 09 09 09 69 66 20 .from.parent.window.*/.......if.
4900 28 65 76 2e 78 66 6f 63 75 73 2e 77 69 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 10 09 09 09 (ev.xfocus.window.!=.win).......
4920 09 67 72 61 62 66 6f 63 75 73 28 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 10 09 09 .grabfocus();.......break;......
4940 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 00 00 00 16 09 09 09 6b 65 79 70 72 65 73 73 28 26 65 case.KeyPress:.......keypress(&e
4960 76 2e 78 6b 65 79 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 17 09 09 63 61 73 65 20 v.xkey);.......break;......case.
4980 53 65 6c 65 63 74 69 6f 6e 4e 6f 74 69 66 79 3a 00 00 00 26 09 09 09 69 66 20 28 65 76 2e 78 73 SelectionNotify:...&...if.(ev.xs
49a0 65 6c 65 63 74 69 6f 6e 2e 70 72 6f 70 65 72 74 79 20 3d 3d 20 75 74 66 38 29 00 00 00 0c 09 09 election.property.==.utf8)......
49c0 09 09 70 61 73 74 65 28 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 18 09 09 63 61 73 ..paste();.......break;......cas
49e0 65 20 56 69 73 69 62 69 6c 69 74 79 4e 6f 74 69 66 79 3a 00 00 00 34 09 09 09 69 66 20 28 65 76 e.VisibilityNotify:...4...if.(ev
4a00 2e 78 76 69 73 69 62 69 6c 69 74 79 2e 73 74 61 74 65 20 21 3d 20 56 69 73 69 62 69 6c 69 74 79 .xvisibility.state.!=.Visibility
4a20 55 6e 6f 62 73 63 75 72 65 64 29 00 00 00 1b 09 09 09 09 58 52 61 69 73 65 57 69 6e 64 6f 77 28 Unobscured)........XRaiseWindow(
4a40 64 70 79 2c 20 77 69 6e 29 3b 00 00 00 09 09 09 09 62 72 65 61 6b 3b 00 00 00 03 09 09 7d 00 00 dpy,.win);.......break;......}..
4a60 00 02 09 7d 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 69 63 20 76 6f 69 64 00 00 00 0b ...}....}........static.void....
4a80 73 65 74 75 70 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 10 09 69 6e 74 20 78 2c 20 79 2c 20 69 setup(void)....{.....int.x,.y,.i
4aa0 2c 20 6a 3b 00 00 00 11 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 75 3b 00 00 00 1a 09 58 53 ,.j;.....unsigned.int.du;.....XS
4ac0 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 09 09 58 49 4d 20 etWindowAttributes.swa;.....XIM.
4ae0 78 69 6d 3b 00 00 00 14 09 57 69 6e 64 6f 77 20 77 2c 20 64 77 2c 20 2a 64 77 73 3b 00 00 00 16 xim;.....Window.w,.dw,.*dws;....
4b00 09 58 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 24 09 58 43 6c 61 73 .XWindowAttributes.wa;...$.XClas
4b20 73 48 69 6e 74 20 63 68 20 3d 20 7b 22 64 6d 65 6e 75 22 2c 20 22 64 6d 65 6e 75 22 7d 3b 00 00 sHint.ch.=.{"dmenu",."dmenu"};..
4b40 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 1a 09 58 69 6e 65 72 61 6d 61 53 63 ..#ifdef.XINERAMA.....XineramaSc
4b60 72 65 65 6e 49 6e 66 6f 20 2a 69 6e 66 6f 3b 00 00 00 0b 09 57 69 6e 64 6f 77 20 70 77 3b 00 00 reenInfo.*info;.....Window.pw;..
4b80 00 18 09 69 6e 74 20 61 2c 20 64 69 2c 20 6e 2c 20 61 72 65 61 20 3d 20 30 3b 00 00 00 06 23 65 ...int.a,.di,.n,.area.=.0;....#e
4ba0 6e 64 69 66 00 00 00 16 09 2f 2a 20 69 6e 69 74 20 61 70 70 65 61 72 61 6e 63 65 20 2a 2f 00 00 ndif...../*.init.appearance.*/..
4bc0 00 21 09 66 6f 72 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 53 63 68 65 6d 65 4c 61 73 74 3b 20 6a .!.for.(j.=.0;.j.<.SchemeLast;.j
4be0 2b 2b 29 00 00 00 30 09 09 73 63 68 65 6d 65 5b 6a 5d 20 3d 20 64 72 77 5f 73 63 6d 5f 63 72 65 ++)...0..scheme[j].=.drw_scm_cre
4c00 61 74 65 28 64 72 77 2c 20 63 6f 6c 6f 72 73 5b 6a 5d 2c 20 32 29 3b 00 00 00 00 00 00 00 2f 09 ate(drw,.colors[j],.2);......./.
4c20 63 6c 69 70 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 64 70 79 2c 20 22 43 4c 49 50 42 4f 41 clip.=.XInternAtom(dpy,."CLIPBOA
4c40 52 44 22 2c 20 20 20 46 61 6c 73 65 29 3b 00 00 00 2f 09 75 74 66 38 20 3d 20 58 49 6e 74 65 72 RD",...False);.../.utf8.=.XInter
4c60 6e 41 74 6f 6d 28 64 70 79 2c 20 22 55 54 46 38 5f 53 54 52 49 4e 47 22 2c 20 46 61 6c 73 65 29 nAtom(dpy,."UTF8_STRING",.False)
4c80 3b 00 00 00 00 00 00 00 1e 09 2f 2a 20 63 61 6c 63 75 6c 61 74 65 20 6d 65 6e 75 20 67 65 6f 6d ;........./*.calculate.menu.geom
4ca0 65 74 72 79 20 2a 2f 00 00 00 14 09 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 3b 00 etry.*/.....bh.=.drw->fonts->h;.
4cc0 00 00 26 09 62 68 20 3d 20 75 73 65 72 5f 62 68 20 3f 20 62 68 20 2b 20 75 73 65 72 5f 62 68 20 ..&.bh.=.user_bh.?.bh.+.user_bh.
4ce0 3a 20 62 68 20 2b 20 32 3b 00 00 00 17 09 6c 69 6e 65 73 20 3d 20 4d 41 58 28 6c 69 6e 65 73 2c :.bh.+.2;.....lines.=.MAX(lines,
4d00 20 30 29 3b 00 00 00 17 09 6d 68 20 3d 20 28 6c 69 6e 65 73 20 2b 20 31 29 20 2a 20 62 68 3b 00 .0);.....mh.=.(lines.+.1).*.bh;.
4d20 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 07 09 69 20 3d 20 30 3b 00 00 00 ...#ifdef.XINERAMA.....i.=.0;...
4d40 43 09 69 66 20 28 70 61 72 65 6e 74 77 69 6e 20 3d 3d 20 72 6f 6f 74 20 26 26 20 28 69 6e 66 6f C.if.(parentwin.==.root.&&.(info
4d60 20 3d 20 58 69 6e 65 72 61 6d 61 51 75 65 72 79 53 63 72 65 65 6e 73 28 64 70 79 2c 20 26 6e 29 .=.XineramaQueryScreens(dpy,.&n)
4d80 29 29 20 7b 00 00 00 1f 09 09 58 47 65 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 79 2c 20 26 77 )).{......XGetInputFocus(dpy,.&w
4da0 2c 20 26 64 69 29 3b 00 00 00 1a 09 09 69 66 20 28 6d 6f 6e 20 3e 3d 20 30 20 26 26 20 6d 6f 6e ,.&di);......if.(mon.>=.0.&&.mon
4dc0 20 3c 20 6e 29 00 00 00 0b 09 09 09 69 20 3d 20 6d 6f 6e 3b 00 00 00 38 09 09 65 6c 73 65 20 69 .<.n).......i.=.mon;...8..else.i
4de0 66 20 28 77 20 21 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d 20 50 6f 69 6e 74 65 72 52 6f 6f 74 f.(w.!=.root.&&.w.!=.PointerRoot
4e00 20 26 26 20 77 20 21 3d 20 4e 6f 6e 65 29 20 7b 00 00 00 3d 09 09 09 2f 2a 20 66 69 6e 64 20 74 .&&.w.!=.None).{...=.../*.find.t
4e20 6f 70 2d 6c 65 76 65 6c 20 77 69 6e 64 6f 77 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 75 72 72 65 op-level.window.containing.curre
4e40 6e 74 20 69 6e 70 75 74 20 66 6f 63 75 73 20 2a 2f 00 00 00 07 09 09 09 64 6f 20 7b 00 00 00 3d nt.input.focus.*/.......do.{...=
4e60 09 09 09 09 69 66 20 28 58 51 75 65 72 79 54 72 65 65 28 64 70 79 2c 20 28 70 77 20 3d 20 77 29 ....if.(XQueryTree(dpy,.(pw.=.w)
4e80 2c 20 26 64 77 2c 20 26 77 2c 20 26 64 77 73 2c 20 26 64 75 29 20 26 26 20 64 77 73 29 00 00 00 ,.&dw,.&w,.&dws,.&du).&&.dws)...
4ea0 10 09 09 09 09 09 58 46 72 65 65 28 64 77 73 29 3b 00 00 00 22 09 09 09 7d 20 77 68 69 6c 65 20 ......XFree(dws);..."...}.while.
4ec0 28 77 20 21 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d 20 70 77 29 3b 00 00 00 43 09 09 09 2f 2a (w.!=.root.&&.w.!=.pw);...C.../*
4ee0 20 66 69 6e 64 20 78 69 6e 65 72 61 6d 61 20 73 63 72 65 65 6e 20 77 69 74 68 20 77 68 69 63 68 .find.xinerama.screen.with.which
4f00 20 74 68 65 20 77 69 6e 64 6f 77 20 69 6e 74 65 72 73 65 63 74 73 20 6d 6f 73 74 20 2a 2f 00 00 .the.window.intersects.most.*/..
4f20 00 2a 09 09 09 69 66 20 28 58 47 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 .*...if.(XGetWindowAttributes(dp
4f40 79 2c 20 70 77 2c 20 26 77 61 29 29 00 00 00 1b 09 09 09 09 66 6f 72 20 28 6a 20 3d 20 30 3b 20 y,.pw,.&wa))........for.(j.=.0;.
4f60 6a 20 3c 20 6e 3b 20 6a 2b 2b 29 00 00 00 4c 09 09 09 09 09 69 66 20 28 28 61 20 3d 20 49 4e 54 j.<.n;.j++)...L.....if.((a.=.INT
4f80 45 52 53 45 43 54 28 77 61 2e 78 2c 20 77 61 2e 79 2c 20 77 61 2e 77 69 64 74 68 2c 20 77 61 2e ERSECT(wa.x,.wa.y,.wa.width,.wa.
4fa0 68 65 69 67 68 74 2c 20 69 6e 66 6f 5b 6a 5d 29 29 20 3e 20 61 72 65 61 29 20 7b 00 00 00 0f 09 height,.info[j])).>.area).{.....
4fc0 09 09 09 09 09 61 72 65 61 20 3d 20 61 3b 00 00 00 0c 09 09 09 09 09 09 69 20 3d 20 6a 3b 00 00 .....area.=.a;..........i.=.j;..
4fe0 00 06 09 09 09 09 09 7d 00 00 00 03 09 09 7d 00 00 00 47 09 09 2f 2a 20 6e 6f 20 66 6f 63 75 73 .......}......}...G../*.no.focus
5000 65 64 20 77 69 6e 64 6f 77 20 69 73 20 6f 6e 20 73 63 72 65 65 6e 2c 20 73 6f 20 75 73 65 20 70 ed.window.is.on.screen,.so.use.p
5020 6f 69 6e 74 65 72 20 6c 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 2a 2f 00 00 00 54 09 09 ointer.location.instead.*/...T..
5040 69 66 20 28 6d 6f 6e 20 3c 20 30 20 26 26 20 21 61 72 65 61 20 26 26 20 58 51 75 65 72 79 50 6f if.(mon.<.0.&&.!area.&&.XQueryPo
5060 69 6e 74 65 72 28 64 70 79 2c 20 72 6f 6f 74 2c 20 26 64 77 2c 20 26 64 77 2c 20 26 78 2c 20 26 inter(dpy,.root,.&dw,.&dw,.&x,.&
5080 79 2c 20 26 64 69 2c 20 26 64 69 2c 20 26 64 75 29 29 00 00 00 1a 09 09 09 66 6f 72 20 28 69 20 y,.&di,.&di,.&du)).......for.(i.
50a0 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 00 00 00 2c 09 09 09 09 69 66 20 28 49 4e 54 45 =.0;.i.<.n;.i++)...,....if.(INTE
50c0 52 53 45 43 54 28 78 2c 20 79 2c 20 31 2c 20 31 2c 20 69 6e 66 6f 5b 69 5d 29 20 21 3d 20 30 29 RSECT(x,.y,.1,.1,.info[i]).!=.0)
50e0 00 00 00 0b 09 09 09 09 09 62 72 65 61 6b 3b 00 00 00 00 00 00 00 1a 09 09 78 20 3d 20 69 6e 66 .........break;..........x.=.inf
5100 6f 5b 69 5d 2e 78 5f 6f 72 67 20 2b 20 64 6d 78 3b 00 00 00 41 09 09 79 20 3d 20 69 6e 66 6f 5b o[i].x_org.+.dmx;...A..y.=.info[
5120 69 5d 2e 79 5f 6f 72 67 20 2b 20 28 74 6f 70 62 61 72 20 3f 20 64 6d 79 20 3a 20 69 6e 66 6f 5b i].y_org.+.(topbar.?.dmy.:.info[
5140 69 5d 2e 68 65 69 67 68 74 20 2d 20 6d 68 20 2d 20 64 6d 79 29 3b 00 00 00 26 09 09 6d 77 20 3d i].height.-.mh.-.dmy);...&..mw.=
5160 20 28 64 6d 77 3e 30 20 3f 20 64 6d 77 20 3a 20 69 6e 66 6f 5b 69 5d 2e 77 69 64 74 68 29 3b 3b .(dmw>0.?.dmw.:.info[i].width);;
5180 00 00 00 0e 09 09 58 46 72 65 65 28 69 6e 66 6f 29 3b 00 00 00 07 09 7d 20 65 6c 73 65 00 00 00 ......XFree(info);.....}.else...
51a0 06 23 65 6e 64 69 66 00 00 00 02 09 7b 00 00 00 31 09 09 69 66 20 28 21 58 47 65 74 57 69 6e 64 .#endif.....{...1..if.(!XGetWind
51c0 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 77 61 owAttributes(dpy,.parentwin,.&wa
51e0 29 29 00 00 00 3a 09 09 09 64 69 65 28 22 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20 65 6d 62 65 ))...:...die("could.not.get.embe
5200 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 61 74 74 72 69 62 75 74 65 73 3a 20 30 78 25 6c 78 22 2c dding.window.attributes:.0x%lx",
5220 00 00 00 12 09 09 09 20 20 20 20 70 61 72 65 6e 74 77 69 6e 29 3b 00 00 00 0a 09 09 78 20 3d 20 ...........parentwin);......x.=.
5240 64 6d 78 3b 00 00 00 2a 09 09 79 20 3d 20 74 6f 70 62 61 72 20 3f 20 64 6d 79 20 3a 20 77 61 2e dmx;...*..y.=.topbar.?.dmy.:.wa.
5260 68 65 69 67 68 74 20 2d 20 6d 68 20 2d 20 64 6d 79 3b 00 00 00 20 09 09 6d 77 20 3d 20 28 64 6d height.-.mh.-.dmy;......mw.=.(dm
5280 77 3e 30 20 3f 20 64 6d 77 20 3a 20 77 61 2e 77 69 64 74 68 29 3b 00 00 00 02 09 7d 00 00 00 3f w>0.?.dmw.:.wa.width);.....}...?
52a0 09 70 72 6f 6d 70 74 77 20 3d 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 20 3f .promptw.=.(prompt.&&.*prompt).?
52c0 20 54 45 58 54 57 28 70 72 6f 6d 70 74 29 20 2d 20 6c 72 70 61 64 20 2f 20 34 20 3a 20 30 3b 00 .TEXTW(prompt).-.lrpad./.4.:.0;.
52e0 00 00 3a 09 69 6e 70 75 74 77 20 3d 20 6d 77 20 2f 20 33 3b 20 2f 2a 20 69 6e 70 75 74 20 77 69 ..:.inputw.=.mw./.3;./*.input.wi
5300 64 74 68 3a 20 7e 33 33 25 20 6f 66 20 6d 6f 6e 69 74 6f 72 20 77 69 64 74 68 20 2a 2f 00 00 00 dth:.~33%.of.monitor.width.*/...
5320 09 09 6d 61 74 63 68 28 29 3b 00 00 00 00 00 00 00 19 09 2f 2a 20 63 72 65 61 74 65 20 6d 65 6e ..match();........./*.create.men
5340 75 20 77 69 6e 64 6f 77 20 2a 2f 00 00 00 1e 09 73 77 61 2e 6f 76 65 72 72 69 64 65 5f 72 65 64 u.window.*/.....swa.override_red
5360 69 72 65 63 74 20 3d 20 54 72 75 65 3b 00 00 00 38 09 73 77 61 2e 62 61 63 6b 67 72 6f 75 6e 64 irect.=.True;...8.swa.background
5380 5f 70 69 78 65 6c 20 3d 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 6f 6c 42 _pixel.=.scheme[SchemeNorm][ColB
53a0 67 5d 2e 70 69 78 65 6c 3b 00 00 00 46 09 73 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b 20 3d 20 45 g].pixel;...F.swa.event_mask.=.E
53c0 78 70 6f 73 75 72 65 4d 61 73 6b 20 7c 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 56 69 73 xposureMask.|.KeyPressMask.|.Vis
53e0 69 62 69 6c 69 74 79 43 68 61 6e 67 65 4d 61 73 6b 20 7c 00 00 00 22 09 20 20 20 20 20 20 20 20 ibilityChangeMask.|...".........
5400 20 20 20 20 20 20 20 20 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 3b 00 00 00 00 00 00 00 .........ButtonPressMask;.......
5420 46 20 20 20 20 20 20 20 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 64 70 79 2c F.......win.=.XCreateWindow(dpy,
5440 20 70 61 72 65 6e 74 77 69 6e 2c 20 78 2c 20 79 2c 20 6d 77 2c 20 6d 68 2c 20 62 6f 72 64 65 72 .parentwin,.x,.y,.mw,.mh,.border
5460 5f 77 69 64 74 68 2c 00 00 00 44 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _width,...D.....................
5480 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 20 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 20 CopyFromParent,.CopyFromParent,.
54a0 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 00 00 00 4b 09 20 20 20 20 20 20 20 20 20 20 20 20 CopyFromParent,...K.............
54c0 20 20 20 20 20 20 20 20 43 57 4f 76 65 72 72 69 64 65 52 65 64 69 72 65 63 74 20 7c 20 43 57 42 ........CWOverrideRedirect.|.CWB
54e0 61 63 6b 50 69 78 65 6c 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b 2c 20 26 73 77 61 29 3b 00 00 ackPixel.|.CWEventMask,.&swa);..
5500 00 18 20 20 20 20 20 20 20 69 66 20 28 62 6f 72 64 65 72 5f 77 69 64 74 68 29 00 00 00 3d 09 20 .........if.(border_width)...=..
5520 58 53 65 74 57 69 6e 64 6f 77 42 6f 72 64 65 72 28 64 70 79 2c 20 77 69 6e 2c 20 73 63 68 65 6d XSetWindowBorder(dpy,.win,.schem
5540 65 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 42 67 5d 2e 70 69 78 65 6c 29 3b 00 00 00 1e 09 e[SchemeSel][ColBg].pixel);.....
5560 58 53 65 74 43 6c 61 73 73 48 69 6e 74 28 64 70 79 2c 20 77 69 6e 2c 20 26 63 68 29 3b 00 00 00 XSetClassHint(dpy,.win,.&ch);...
5580 00 00 00 00 14 09 2f 2a 20 69 6e 70 75 74 20 6d 65 74 68 6f 64 73 20 2a 2f 00 00 00 34 09 69 66 ....../*.input.methods.*/...4.if
55a0 20 28 28 78 69 6d 20 3d 20 58 4f 70 65 6e 49 4d 28 64 70 79 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c .((xim.=.XOpenIM(dpy,.NULL,.NULL
55c0 2c 20 4e 55 4c 4c 29 29 20 3d 3d 20 4e 55 4c 4c 29 00 00 00 35 09 09 64 69 65 28 22 58 4f 70 65 ,.NULL)).==.NULL)...5..die("XOpe
55e0 6e 49 4d 20 66 61 69 6c 65 64 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 69 6e 70 75 74 nIM.failed:.could.not.open.input
5600 20 64 65 76 69 63 65 22 29 3b 00 00 00 00 00 00 00 49 09 78 69 63 20 3d 20 58 43 72 65 61 74 65 .device");.......I.xic.=.XCreate
5620 49 43 28 78 69 6d 2c 20 58 4e 49 6e 70 75 74 53 74 79 6c 65 2c 20 58 49 4d 50 72 65 65 64 69 74 IC(xim,.XNInputStyle,.XIMPreedit
5640 4e 6f 74 68 69 6e 67 20 7c 20 58 49 4d 53 74 61 74 75 73 4e 6f 74 68 69 6e 67 2c 00 00 00 40 09 Nothing.|.XIMStatusNothing,...@.
5660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4e 43 6c 69 65 6e 74 57 69 6e 64 6f 77 2c 20 ................XNClientWindow,.
5680 77 69 6e 2c 20 58 4e 46 6f 63 75 73 57 69 6e 64 6f 77 2c 20 77 69 6e 2c 20 4e 55 4c 4c 29 3b 00 win,.XNFocusWindow,.win,.NULL);.
56a0 00 00 00 00 00 00 16 09 58 4d 61 70 52 61 69 73 65 64 28 64 70 79 2c 20 77 69 6e 29 3b 00 00 00 ........XMapRaised(dpy,.win);...
56c0 0d 09 69 66 20 28 65 6d 62 65 64 29 20 7b 00 00 00 2d 09 09 58 52 65 70 61 72 65 6e 74 57 69 6e ..if.(embed).{...-..XReparentWin
56e0 64 6f 77 28 64 70 79 2c 20 77 69 6e 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 78 2c 20 79 29 3b 00 dow(dpy,.win,.parentwin,.x,.y);.
5700 00 00 49 09 09 58 53 65 6c 65 63 74 49 6e 70 75 74 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e ..I..XSelectInput(dpy,.parentwin
5720 2c 20 46 6f 63 75 73 43 68 61 6e 67 65 4d 61 73 6b 20 7c 20 53 75 62 73 74 72 75 63 74 75 72 65 ,.FocusChangeMask.|.Substructure
5740 4e 6f 74 69 66 79 4d 61 73 6b 29 3b 00 00 00 3e 09 09 69 66 20 28 58 51 75 65 72 79 54 72 65 65 NotifyMask);...>..if.(XQueryTree
5760 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 64 77 2c 20 26 77 2c 20 26 64 77 73 2c 20 (dpy,.parentwin,.&dw,.&w,.&dws,.
5780 26 64 75 29 20 26 26 20 64 77 73 29 20 7b 00 00 00 2c 09 09 09 66 6f 72 20 28 69 20 3d 20 30 3b &du).&&.dws).{...,...for.(i.=.0;
57a0 20 69 20 3c 20 64 75 20 26 26 20 64 77 73 5b 69 5d 20 21 3d 20 77 69 6e 3b 20 2b 2b 69 29 00 00 .i.<.du.&&.dws[i].!=.win;.++i)..
57c0 00 2f 09 09 09 09 58 53 65 6c 65 63 74 49 6e 70 75 74 28 64 70 79 2c 20 64 77 73 5b 69 5d 2c 20 ./....XSelectInput(dpy,.dws[i],.
57e0 46 6f 63 75 73 43 68 61 6e 67 65 4d 61 73 6b 29 3b 00 00 00 0e 09 09 09 58 46 72 65 65 28 64 77 FocusChangeMask);.......XFree(dw
5800 73 29 3b 00 00 00 03 09 09 7d 00 00 00 0e 09 09 67 72 61 62 66 6f 63 75 73 28 29 3b 00 00 00 02 s);......}......grabfocus();....
5820 09 7d 00 00 00 19 09 64 72 77 5f 72 65 73 69 7a 65 28 64 72 77 2c 20 6d 77 2c 20 6d 68 29 3b 00 .}.....drw_resize(drw,.mw,.mh);.
5840 00 00 0c 09 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 0b 73 74 61 74 ....drawmenu();....}........stat
5860 69 63 20 76 6f 69 64 00 00 00 0b 75 73 61 67 65 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 4c 09 ic.void....usage(void)....{...L.
5880 64 69 65 28 22 75 73 61 67 65 3a 20 64 6d 65 6e 75 20 5b 2d 62 66 69 76 5d 20 5b 2d 6c 20 6c 69 die("usage:.dmenu.[-bfiv].[-l.li
58a0 6e 65 73 5d 20 5b 2d 70 20 70 72 6f 6d 70 74 5d 20 5b 2d 66 6e 20 66 6f 6e 74 5d 20 5b 2d 6d 20 nes].[-p.prompt].[-fn.font].[-m.
58c0 6d 6f 6e 69 74 6f 72 5d 5c 6e 22 00 00 00 3c 09 20 20 20 20 20 20 22 20 20 20 20 20 20 20 20 20 monitor]\n"...<.......".........
58e0 20 20 20 20 5b 2d 78 20 78 6f 66 66 73 65 74 5d 20 5b 2d 79 20 79 6f 66 66 73 65 74 5d 20 5b 2d ....[-x.xoffset].[-y.yoffset].[-
5900 7a 20 77 69 64 74 68 5d 5c 6e 22 00 00 00 53 09 20 20 20 20 22 20 20 20 20 20 20 20 20 20 20 20 z.width]\n"...S....."...........
5920 20 20 5b 2d 6e 62 20 63 6f 6c 6f 72 5d 20 5b 2d 6e 66 20 63 6f 6c 6f 72 5d 20 5b 2d 73 62 20 63 ..[-nb.color].[-nf.color].[-sb.c
5940 6f 6c 6f 72 5d 20 5b 2d 73 66 20 63 6f 6c 6f 72 5d 20 5b 2d 77 20 77 69 6e 64 6f 77 69 64 5d 22 olor].[-sf.color].[-w.windowid]"
5960 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 03 69 6e 74 00 00 00 1c 6d 61 69 6e 28 69 6e 74 20 61 );....}........int....main(int.a
5980 72 67 63 2c 20 63 68 61 72 20 2a 61 72 67 76 5b 5d 29 00 00 00 01 7b 00 00 00 16 09 58 57 69 6e rgc,.char.*argv[])....{.....XWin
59a0 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 11 09 69 6e 74 20 69 2c 20 66 61 73 dowAttributes.wa;.....int.i,.fas
59c0 74 20 3d 20 30 3b 00 00 00 00 00 00 00 1b 09 66 6f 72 20 28 69 20 3d 20 31 3b 20 69 20 3c 20 61 t.=.0;.........for.(i.=.1;.i.<.a
59e0 72 67 63 3b 20 69 2b 2b 29 00 00 00 27 09 09 2f 2a 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 rgc;.i++)...'../*.these.options.
5a00 74 61 6b 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 00 00 00 45 09 09 69 66 20 28 21 73 take.no.arguments.*/...E..if.(!s
5a20 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 76 22 29 29 20 7b 20 20 20 20 20 20 2f 2a 20 trcmp(argv[i],."-v")).{....../*.
5a40 70 72 69 6e 74 73 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2a 2f 00 00 00 prints.version.information.*/...
5a60 19 09 09 09 70 75 74 73 28 22 64 6d 65 6e 75 2d 22 56 45 52 53 49 4f 4e 29 3b 00 00 00 0b 09 09 ....puts("dmenu-"VERSION);......
5a80 09 65 78 69 74 28 30 29 3b 00 00 00 4e 09 09 7d 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d .exit(0);...N..}.else.if.(!strcm
5aa0 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 62 22 29 29 20 2f 2a 20 61 70 70 65 61 72 73 20 61 74 20 p(argv[i],."-b"))./*.appears.at.
5ac0 74 68 65 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65 20 73 63 72 65 65 6e 20 2a 2f 00 00 00 0e 09 the.bottom.of.the.screen.*/.....
5ae0 09 09 74 6f 70 62 61 72 20 3d 20 30 3b 00 00 00 4e 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 ..topbar.=.0;...N..else.if.(!str
5b00 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 66 22 29 29 20 20 20 2f 2a 20 67 72 61 62 73 20 6b cmp(argv[i],."-f")).../*.grabs.k
5b20 65 79 62 6f 61 72 64 20 62 65 66 6f 72 65 20 72 65 61 64 69 6e 67 20 73 74 64 69 6e 20 2a 2f 00 eyboard.before.reading.stdin.*/.
5b40 00 00 0c 09 09 09 66 61 73 74 20 3d 20 31 3b 00 00 00 49 09 09 65 6c 73 65 20 69 66 20 28 21 73 ......fast.=.1;...I..else.if.(!s
5b60 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 69 22 29 29 20 7b 20 2f 2a 20 63 61 73 65 2d trcmp(argv[i],."-i")).{./*.case-
5b80 69 6e 73 65 6e 73 69 74 69 76 65 20 69 74 65 6d 20 6d 61 74 63 68 69 6e 67 20 2a 2f 00 00 00 1a insensitive.item.matching.*/....
5ba0 09 09 09 66 73 74 72 6e 63 6d 70 20 3d 20 73 74 72 6e 63 61 73 65 63 6d 70 3b 00 00 00 16 09 09 ...fstrncmp.=.strncasecmp;......
5bc0 09 66 73 74 72 73 74 72 20 3d 20 63 69 73 74 72 73 74 72 3b 00 00 00 1b 09 09 7d 20 65 6c 73 65 .fstrstr.=.cistrstr;......}.else
5be0 20 69 66 20 28 69 20 2b 20 31 20 3d 3d 20 61 72 67 63 29 00 00 00 0b 09 09 09 75 73 61 67 65 28 .if.(i.+.1.==.argc).......usage(
5c00 29 3b 00 00 00 27 09 09 2f 2a 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 61 6b 65 20 6f 6e );...'../*.these.options.take.on
5c20 65 20 61 72 67 75 6d 65 6e 74 20 2a 2f 00 00 00 4b 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 e.argument.*/...K..else.if.(!str
5c40 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6c 22 29 29 20 20 20 2f 2a 20 6e 75 6d 62 65 72 20 cmp(argv[i],."-l")).../*.number.
5c60 6f 66 20 6c 69 6e 65 73 20 69 6e 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 1b of.lines.in.vertical.list.*/....
5c80 09 09 09 6c 69 6e 65 73 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 3a 09 ...lines.=.atoi(argv[++i]);...:.
5ca0 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 78 22 29 .else.if.(!strcmp(argv[i],."-x")
5cc0 29 20 20 20 2f 2a 20 77 69 6e 64 6f 77 20 78 20 6f 66 66 73 65 74 20 2a 2f 00 00 00 19 09 09 09 ).../*.window.x.offset.*/.......
5ce0 64 6d 78 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 51 09 09 65 6c 73 65 dmx.=.atoi(argv[++i]);...Q..else
5d00 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 79 22 29 29 20 20 20 2f .if.(!strcmp(argv[i],."-y")).../
5d20 2a 20 77 69 6e 64 6f 77 20 79 20 6f 66 66 73 65 74 20 28 66 72 6f 6d 20 62 6f 74 74 6f 6d 20 75 *.window.y.offset.(from.bottom.u
5d40 70 20 69 66 20 2d 62 29 20 2a 2f 00 00 00 19 09 09 09 64 6d 79 20 3d 20 61 74 6f 69 28 61 72 67 p.if.-b).*/.......dmy.=.atoi(arg
5d60 76 5b 2b 2b 69 5d 29 3b 00 00 00 3f 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 v[++i]);...?..else.if.(!strcmp(a
5d80 72 67 76 5b 69 5d 2c 20 22 2d 7a 22 29 29 20 20 20 2f 2a 20 6d 61 6b 65 20 64 6d 65 6e 75 20 74 rgv[i],."-z")).../*.make.dmenu.t
5da0 68 69 73 20 77 69 64 65 20 2a 2f 00 00 00 19 09 09 09 64 6d 77 20 3d 20 61 74 6f 69 28 61 72 67 his.wide.*/.......dmw.=.atoi(arg
5dc0 76 5b 2b 2b 69 5d 29 3b 00 00 00 22 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 v[++i]);..."..else.if.(!strcmp(a
5de0 72 67 76 5b 69 5d 2c 20 22 2d 6d 22 29 29 00 00 00 19 09 09 09 6d 6f 6e 20 3d 20 61 74 6f 69 28 rgv[i],."-m")).......mon.=.atoi(
5e00 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 4d 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d argv[++i]);...M..else.if.(!strcm
5e20 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 70 22 29 29 20 20 20 2f 2a 20 61 64 64 73 20 70 72 6f 6d p(argv[i],."-p")).../*.adds.prom
5e40 70 74 20 74 6f 20 6c 65 66 74 20 6f 66 20 69 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 16 pt.to.left.of.input.field.*/....
5e60 09 09 09 70 72 6f 6d 70 74 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 3b 09 09 65 6c 73 65 ...prompt.=.argv[++i];...;..else
5e80 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 66 6e 22 29 29 20 20 2f .if.(!strcmp(argv[i],."-fn"))../
5ea0 2a 20 66 6f 6e 74 20 6f 72 20 66 6f 6e 74 20 73 65 74 20 2a 2f 00 00 00 18 09 09 09 66 6f 6e 74 *.font.or.font.set.*/.......font
5ec0 73 5b 30 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 42 09 09 65 6c 73 65 20 69 66 20 28 s[0].=.argv[++i];...B..else.if.(
5ee0 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6e 62 22 29 29 20 20 2f 2a 20 6e 6f 72 !strcmp(argv[i],."-nb"))../*.nor
5f00 6d 61 6c 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 29 09 09 09 63 6f mal.background.color.*/...)...co
5f20 6c 6f 72 73 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 6f 6c 42 67 5d 20 3d 20 61 72 67 76 5b 2b lors[SchemeNorm][ColBg].=.argv[+
5f40 2b 69 5d 3b 00 00 00 42 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b +i];...B..else.if.(!strcmp(argv[
5f60 69 5d 2c 20 22 2d 6e 66 22 29 29 20 20 2f 2a 20 6e 6f 72 6d 61 6c 20 66 6f 72 65 67 72 6f 75 6e i],."-nf"))../*.normal.foregroun
5f80 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 29 09 09 09 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 4e 6f d.color.*/...)...colors[SchemeNo
5fa0 72 6d 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 44 09 09 65 6c 73 rm][ColFg].=.argv[++i];...D..els
5fc0 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 73 62 22 29 29 20 20 e.if.(!strcmp(argv[i],."-sb"))..
5fe0 2f 2a 20 73 65 6c 65 63 74 65 64 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 /*.selected.background.color.*/.
6000 00 00 28 09 09 09 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 42 67 5d 20 3d ..(...colors[SchemeSel][ColBg].=
6020 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 44 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d .argv[++i];...D..else.if.(!strcm
6040 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 73 66 22 29 29 20 20 2f 2a 20 73 65 6c 65 63 74 65 64 20 p(argv[i],."-sf"))../*.selected.
6060 66 6f 72 65 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 28 09 09 09 63 6f 6c 6f 72 73 foreground.color.*/...(...colors
6080 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 [SchemeSel][ColFg].=.argv[++i];.
60a0 00 00 3e 09 09 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 ..>..else.if.(!strcmp(argv[i],."
60c0 2d 77 22 29 29 20 20 20 2f 2a 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 69 64 20 2a -w")).../*.embedding.window.id.*
60e0 2f 00 00 00 15 09 09 09 65 6d 62 65 64 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 23 09 09 /.......embed.=.argv[++i];...#..
6100 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 62 77 22 29 else.if.(!strcmp(argv[i],."-bw")
6120 29 00 00 00 35 09 09 09 62 6f 72 64 65 72 5f 77 69 64 74 68 20 3d 20 61 74 6f 69 28 61 72 67 76 )...5...border_width.=.atoi(argv
6140 5b 2b 2b 69 5d 29 3b 20 2f 2a 20 62 6f 72 64 65 72 20 77 69 64 74 68 20 2a 2f 00 00 00 06 09 09 [++i]);./*.border.width.*/......
6160 65 6c 73 65 00 00 00 0b 09 09 09 75 73 61 67 65 28 29 3b 00 00 00 00 00 00 00 34 09 69 66 20 28 else.......usage();.......4.if.(
6180 21 73 65 74 6c 6f 63 61 6c 65 28 4c 43 5f 43 54 59 50 45 2c 20 22 22 29 20 7c 7c 20 21 58 53 75 !setlocale(LC_CTYPE,."").||.!XSu
61a0 70 70 6f 72 74 73 4c 6f 63 61 6c 65 28 29 29 00 00 00 30 09 09 66 70 75 74 73 28 22 77 61 72 6e pportsLocale())...0..fputs("warn
61c0 69 6e 67 3a 20 6e 6f 20 6c 6f 63 61 6c 65 20 73 75 70 70 6f 72 74 5c 6e 22 2c 20 73 74 64 65 72 ing:.no.locale.support\n",.stder
61e0 72 29 3b 00 00 00 21 09 69 66 20 28 21 28 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 79 r);...!.if.(!(dpy.=.XOpenDisplay
6200 28 4e 55 4c 4c 29 29 29 00 00 00 1d 09 09 64 69 65 28 22 63 61 6e 6e 6f 74 20 6f 70 65 6e 20 64 (NULL)))......die("cannot.open.d
6220 69 73 70 6c 61 79 22 29 3b 00 00 00 1d 09 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 isplay");.....screen.=.DefaultSc
6240 72 65 65 6e 28 64 70 79 29 3b 00 00 00 20 09 72 6f 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 reen(dpy);.....root.=.RootWindow
6260 28 64 70 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 35 09 69 66 20 28 21 65 6d 62 65 64 20 7c 7c (dpy,.screen);...5.if.(!embed.||
6280 20 21 28 70 61 72 65 6e 74 77 69 6e 20 3d 20 73 74 72 74 6f 6c 28 65 6d 62 65 64 2c 20 4e 55 4c .!(parentwin.=.strtol(embed,.NUL
62a0 4c 2c 20 30 29 29 29 00 00 00 13 09 09 70 61 72 65 6e 74 77 69 6e 20 3d 20 72 6f 6f 74 3b 00 00 L,.0)))......parentwin.=.root;..
62c0 00 30 09 69 66 20 28 21 58 47 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 .0.if.(!XGetWindowAttributes(dpy
62e0 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 77 61 29 29 00 00 00 39 09 09 64 69 65 28 22 63 6f 75 ,.parentwin,.&wa))...9..die("cou
6300 6c 64 20 6e 6f 74 20 67 65 74 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 61 74 74 72 ld.not.get.embedding.window.attr
6320 69 62 75 74 65 73 3a 20 30 78 25 6c 78 22 2c 00 00 00 11 09 09 20 20 20 20 70 61 72 65 6e 74 77 ibutes:.0x%lx",..........parentw
6340 69 6e 29 3b 00 00 00 3a 09 64 72 77 20 3d 20 64 72 77 5f 63 72 65 61 74 65 28 64 70 79 2c 20 73 in);...:.drw.=.drw_create(dpy,.s
6360 63 72 65 65 6e 2c 20 72 6f 6f 74 2c 20 77 61 2e 77 69 64 74 68 2c 20 77 61 2e 68 65 69 67 68 74 creen,.root,.wa.width,.wa.height
6380 29 3b 00 00 00 34 09 69 66 20 28 21 64 72 77 5f 66 6f 6e 74 73 65 74 5f 63 72 65 61 74 65 28 64 );...4.if.(!drw_fontset_create(d
63a0 72 77 2c 20 66 6f 6e 74 73 2c 20 4c 45 4e 47 54 48 28 66 6f 6e 74 73 29 29 29 00 00 00 23 09 09 rw,.fonts,.LENGTH(fonts)))...#..
63c0 64 69 65 28 22 6e 6f 20 66 6f 6e 74 73 20 63 6f 75 6c 64 20 62 65 20 6c 6f 61 64 65 64 2e 22 29 die("no.fonts.could.be.loaded.")
63e0 3b 00 00 00 25 09 6c 72 70 61 64 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 68 6f ;...%.lrpad.=.drw->fonts->h.+.ho
6400 72 69 7a 70 61 64 62 61 72 3b 00 00 00 00 00 00 00 12 23 69 66 64 65 66 20 5f 5f 4f 70 65 6e 42 rizpadbar;........#ifdef.__OpenB
6420 53 44 5f 5f 00 00 00 27 09 69 66 20 28 70 6c 65 64 67 65 28 22 73 74 64 69 6f 20 72 70 61 74 68 SD__...'.if.(pledge("stdio.rpath
6440 22 2c 20 4e 55 4c 4c 29 20 3d 3d 20 2d 31 29 00 00 00 10 09 09 64 69 65 28 22 70 6c 65 64 67 65 ",.NULL).==.-1)......die("pledge
6460 22 29 3b 00 00 00 06 23 65 6e 64 69 66 00 00 00 00 00 00 00 1a 09 69 66 20 28 66 61 73 74 20 26 ");....#endif.........if.(fast.&
6480 26 20 21 69 73 61 74 74 79 28 30 29 29 20 7b 00 00 00 11 09 09 67 72 61 62 6b 65 79 62 6f 61 72 &.!isatty(0)).{......grabkeyboar
64a0 64 28 29 3b 00 00 00 0e 09 09 72 65 61 64 73 74 64 69 6e 28 29 3b 00 00 00 09 09 7d 20 65 6c 73 d();......readstdin();.....}.els
64c0 65 20 7b 00 00 00 0e 09 09 72 65 61 64 73 74 64 69 6e 28 29 3b 00 00 00 11 09 09 67 72 61 62 6b e.{......readstdin();......grabk
64e0 65 79 62 6f 61 72 64 28 29 3b 00 00 00 02 09 7d 00 00 00 09 09 73 65 74 75 70 28 29 3b 00 00 00 eyboard();.....}.....setup();...
6500 07 09 72 75 6e 28 29 3b 00 00 00 00 00 00 00 1c 09 72 65 74 75 72 6e 20 31 3b 20 2f 2a 20 75 6e ..run();.........return.1;./*.un
6520 72 65 61 63 68 61 62 6c 65 20 2a 2f 35 81 f5 18 00 00 00 00 0a 00 00 00 0f 00 00 00 94 03 00 00 reachable.*/5...................
6540 01 00 00 00 96 03 00 00 02 00 00 00 e7 00 00 00 00 00 00 00 28 58 00 00 00 00 00 00 a5 5e 00 00 ....................(X.......^..
6560 00 00 00 00 35 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 08 00 00 02 f6 ....5._.........................
6580 00 00 00 02 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66c0 00 00 00 00 00 00 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00 0b 00 00 00 01 00 00 00 00 00 00 ................................
66e0 00 76 00 00 00 04 00 00 00 00 69 a1 0f 9b 04 01 00 00 00 00 00 f5 18 00 00 02 f5 00 00 02 f7 00 .v........i.....................
6700 00 03 a2 00 00 00 01 00 00 00 15 20 20 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 3b .............bh.=.drw->fonts->h;
6720 35 81 f5 18 00 00 00 00 f5 02 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 5...............................
6740 04 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 08 .H......................5._.....
6760 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 02 f6 00 00 00 03 00 00 00 00 ff ff ff ff ................................
6780 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 ................................
68c0 00 02 00 00 00 00 00 00 00 0b 00 00 00 01 00 00 00 00 00 00 00 76 00 00 00 04 00 00 00 00 69 a1 .....................v........i.
68e0 0f 9b 04 01 00 00 00 00 00 f5 18 00 00 02 f6 00 00 02 f8 00 00 03 a3 00 00 00 01 00 00 00 04 20 ................................
6900 20 2f 2f f5 18 00 00 02 f6 00 00 02 f8 00 00 03 a2 00 00 00 00 35 81 f5 18 00 00 00 00 f6 02 00 .//..................5..........
6920 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 1a 48 00 00 00 00 00 00 00 00 00 ......................H.........
6940 00 00 00 00 00 05 00 00 00 00 00 00 00 f5 18 00 00 00 00 f6 02 00 00 02 00 00 00 00 00 00 00 02 ................................
6960 00 00 00 00 00 00 00 03 00 00 00 1c 48 00 00 00 00 00 00 02 00 00 00 00 00 00 00 03 00 00 00 00 ............H...................
6980 00 00 00 f5 18 00 00 00 00 f6 02 00 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 0e 00 00 ................................
69a0 00 1e 48 00 00 00 00 00 00 01 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 f5 18 00 00 00 00 f6 ..H.............................
69c0 02 00 00 11 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 11 00 00 00 2b 48 00 00 00 00 00 00 01 .......................+H.......
69e0 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 00 00 0b 00 00 00 00 00 ...............5._..............
6a00 00 00 00 00 00 00 0a 00 00 02 f7 00 00 00 21 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 ..............!.................
6a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00 ................................
6b60 0b 00 00 00 01 00 00 00 00 00 00 00 76 00 00 00 04 00 00 00 00 69 a1 0f a7 04 01 00 00 00 04 00 ............v........i..........
6b80 f5 18 00 00 02 f5 00 00 02 f7 00 00 03 a3 00 00 00 01 00 00 00 17 20 20 2f 2f 62 68 20 3d 20 64 ........................//bh.=.d
6ba0 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 3b 35 81 f5 18 00 00 00 00 f5 02 00 00 04 00 00 00 00 00 00 rw->fonts->h;5..................
6bc0 00 00 00 00 00 00 00 00 00 01 00 00 00 06 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ..............H.................
6be0 00 00 00 00 00 35 81 5f d0 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 02 .....5._........................
6c00 f7 00 00 00 21 00 00 00 00 ff ff ff ff 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....!...........................
6c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d40 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00 0b 00 00 00 01 00 00 00 00 00 ................................
6d60 00 00 76 00 00 00 04 00 00 00 00 69 a1 0f dc 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 ..v........i....................
6d80 00 00 00 00 00 00 03 a3 00 00 00 39 2f 2a 20 53 65 65 20 4c 49 43 45 4e 53 45 20 66 69 6c 65 20 ...........9/*.See.LICENSE.file.
6da0 66 6f 72 20 63 6f 70 79 72 69 67 68 74 20 61 6e 64 20 6c 69 63 65 6e 73 65 20 64 65 74 61 69 6c for.copyright.and.license.detail
6dc0 73 2e 20 2a 2f 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 63 74 79 70 65 2e 68 3e 00 00 00 13 23 s..*/....#include.<ctype.h>....#
6de0 69 6e 63 6c 75 64 65 20 3c 6c 6f 63 61 6c 65 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c include.<locale.h>....#include.<
6e00 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 stdio.h>....#include.<stdlib.h>.
6e20 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 14 23 69 6e 63 6c 75 ...#include.<string.h>....#inclu
6e40 64 65 20 3c 73 74 72 69 6e 67 73 2e 68 3e 00 00 00 11 23 69 6e 63 6c 75 64 65 20 3c 74 69 6d 65 de.<strings.h>....#include.<time
6e60 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 00 00 00 .h>....#include.<unistd.h>......
6e80 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 61 74 6f 6d 2e 68 3e 00 00 00 15 23 69 6e 63 ..#include.<X11/Xatom.h>....#inc
6ea0 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 lude.<X11/Xlib.h>....#include.<X
6ec0 31 31 2f 58 75 74 69 6c 2e 68 3e 00 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 11/Xutil.h>....#ifdef.XINERAMA..
6ee0 00 24 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 65 78 74 65 6e 73 69 6f 6e 73 2f 58 69 6e 65 72 .$#include.<X11/extensions/Xiner
6f00 61 6d 61 2e 68 3e 00 00 00 06 23 65 6e 64 69 66 00 00 00 18 23 69 6e 63 6c 75 64 65 20 3c 58 31 ama.h>....#endif....#include.<X1
6f20 31 2f 58 66 74 2f 58 66 74 2e 68 3e 00 00 00 00 00 00 00 10 23 69 6e 63 6c 75 64 65 20 22 64 72 1/Xft/Xft.h>........#include."dr
6f40 77 2e 68 22 00 00 00 11 23 69 6e 63 6c 75 64 65 20 22 75 74 69 6c 2e 68 22 00 00 00 00 00 00 00 w.h"....#include."util.h".......
6f60 0c 2f 2a 20 6d 61 63 72 6f 73 20 2a 2f 00 00 00 50 23 64 65 66 69 6e 65 20 49 4e 54 45 52 53 45 ./*.macros.*/...P#define.INTERSE
6f80 43 54 28 78 2c 20 79 2c 20 77 2c 20 68 2c 20 72 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 CT(x,.y,.w,.h,.r)...............
6fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6fc0 5c 00 00 00 50 20 20 28 4d 41 58 28 30 2c 20 4d 49 4e 28 28 78 29 20 2b 20 28 77 29 2c 20 28 72 \...P..(MAX(0,.MIN((x).+.(w),.(r
6fe0 29 2e 78 5f 6f 72 67 20 2b 20 28 72 29 2e 77 69 64 74 68 29 20 2d 20 4d 41 58 28 28 78 29 2c 20 ).x_org.+.(r).width).-.MAX((x),.
7000 28 72 29 2e 78 5f 6f 72 67 29 29 20 2a 20 20 20 20 20 20 20 5c 00 00 00 48 20 20 20 4d 41 58 28 (r).x_org)).*.......\...H...MAX(
7020 30 2c 20 4d 49 4e 28 28 79 29 20 2b 20 28 68 29 2c 20 28 72 29 2e 79 5f 6f 72 67 20 2b 20 28 72 0,.MIN((y).+.(h),.(r).y_org.+.(r
7040 29 2e 68 65 69 67 68 74 29 20 2d 20 4d 41 58 28 28 79 29 2c 20 28 72 29 2e 79 5f 6f 72 67 29 29 ).height).-.MAX((y),.(r).y_org))
7060 29 00 00 00 39 23 64 65 66 69 6e 65 20 54 45 58 54 57 28 58 29 20 28 64 72 77 5f 66 6f 6e 74 73 )...9#define.TEXTW(X).(drw_fonts
7080 65 74 5f 67 65 74 77 69 64 74 68 28 64 72 77 2c 20 28 58 29 29 20 2b 20 6c 72 70 61 64 29 00 00 et_getwidth(drw,.(X)).+.lrpad)..
70a0 00 00 00 00 00 0b 2f 2a 20 65 6e 75 6d 73 20 2a 2f 00 00 00 4a 65 6e 75 6d 20 7b 20 53 63 68 65 ....../*.enums.*/...Jenum.{.Sche
70c0 6d 65 4e 6f 72 6d 2c 20 53 63 68 65 6d 65 53 65 6c 2c 20 53 63 68 65 6d 65 4f 75 74 2c 20 53 63 meNorm,.SchemeSel,.SchemeOut,.Sc
70e0 68 65 6d 65 4c 61 73 74 20 7d 3b 20 2f 2a 20 63 6f 6c 6f 72 20 73 63 68 65 6d 65 73 20 2a 2f 00 hemeLast.};./*.color.schemes.*/.
7100 00 00 00 00 00 00 0d 73 74 72 75 63 74 20 69 74 65 6d 20 7b 00 00 00 0d 20 20 63 68 61 72 20 2a .......struct.item.{......char.*
7120 74 65 78 74 3b 00 00 00 1c 20 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 6c 65 66 74 2c 20 2a 72 text;......struct.item.*left,.*r
7140 69 67 68 74 3b 00 00 00 0a 20 20 69 6e 74 20 6f 75 74 3b 00 00 00 02 7d 3b 00 00 00 00 00 00 00 ight;......int.out;....};.......
7160 1e 73 74 61 74 69 63 20 63 68 61 72 20 74 65 78 74 5b 42 55 46 53 49 5a 5d 20 3d 20 22 22 3b 00 .static.char.text[BUFSIZ].=."";.
7180 00 00 13 73 74 61 74 69 63 20 63 68 61 72 20 2a 65 6d 62 65 64 3b 00 00 00 16 73 74 61 74 69 63 ...static.char.*embed;....static
71a0 20 69 6e 74 20 62 68 2c 20 6d 77 2c 20 6d 68 3b 00 00 00 34 73 74 61 74 69 63 20 69 6e 74 20 64 .int.bh,.mw,.mh;...4static.int.d
71c0 6d 78 20 3d 20 30 3b 20 2f 2a 20 70 75 74 20 64 6d 65 6e 75 20 61 74 20 74 68 69 73 20 78 20 6f mx.=.0;./*.put.dmenu.at.this.x.o
71e0 66 66 73 65 74 20 2a 2f 00 00 00 4e 73 74 61 74 69 63 20 69 6e 74 20 64 6d 79 20 3d 20 30 3b 20 ffset.*/...Nstatic.int.dmy.=.0;.
7200 2f 2a 20 70 75 74 20 64 6d 65 6e 75 20 61 74 20 74 68 69 73 20 79 20 6f 66 66 73 65 74 20 28 6d /*.put.dmenu.at.this.y.offset.(m
7220 65 61 73 75 72 65 64 20 66 72 6f 6d 20 74 68 65 20 62 6f 74 74 6f 6d 20 69 66 00 00 00 26 20 20 easured.from.the.bottom.if...&..
7240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 70 62 61 72 20 69 73 20 30 .....................topbar.is.0
7260 29 20 2a 2f 00 00 00 37 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 6d 77 20 ).*/...7static.unsigned.int.dmw.
7280 3d 20 30 3b 20 2f 2a 20 6d 61 6b 65 20 64 6d 65 6e 75 20 74 68 69 73 20 77 69 64 65 20 2a 2f 00 =.0;./*.make.dmenu.this.wide.*/.
72a0 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 69 6e 70 75 74 77 20 3d 20 30 2c 20 70 72 6f 6d 70 74 ...static.int.inputw.=.0,.prompt
72c0 77 3b 00 00 00 35 73 74 61 74 69 63 20 69 6e 74 20 6c 72 70 61 64 3b 20 2f 2a 20 73 75 6d 20 6f w;...5static.int.lrpad;./*.sum.o
72e0 66 20 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 70 61 64 64 69 6e 67 20 2a 2f 00 00 00 15 73 f.left.and.right.padding.*/....s
7300 74 61 74 69 63 20 73 69 7a 65 5f 74 20 63 75 72 73 6f 72 3b 00 00 00 21 73 74 61 74 69 63 20 73 tatic.size_t.cursor;...!static.s
7320 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 73 20 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 61 truct.item.*items.=.NULL;...'sta
7340 74 69 63 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 6d 61 74 63 68 65 73 2c 20 2a 6d 61 74 63 68 tic.struct.item.*matches,.*match
7360 65 6e 64 3b 00 00 00 2d 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 70 72 65 76 end;...-static.struct.item.*prev
7380 2c 20 2a 63 75 72 72 2c 20 2a 6e 65 78 74 2c 20 2a 73 65 6c 3b 00 00 00 1c 73 74 61 74 69 63 20 ,.*curr,.*next,.*sel;....static.
73a0 69 6e 74 20 6d 6f 6e 20 3d 20 2d 31 2c 20 73 63 72 65 65 6e 3b 00 00 00 00 00 00 00 17 73 74 61 int.mon.=.-1,.screen;........sta
73c0 74 69 63 20 41 74 6f 6d 20 63 6c 69 70 2c 20 75 74 66 38 3b 00 00 00 14 73 74 61 74 69 63 20 44 tic.Atom.clip,.utf8;....static.D
73e0 69 73 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 23 73 74 61 74 69 63 20 57 69 6e 64 6f 77 20 72 6f isplay.*dpy;...#static.Window.ro
7400 6f 74 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 77 69 6e 3b 00 00 00 0f 73 74 61 74 69 63 20 58 49 ot,.parentwin,.win;....static.XI
7420 43 20 78 69 63 3b 00 00 00 00 00 00 00 10 73 74 61 74 69 63 20 44 72 77 20 2a 64 72 77 3b 00 00 C.xic;........static.Drw.*drw;..
7440 00 1f 73 74 61 74 69 63 20 43 6c 72 20 2a 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4c 61 73 74 5d ..static.Clr.*scheme[SchemeLast]
7460 3b 00 00 00 00 00 00 00 13 23 69 6e 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 00 00 00 00 ;........#include."config.h"....
7480 00 00 00 45 73 74 61 74 69 63 20 69 6e 74 20 28 2a 66 73 74 72 6e 63 6d 70 29 28 63 6f 6e 73 74 ...Estatic.int.(*fstrncmp)(const
74a0 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 73 69 7a 65 5f 74 29 20 3d .char.*,.const.char.*,.size_t).=
74c0 20 73 74 72 6e 63 6d 70 3b 00 00 00 3d 73 74 61 74 69 63 20 63 68 61 72 20 2a 28 2a 66 73 74 72 .strncmp;...=static.char.*(*fstr
74e0 73 74 72 29 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 str)(const.char.*,.const.char.*)
7500 20 3d 20 73 74 72 73 74 72 3b 00 00 00 00 00 00 00 42 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 .=.strstr;.......Bstatic.unsigne
7520 64 20 69 6e 74 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 d.int.textw_clamp(const.char.*st
7540 72 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6e 29 20 7b 00 00 00 43 20 20 75 6e 73 69 67 6e r,.unsigned.int.n).{...C..unsign
7560 65 64 20 69 6e 74 20 77 20 3d 20 64 72 77 5f 66 6f 6e 74 73 65 74 5f 67 65 74 77 69 64 74 68 5f ed.int.w.=.drw_fontset_getwidth_
7580 63 6c 61 6d 70 28 64 72 77 2c 20 73 74 72 2c 20 6e 29 20 2b 20 6c 72 70 61 64 3b 00 00 00 13 20 clamp(drw,.str,.n).+.lrpad;.....
75a0 20 72 65 74 75 72 6e 20 4d 49 4e 28 77 2c 20 6e 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 .return.MIN(w,.n);....}.......=s
75c0 74 61 74 69 63 20 76 6f 69 64 20 61 70 70 65 6e 64 69 74 65 6d 28 73 74 72 75 63 74 20 69 74 65 tatic.void.appenditem(struct.ite
75e0 6d 20 2a 69 74 65 6d 2c 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 2a 6c 69 73 74 2c 00 00 00 2c m.*item,.struct.item.**list,...,
7600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 69 74 .......................struct.it
7620 65 6d 20 2a 2a 6c 61 73 74 29 20 7b 00 00 00 0c 20 20 69 66 20 28 2a 6c 61 73 74 29 00 00 00 1a em.**last).{......if.(*last)....
7640 20 20 20 20 28 2a 6c 61 73 74 29 2d 3e 72 69 67 68 74 20 3d 20 69 74 65 6d 3b 00 00 00 06 20 20 ....(*last)->right.=.item;......
7660 65 6c 73 65 00 00 00 11 20 20 20 20 2a 6c 69 73 74 20 3d 20 69 74 65 6d 3b 00 00 00 00 00 00 00 else........*list.=.item;.......
7680 15 20 20 69 74 65 6d 2d 3e 6c 65 66 74 20 3d 20 2a 6c 61 73 74 3b 00 00 00 15 20 20 69 74 65 6d ...item->left.=.*last;......item
76a0 2d 3e 72 69 67 68 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 0f 20 20 2a 6c 61 73 74 20 3d 20 69 74 65 ->right.=.NULL;......*last.=.ite
76c0 6d 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1f 73 74 61 74 69 63 20 76 6f 69 64 20 63 61 6c 63 6f m;....}........static.void.calco
76e0 66 66 73 65 74 73 28 76 6f 69 64 29 20 7b 00 00 00 0b 20 20 69 6e 74 20 69 2c 20 6e 3b 00 00 00 ffsets(void).{......int.i,.n;...
7700 00 00 00 00 10 20 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 13 20 20 20 20 6e 20 3d .......if.(lines.>.0)........n.=
7720 20 6c 69 6e 65 73 20 2a 20 62 68 3b 00 00 00 06 20 20 65 6c 73 65 00 00 00 3a 20 20 20 20 6e 20 .lines.*.bh;......else...:....n.
7740 3d 20 6d 77 20 2d 20 28 70 72 6f 6d 70 74 77 20 2b 20 69 6e 70 75 74 77 20 2b 20 54 45 58 54 57 =.mw.-.(promptw.+.inputw.+.TEXTW
7760 28 22 3c 22 29 20 2b 20 54 45 58 54 57 28 22 3e 22 29 29 3b 00 00 00 48 20 20 2f 2a 20 63 61 6c ("<").+.TEXTW(">"));...H../*.cal
7780 63 75 6c 61 74 65 20 77 68 69 63 68 20 69 74 65 6d 73 20 77 69 6c 6c 20 62 65 67 69 6e 20 74 68 culate.which.items.will.begin.th
77a0 65 20 6e 65 78 74 20 70 61 67 65 20 61 6e 64 20 70 72 65 76 69 6f 75 73 20 70 61 67 65 20 2a 2f e.next.page.and.previous.page.*/
77c0 00 00 00 34 20 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 6e 65 78 74 20 3d 20 63 75 72 72 3b 20 6e ...4..for.(i.=.0,.next.=.curr;.n
77e0 65 78 74 3b 20 6e 65 78 74 20 3d 20 6e 65 78 74 2d 3e 72 69 67 68 74 29 00 00 00 41 20 20 20 20 ext;.next.=.next->right)...A....
7800 69 66 20 28 28 69 20 2b 3d 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 3f 20 62 68 20 3a 20 74 65 78 if.((i.+=.(lines.>.0).?.bh.:.tex
7820 74 77 5f 63 6c 61 6d 70 28 6e 65 78 74 2d 3e 74 65 78 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 tw_clamp(next->text,.n)).>.n)...
7840 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 41 20 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 70 .......break;...A..for.(i.=.0,.p
7860 72 65 76 20 3d 20 63 75 72 72 3b 20 70 72 65 76 20 26 26 20 70 72 65 76 2d 3e 6c 65 66 74 3b 20 rev.=.curr;.prev.&&.prev->left;.
7880 70 72 65 76 20 3d 20 70 72 65 76 2d 3e 6c 65 66 74 29 00 00 00 47 20 20 20 20 69 66 20 28 28 69 prev.=.prev->left)...G....if.((i
78a0 20 2b 3d 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 3f 20 62 68 20 3a 20 74 65 78 74 77 5f 63 6c 61 .+=.(lines.>.0).?.bh.:.textw_cla
78c0 6d 70 28 70 72 65 76 2d 3e 6c 65 66 74 2d 3e 74 65 78 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 mp(prev->left->text,.n)).>.n)...
78e0 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 .......break;....}........static
7900 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 28 76 6f 69 64 29 20 7b 00 00 00 0b 20 20 73 69 7a 65 5f .void.cleanup(void).{......size_
7920 74 20 69 3b 00 00 00 00 00 00 00 24 20 20 58 55 6e 67 72 61 62 4b 65 79 62 6f 61 72 64 28 64 70 t.i;.......$..XUngrabKeyboard(dp
7940 79 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 22 20 20 66 6f 72 20 28 69 20 3d 20 30 y,.CurrentTime);..."..for.(i.=.0
7960 3b 20 69 20 3c 20 53 63 68 65 6d 65 4c 61 73 74 3b 20 69 2b 2b 29 00 00 00 14 20 20 20 20 66 72 ;.i.<.SchemeLast;.i++)........fr
7980 65 65 28 73 63 68 65 6d 65 5b 69 5d 29 3b 00 00 00 2a 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 ee(scheme[i]);...*..for.(i.=.0;.
79a0 69 74 65 6d 73 20 26 26 20 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 3b 20 2b 2b 69 29 00 00 00 18 items.&&.items[i].text;.++i)....
79c0 20 20 20 20 66 72 65 65 28 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 29 3b 00 00 00 0e 20 20 66 72 ....free(items[i].text);......fr
79e0 65 65 28 69 74 65 6d 73 29 3b 00 00 00 10 20 20 64 72 77 5f 66 72 65 65 28 64 72 77 29 3b 00 00 ee(items);......drw_free(drw);..
7a00 00 14 20 20 58 53 79 6e 63 28 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 15 20 20 58 43 6c 6f ....XSync(dpy,.False);......XClo
7a20 73 65 44 69 73 70 6c 61 79 28 64 70 79 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 35 73 74 61 74 seDisplay(dpy);....}.......5stat
7a40 69 63 20 63 68 61 72 20 2a 63 69 73 74 72 73 74 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 68 2c ic.char.*cistrstr(const.char.*h,
7a60 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 29 20 7b 00 00 00 0b 20 20 73 69 7a 65 5f 74 20 69 3b .const.char.*n).{......size_t.i;
7a80 00 00 00 00 00 00 00 0c 20 20 69 66 20 28 21 6e 5b 30 5d 29 00 00 00 15 20 20 20 20 72 65 74 75 ..........if.(!n[0])........retu
7aa0 72 6e 20 28 63 68 61 72 20 2a 29 68 3b 00 00 00 00 00 00 00 13 20 20 66 6f 72 20 28 3b 20 2a 68 rn.(char.*)h;..........for.(;.*h
7ac0 3b 20 2b 2b 68 29 20 7b 00 00 00 0f 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 00 00 00 4e 20 ;.++h).{........for.(i.=.0;...N.
7ae0 20 20 20 20 20 20 20 20 6e 5b 69 5d 20 26 26 20 74 6f 6c 6f 77 65 72 28 28 75 6e 73 69 67 6e 65 ........n[i].&&.tolower((unsigne
7b00 64 20 63 68 61 72 29 6e 5b 69 5d 29 20 3d 3d 20 74 6f 6c 6f 77 65 72 28 28 75 6e 73 69 67 6e 65 d.char)n[i]).==.tolower((unsigne
7b20 64 20 63 68 61 72 29 68 5b 69 5d 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 2b 2b 69 29 00 00 d.char)h[i]);.............++i)..
7b40 00 07 20 20 20 20 20 20 3b 00 00 00 15 20 20 20 20 69 66 20 28 6e 5b 69 5d 20 3d 3d 20 27 5c 30 ........;........if.(n[i].==.'\0
7b60 27 29 00 00 00 17 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 63 68 61 72 20 2a 29 68 3b 00 00 00 ')..........return.(char.*)h;...
7b80 03 20 20 7d 00 00 00 0e 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 00 00 00 01 7d 00 00 00 00 00 ...}......return.NULL;....}.....
7ba0 00 00 3d 73 74 61 74 69 63 20 69 6e 74 20 64 72 61 77 69 74 65 6d 28 73 74 72 75 63 74 20 69 74 ..=static.int.drawitem(struct.it
7bc0 65 6d 20 2a 69 74 65 6d 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e 74 20 77 29 20 7b em.*item,.int.x,.int.y,.int.w).{
7be0 00 00 00 12 20 20 69 66 20 28 69 74 65 6d 20 3d 3d 20 73 65 6c 29 00 00 00 2a 20 20 20 20 64 72 ......if.(item.==.sel)...*....dr
7c00 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 53 65 w_setscheme(drw,.scheme[SchemeSe
7c20 6c 5d 29 3b 00 00 00 15 20 20 65 6c 73 65 20 69 66 20 28 69 74 65 6d 2d 3e 6f 75 74 29 00 00 00 l]);......else.if.(item->out)...
7c40 2a 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 *....drw_setscheme(drw,.scheme[S
7c60 63 68 65 6d 65 4f 75 74 5d 29 3b 00 00 00 06 20 20 65 6c 73 65 00 00 00 2b 20 20 20 20 64 72 77 chemeOut]);......else...+....drw
7c80 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 _setscheme(drw,.scheme[SchemeNor
7ca0 6d 5d 29 3b 00 00 00 00 00 00 00 3e 20 20 72 65 74 75 72 6e 20 64 72 77 5f 74 65 78 74 28 64 72 m]);.......>..return.drw_text(dr
7cc0 77 2c 20 78 2c 20 79 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 69 74 65 6d 2d w,.x,.y,.w,.bh,.lrpad./.2,.item-
7ce0 3e 74 65 78 74 2c 20 30 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1c 73 74 61 74 69 63 20 76 6f >text,.0);....}........static.vo
7d00 69 64 20 64 72 61 77 6d 65 6e 75 28 76 6f 69 64 29 20 7b 00 00 00 16 20 20 75 6e 73 69 67 6e 65 id.drawmenu(void).{......unsigne
7d20 64 20 69 6e 74 20 63 75 72 70 6f 73 3b 00 00 00 14 20 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a d.int.curpos;......struct.item.*
7d40 69 74 65 6d 3b 00 00 00 16 20 20 69 6e 74 20 78 20 3d 20 30 2c 20 79 20 3d 20 30 2c 20 77 3b 00 item;......int.x.=.0,.y.=.0,.w;.
7d60 00 00 00 00 00 00 29 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 ......)..drw_setscheme(drw,.sche
7d80 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 24 20 20 64 72 77 5f 72 65 63 74 28 64 me[SchemeNorm]);...$..drw_rect(d
7da0 72 77 2c 20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 2c 20 31 2c 20 31 29 3b 00 00 00 00 00 00 00 1a rw,.0,.0,.mw,.mh,.1,.1);........
7dc0 20 20 69 66 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 20 7b 00 00 00 2a 20 20 ..if.(prompt.&&.*prompt).{...*..
7de0 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 ..drw_setscheme(drw,.scheme[Sche
7e00 6d 65 53 65 6c 5d 29 3b 00 00 00 3f 20 20 20 20 78 20 3d 20 64 72 77 5f 74 65 78 74 28 64 72 77 meSel]);...?....x.=.drw_text(drw
7e20 2c 20 78 2c 20 30 2c 20 70 72 6f 6d 70 74 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 ,.x,.0,.promptw,.bh,.lrpad./.2,.
7e40 70 72 6f 6d 70 74 2c 20 30 29 3b 00 00 00 03 20 20 7d 00 00 00 18 20 20 2f 2a 20 64 72 61 77 20 prompt,.0);......}....../*.draw.
7e60 69 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 30 20 20 77 20 3d 20 28 6c 69 6e 65 73 20 3e input.field.*/...0..w.=.(lines.>
7e80 20 30 20 7c 7c 20 21 6d 61 74 63 68 65 73 29 20 3f 20 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 .0.||.!matches).?.mw.-.x.:.input
7ea0 77 3b 00 00 00 29 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d w;...)..drw_setscheme(drw,.schem
7ec0 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 31 20 20 64 72 77 5f 74 65 78 74 28 64 72 e[SchemeNorm]);...1..drw_text(dr
7ee0 77 2c 20 78 2c 20 30 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 74 65 78 74 2c w,.x,.0,.w,.bh,.lrpad./.2,.text,
7f00 20 30 29 3b 00 00 00 00 00 00 00 2e 20 20 63 75 72 70 6f 73 20 3d 20 54 45 58 54 57 28 74 65 78 .0);..........curpos.=.TEXTW(tex
7f20 74 29 20 2d 20 54 45 58 54 57 28 26 74 65 78 74 5b 63 75 72 73 6f 72 5d 29 3b 00 00 00 26 20 20 t).-.TEXTW(&text[cursor]);...&..
7f40 69 66 20 28 28 63 75 72 70 6f 73 20 2b 3d 20 6c 72 70 61 64 20 2f 20 32 20 2d 20 31 29 20 3c 20 if.((curpos.+=.lrpad./.2.-.1).<.
7f60 77 29 20 7b 00 00 00 2b 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 w).{...+....drw_setscheme(drw,.s
7f80 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 32 20 20 20 20 64 72 77 5f 72 cheme[SchemeNorm]);...2....drw_r
7fa0 65 63 74 28 64 72 77 2c 20 78 20 2b 20 63 75 72 70 6f 73 2c 20 32 2c 20 32 2c 20 62 68 20 2d 20 ect(drw,.x.+.curpos,.2,.2,.bh.-.
7fc0 34 2c 20 31 2c 20 30 29 3b 00 00 00 03 20 20 7d 00 00 00 00 00 00 00 12 20 20 69 66 20 28 6c 69 4,.1,.0);......}..........if.(li
7fe0 6e 65 73 20 3e 20 30 29 20 7b 00 00 00 1c 20 20 20 20 2f 2a 20 64 72 61 77 20 76 65 72 74 69 63 nes.>.0).{......../*.draw.vertic
8000 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 37 20 20 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 al.list.*/...7....for.(item.=.cu
8020 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 rr;.item.!=.next;.item.=.item->r
8040 69 67 68 74 29 00 00 00 29 20 20 20 20 20 20 64 72 61 77 69 74 65 6d 28 69 74 65 6d 2c 20 78 2c ight)...)......drawitem(item,.x,
8060 20 79 20 2b 3d 20 62 68 2c 20 6d 77 20 2d 20 78 29 3b 00 00 00 17 20 20 7d 20 65 6c 73 65 20 69 .y.+=.bh,.mw.-.x);......}.else.i
8080 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 1e 20 20 20 20 2f 2a 20 64 72 61 77 20 68 6f 72 f.(matches).{......../*.draw.hor
80a0 69 7a 6f 6e 74 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 10 20 20 20 20 78 20 2b 3d 20 69 6e 70 75 izontal.list.*/........x.+=.inpu
80c0 74 77 3b 00 00 00 13 20 20 20 20 77 20 3d 20 54 45 58 54 57 28 22 3c 22 29 3b 00 00 00 15 20 20 tw;........w.=.TEXTW("<");......
80e0 20 20 69 66 20 28 63 75 72 72 2d 3e 6c 65 66 74 29 20 7b 00 00 00 2d 20 20 20 20 20 20 64 72 77 ..if.(curr->left).{...-......drw
8100 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 _setscheme(drw,.scheme[SchemeNor
8120 6d 5d 29 3b 00 00 00 34 20 20 20 20 20 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 m]);...4......drw_text(drw,.x,.0
8140 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 22 3c 22 2c 20 30 29 3b 00 00 00 05 ,.w,.bh,.lrpad./.2,."<",.0);....
8160 20 20 20 20 7d 00 00 00 0b 20 20 20 20 78 20 2b 3d 20 77 3b 00 00 00 37 20 20 20 20 66 6f 72 20 ....}........x.+=.w;...7....for.
8180 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d (item.=.curr;.item.!=.next;.item
81a0 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 00 00 00 4d 20 20 20 20 20 20 78 20 3d 20 64 72 61 .=.item->right)...M......x.=.dra
81c0 77 69 74 65 6d 28 69 74 65 6d 2c 20 78 2c 20 30 2c 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 69 74 witem(item,.x,.0,.textw_clamp(it
81e0 65 6d 2d 3e 74 65 78 74 2c 20 6d 77 20 2d 20 78 20 2d 20 54 45 58 54 57 28 22 3e 22 29 29 29 3b em->text,.mw.-.x.-.TEXTW(">")));
8200 00 00 00 0f 20 20 20 20 69 66 20 28 6e 65 78 74 29 20 7b 00 00 00 15 20 20 20 20 20 20 77 20 3d ........if.(next).{..........w.=
8220 20 54 45 58 54 57 28 22 3e 22 29 3b 00 00 00 2d 20 20 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 .TEXTW(">");...-......drw_setsch
8240 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 eme(drw,.scheme[SchemeNorm]);...
8260 39 20 20 20 20 20 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 6d 77 20 2d 20 77 2c 20 30 2c 20 9......drw_text(drw,.mw.-.w,.0,.
8280 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 22 3e 22 2c 20 30 29 3b 00 00 00 05 20 20 w,.bh,.lrpad./.2,.">",.0);......
82a0 20 20 7d 00 00 00 03 20 20 7d 00 00 00 22 20 20 64 72 77 5f 6d 61 70 28 64 72 77 2c 20 77 69 6e ..}......}..."..drw_map(drw,.win
82c0 2c 20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1d 73 74 61 ,.0,.0,.mw,.mh);....}........sta
82e0 74 69 63 20 76 6f 69 64 20 67 72 61 62 66 6f 63 75 73 28 76 6f 69 64 29 20 7b 00 00 00 3a 20 20 tic.void.grabfocus(void).{...:..
8300 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 20 3d 20 7b 2e 74 76 5f 73 65 63 20 3d 20 struct.timespec.ts.=.{.tv_sec.=.
8320 30 2c 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 30 30 30 30 7d 3b 00 00 00 12 20 20 57 69 0,..tv_nsec.=.10000000};......Wi
8340 6e 64 6f 77 20 66 6f 63 75 73 77 69 6e 3b 00 00 00 13 20 20 69 6e 74 20 69 2c 20 72 65 76 65 72 ndow.focuswin;......int.i,.rever
8360 74 77 69 6e 3b 00 00 00 00 00 00 00 1d 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 31 twin;..........for.(i.=.0;.i.<.1
8380 30 30 3b 20 2b 2b 69 29 20 7b 00 00 00 2f 20 20 20 20 58 47 65 74 49 6e 70 75 74 46 6f 63 75 73 00;.++i).{.../....XGetInputFocus
83a0 28 64 70 79 2c 20 26 66 6f 63 75 73 77 69 6e 2c 20 26 72 65 76 65 72 74 77 69 6e 29 3b 00 00 00 (dpy,.&focuswin,.&revertwin);...
83c0 18 20 20 20 20 69 66 20 28 66 6f 63 75 73 77 69 6e 20 3d 3d 20 77 69 6e 29 00 00 00 0d 20 20 20 .....if.(focuswin.==.win).......
83e0 20 20 20 72 65 74 75 72 6e 3b 00 00 00 3a 20 20 20 20 58 53 65 74 49 6e 70 75 74 46 6f 63 75 73 ...return;...:....XSetInputFocus
8400 28 64 70 79 2c 20 77 69 6e 2c 20 52 65 76 65 72 74 54 6f 50 61 72 65 6e 74 2c 20 43 75 72 72 65 (dpy,.win,.RevertToParent,.Curre
8420 6e 74 54 69 6d 65 29 3b 00 00 00 19 20 20 20 20 6e 61 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e ntTime);........nanosleep(&ts,.N
8440 55 4c 4c 29 3b 00 00 00 03 20 20 7d 00 00 00 1b 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 ULL);......}......die("cannot.gr
8460 61 62 20 66 6f 63 75 73 22 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 ab.focus");....}........static.v
8480 6f 69 64 20 67 72 61 62 6b 65 79 62 6f 61 72 64 28 76 6f 69 64 29 20 7b 00 00 00 39 20 20 73 74 oid.grabkeyboard(void).{...9..st
84a0 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 20 3d 20 7b 2e 74 76 5f 73 65 63 20 3d 20 30 2c ruct.timespec.ts.=.{.tv_sec.=.0,
84c0 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 30 30 30 7d 3b 00 00 00 08 20 20 69 6e 74 20 69 ..tv_nsec.=.1000000};......int.i
84e0 3b 00 00 00 00 00 00 00 0c 20 20 69 66 20 28 65 6d 62 65 64 29 00 00 00 0b 20 20 20 20 72 65 74 ;..........if.(embed)........ret
8500 75 72 6e 3b 00 00 00 4f 20 20 2f 2a 20 74 72 79 20 74 6f 20 67 72 61 62 20 6b 65 79 62 6f 61 72 urn;...O../*.try.to.grab.keyboar
8520 64 2c 20 77 65 20 6d 61 79 20 68 61 76 65 20 74 6f 20 77 61 69 74 20 66 6f 72 20 61 6e 6f 74 68 d,.we.may.have.to.wait.for.anoth
8540 65 72 20 70 72 6f 63 65 73 73 20 74 6f 20 75 6e 67 72 61 62 20 2a 2f 00 00 00 1e 20 20 66 6f 72 er.process.to.ungrab.*/......for
8560 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 31 30 30 30 3b 20 69 2b 2b 29 20 7b 00 00 00 47 20 20 20 .(i.=.0;.i.<.1000;.i++).{...G...
8580 20 69 66 20 28 58 47 72 61 62 4b 65 79 62 6f 61 72 64 28 64 70 79 2c 20 44 65 66 61 75 6c 74 52 .if.(XGrabKeyboard(dpy,.DefaultR
85a0 6f 6f 74 57 69 6e 64 6f 77 28 64 70 79 29 2c 20 54 72 75 65 2c 20 47 72 61 62 4d 6f 64 65 41 73 ootWindow(dpy),.True,.GrabModeAs
85c0 79 6e 63 2c 00 00 00 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 72 ync,...A......................Gr
85e0 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 20 3d 3d 20 47 72 61 abModeAsync,.CurrentTime).==.Gra
8600 62 53 75 63 63 65 73 73 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 19 20 20 bSuccess)..........return;......
8620 20 20 6e 61 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e 55 4c 4c 29 3b 00 00 00 03 20 20 7d 00 00 ..nanosleep(&ts,.NULL);......}..
8640 00 1e 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 61 62 20 6b 65 79 62 6f 61 72 64 22 29 3b ....die("cannot.grab.keyboard");
8660 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 63 20 76 6f 69 64 20 6d 61 74 63 68 28 76 ....}........static.void.match(v
8680 6f 69 64 29 20 7b 00 00 00 1c 20 20 73 74 61 74 69 63 20 63 68 61 72 20 2a 2a 74 6f 6b 76 20 3d oid).{......static.char.**tokv.=
86a0 20 4e 55 4c 4c 3b 00 00 00 16 20 20 73 74 61 74 69 63 20 69 6e 74 20 74 6f 6b 6e 20 3d 20 30 3b .NULL;......static.int.tokn.=.0;
86c0 00 00 00 00 00 00 00 1c 20 20 63 68 61 72 20 62 75 66 5b 73 69 7a 65 6f 66 20 74 65 78 74 5d 2c ..........char.buf[sizeof.text],
86e0 20 2a 73 3b 00 00 00 12 20 20 69 6e 74 20 69 2c 20 74 6f 6b 63 20 3d 20 30 3b 00 00 00 17 20 20 .*s;......int.i,.tokc.=.0;......
8700 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 74 65 78 74 73 69 7a 65 3b 00 00 00 40 20 20 73 74 72 75 63 size_t.len,.textsize;...@..struc
8720 74 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 2a 6c 70 72 65 66 69 78 2c 20 2a 6c 73 75 62 73 74 72 t.item.*item,.*lprefix,.*lsubstr
8740 2c 20 2a 70 72 65 66 69 78 65 6e 64 2c 20 2a 73 75 62 73 74 72 65 6e 64 3b 00 00 00 00 00 00 00 ,.*prefixend,.*substrend;.......
8760 14 20 20 73 74 72 63 70 79 28 62 75 66 2c 20 74 65 78 74 29 3b 00 00 00 42 20 20 2f 2a 20 73 65 ...strcpy(buf,.text);...B../*.se
8780 70 61 72 61 74 65 20 69 6e 70 75 74 20 74 65 78 74 20 69 6e 74 6f 20 74 6f 6b 65 6e 73 20 74 6f parate.input.text.into.tokens.to
87a0 20 62 65 20 6d 61 74 63 68 65 64 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 20 2a 2f 00 00 00 4a 20 .be.matched.individually.*/...J.
87c0 20 66 6f 72 20 28 73 20 3d 20 73 74 72 74 6f 6b 28 62 75 66 2c 20 22 20 22 29 3b 20 73 3b 20 74 .for.(s.=.strtok(buf,.".");.s;.t
87e0 6f 6b 76 5b 74 6f 6b 63 20 2d 20 31 5d 20 3d 20 73 2c 20 73 20 3d 20 73 74 72 74 6f 6b 28 4e 55 okv[tokc.-.1].=.s,.s.=.strtok(NU
8800 4c 4c 2c 20 22 20 22 29 29 00 00 00 48 20 20 20 20 69 66 20 28 2b 2b 74 6f 6b 63 20 3e 20 74 6f LL,."."))...H....if.(++tokc.>.to
8820 6b 6e 20 26 26 20 21 28 74 6f 6b 76 20 3d 20 72 65 61 6c 6c 6f 63 28 74 6f 6b 76 2c 20 2b 2b 74 kn.&&.!(tokv.=.realloc(tokv,.++t
8840 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b 76 29 29 29 00 00 00 3c 20 20 20 20 20 20 64 okn.*.sizeof.*tokv)))...<......d
8860 69 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c 6c 6f 63 20 25 7a 75 20 62 79 74 65 73 3a 22 2c 20 ie("cannot.realloc.%zu.bytes:",.
8880 74 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b 76 29 3b 00 00 00 23 20 20 6c 65 6e 20 3d tokn.*.sizeof.*tokv);...#..len.=
88a0 20 74 6f 6b 63 20 3f 20 73 74 72 6c 65 6e 28 74 6f 6b 76 5b 30 5d 29 20 3a 20 30 3b 00 00 00 00 .tokc.?.strlen(tokv[0]).:.0;....
88c0 00 00 00 48 20 20 6d 61 74 63 68 65 73 20 3d 20 6c 70 72 65 66 69 78 20 3d 20 6c 73 75 62 73 74 ...H..matches.=.lprefix.=.lsubst
88e0 72 20 3d 20 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 65 66 69 78 65 6e 64 20 3d 20 73 75 62 73 74 r.=.matchend.=.prefixend.=.subst
8900 72 65 6e 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 1e 20 20 74 65 78 74 73 69 7a 65 20 3d 20 73 74 72 rend.=.NULL;......textsize.=.str
8920 6c 65 6e 28 74 65 78 74 29 20 2b 20 31 3b 00 00 00 32 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 len(text).+.1;...2..for.(item.=.
8940 69 74 65 6d 73 3b 20 69 74 65 6d 20 26 26 20 69 74 65 6d 2d 3e 74 65 78 74 3b 20 69 74 65 6d 2b items;.item.&&.item->text;.item+
8960 2b 29 20 7b 00 00 00 1e 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 74 6f 6b 63 +).{........for.(i.=.0;.i.<.tokc
8980 3b 20 69 2b 2b 29 00 00 00 28 20 20 20 20 20 20 69 66 20 28 21 66 73 74 72 73 74 72 28 69 74 65 ;.i++)...(......if.(!fstrstr(ite
89a0 6d 2d 3e 74 65 78 74 2c 20 74 6f 6b 76 5b 69 5d 29 29 00 00 00 0e 20 20 20 20 20 20 20 20 62 72 m->text,.tokv[i]))............br
89c0 65 61 6b 3b 00 00 00 2d 20 20 20 20 69 66 20 28 69 20 21 3d 20 74 6f 6b 63 29 20 2f 2a 20 6e 6f eak;...-....if.(i.!=.tokc)./*.no
89e0 74 20 61 6c 6c 20 74 6f 6b 65 6e 73 20 6d 61 74 63 68 20 2a 2f 00 00 00 0f 20 20 20 20 20 20 63 t.all.tokens.match.*/..........c
8a00 6f 6e 74 69 6e 75 65 3b 00 00 00 40 20 20 20 20 2f 2a 20 65 78 61 63 74 20 6d 61 74 63 68 65 73 ontinue;...@..../*.exact.matches
8a20 20 67 6f 20 66 69 72 73 74 2c 20 74 68 65 6e 20 70 72 65 66 69 78 65 73 2c 20 74 68 65 6e 20 73 .go.first,.then.prefixes,.then.s
8a40 75 62 73 74 72 69 6e 67 73 20 2a 2f 00 00 00 37 20 20 20 20 69 66 20 28 21 74 6f 6b 63 20 7c 7c ubstrings.*/...7....if.(!tokc.||
8a60 20 21 66 73 74 72 6e 63 6d 70 28 74 65 78 74 2c 20 69 74 65 6d 2d 3e 74 65 78 74 2c 20 74 65 78 .!fstrncmp(text,.item->text,.tex
8a80 74 73 69 7a 65 29 29 00 00 00 2c 20 20 20 20 20 20 61 70 70 65 6e 64 69 74 65 6d 28 69 74 65 6d tsize))...,......appenditem(item
8aa0 2c 20 26 6d 61 74 63 68 65 73 2c 20 26 6d 61 74 63 68 65 6e 64 29 3b 00 00 00 31 20 20 20 20 65 ,.&matches,.&matchend);...1....e
8ac0 6c 73 65 20 69 66 20 28 21 66 73 74 72 6e 63 6d 70 28 74 6f 6b 76 5b 30 5d 2c 20 69 74 65 6d 2d lse.if.(!fstrncmp(tokv[0],.item-
8ae0 3e 74 65 78 74 2c 20 6c 65 6e 29 29 00 00 00 2d 20 20 20 20 20 20 61 70 70 65 6e 64 69 74 65 6d >text,.len))...-......appenditem
8b00 28 69 74 65 6d 2c 20 26 6c 70 72 65 66 69 78 2c 20 26 70 72 65 66 69 78 65 6e 64 29 3b 00 00 00 (item,.&lprefix,.&prefixend);...
8b20 08 20 20 20 20 65 6c 73 65 00 00 00 2d 20 20 20 20 20 20 61 70 70 65 6e 64 69 74 65 6d 28 69 74 .....else...-......appenditem(it
8b40 65 6d 2c 20 26 6c 73 75 62 73 74 72 2c 20 26 73 75 62 73 74 72 65 6e 64 29 3b 00 00 00 03 20 20 em,.&lsubstr,.&substrend);......
8b60 7d 00 00 00 10 20 20 69 66 20 28 6c 70 72 65 66 69 78 29 20 7b 00 00 00 12 20 20 20 20 69 66 20 }......if.(lprefix).{........if.
8b80 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 20 20 20 20 20 20 20 6d 61 74 63 68 65 6e 64 2d 3e 72 (matches).{..........matchend->r
8ba0 69 67 68 74 20 3d 20 6c 70 72 65 66 69 78 3b 00 00 00 1f 20 20 20 20 20 20 6c 70 72 65 66 69 78 ight.=.lprefix;..........lprefix
8bc0 2d 3e 6c 65 66 74 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 0a 20 20 20 20 7d 20 65 6c 73 65 ->left.=.matchend;........}.else
8be0 00 00 00 18 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6c 70 72 65 66 69 78 3b 00 00 00 19 ..........matches.=.lprefix;....
8c00 20 20 20 20 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 65 66 69 78 65 6e 64 3b 00 00 00 03 20 20 7d ....matchend.=.prefixend;......}
8c20 00 00 00 10 20 20 69 66 20 28 6c 73 75 62 73 74 72 29 20 7b 00 00 00 12 20 20 20 20 69 66 20 28 ......if.(lsubstr).{........if.(
8c40 6d 61 74 63 68 65 73 29 20 7b 00 00 00 20 20 20 20 20 20 20 6d 61 74 63 68 65 6e 64 2d 3e 72 69 matches).{..........matchend->ri
8c60 67 68 74 20 3d 20 6c 73 75 62 73 74 72 3b 00 00 00 1f 20 20 20 20 20 20 6c 73 75 62 73 74 72 2d ght.=.lsubstr;..........lsubstr-
8c80 3e 6c 65 66 74 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 0a 20 20 20 20 7d 20 65 6c 73 65 00 >left.=.matchend;........}.else.
8ca0 00 00 18 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d 20 6c 73 75 62 73 74 72 3b 00 00 00 19 20 .........matches.=.lsubstr;.....
8cc0 20 20 20 6d 61 74 63 68 65 6e 64 20 3d 20 73 75 62 73 74 72 65 6e 64 3b 00 00 00 03 20 20 7d 00 ...matchend.=.substrend;......}.
8ce0 00 00 17 20 20 63 75 72 72 20 3d 20 73 65 6c 20 3d 20 6d 61 74 63 68 65 73 3b 00 00 00 10 20 20 .....curr.=.sel.=.matches;......
8d00 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 30 73 74 61 74 69 calcoffsets();....}.......0stati
8d20 63 20 76 6f 69 64 20 69 6e 73 65 72 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 2c 20 73 c.void.insert(const.char.*str,.s
8d40 73 69 7a 65 5f 74 20 6e 29 20 7b 00 00 00 29 20 20 69 66 20 28 73 74 72 6c 65 6e 28 74 65 78 74 size_t.n).{...)..if.(strlen(text
8d60 29 20 2b 20 6e 20 3e 20 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 31 29 00 00 00 0b 20 20 20 20 ).+.n.>.sizeof.text.-.1)........
8d80 72 65 74 75 72 6e 3b 00 00 00 4d 20 20 2f 2a 20 6d 6f 76 65 20 65 78 69 73 74 69 6e 67 20 74 65 return;...M../*.move.existing.te
8da0 78 74 20 6f 75 74 20 6f 66 20 74 68 65 20 77 61 79 2c 20 69 6e 73 65 72 74 20 6e 65 77 20 74 65 xt.out.of.the.way,.insert.new.te
8dc0 78 74 2c 20 61 6e 64 20 75 70 64 61 74 65 20 63 75 72 73 6f 72 20 2a 2f 00 00 00 4e 20 20 6d 65 xt,.and.update.cursor.*/...N..me
8de0 6d 6d 6f 76 65 28 26 74 65 78 74 5b 63 75 72 73 6f 72 20 2b 20 6e 5d 2c 20 26 74 65 78 74 5b 63 mmove(&text[cursor.+.n],.&text[c
8e00 75 72 73 6f 72 5d 2c 20 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 63 75 72 73 6f 72 20 2d 20 4d ursor],.sizeof.text.-.cursor.-.M
8e20 41 58 28 6e 2c 20 30 29 29 3b 00 00 00 0c 20 20 69 66 20 28 6e 20 3e 20 30 29 00 00 00 22 20 20 AX(n,.0));......if.(n.>.0)..."..
8e40 20 20 6d 65 6d 63 70 79 28 26 74 65 78 74 5b 63 75 72 73 6f 72 5d 2c 20 73 74 72 2c 20 6e 29 3b ..memcpy(&text[cursor],.str,.n);
8e60 00 00 00 0e 20 20 63 75 72 73 6f 72 20 2b 3d 20 6e 3b 00 00 00 0a 20 20 6d 61 74 63 68 28 29 3b ......cursor.+=.n;......match();
8e80 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 63 20 73 69 7a 65 5f 74 20 6e 65 78 74 72 ....}.......!static.size_t.nextr
8ea0 75 6e 65 28 69 6e 74 20 69 6e 63 29 20 7b 00 00 00 0c 20 20 73 73 69 7a 65 5f 74 20 6e 3b 00 00 une(int.inc).{......ssize_t.n;..
8ec0 00 00 00 00 00 4b 20 20 2f 2a 20 72 65 74 75 72 6e 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 6e 65 .....K../*.return.location.of.ne
8ee0 78 74 20 75 74 66 38 20 72 75 6e 65 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 64 69 72 65 63 74 xt.utf8.rune.in.the.given.direct
8f00 69 6f 6e 20 28 2b 31 20 6f 72 20 2d 31 29 20 2a 2f 00 00 00 4c 20 20 66 6f 72 20 28 6e 20 3d 20 ion.(+1.or.-1).*/...L..for.(n.=.
8f20 63 75 72 73 6f 72 20 2b 20 69 6e 63 3b 20 6e 20 2b 20 69 6e 63 20 3e 3d 20 30 20 26 26 20 28 74 cursor.+.inc;.n.+.inc.>=.0.&&.(t
8f40 65 78 74 5b 6e 5d 20 26 20 30 78 63 30 29 20 3d 3d 20 30 78 38 30 3b 20 6e 20 2b 3d 20 69 6e 63 ext[n].&.0xc0).==.0x80;.n.+=.inc
8f60 29 00 00 00 05 20 20 20 20 3b 00 00 00 0b 20 20 72 65 74 75 72 6e 20 6e 3b 00 00 00 01 7d 00 00 )........;......return.n;....}..
8f80 00 00 00 00 00 23 73 74 61 74 69 63 20 76 6f 69 64 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 69 .....#static.void.movewordedge(i
8fa0 6e 74 20 64 69 72 29 20 7b 00 00 00 3a 20 20 69 66 20 28 64 69 72 20 3c 20 30 29 20 7b 20 2f 2a nt.dir).{...:..if.(dir.<.0).{./*
8fc0 20 6d 6f 76 65 20 63 75 72 73 6f 72 20 74 6f 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 .move.cursor.to.the.start.of.the
8fe0 20 77 6f 72 64 2a 2f 00 00 00 44 20 20 20 20 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 .word*/...D....while.(cursor.>.0
9000 20 26 26 20 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b .&&.strchr(worddelimiters,.text[
9020 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 nextrune(-1)]))..........cursor.
9040 3d 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 45 20 20 20 20 77 68 69 6c 65 20 28 63 75 =.nextrune(-1);...E....while.(cu
9060 72 73 6f 72 20 3e 20 30 20 26 26 20 21 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 rsor.>.0.&&.!strchr(worddelimite
9080 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 1c 20 20 20 20 rs,.text[nextrune(-1)]))........
90a0 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 33 20 20 7d 20 ..cursor.=.nextrune(-1);...3..}.
90c0 65 6c 73 65 20 7b 20 2f 2a 20 6d 6f 76 65 20 63 75 72 73 6f 72 20 74 6f 20 74 68 65 20 65 6e 64 else.{./*.move.cursor.to.the.end
90e0 20 6f 66 20 74 68 65 20 77 6f 72 64 20 2a 2f 00 00 00 40 20 20 20 20 77 68 69 6c 65 20 28 74 65 .of.the.word.*/...@....while.(te
9100 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 xt[cursor].&&.strchr(worddelimit
9120 65 72 73 2c 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 29 29 00 00 00 1c 20 20 20 20 20 20 63 75 72 ers,.text[cursor]))..........cur
9140 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 00 00 41 20 20 20 20 77 68 69 6c 65 sor.=.nextrune(+1);...A....while
9160 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 21 73 74 72 63 68 72 28 77 6f 72 64 64 65 .(text[cursor].&&.!strchr(wordde
9180 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 29 29 00 00 00 1c 20 20 20 20 limiters,.text[cursor]))........
91a0 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 00 00 03 20 20 7d 00 ..cursor.=.nextrune(+1);......}.
91c0 00 00 01 7d 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 76 6f 69 64 20 6b 65 79 70 72 65 73 73 ...}.......%static.void.keypress
91e0 28 58 4b 65 79 45 76 65 6e 74 20 2a 65 76 29 20 7b 00 00 00 0f 20 20 63 68 61 72 20 62 75 66 5b (XKeyEvent.*ev).{......char.buf[
9200 36 34 5d 3b 00 00 00 0a 20 20 69 6e 74 20 6c 65 6e 3b 00 00 00 19 20 20 4b 65 79 53 79 6d 20 6b 64];......int.len;......KeySym.k
9220 73 79 6d 20 3d 20 4e 6f 53 79 6d 62 6f 6c 3b 00 00 00 10 20 20 53 74 61 74 75 73 20 73 74 61 74 sym.=.NoSymbol;......Status.stat
9240 75 73 3b 00 00 00 00 00 00 00 42 20 20 6c 65 6e 20 3d 20 58 6d 62 4c 6f 6f 6b 75 70 53 74 72 69 us;.......B..len.=.XmbLookupStri
9260 6e 67 28 78 69 63 2c 20 65 76 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 20 62 75 66 2c 20 26 6b 73 ng(xic,.ev,.buf,.sizeof.buf,.&ks
9280 79 6d 2c 20 26 73 74 61 74 75 73 29 3b 00 00 00 13 20 20 73 77 69 74 63 68 20 28 73 74 61 74 75 ym,.&status);......switch.(statu
92a0 73 29 20 7b 00 00 00 2d 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 58 4c 6f 6f 6b 75 70 4e 6f 6e s).{...-..default:./*.XLookupNon
92c0 65 2c 20 58 42 75 66 66 65 72 4f 76 65 72 66 6c 6f 77 20 2a 2f 00 00 00 0b 20 20 20 20 72 65 74 e,.XBufferOverflow.*/........ret
92e0 75 72 6e 3b 00 00 00 3c 20 20 63 61 73 65 20 58 4c 6f 6f 6b 75 70 43 68 61 72 73 3a 20 2f 2a 20 urn;...<..case.XLookupChars:./*.
9300 63 6f 6d 70 6f 73 65 64 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 69 6e 70 75 74 20 6d 65 74 68 6f composed.string.from.input.metho
9320 64 20 2a 2f 00 00 00 10 20 20 20 20 67 6f 74 6f 20 69 6e 73 65 72 74 3b 00 00 00 15 20 20 63 61 d.*/........goto.insert;......ca
9340 73 65 20 58 4c 6f 6f 6b 75 70 4b 65 79 53 79 6d 3a 00 00 00 48 20 20 63 61 73 65 20 58 4c 6f 6f se.XLookupKeySym:...H..case.XLoo
9360 6b 75 70 42 6f 74 68 3a 20 2f 2a 20 61 20 4b 65 79 53 79 6d 20 61 6e 64 20 61 20 73 74 72 69 6e kupBoth:./*.a.KeySym.and.a.strin
9380 67 20 61 72 65 20 72 65 74 75 72 6e 65 64 3a 20 75 73 65 20 6b 65 79 73 79 6d 20 2a 2f 00 00 00 g.are.returned:.use.keysym.*/...
93a0 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 03 20 20 7d 00 00 00 00 00 00 00 20 20 20 69 66 20 28 .....break;......}..........if.(
93c0 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 20 7b 00 00 00 13 20 20 ev->state.&.ControlMask).{......
93e0 20 20 73 77 69 74 63 68 20 28 6b 73 79 6d 29 20 7b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b ..switch.(ksym).{........case.XK
9400 5f 61 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 48 6f 6d 65 3b 00 00 00 0c _a:..........ksym.=.XK_Home;....
9420 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 62 3a 00 00 ......break;........case.XK_b:..
9440 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 4c 65 66 74 3b 00 00 00 0c 20 20 20 20 20 ........ksym.=.XK_Left;.........
9460 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 63 3a 00 00 00 17 20 20 20 .break;........case.XK_c:.......
9480 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 61 70 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 ...ksym.=.XK_Escape;..........br
94a0 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 64 3a 00 00 00 17 20 20 20 20 20 20 eak;........case.XK_d:..........
94c0 6b 73 79 6d 20 3d 20 58 4b 5f 44 65 6c 65 74 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b ksym.=.XK_Delete;..........break
94e0 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 65 3a 00 00 00 14 20 20 20 20 20 20 6b 73 79 ;........case.XK_e:..........ksy
9500 6d 20 3d 20 58 4b 5f 45 6e 64 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 m.=.XK_End;..........break;.....
9520 20 20 20 63 61 73 65 20 58 4b 5f 66 3a 00 00 00 16 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b ...case.XK_f:..........ksym.=.XK
9540 5f 52 69 67 68 74 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 _Right;..........break;........c
9560 61 73 65 20 58 4b 5f 67 3a 00 00 00 17 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 ase.XK_g:..........ksym.=.XK_Esc
9580 61 70 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 ape;..........break;........case
95a0 20 58 4b 5f 68 3a 00 00 00 1a 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 42 61 63 6b 53 70 .XK_h:..........ksym.=.XK_BackSp
95c0 61 63 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 ace;..........break;........case
95e0 20 58 4b 5f 69 3a 00 00 00 14 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 54 61 62 3b 00 00 .XK_i:..........ksym.=.XK_Tab;..
9600 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 20 20 20 20 20 63 61 73 65 20 58 4b 5f 6a 3a ........break;........case.XK_j:
9620 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 20 20 20 20 20 63 61 73 65 20 58 ./*.fallthrough.*/........case.X
9640 4b 5f 4a 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 20 20 20 20 20 63 61 K_J:./*.fallthrough.*/........ca
9660 73 65 20 58 4b 5f 6d 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 0e 20 20 se.XK_m:./*.fallthrough.*/......
9680 20 20 63 61 73 65 20 58 4b 5f 4d 3a 00 00 00 17 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f ..case.XK_M:..........ksym.=.XK_
96a0 52 65 74 75 72 6e 3b 00 00 00 20 20 20 20 20 20 20 65 76 2d 3e 73 74 61 74 65 20 26 3d 20 7e 43 Return;..........ev->state.&=.~C
96c0 6f 6e 74 72 6f 6c 4d 61 73 6b 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 ontrolMask;..........break;.....
96e0 20 20 20 63 61 73 65 20 58 4b 5f 6e 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b ...case.XK_n:..........ksym.=.XK
9700 5f 44 6f 77 6e 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 _Down;..........break;........ca
9720 73 65 20 58 4b 5f 70 3a 00 00 00 13 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 55 70 3b 00 se.XK_p:..........ksym.=.XK_Up;.
9740 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 00 00 00 00 21 20 20 20 20 63 61 73 65 20 .........break;.......!....case.
9760 58 4b 5f 6b 3a 20 2f 2a 20 64 65 6c 65 74 65 20 72 69 67 68 74 20 2a 2f 00 00 00 1a 20 20 20 20 XK_k:./*.delete.right.*/........
9780 20 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0e 20 20 20 20 20 20 ..text[cursor].=.'\0';..........
97a0 6d 61 74 63 68 28 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 20 20 20 20 20 match();..........break;........
97c0 63 61 73 65 20 58 4b 5f 75 3a 20 2f 2a 20 64 65 6c 65 74 65 20 6c 65 66 74 20 2a 2f 00 00 00 1f case.XK_u:./*.delete.left.*/....
97e0 20 20 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 30 20 2d 20 63 75 72 73 6f 72 29 3b 00 ......insert(NULL,.0.-.cursor);.
9800 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 20 20 20 20 20 63 61 73 65 20 58 4b 5f 77 .........break;........case.XK_w
9820 3a 20 2f 2a 20 64 65 6c 65 74 65 20 77 6f 72 64 20 2a 2f 00 00 00 46 20 20 20 20 20 20 77 68 69 :./*.delete.word.*/...F......whi
9840 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c le.(cursor.>.0.&&.strchr(worddel
9860 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 imiters,.text[nextrune(-1)]))...
9880 2c 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d ,........insert(NULL,.nextrune(-
98a0 31 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 47 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 75 1).-.cursor);...G......while.(cu
98c0 72 73 6f 72 20 3e 20 30 20 26 26 20 21 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 rsor.>.0.&&.!strchr(worddelimite
98e0 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 2c 20 20 20 20 rs,.text[nextrune(-1)]))...,....
9900 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 20 2d 20 ....insert(NULL,.nextrune(-1).-.
9920 63 75 72 73 6f 72 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 24 20 20 20 20 cursor);..........break;...$....
9940 63 61 73 65 20 58 4b 5f 79 3a 20 2f 2a 20 70 61 73 74 65 20 73 65 6c 65 63 74 69 6f 6e 20 2a 2f case.XK_y:./*.paste.selection.*/
9960 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 59 3a 00 00 00 4f 20 20 20 20 20 20 58 43 6f 6e ........case.XK_Y:...O......XCon
9980 76 65 72 74 53 65 6c 65 63 74 69 6f 6e 28 64 70 79 2c 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 vertSelection(dpy,.(ev->state.&.
99a0 53 68 69 66 74 4d 61 73 6b 29 20 3f 20 63 6c 69 70 20 3a 20 58 41 5f 50 52 49 4d 41 52 59 2c 20 ShiftMask).?.clip.:.XA_PRIMARY,.
99c0 75 74 66 38 2c 00 00 00 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 utf8,...0.......................
99e0 20 75 74 66 38 2c 20 77 69 6e 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 0d 20 20 20 .utf8,.win,.CurrentTime);.......
9a00 20 20 20 72 65 74 75 72 6e 3b 00 00 00 11 20 20 20 20 63 61 73 65 20 58 4b 5f 4c 65 66 74 3a 00 ...return;........case.XK_Left:.
9a20 00 00 14 20 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 4c 65 66 74 3a 00 00 00 17 20 20 20 20 20 .......case.XK_KP_Left:.........
9a40 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2d 31 29 3b 00 00 00 10 20 20 20 20 20 20 67 6f 74 6f .movewordedge(-1);..........goto
9a60 20 64 72 61 77 3b 00 00 00 12 20 20 20 20 63 61 73 65 20 58 4b 5f 52 69 67 68 74 3a 00 00 00 15 .draw;........case.XK_Right:....
9a80 20 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 52 69 67 68 74 3a 00 00 00 17 20 20 20 20 20 20 6d ....case.XK_KP_Right:..........m
9aa0 6f 76 65 77 6f 72 64 65 64 67 65 28 2b 31 29 3b 00 00 00 10 20 20 20 20 20 20 67 6f 74 6f 20 64 ovewordedge(+1);..........goto.d
9ac0 72 61 77 3b 00 00 00 13 20 20 20 20 63 61 73 65 20 58 4b 5f 52 65 74 75 72 6e 3a 00 00 00 15 20 raw;........case.XK_Return:.....
9ae0 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 72 3a 00 00 00 0c 20 20 20 20 20 20 62 72 ...case.XK_KP_Enter:..........br
9b00 65 61 6b 3b 00 00 00 18 20 20 20 20 63 61 73 65 20 58 4b 5f 62 72 61 63 6b 65 74 6c 65 66 74 3a eak;........case.XK_bracketleft:
9b20 00 00 00 10 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 ..........cleanup();..........ex
9b40 69 74 28 31 29 3b 00 00 00 0c 20 20 20 20 64 65 66 61 75 6c 74 3a 00 00 00 0d 20 20 20 20 20 20 it(1);........default:..........
9b60 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 7d 20 65 6c 73 65 20 69 66 20 return;........}...$..}.else.if.
9b80 28 65 76 2d 3e 73 74 61 74 65 20 26 20 4d 6f 64 31 4d 61 73 6b 29 20 7b 00 00 00 13 20 20 20 20 (ev->state.&.Mod1Mask).{........
9ba0 73 77 69 74 63 68 20 28 6b 73 79 6d 29 20 7b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 62 switch.(ksym).{........case.XK_b
9bc0 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2d 31 29 3b 00 00 00 10 :..........movewordedge(-1);....
9be0 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f ......goto.draw;........case.XK_
9c00 66 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2b 31 29 3b 00 00 00 f:..........movewordedge(+1);...
9c20 10 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b .......goto.draw;........case.XK
9c40 5f 67 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 48 6f 6d 65 3b 00 00 00 0c _g:..........ksym.=.XK_Home;....
9c60 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 47 3a 00 00 ......break;........case.XK_G:..
9c80 00 14 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 6e 64 3b 00 00 00 0c 20 20 20 20 20 20 ........ksym.=.XK_End;..........
9ca0 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 68 3a 00 00 00 13 20 20 20 20 break;........case.XK_h:........
9cc0 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 55 70 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 ..ksym.=.XK_Up;..........break;.
9ce0 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 6a 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 .......case.XK_j:..........ksym.
9d00 3d 20 58 4b 5f 4e 65 78 74 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 =.XK_Next;..........break;......
9d20 20 20 63 61 73 65 20 58 4b 5f 6b 3a 00 00 00 16 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f ..case.XK_k:..........ksym.=.XK_
9d40 50 72 69 6f 72 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 Prior;..........break;........ca
9d60 73 65 20 58 4b 5f 6c 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 44 6f 77 6e se.XK_l:..........ksym.=.XK_Down
9d80 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0c 20 20 20 20 64 65 66 61 75 6c 74 ;..........break;........default
9da0 3a 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 :..........return;........}.....
9dc0 20 7d 00 00 00 00 00 00 00 11 20 20 73 77 69 74 63 68 20 28 6b 73 79 6d 29 20 7b 00 00 00 0a 20 .}..........switch.(ksym).{.....
9de0 20 64 65 66 61 75 6c 74 3a 00 00 00 09 20 20 69 6e 73 65 72 74 3a 00 00 00 26 20 20 20 20 69 66 .default:......insert:...&....if
9e00 20 28 21 69 73 63 6e 74 72 6c 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 2a 62 75 66 29 29 .(!iscntrl((unsigned.char)*buf))
9e20 00 00 00 17 20 20 20 20 20 20 69 6e 73 65 72 74 28 62 75 66 2c 20 6c 65 6e 29 3b 00 00 00 0a 20 ..........insert(buf,.len);.....
9e40 20 20 20 62 72 65 61 6b 3b 00 00 00 11 20 20 63 61 73 65 20 58 4b 5f 44 65 6c 65 74 65 3a 00 00 ...break;......case.XK_Delete:..
9e60 00 14 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 44 65 6c 65 74 65 3a 00 00 00 1d 20 20 20 20 69 66 ....case.XK_KP_Delete:........if
9e80 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 3d 20 27 5c 30 27 29 00 00 00 0d 20 20 20 20 20 .(text[cursor].==.'\0').........
9ea0 20 72 65 74 75 72 6e 3b 00 00 00 1a 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e .return;........cursor.=.nextrun
9ec0 65 28 2b 31 29 3b 00 00 00 15 20 20 20 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 e(+1);......../*.fallthrough.*/.
9ee0 00 00 14 20 20 63 61 73 65 20 58 4b 5f 42 61 63 6b 53 70 61 63 65 3a 00 00 00 14 20 20 20 20 69 .....case.XK_BackSpace:........i
9f00 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 30 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b f.(cursor.==.0)..........return;
9f20 00 00 00 28 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 ...(....insert(NULL,.nextrune(-1
9f40 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 ).-.cursor);........break;......
9f60 63 61 73 65 20 58 4b 5f 45 6e 64 3a 00 00 00 11 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 64 case.XK_End:......case.XK_KP_End
9f80 3a 00 00 00 1f 20 20 20 20 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 21 3d 20 27 5c 30 :........if.(text[cursor].!=.'\0
9fa0 27 29 20 7b 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 73 74 72 6c 65 6e 28 74 65 ').{..........cursor.=.strlen(te
9fc0 78 74 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 xt);..........break;........}...
9fe0 0f 20 20 20 20 69 66 20 28 6e 65 78 74 29 20 7b 00 00 00 3d 20 20 20 20 20 20 2f 2a 20 6a 75 6d .....if.(next).{...=....../*.jum
a000 70 20 74 6f 20 65 6e 64 20 6f 66 20 6c 69 73 74 20 61 6e 64 20 70 6f 73 69 74 69 6f 6e 20 69 74 p.to.end.of.list.and.position.it
a020 65 6d 73 20 69 6e 20 72 65 76 65 72 73 65 20 2a 2f 00 00 00 16 20 20 20 20 20 20 63 75 72 72 20 ems.in.reverse.*/..........curr.
a040 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 =.matchend;..........calcoffsets
a060 28 29 3b 00 00 00 12 20 20 20 20 20 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 14 20 20 20 ();..........curr.=.prev;.......
a080 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 2a 20 20 20 20 20 20 77 68 69 6c 65 ...calcoffsets();...*......while
a0a0 20 28 6e 65 78 74 20 26 26 20 28 63 75 72 72 20 3d 20 63 75 72 72 2d 3e 72 69 67 68 74 29 29 00 .(next.&&.(curr.=.curr->right)).
a0c0 00 00 16 20 20 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 05 20 20 20 ...........calcoffsets();.......
a0e0 20 7d 00 00 00 13 20 20 20 20 73 65 6c 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 0a 20 20 20 .}........sel.=.matchend;.......
a100 20 62 72 65 61 6b 3b 00 00 00 11 20 20 63 61 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 00 00 00 0e .break;......case.XK_Escape:....
a120 20 20 20 20 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0c 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 ....cleanup();........exit(1);..
a140 00 0f 20 20 63 61 73 65 20 58 4b 5f 48 6f 6d 65 3a 00 00 00 12 20 20 63 61 73 65 20 58 4b 5f 4b ....case.XK_Home:......case.XK_K
a160 50 5f 48 6f 6d 65 3a 00 00 00 19 20 20 20 20 69 66 20 28 73 65 6c 20 3d 3d 20 6d 61 74 63 68 65 P_Home:........if.(sel.==.matche
a180 73 29 20 7b 00 00 00 11 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 30 3b 00 00 00 0c 20 20 20 s).{..........cursor.=.0;.......
a1a0 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 19 20 20 20 20 73 65 6c 20 3d 20 ...break;........}........sel.=.
a1c0 63 75 72 72 20 3d 20 6d 61 74 63 68 65 73 3b 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 curr.=.matches;........calcoffse
a1e0 74 73 28 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0f 20 20 63 61 73 65 20 58 4b ts();........break;......case.XK
a200 5f 4c 65 66 74 3a 00 00 00 12 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 4c 65 66 74 3a 00 00 00 3a _Left:......case.XK_KP_Left:...:
a220 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 28 21 73 65 6c 20 7c 7c 20 21 ....if.(cursor.>.0.&&.(!sel.||.!
a240 73 65 6c 2d 3e 6c 65 66 74 20 7c 7c 20 6c 69 6e 65 73 20 3e 20 30 29 29 20 7b 00 00 00 1c 20 20 sel->left.||.lines.>.0)).{......
a260 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 0c 20 20 ....cursor.=.nextrune(-1);......
a280 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 12 20 20 20 20 69 66 20 28 6c ....break;........}........if.(l
a2a0 69 6e 65 73 20 3e 20 30 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 15 20 20 ines.>.0)..........return;......
a2c0 20 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 0d 20 20 63 61 73 65 20 58 4b ../*.fallthrough.*/......case.XK
a2e0 5f 55 70 3a 00 00 00 10 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 55 70 3a 00 00 00 3f 20 20 20 20 _Up:......case.XK_KP_Up:...?....
a300 69 66 20 28 73 65 6c 20 26 26 20 73 65 6c 2d 3e 6c 65 66 74 20 26 26 20 28 73 65 6c 20 3d 20 73 if.(sel.&&.sel->left.&&.(sel.=.s
a320 65 6c 2d 3e 6c 65 66 74 29 2d 3e 72 69 67 68 74 20 3d 3d 20 63 75 72 72 29 20 7b 00 00 00 12 20 el->left)->right.==.curr).{.....
a340 20 20 20 20 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f .....curr.=.prev;..........calco
a360 66 66 73 65 74 73 28 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b ffsets();........}........break;
a380 00 00 00 0f 20 20 63 61 73 65 20 58 4b 5f 4e 65 78 74 3a 00 00 00 12 20 20 63 61 73 65 20 58 4b ......case.XK_Next:......case.XK
a3a0 5f 4b 50 5f 4e 65 78 74 3a 00 00 00 0e 20 20 20 20 69 66 20 28 21 6e 65 78 74 29 00 00 00 0d 20 _KP_Next:........if.(!next).....
a3c0 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 16 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d .....return;........sel.=.curr.=
a3e0 20 6e 65 78 74 3b 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0a .next;........calcoffsets();....
a400 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 63 61 73 65 20 58 4b 5f 50 72 69 6f 72 3a 00 00 ....break;......case.XK_Prior:..
a420 00 13 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 50 72 69 6f 72 3a 00 00 00 0e 20 20 20 20 69 66 20 ....case.XK_KP_Prior:........if.
a440 28 21 70 72 65 76 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 16 20 20 20 20 (!prev)..........return;........
a460 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 sel.=.curr.=.prev;........calcof
a480 66 73 65 74 73 28 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 11 20 20 63 61 73 65 fsets();........break;......case
a4a0 20 58 4b 5f 52 65 74 75 72 6e 3a 00 00 00 13 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 .XK_Return:......case.XK_KP_Ente
a4c0 72 3a 00 00 00 3f 20 20 20 20 70 75 74 73 28 28 73 65 6c 20 26 26 20 21 28 65 76 2d 3e 73 74 61 r:...?....puts((sel.&&.!(ev->sta
a4e0 74 65 20 26 20 53 68 69 66 74 4d 61 73 6b 29 29 20 3f 20 73 65 6c 2d 3e 74 65 78 74 20 3a 20 74 te.&.ShiftMask)).?.sel->text.:.t
a500 65 78 74 29 3b 00 00 00 25 20 20 20 20 69 66 20 28 21 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 ext);...%....if.(!(ev->state.&.C
a520 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 20 7b 00 00 00 10 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 ontrolMask)).{..........cleanup(
a540 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 );..........exit(0);........}...
a560 0c 20 20 20 20 69 66 20 28 73 65 6c 29 00 00 00 13 20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 74 20 .....if.(sel)..........sel->out.
a580 3d 20 31 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 63 61 73 65 20 58 4b 5f =.1;........break;......case.XK_
a5a0 52 69 67 68 74 3a 00 00 00 13 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 52 69 67 68 74 3a 00 00 00 Right:......case.XK_KP_Right:...
a5c0 1f 20 20 20 20 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 21 3d 20 27 5c 30 27 29 20 7b .....if.(text[cursor].!=.'\0').{
a5e0 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b ..........cursor.=.nextrune(+1);
a600 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 12 20 20 20 ..........break;........}.......
a620 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b .if.(lines.>.0)..........return;
a640 00 00 00 15 20 20 20 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 0f 20 20 63 ......../*.fallthrough.*/......c
a660 61 73 65 20 58 4b 5f 44 6f 77 6e 3a 00 00 00 12 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 44 6f 77 ase.XK_Down:......case.XK_KP_Dow
a680 6e 3a 00 00 00 3a 20 20 20 20 69 66 20 28 73 65 6c 20 26 26 20 73 65 6c 2d 3e 72 69 67 68 74 20 n:...:....if.(sel.&&.sel->right.
a6a0 26 26 20 28 73 65 6c 20 3d 20 73 65 6c 2d 3e 72 69 67 68 74 29 20 3d 3d 20 6e 65 78 74 29 20 7b &&.(sel.=.sel->right).==.next).{
a6c0 00 00 00 12 20 20 20 20 20 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 14 20 20 20 20 20 20 ..........curr.=.next;..........
a6e0 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0a 20 20 20 20 62 calcoffsets();........}........b
a700 72 65 61 6b 3b 00 00 00 0e 20 20 63 61 73 65 20 58 4b 5f 54 61 62 3a 00 00 00 0d 20 20 20 20 69 reak;......case.XK_Tab:........i
a720 66 20 28 21 73 65 6c 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 31 20 20 20 f.(!sel)..........return;...1...
a740 20 63 75 72 73 6f 72 20 3d 20 73 74 72 6e 6c 65 6e 28 73 65 6c 2d 3e 74 65 78 74 2c 20 73 69 7a .cursor.=.strnlen(sel->text,.siz
a760 65 6f 66 20 74 65 78 74 20 2d 20 31 29 3b 00 00 00 24 20 20 20 20 6d 65 6d 63 70 79 28 74 65 78 eof.text.-.1);...$....memcpy(tex
a780 74 2c 20 73 65 6c 2d 3e 74 65 78 74 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 18 20 20 20 20 74 65 t,.sel->text,.cursor);........te
a7a0 78 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0c 20 20 20 20 6d 61 74 63 68 28 xt[cursor].=.'\0';........match(
a7c0 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 03 20 20 7d 00 00 00 00 00 00 00 05 64 );........break;......}........d
a7e0 72 61 77 3a 00 00 00 0d 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 raw:......drawmenu();....}......
a800 00 24 73 74 61 74 69 63 20 76 6f 69 64 20 62 75 74 74 6f 6e 70 72 65 73 73 28 58 45 76 65 6e 74 .$static.void.buttonpress(XEvent
a820 20 2a 65 29 20 7b 00 00 00 14 20 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 3b 00 00 .*e).{......struct.item.*item;..
a840 00 28 20 20 58 42 75 74 74 6f 6e 50 72 65 73 73 65 64 45 76 65 6e 74 20 2a 65 76 20 3d 20 26 65 .(..XButtonPressedEvent.*ev.=.&e
a860 2d 3e 78 62 75 74 74 6f 6e 3b 00 00 00 1e 20 20 69 6e 74 20 78 20 3d 20 30 2c 20 79 20 3d 20 30 ->xbutton;......int.x.=.0,.y.=.0
a880 2c 20 68 20 3d 20 62 68 2c 20 77 3b 00 00 00 00 00 00 00 18 20 20 69 66 20 28 65 76 2d 3e 77 69 ,.h.=.bh,.w;..........if.(ev->wi
a8a0 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 00 00 ndow.!=.win)........return;.....
a8c0 00 00 19 20 20 2f 2a 20 72 69 67 68 74 2d 63 6c 69 63 6b 3a 20 65 78 69 74 20 2a 2f 00 00 00 1c ...../*.right-click:.exit.*/....
a8e0 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 00 00 00 0c ..if.(ev->button.==.Button3)....
a900 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 00 00 00 00 18 20 20 69 66 20 28 70 72 6f 6d 70 74 ....exit(1);..........if.(prompt
a920 20 26 26 20 2a 70 72 6f 6d 70 74 29 00 00 00 11 20 20 20 20 78 20 2b 3d 20 70 72 6f 6d 70 74 77 .&&.*prompt)........x.+=.promptw
a940 3b 00 00 00 00 00 00 00 13 20 20 2f 2a 20 69 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 30 ;........../*.input.field.*/...0
a960 20 20 77 20 3d 20 28 6c 69 6e 65 73 20 3e 20 30 20 7c 7c 20 21 6d 61 74 63 68 65 73 29 20 3f 20 ..w.=.(lines.>.0.||.!matches).?.
a980 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 77 3b 00 00 00 00 00 00 00 26 20 20 2f 2a 20 6c 65 66 mw.-.x.:.inputw;.......&../*.lef
a9a0 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 6e 70 75 74 3a 20 63 6c 65 61 72 20 69 6e 70 75 74 2c 00 00 t-click.on.input:.clear.input,..
a9c0 00 43 20 20 20 2a 20 4e 4f 54 45 3a 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6c 65 66 74 .C...*.NOTE:.if.there.is.no.left
a9e0 2d 61 72 72 6f 77 20 74 68 65 20 73 70 61 63 65 20 66 6f 72 20 3c 20 69 73 20 72 65 73 65 72 76 -arrow.the.space.for.<.is.reserv
aa00 65 64 20 73 6f 00 00 00 29 20 20 20 2a 20 20 20 20 20 20 20 61 64 64 20 74 68 61 74 20 74 6f 20 ed.so...)...*.......add.that.to.
aa20 74 68 65 20 69 6e 70 75 74 20 77 69 64 74 68 20 2a 2f 00 00 00 1e 20 20 69 66 20 28 65 76 2d 3e the.input.width.*/......if.(ev->
aa40 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 31 20 26 26 00 00 00 23 20 20 20 20 20 20 28 28 button.==.Button1.&&...#......((
aa60 6c 69 6e 65 73 20 3c 3d 20 30 20 26 26 20 65 76 2d 3e 78 20 3e 3d 20 30 20 26 26 00 00 00 46 20 lines.<=.0.&&.ev->x.>=.0.&&...F.
aa80 20 20 20 20 20 20 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 20 2b 20 28 28 21 70 72 65 76 20 .......ev->x.<=.x.+.w.+.((!prev.
aaa0 7c 7c 20 21 63 75 72 72 2d 3e 6c 65 66 74 29 20 3f 20 54 45 58 54 57 28 22 3c 22 29 20 3a 20 30 ||.!curr->left).?.TEXTW("<").:.0
aac0 29 29 20 7c 7c 00 00 00 36 20 20 20 20 20 20 20 28 6c 69 6e 65 73 20 3e 20 30 20 26 26 20 65 76 )).||...6.......(lines.>.0.&&.ev
aae0 2d 3e 79 20 3e 3d 20 79 20 26 26 20 65 76 2d 3e 79 20 3c 3d 20 79 20 2b 20 68 29 29 29 20 7b 00 ->y.>=.y.&&.ev->y.<=.y.+.h))).{.
ab00 00 00 1a 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 2d 63 75 72 73 6f 72 29 3b 00 00 00 .......insert(NULL,.-cursor);...
ab20 0f 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 .....drawmenu();........return;.
ab40 00 00 03 20 20 7d 00 00 00 2b 20 20 2f 2a 20 6d 69 64 64 6c 65 2d 6d 6f 75 73 65 20 63 6c 69 63 .....}...+../*.middle-mouse.clic
ab60 6b 3a 20 70 61 73 74 65 20 73 65 6c 65 63 74 69 6f 6e 20 2a 2f 00 00 00 1e 20 20 69 66 20 28 65 k:.paste.selection.*/......if.(e
ab80 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 32 29 20 7b 00 00 00 4d 20 20 20 20 58 v->button.==.Button2).{...M....X
aba0 43 6f 6e 76 65 72 74 53 65 6c 65 63 74 69 6f 6e 28 64 70 79 2c 20 28 65 76 2d 3e 73 74 61 74 65 ConvertSelection(dpy,.(ev->state
abc0 20 26 20 53 68 69 66 74 4d 61 73 6b 29 20 3f 20 63 6c 69 70 20 3a 20 58 41 5f 50 52 49 4d 41 52 .&.ShiftMask).?.clip.:.XA_PRIMAR
abe0 59 2c 20 75 74 66 38 2c 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Y,.utf8,........................
ac00 20 20 75 74 66 38 2c 20 77 69 6e 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 0f 20 20 ..utf8,.win,.CurrentTime);......
ac20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 ..drawmenu();........return;....
ac40 20 20 7d 00 00 00 11 20 20 2f 2a 20 73 63 72 6f 6c 6c 20 75 70 20 2a 2f 00 00 00 26 20 20 69 66 ..}....../*.scroll.up.*/...&..if
ac60 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 34 20 26 26 20 70 72 65 76 29 .(ev->button.==.Button4.&&.prev)
ac80 20 7b 00 00 00 16 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 12 .{........sel.=.curr.=.prev;....
aca0 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0f 20 20 20 20 64 72 61 77 6d 65 ....calcoffsets();........drawme
acc0 6e 75 28 29 3b 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 20 20 7d 00 00 00 13 20 nu();........return;......}.....
ace0 20 2f 2a 20 73 63 72 6f 6c 6c 20 64 6f 77 6e 20 2a 2f 00 00 00 26 20 20 69 66 20 28 65 76 2d 3e ./*.scroll.down.*/...&..if.(ev->
ad00 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 35 20 26 26 20 6e 65 78 74 29 20 7b 00 00 00 16 button.==.Button5.&&.next).{....
ad20 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 12 20 20 20 20 63 61 ....sel.=.curr.=.next;........ca
ad40 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0f 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 lcoffsets();........drawmenu();.
ad60 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 20 20 7d 00 00 00 1c 20 20 69 66 20 28 65 .......return;......}......if.(e
ad80 76 2d 3e 62 75 74 74 6f 6e 20 21 3d 20 42 75 74 74 6f 6e 31 29 00 00 00 0b 20 20 20 20 72 65 74 v->button.!=.Button1)........ret
ada0 75 72 6e 3b 00 00 00 1f 20 20 69 66 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 7e 43 6f 6e 74 72 urn;......if.(ev->state.&.~Contr
adc0 6f 6c 4d 61 73 6b 29 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 12 20 20 69 66 20 28 olMask)........return;......if.(
ade0 6c 69 6e 65 73 20 3e 20 30 29 20 7b 00 00 00 31 20 20 20 20 2f 2a 20 76 65 72 74 69 63 61 6c 20 lines.>.0).{...1..../*.vertical.
ae00 6c 69 73 74 3a 20 28 63 74 72 6c 29 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 74 65 6d 20 2a list:.(ctrl)left-click.on.item.*
ae20 2f 00 00 00 0f 20 20 20 20 77 20 3d 20 6d 77 20 2d 20 78 3b 00 00 00 39 20 20 20 20 66 6f 72 20 /........w.=.mw.-.x;...9....for.
ae40 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d (item.=.curr;.item.!=.next;.item
ae60 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 20 7b 00 00 00 0d 20 20 20 20 20 20 79 20 2b 3d 20 .=.item->right).{..........y.+=.
ae80 68 3b 00 00 00 2b 20 20 20 20 20 20 69 66 20 28 65 76 2d 3e 79 20 3e 3d 20 79 20 26 26 20 65 76 h;...+......if.(ev->y.>=.y.&&.ev
aea0 2d 3e 79 20 3c 3d 20 28 79 20 2b 20 68 29 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 70 75 74 ->y.<=.(y.+.h)).{............put
aec0 73 28 69 74 65 6d 2d 3e 74 65 78 74 29 3b 00 00 00 27 20 20 20 20 20 20 20 20 69 66 20 28 21 28 s(item->text);...'........if.(!(
aee0 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 00 00 00 12 20 20 20 ev->state.&.ControlMask)).......
af00 20 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 13 20 20 20 20 20 20 20 20 73 65 6c 20 3d .......exit(0);............sel.=
af20 20 69 74 65 6d 3b 00 00 00 12 20 20 20 20 20 20 20 20 69 66 20 28 73 65 6c 29 20 7b 00 00 00 17 .item;............if.(sel).{....
af40 20 20 20 20 20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 74 20 3d 20 31 3b 00 00 00 15 20 20 20 20 20 ..........sel->out.=.1;.........
af60 20 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 .....drawmenu();............}...
af80 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 .........return;..........}.....
afa0 20 20 20 7d 00 00 00 17 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 ...}......}.else.if.(matches).{.
afc0 00 00 22 20 20 20 20 2f 2a 20 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 6c 65 66 74 20 61 72 72 .."..../*.left-click.on.left.arr
afe0 6f 77 20 2a 2f 00 00 00 10 20 20 20 20 78 20 2b 3d 20 69 6e 70 75 74 77 3b 00 00 00 13 20 20 20 ow.*/........x.+=.inputw;.......
b000 20 77 20 3d 20 54 45 58 54 57 28 22 3c 22 29 3b 00 00 00 1d 20 20 20 20 69 66 20 28 70 72 65 76 .w.=.TEXTW("<");........if.(prev
b020 20 26 26 20 63 75 72 72 2d 3e 6c 65 66 74 29 20 7b 00 00 00 29 20 20 20 20 20 20 69 66 20 28 65 .&&.curr->left).{...)......if.(e
b040 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 v->x.>=.x.&&.ev->x.<=.x.+.w).{..
b060 00 1a 20 20 20 20 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 00 00 16 ..........sel.=.curr.=.prev;....
b080 20 20 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 13 20 20 20 20 20 20 ........calcoffsets();..........
b0a0 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b ..drawmenu();............return;
b0c0 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 33 20 20 20 20 2f 2a 20 68 ..........}........}...3..../*.h
b0e0 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 73 74 3a 20 28 63 74 72 6c 29 6c 65 66 74 2d 63 6c 69 63 6b orizontal.list:.(ctrl)left-click
b100 20 6f 6e 20 69 74 65 6d 20 2a 2f 00 00 00 39 20 20 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 .on.item.*/...9....for.(item.=.c
b120 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e urr;.item.!=.next;.item.=.item->
b140 72 69 67 68 74 29 20 7b 00 00 00 0d 20 20 20 20 20 20 78 20 2b 3d 20 77 3b 00 00 00 36 20 20 20 right).{..........x.+=.w;...6...
b160 20 20 20 77 20 3d 20 4d 49 4e 28 54 45 58 54 57 28 69 74 65 6d 2d 3e 74 65 78 74 29 2c 20 6d 77 ...w.=.MIN(TEXTW(item->text),.mw
b180 20 2d 20 78 20 2d 20 54 45 58 54 57 28 22 3e 22 29 29 3b 00 00 00 29 20 20 20 20 20 20 69 66 20 .-.x.-.TEXTW(">"));...)......if.
b1a0 28 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b (ev->x.>=.x.&&.ev->x.<=.x.+.w).{
b1c0 00 00 00 19 20 20 20 20 20 20 20 20 70 75 74 73 28 69 74 65 6d 2d 3e 74 65 78 74 29 3b 00 00 00 ............puts(item->text);...
b1e0 27 20 20 20 20 20 20 20 20 69 66 20 28 21 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 '........if.(!(ev->state.&.Contr
b200 6f 6c 4d 61 73 6b 29 29 00 00 00 12 20 20 20 20 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 olMask))..............exit(0);..
b220 00 13 20 20 20 20 20 20 20 20 73 65 6c 20 3d 20 69 74 65 6d 3b 00 00 00 12 20 20 20 20 20 20 20 ..........sel.=.item;...........
b240 20 69 66 20 28 73 65 6c 29 20 7b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 .if.(sel).{..............sel->ou
b260 74 20 3d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 t.=.1;..............drawmenu();.
b280 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 ...........}............return;.
b2a0 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 23 20 20 20 20 2f 2a 20 6c 65 .........}........}...#..../*.le
b2c0 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 72 69 67 68 74 20 61 72 72 6f 77 20 2a 2f 00 00 00 13 20 20 ft-click.on.right.arrow.*/......
b2e0 20 20 77 20 3d 20 54 45 58 54 57 28 22 3e 22 29 3b 00 00 00 0f 20 20 20 20 78 20 3d 20 6d 77 20 ..w.=.TEXTW(">");........x.=.mw.
b300 2d 20 77 3b 00 00 00 2f 20 20 20 20 69 66 20 28 6e 65 78 74 20 26 26 20 65 76 2d 3e 78 20 3e 3d -.w;.../....if.(next.&&.ev->x.>=
b320 20 78 20 26 26 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 18 20 20 20 20 20 .x.&&.ev->x.<=.x.+.w).{.........
b340 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c .sel.=.curr.=.next;..........cal
b360 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 11 20 20 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b coffsets();..........drawmenu();
b380 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 ..........return;........}......
b3a0 7d 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 63 20 76 6f 69 64 20 70 61 73 74 65 28 }....}........static.void.paste(
b3c0 76 6f 69 64 29 20 7b 00 00 00 0e 20 20 63 68 61 72 20 2a 70 2c 20 2a 71 3b 00 00 00 09 20 20 69 void).{......char.*p,.*q;......i
b3e0 6e 74 20 64 69 3b 00 00 00 13 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 64 6c 3b 00 00 00 nt.di;......unsigned.long.dl;...
b400 0a 20 20 41 74 6f 6d 20 64 61 3b 00 00 00 00 00 00 00 4a 20 20 2f 2a 20 77 65 20 68 61 76 65 20 ...Atom.da;.......J../*.we.have.
b420 62 65 65 6e 20 67 69 76 65 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 6c 65 63 74 69 6f 6e been.given.the.current.selection
b440 2c 20 6e 6f 77 20 69 6e 73 65 72 74 20 69 74 20 69 6e 74 6f 20 69 6e 70 75 74 20 2a 2f 00 00 00 ,.now.insert.it.into.input.*/...
b460 4f 20 20 69 66 20 28 58 47 65 74 57 69 6e 64 6f 77 50 72 6f 70 65 72 74 79 28 64 70 79 2c 20 77 O..if.(XGetWindowProperty(dpy,.w
b480 69 6e 2c 20 75 74 66 38 2c 20 30 2c 20 28 73 69 7a 65 6f 66 20 74 65 78 74 20 2f 20 34 29 20 2b in,.utf8,.0,.(sizeof.text./.4).+
b4a0 20 31 2c 20 46 61 6c 73 65 2c 20 75 74 66 38 2c 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 .1,.False,.utf8,...P............
b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 26 64 61 2c 20 26 64 69 2c 20 26 64 6c 2c 20 26 64 6c 2c .............&da,.&di,.&dl,.&dl,
b4e0 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2a 29 26 70 29 20 3d 3d 20 53 75 63 63 65 73 .(unsigned.char.**)&p).==.Succes
b500 73 20 26 26 00 00 00 0a 20 20 20 20 20 20 70 29 20 7b 00 00 00 42 20 20 20 20 69 6e 73 65 72 74 s.&&..........p).{...B....insert
b520 28 70 2c 20 28 71 20 3d 20 73 74 72 63 68 72 28 70 2c 20 27 5c 6e 27 29 29 20 3f 20 71 20 2d 20 (p,.(q.=.strchr(p,.'\n')).?.q.-.
b540 70 20 3a 20 28 73 73 69 7a 65 5f 74 29 73 74 72 6c 65 6e 28 70 29 29 3b 00 00 00 0d 20 20 20 20 p.:.(ssize_t)strlen(p));........
b560 58 46 72 65 65 28 70 29 3b 00 00 00 03 20 20 7d 00 00 00 0d 20 20 64 72 61 77 6d 65 6e 75 28 29 XFree(p);......}......drawmenu()
b580 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 61 64 73 74 ;....}........static.void.readst
b5a0 64 69 6e 28 76 6f 69 64 29 20 7b 00 00 00 14 20 20 63 68 61 72 20 2a 6c 69 6e 65 20 3d 20 4e 55 din(void).{......char.*line.=.NU
b5c0 4c 4c 3b 00 00 00 25 20 20 73 69 7a 65 5f 74 20 69 2c 20 69 74 65 6d 73 69 7a 20 3d 20 30 2c 20 LL;...%..size_t.i,.itemsiz.=.0,.
b5e0 6c 69 6e 65 73 69 7a 20 3d 20 30 3b 00 00 00 0e 20 20 73 73 69 7a 65 5f 74 20 6c 65 6e 3b 00 00 linesiz.=.0;......ssize_t.len;..
b600 00 00 00 00 00 3d 20 20 2f 2a 20 72 65 61 64 20 65 61 63 68 20 6c 69 6e 65 20 66 72 6f 6d 20 73 .....=../*.read.each.line.from.s
b620 74 64 69 6e 20 61 6e 64 20 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 69 74 65 6d 20 6c 69 73 74 tdin.and.add.it.to.the.item.list
b640 20 2a 2f 00 00 00 43 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 28 6c 65 6e 20 3d 20 67 65 74 6c .*/...C..for.(i.=.0;.(len.=.getl
b660 69 6e 65 28 26 6c 69 6e 65 2c 20 26 6c 69 6e 65 73 69 7a 2c 20 73 74 64 69 6e 29 29 20 21 3d 20 ine(&line,.&linesiz,.stdin)).!=.
b680 2d 31 3b 20 69 2b 2b 29 20 7b 00 00 00 1b 20 20 20 20 69 66 20 28 69 20 2b 20 31 20 3e 3d 20 69 -1;.i++).{........if.(i.+.1.>=.i
b6a0 74 65 6d 73 69 7a 29 20 7b 00 00 00 15 20 20 20 20 20 20 69 74 65 6d 73 69 7a 20 2b 3d 20 32 35 temsiz).{..........itemsiz.+=.25
b6c0 36 3b 00 00 00 3e 20 20 20 20 20 20 69 66 20 28 21 28 69 74 65 6d 73 20 3d 20 72 65 61 6c 6c 6f 6;...>......if.(!(items.=.reallo
b6e0 63 28 69 74 65 6d 73 2c 20 69 74 65 6d 73 69 7a 20 2a 20 73 69 7a 65 6f 66 28 2a 69 74 65 6d 73 c(items,.itemsiz.*.sizeof(*items
b700 29 29 29 29 00 00 00 43 20 20 20 20 20 20 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c ))))...C........die("cannot.real
b720 6c 6f 63 20 25 7a 75 20 62 79 74 65 73 3a 22 2c 20 69 74 65 6d 73 69 7a 20 2a 20 73 69 7a 65 6f loc.%zu.bytes:",.itemsiz.*.sizeo
b740 66 28 2a 69 74 65 6d 73 29 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 1e 20 20 20 20 69 66 20 28 f(*items));........}........if.(
b760 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 3d 20 27 5c 6e 27 29 00 00 00 1b 20 20 20 20 20 20 line[len.-.1].==.'\n')..........
b780 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 20 27 5c 30 27 3b 00 00 00 28 20 20 20 20 69 66 20 line[len.-.1].=.'\0';...(....if.
b7a0 28 21 28 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 20 3d 20 73 74 72 64 75 70 28 6c 69 6e 65 29 29 (!(items[i].text.=.strdup(line))
b7c0 29 00 00 00 15 20 20 20 20 20 20 64 69 65 28 22 73 74 72 64 75 70 3a 22 29 3b 00 00 00 00 00 00 )..........die("strdup:");......
b7e0 00 15 20 20 20 20 69 74 65 6d 73 5b 69 5d 2e 6f 75 74 20 3d 20 30 3b 00 00 00 03 20 20 7d 00 00 ......items[i].out.=.0;......}..
b800 00 0d 20 20 66 72 65 65 28 6c 69 6e 65 29 3b 00 00 00 0c 20 20 69 66 20 28 69 74 65 6d 73 29 00 ....free(line);......if.(items).
b820 00 00 19 20 20 20 20 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 18 .......items[i].text.=.NULL;....
b840 20 20 6c 69 6e 65 73 20 3d 20 4d 49 4e 28 6c 69 6e 65 73 2c 20 69 29 3b 00 00 00 01 7d 00 00 00 ..lines.=.MIN(lines,.i);....}...
b860 00 00 00 00 17 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 28 76 6f 69 64 29 20 7b 00 00 00 0c .....static.void.run(void).{....
b880 20 20 58 45 76 65 6e 74 20 65 76 3b 00 00 00 00 00 00 00 21 20 20 77 68 69 6c 65 20 28 21 58 4e ..XEvent.ev;.......!..while.(!XN
b8a0 65 78 74 45 76 65 6e 74 28 64 70 79 2c 20 26 65 76 29 29 20 7b 00 00 00 1f 20 20 20 20 69 66 20 extEvent(dpy,.&ev)).{........if.
b8c0 28 58 46 69 6c 74 65 72 45 76 65 6e 74 28 26 65 76 2c 20 77 69 6e 29 29 00 00 00 0f 20 20 20 20 (XFilterEvent(&ev,.win))........
b8e0 20 20 63 6f 6e 74 69 6e 75 65 3b 00 00 00 16 20 20 20 20 73 77 69 74 63 68 20 28 65 76 2e 74 79 ..continue;........switch.(ev.ty
b900 70 65 29 20 7b 00 00 00 17 20 20 20 20 63 61 73 65 20 44 65 73 74 72 6f 79 4e 6f 74 69 66 79 3a pe).{........case.DestroyNotify:
b920 00 00 00 2a 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 64 65 73 74 72 6f 79 77 69 6e 64 6f 77 2e ...*......if.(ev.xdestroywindow.
b940 77 69 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 0e 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b window.!=.win)............break;
b960 00 00 00 10 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 ..........cleanup();..........ex
b980 69 74 28 31 29 3b 00 00 00 15 20 20 20 20 63 61 73 65 20 42 75 74 74 6f 6e 50 72 65 73 73 3a 00 it(1);........case.ButtonPress:.
b9a0 00 00 17 20 20 20 20 20 20 62 75 74 74 6f 6e 70 72 65 73 73 28 26 65 76 29 3b 00 00 00 0c 20 20 .........buttonpress(&ev);......
b9c0 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 20 20 63 61 73 65 20 45 78 70 6f 73 65 3a 00 00 ....break;........case.Expose:..
b9e0 00 20 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 65 78 70 6f 73 65 2e 63 6f 75 6e 74 20 3d 3d 20 ........if.(ev.xexpose.count.==.
ba00 30 29 00 00 00 28 20 20 20 20 20 20 20 20 64 72 77 5f 6d 61 70 28 64 72 77 2c 20 77 69 6e 2c 20 0)...(........drw_map(drw,.win,.
ba20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 0,.0,.mw,.mh);..........break;..
ba40 00 11 20 20 20 20 63 61 73 65 20 46 6f 63 75 73 49 6e 3a 00 00 00 2b 20 20 20 20 20 20 2f 2a 20 ......case.FocusIn:...+....../*.
ba60 72 65 67 72 61 62 20 66 6f 63 75 73 20 66 72 6f 6d 20 70 61 72 65 6e 74 20 77 69 6e 64 6f 77 20 regrab.focus.from.parent.window.
ba80 2a 2f 00 00 00 22 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 66 6f 63 75 73 2e 77 69 6e 64 6f 77 */..."......if.(ev.xfocus.window
baa0 20 21 3d 20 77 69 6e 29 00 00 00 14 20 20 20 20 20 20 20 20 67 72 61 62 66 6f 63 75 73 28 29 3b .!=.win)............grabfocus();
bac0 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 12 20 20 20 20 63 61 73 65 20 4b 65 79 ..........break;........case.Key
bae0 50 72 65 73 73 3a 00 00 00 19 20 20 20 20 20 20 6b 65 79 70 72 65 73 73 28 26 65 76 2e 78 6b 65 Press:..........keypress(&ev.xke
bb00 79 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 19 20 20 20 20 63 61 73 65 20 y);..........break;........case.
bb20 53 65 6c 65 63 74 69 6f 6e 4e 6f 74 69 66 79 3a 00 00 00 29 20 20 20 20 20 20 69 66 20 28 65 76 SelectionNotify:...)......if.(ev
bb40 2e 78 73 65 6c 65 63 74 69 6f 6e 2e 70 72 6f 70 65 72 74 79 20 3d 3d 20 75 74 66 38 29 00 00 00 .xselection.property.==.utf8)...
bb60 10 20 20 20 20 20 20 20 20 70 61 73 74 65 28 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b .........paste();..........break
bb80 3b 00 00 00 1a 20 20 20 20 63 61 73 65 20 56 69 73 69 62 69 6c 69 74 79 4e 6f 74 69 66 79 3a 00 ;........case.VisibilityNotify:.
bba0 00 00 37 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 76 69 73 69 62 69 6c 69 74 79 2e 73 74 61 74 ..7......if.(ev.xvisibility.stat
bbc0 65 20 21 3d 20 56 69 73 69 62 69 6c 69 74 79 55 6e 6f 62 73 63 75 72 65 64 29 00 00 00 1f 20 20 e.!=.VisibilityUnobscured)......
bbe0 20 20 20 20 20 20 58 52 61 69 73 65 57 69 6e 64 6f 77 28 64 70 79 2c 20 77 69 6e 29 3b 00 00 00 ......XRaiseWindow(dpy,.win);...
bc00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 .......break;........}......}...
bc20 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 74 75 70 28 76 6f 69 64 .}........static.void.setup(void
bc40 29 20 7b 00 00 00 11 20 20 69 6e 74 20 78 2c 20 79 2c 20 69 2c 20 6a 3b 00 00 00 12 20 20 75 6e ).{......int.x,.y,.i,.j;......un
bc60 73 69 67 6e 65 64 20 69 6e 74 20 64 75 3b 00 00 00 1b 20 20 58 53 65 74 57 69 6e 64 6f 77 41 74 signed.int.du;......XSetWindowAt
bc80 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 0a 20 20 58 49 4d 20 78 69 6d 3b 00 00 00 15 20 tributes.swa;......XIM.xim;.....
bca0 20 57 69 6e 64 6f 77 20 77 2c 20 64 77 2c 20 2a 64 77 73 3b 00 00 00 17 20 20 58 57 69 6e 64 6f .Window.w,.dw,.*dws;......XWindo
bcc0 77 41 74 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 25 20 20 58 43 6c 61 73 73 48 69 6e 74 20 wAttributes.wa;...%..XClassHint.
bce0 63 68 20 3d 20 7b 22 64 6d 65 6e 75 22 2c 20 22 64 6d 65 6e 75 22 7d 3b 00 00 00 0f 23 69 66 64 ch.=.{"dmenu",."dmenu"};....#ifd
bd00 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 1b 20 20 58 69 6e 65 72 61 6d 61 53 63 72 65 65 6e 49 ef.XINERAMA......XineramaScreenI
bd20 6e 66 6f 20 2a 69 6e 66 6f 3b 00 00 00 0c 20 20 57 69 6e 64 6f 77 20 70 77 3b 00 00 00 19 20 20 nfo.*info;......Window.pw;......
bd40 69 6e 74 20 61 2c 20 64 69 2c 20 6e 2c 20 61 72 65 61 20 3d 20 30 3b 00 00 00 06 23 65 6e 64 69 int.a,.di,.n,.area.=.0;....#endi
bd60 66 00 00 00 17 20 20 2f 2a 20 69 6e 69 74 20 61 70 70 65 61 72 61 6e 63 65 20 2a 2f 00 00 00 22 f....../*.init.appearance.*/..."
bd80 20 20 66 6f 72 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 53 63 68 65 6d 65 4c 61 73 74 3b 20 6a 2b ..for.(j.=.0;.j.<.SchemeLast;.j+
bda0 2b 29 00 00 00 32 20 20 20 20 73 63 68 65 6d 65 5b 6a 5d 20 3d 20 64 72 77 5f 73 63 6d 5f 63 72 +)...2....scheme[j].=.drw_scm_cr
bdc0 65 61 74 65 28 64 72 77 2c 20 63 6f 6c 6f 72 73 5b 6a 5d 2c 20 32 29 3b 00 00 00 00 00 00 00 2e eate(drw,.colors[j],.2);........
bde0 20 20 63 6c 69 70 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 64 70 79 2c 20 22 43 4c 49 50 42 ..clip.=.XInternAtom(dpy,."CLIPB
be00 4f 41 52 44 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 30 20 20 75 74 66 38 20 3d 20 58 49 6e 74 65 OARD",.False);...0..utf8.=.XInte
be20 72 6e 41 74 6f 6d 28 64 70 79 2c 20 22 55 54 46 38 5f 53 54 52 49 4e 47 22 2c 20 46 61 6c 73 65 rnAtom(dpy,."UTF8_STRING",.False
be40 29 3b 00 00 00 00 00 00 00 1f 20 20 2f 2a 20 63 61 6c 63 75 6c 61 74 65 20 6d 65 6e 75 20 67 65 );........../*.calculate.menu.ge
be60 6f 6d 65 74 72 79 20 2a 2f 00 00 00 18 20 20 2f 2f 20 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 ometry.*/......//.bh.=.drw->font
be80 73 2d 3e 68 3b 00 00 00 22 20 20 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 s->h;..."..bh.=.drw->fonts->h.+.
bea0 76 65 72 74 70 61 64 62 61 72 3b 00 00 00 27 20 20 62 68 20 3d 20 75 73 65 72 5f 62 68 20 3f 20 vertpadbar;...'..bh.=.user_bh.?.
bec0 62 68 20 2b 20 75 73 65 72 5f 62 68 20 3a 20 62 68 20 2b 20 32 3b 00 00 00 18 20 20 6c 69 6e 65 bh.+.user_bh.:.bh.+.2;......line
bee0 73 20 3d 20 4d 41 58 28 6c 69 6e 65 73 2c 20 30 29 3b 00 00 00 18 20 20 6d 68 20 3d 20 28 6c 69 s.=.MAX(lines,.0);......mh.=.(li
bf00 6e 65 73 20 2b 20 31 29 20 2a 20 62 68 3b 00 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d nes.+.1).*.bh;....#ifdef.XINERAM
bf20 41 00 00 00 08 20 20 69 20 3d 20 30 3b 00 00 00 44 20 20 69 66 20 28 70 61 72 65 6e 74 77 69 6e A......i.=.0;...D..if.(parentwin
bf40 20 3d 3d 20 72 6f 6f 74 20 26 26 20 28 69 6e 66 6f 20 3d 20 58 69 6e 65 72 61 6d 61 51 75 65 72 .==.root.&&.(info.=.XineramaQuer
bf60 79 53 63 72 65 65 6e 73 28 64 70 79 2c 20 26 6e 29 29 29 20 7b 00 00 00 21 20 20 20 20 58 47 65 yScreens(dpy,.&n))).{...!....XGe
bf80 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 79 2c 20 26 77 2c 20 26 64 69 29 3b 00 00 00 1c 20 20 tInputFocus(dpy,.&w,.&di);......
bfa0 20 20 69 66 20 28 6d 6f 6e 20 3e 3d 20 30 20 26 26 20 6d 6f 6e 20 3c 20 6e 29 00 00 00 0e 20 20 ..if.(mon.>=.0.&&.mon.<.n)......
bfc0 20 20 20 20 69 20 3d 20 6d 6f 6e 3b 00 00 00 3a 20 20 20 20 65 6c 73 65 20 69 66 20 28 77 20 21 ....i.=.mon;...:....else.if.(w.!
bfe0 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d 20 50 6f 69 6e 74 65 72 52 6f 6f 74 20 26 26 20 77 20 =.root.&&.w.!=.PointerRoot.&&.w.
c000 21 3d 20 4e 6f 6e 65 29 20 7b 00 00 00 40 20 20 20 20 20 20 2f 2a 20 66 69 6e 64 20 74 6f 70 2d !=.None).{...@....../*.find.top-
c020 6c 65 76 65 6c 20 77 69 6e 64 6f 77 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 75 72 72 65 6e 74 20 level.window.containing.current.
c040 69 6e 70 75 74 20 66 6f 63 75 73 20 2a 2f 00 00 00 0a 20 20 20 20 20 20 64 6f 20 7b 00 00 00 41 input.focus.*/..........do.{...A
c060 20 20 20 20 20 20 20 20 69 66 20 28 58 51 75 65 72 79 54 72 65 65 28 64 70 79 2c 20 28 70 77 20 ........if.(XQueryTree(dpy,.(pw.
c080 3d 20 77 29 2c 20 26 64 77 2c 20 26 77 2c 20 26 64 77 73 2c 20 26 64 75 29 20 26 26 20 64 77 73 =.w),.&dw,.&w,.&dws,.&du).&&.dws
c0a0 29 00 00 00 15 20 20 20 20 20 20 20 20 20 20 58 46 72 65 65 28 64 77 73 29 3b 00 00 00 25 20 20 )..............XFree(dws);...%..
c0c0 20 20 20 20 7d 20 77 68 69 6c 65 20 28 77 20 21 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d 20 70 ....}.while.(w.!=.root.&&.w.!=.p
c0e0 77 29 3b 00 00 00 46 20 20 20 20 20 20 2f 2a 20 66 69 6e 64 20 78 69 6e 65 72 61 6d 61 20 73 63 w);...F....../*.find.xinerama.sc
c100 72 65 65 6e 20 77 69 74 68 20 77 68 69 63 68 20 74 68 65 20 77 69 6e 64 6f 77 20 69 6e 74 65 72 reen.with.which.the.window.inter
c120 73 65 63 74 73 20 6d 6f 73 74 20 2a 2f 00 00 00 2d 20 20 20 20 20 20 69 66 20 28 58 47 65 74 57 sects.most.*/...-......if.(XGetW
c140 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 2c 20 70 77 2c 20 26 77 61 29 29 00 00 indowAttributes(dpy,.pw,.&wa))..
c160 00 1f 20 20 20 20 20 20 20 20 66 6f 72 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 6e 3b 20 6a 2b 2b ..........for.(j.=.0;.j.<.n;.j++
c180 29 00 00 00 49 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 61 20 3d 20 49 4e 54 45 52 53 45 43 )...I..........if.((a.=.INTERSEC
c1a0 54 28 77 61 2e 78 2c 20 77 61 2e 79 2c 20 77 61 2e 77 69 64 74 68 2c 20 77 61 2e 68 65 69 67 68 T(wa.x,.wa.y,.wa.width,.wa.heigh
c1c0 74 2c 20 69 6e 66 6f 5b 6a 5d 29 29 20 3e 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t,.info[j])).>..................
c1e0 61 72 65 61 29 20 7b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 61 72 65 61 20 3d 20 61 3b area).{................area.=.a;
c200 00 00 00 12 20 20 20 20 20 20 20 20 20 20 20 20 69 20 3d 20 6a 3b 00 00 00 0b 20 20 20 20 20 20 ................i.=.j;..........
c220 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 49 20 20 20 20 2f 2a 20 6e 6f 20 66 6f 63 75 ....}........}...I..../*.no.focu
c240 73 65 64 20 77 69 6e 64 6f 77 20 69 73 20 6f 6e 20 73 63 72 65 65 6e 2c 20 73 6f 20 75 73 65 20 sed.window.is.on.screen,.so.use.
c260 70 6f 69 6e 74 65 72 20 6c 6f 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 2a 2f 00 00 00 1b 20 pointer.location.instead.*/.....
c280 20 20 20 69 66 20 28 6d 6f 6e 20 3c 20 30 20 26 26 20 21 61 72 65 61 20 26 26 00 00 00 42 20 20 ...if.(mon.<.0.&&.!area.&&...B..
c2a0 20 20 20 20 20 20 58 51 75 65 72 79 50 6f 69 6e 74 65 72 28 64 70 79 2c 20 72 6f 6f 74 2c 20 26 ......XQueryPointer(dpy,.root,.&
c2c0 64 77 2c 20 26 64 77 2c 20 26 78 2c 20 26 79 2c 20 26 64 69 2c 20 26 64 69 2c 20 26 64 75 29 29 dw,.&dw,.&x,.&y,.&di,.&di,.&du))
c2e0 00 00 00 1d 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b ..........for.(i.=.0;.i.<.n;.i++
c300 29 00 00 00 30 20 20 20 20 20 20 20 20 69 66 20 28 49 4e 54 45 52 53 45 43 54 28 78 2c 20 79 2c )...0........if.(INTERSECT(x,.y,
c320 20 31 2c 20 31 2c 20 69 6e 66 6f 5b 69 5d 29 20 21 3d 20 30 29 00 00 00 10 20 20 20 20 20 20 20 .1,.1,.info[i]).!=.0)...........
c340 20 20 20 62 72 65 61 6b 3b 00 00 00 00 00 00 00 1c 20 20 20 20 78 20 3d 20 69 6e 66 6f 5b 69 5d ...break;............x.=.info[i]
c360 2e 78 5f 6f 72 67 20 2b 20 64 6d 78 3b 00 00 00 43 20 20 20 20 79 20 3d 20 69 6e 66 6f 5b 69 5d .x_org.+.dmx;...C....y.=.info[i]
c380 2e 79 5f 6f 72 67 20 2b 20 28 74 6f 70 62 61 72 20 3f 20 64 6d 79 20 3a 20 69 6e 66 6f 5b 69 5d .y_org.+.(topbar.?.dmy.:.info[i]
c3a0 2e 68 65 69 67 68 74 20 2d 20 6d 68 20 2d 20 64 6d 79 29 3b 00 00 00 29 20 20 20 20 6d 77 20 3d .height.-.mh.-.dmy);...)....mw.=
c3c0 20 28 64 6d 77 20 3e 20 30 20 3f 20 64 6d 77 20 3a 20 69 6e 66 6f 5b 69 5d 2e 77 69 64 74 68 29 .(dmw.>.0.?.dmw.:.info[i].width)
c3e0 3b 00 00 00 05 20 20 20 20 3b 00 00 00 10 20 20 20 20 58 46 72 65 65 28 69 6e 66 6f 29 3b 00 00 ;........;........XFree(info);..
c400 00 08 20 20 7d 20 65 6c 73 65 00 00 00 06 23 65 6e 64 69 66 00 00 00 03 20 20 7b 00 00 00 33 20 ....}.else....#endif......{...3.
c420 20 20 20 69 66 20 28 21 58 47 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 ...if.(!XGetWindowAttributes(dpy
c440 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 77 61 29 29 00 00 00 49 20 20 20 20 20 20 64 69 65 28 ,.parentwin,.&wa))...I......die(
c460 22 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 "could.not.get.embedding.window.
c480 61 74 74 72 69 62 75 74 65 73 3a 20 30 78 25 6c 78 22 2c 20 70 61 72 65 6e 74 77 69 6e 29 3b 00 attributes:.0x%lx",.parentwin);.
c4a0 00 00 0c 20 20 20 20 78 20 3d 20 64 6d 78 3b 00 00 00 2c 20 20 20 20 79 20 3d 20 74 6f 70 62 61 .......x.=.dmx;...,....y.=.topba
c4c0 72 20 3f 20 64 6d 79 20 3a 20 77 61 2e 68 65 69 67 68 74 20 2d 20 6d 68 20 2d 20 64 6d 79 3b 00 r.?.dmy.:.wa.height.-.mh.-.dmy;.
c4e0 00 00 24 20 20 20 20 6d 77 20 3d 20 28 64 6d 77 20 3e 20 30 20 3f 20 64 6d 77 20 3a 20 77 61 2e ..$....mw.=.(dmw.>.0.?.dmw.:.wa.
c500 77 69 64 74 68 29 3b 00 00 00 03 20 20 7d 00 00 00 40 20 20 70 72 6f 6d 70 74 77 20 3d 20 28 70 width);......}...@..promptw.=.(p
c520 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 20 3f 20 54 45 58 54 57 28 70 72 6f 6d 70 74 rompt.&&.*prompt).?.TEXTW(prompt
c540 29 20 2d 20 6c 72 70 61 64 20 2f 20 34 20 3a 20 30 3b 00 00 00 3b 20 20 69 6e 70 75 74 77 20 3d ).-.lrpad./.4.:.0;...;..inputw.=
c560 20 6d 77 20 2f 20 33 3b 20 2f 2a 20 69 6e 70 75 74 20 77 69 64 74 68 3a 20 7e 33 33 25 20 6f 66 .mw./.3;./*.input.width:.~33%.of
c580 20 6d 6f 6e 69 74 6f 72 20 77 69 64 74 68 20 2a 2f 00 00 00 0a 20 20 6d 61 74 63 68 28 29 3b 00 .monitor.width.*/......match();.
c5a0 00 00 00 00 00 00 1a 20 20 2f 2a 20 63 72 65 61 74 65 20 6d 65 6e 75 20 77 69 6e 64 6f 77 20 2a ........./*.create.menu.window.*
c5c0 2f 00 00 00 1f 20 20 73 77 61 2e 6f 76 65 72 72 69 64 65 5f 72 65 64 69 72 65 63 74 20 3d 20 54 /......swa.override_redirect.=.T
c5e0 72 75 65 3b 00 00 00 39 20 20 73 77 61 2e 62 61 63 6b 67 72 6f 75 6e 64 5f 70 69 78 65 6c 20 3d rue;...9..swa.background_pixel.=
c600 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 6f 6c 42 67 5d 2e 70 69 78 65 6c .scheme[SchemeNorm][ColBg].pixel
c620 3b 00 00 00 12 20 20 73 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b 20 3d 00 00 00 4b 20 20 20 20 20 ;......swa.event_mask.=...K.....
c640 20 45 78 70 6f 73 75 72 65 4d 61 73 6b 20 7c 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 56 .ExposureMask.|.KeyPressMask.|.V
c660 69 73 69 62 69 6c 69 74 79 43 68 61 6e 67 65 4d 61 73 6b 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 isibilityChangeMask.|.ButtonPres
c680 73 4d 61 73 6b 3b 00 00 00 00 00 00 00 41 20 20 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e sMask;.......A..win.=.XCreateWin
c6a0 64 6f 77 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 78 2c 20 79 2c 20 6d 77 2c 20 6d 68 dow(dpy,.parentwin,.x,.y,.mw,.mh
c6c0 2c 20 62 6f 72 64 65 72 5f 77 69 64 74 68 2c 00 00 00 45 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.border_width,...E.............
c6e0 20 20 20 20 20 20 20 20 20 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 20 43 6f 70 79 46 72 6f .........CopyFromParent,.CopyFro
c700 6d 50 61 72 65 6e 74 2c 20 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 00 00 00 4c 20 20 20 20 mParent,.CopyFromParent,...L....
c720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 57 4f 76 65 72 72 69 64 65 52 65 64 69 ..................CWOverrideRedi
c740 72 65 63 74 20 7c 20 43 57 42 61 63 6b 50 69 78 65 6c 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b rect.|.CWBackPixel.|.CWEventMask
c760 2c 20 26 73 77 61 29 3b 00 00 00 13 20 20 69 66 20 28 62 6f 72 64 65 72 5f 77 69 64 74 68 29 00 ,.&swa);......if.(border_width).
c780 00 00 3f 20 20 20 20 58 53 65 74 57 69 6e 64 6f 77 42 6f 72 64 65 72 28 64 70 79 2c 20 77 69 6e ..?....XSetWindowBorder(dpy,.win
c7a0 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 42 67 5d 2e 70 69 78 65 6c ,.scheme[SchemeSel][ColBg].pixel
c7c0 29 3b 00 00 00 1f 20 20 58 53 65 74 43 6c 61 73 73 48 69 6e 74 28 64 70 79 2c 20 77 69 6e 2c 20 );......XSetClassHint(dpy,.win,.
c7e0 26 63 68 29 3b 00 00 00 00 00 00 00 15 20 20 2f 2a 20 69 6e 70 75 74 20 6d 65 74 68 6f 64 73 20 &ch);........../*.input.methods.
c800 2a 2f 00 00 00 35 20 20 69 66 20 28 28 78 69 6d 20 3d 20 58 4f 70 65 6e 49 4d 28 64 70 79 2c 20 */...5..if.((xim.=.XOpenIM(dpy,.
c820 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 29 20 3d 3d 20 4e 55 4c 4c 29 00 00 00 37 20 NULL,.NULL,.NULL)).==.NULL)...7.
c840 20 20 20 64 69 65 28 22 58 4f 70 65 6e 49 4d 20 66 61 69 6c 65 64 3a 20 63 6f 75 6c 64 20 6e 6f ...die("XOpenIM.failed:.could.no
c860 74 20 6f 70 65 6e 20 69 6e 70 75 74 20 64 65 76 69 63 65 22 29 3b 00 00 00 00 00 00 00 4a 20 20 t.open.input.device");.......J..
c880 78 69 63 20 3d 20 58 43 72 65 61 74 65 49 43 28 78 69 6d 2c 20 58 4e 49 6e 70 75 74 53 74 79 6c xic.=.XCreateIC(xim,.XNInputStyl
c8a0 65 2c 20 58 49 4d 50 72 65 65 64 69 74 4e 6f 74 68 69 6e 67 20 7c 20 58 49 4d 53 74 61 74 75 73 e,.XIMPreeditNothing.|.XIMStatus
c8c0 4e 6f 74 68 69 6e 67 2c 00 00 00 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4e Nothing,...A..................XN
c8e0 43 6c 69 65 6e 74 57 69 6e 64 6f 77 2c 20 77 69 6e 2c 20 58 4e 46 6f 63 75 73 57 69 6e 64 6f 77 ClientWindow,.win,.XNFocusWindow
c900 2c 20 77 69 6e 2c 20 4e 55 4c 4c 29 3b 00 00 00 00 00 00 00 17 20 20 58 4d 61 70 52 61 69 73 65 ,.win,.NULL);..........XMapRaise
c920 64 28 64 70 79 2c 20 77 69 6e 29 3b 00 00 00 0e 20 20 69 66 20 28 65 6d 62 65 64 29 20 7b 00 00 d(dpy,.win);......if.(embed).{..
c940 00 2f 20 20 20 20 58 52 65 70 61 72 65 6e 74 57 69 6e 64 6f 77 28 64 70 79 2c 20 77 69 6e 2c 20 ./....XReparentWindow(dpy,.win,.
c960 70 61 72 65 6e 74 77 69 6e 2c 20 78 2c 20 79 29 3b 00 00 00 4b 20 20 20 20 58 53 65 6c 65 63 74 parentwin,.x,.y);...K....XSelect
c980 49 6e 70 75 74 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 46 6f 63 75 73 43 68 61 6e 67 Input(dpy,.parentwin,.FocusChang
c9a0 65 4d 61 73 6b 20 7c 20 53 75 62 73 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 29 3b eMask.|.SubstructureNotifyMask);
c9c0 00 00 00 40 20 20 20 20 69 66 20 28 58 51 75 65 72 79 54 72 65 65 28 64 70 79 2c 20 70 61 72 65 ...@....if.(XQueryTree(dpy,.pare
c9e0 6e 74 77 69 6e 2c 20 26 64 77 2c 20 26 77 2c 20 26 64 77 73 2c 20 26 64 75 29 20 26 26 20 64 77 ntwin,.&dw,.&w,.&dws,.&du).&&.dw
ca00 73 29 20 7b 00 00 00 2f 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 64 75 s).{.../......for.(i.=.0;.i.<.du
ca20 20 26 26 20 64 77 73 5b 69 5d 20 21 3d 20 77 69 6e 3b 20 2b 2b 69 29 00 00 00 33 20 20 20 20 20 .&&.dws[i].!=.win;.++i)...3.....
ca40 20 20 20 58 53 65 6c 65 63 74 49 6e 70 75 74 28 64 70 79 2c 20 64 77 73 5b 69 5d 2c 20 46 6f 63 ...XSelectInput(dpy,.dws[i],.Foc
ca60 75 73 43 68 61 6e 67 65 4d 61 73 6b 29 3b 00 00 00 11 20 20 20 20 20 20 58 46 72 65 65 28 64 77 usChangeMask);..........XFree(dw
ca80 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 10 20 20 20 20 67 72 61 62 66 6f 63 75 73 28 29 3b s);........}........grabfocus();
caa0 00 00 00 03 20 20 7d 00 00 00 1a 20 20 64 72 77 5f 72 65 73 69 7a 65 28 64 72 77 2c 20 6d 77 2c ......}......drw_resize(drw,.mw,
cac0 20 6d 68 29 3b 00 00 00 0d 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 .mh);......drawmenu();....}.....
cae0 00 00 19 73 74 61 74 69 63 20 76 6f 69 64 20 75 73 61 67 65 28 76 6f 69 64 29 20 7b 00 00 00 4d ...static.void.usage(void).{...M
cb00 20 20 64 69 65 28 22 75 73 61 67 65 3a 20 64 6d 65 6e 75 20 5b 2d 62 66 69 76 5d 20 5b 2d 6c 20 ..die("usage:.dmenu.[-bfiv].[-l.
cb20 6c 69 6e 65 73 5d 20 5b 2d 70 20 70 72 6f 6d 70 74 5d 20 5b 2d 66 6e 20 66 6f 6e 74 5d 20 5b 2d lines].[-p.prompt].[-fn.font].[-
cb40 6d 20 6d 6f 6e 69 74 6f 72 5d 5c 6e 22 00 00 00 3b 20 20 20 20 20 20 22 20 20 20 20 20 20 20 20 m.monitor]\n"...;......"........
cb60 20 20 20 20 20 5b 2d 78 20 78 6f 66 66 73 65 74 5d 20 5b 2d 79 20 79 6f 66 66 73 65 74 5d 20 5b .....[-x.xoffset].[-y.yoffset].[
cb80 2d 7a 20 77 69 64 74 68 5d 5c 6e 22 00 00 00 49 20 20 20 20 20 20 22 20 20 20 20 20 20 20 20 20 -z.width]\n"...I......".........
cba0 20 20 20 20 5b 2d 6e 62 20 63 6f 6c 6f 72 5d 20 5b 2d 6e 66 20 63 6f 6c 6f 72 5d 20 5b 2d 73 62 ....[-nb.color].[-nf.color].[-sb
cbc0 20 63 6f 6c 6f 72 5d 20 5b 2d 73 66 20 63 6f 6c 6f 72 5d 20 5b 2d 77 20 22 00 00 00 13 20 20 20 .color].[-sf.color].[-w.".......
cbe0 20 20 20 22 77 69 6e 64 6f 77 69 64 5d 22 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 22 69 6e 74 ..."windowid]");....}......."int
cc00 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 61 72 67 76 5b 5d 29 20 7b 00 .main(int.argc,.char.*argv[]).{.
cc20 00 00 17 20 20 58 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 12 20 20 .....XWindowAttributes.wa;......
cc40 69 6e 74 20 69 2c 20 66 61 73 74 20 3d 20 30 3b 00 00 00 00 00 00 00 1c 20 20 66 6f 72 20 28 69 int.i,.fast.=.0;..........for.(i
cc60 20 3d 20 31 3b 20 69 20 3c 20 61 72 67 63 3b 20 69 2b 2b 29 00 00 00 29 20 20 20 20 2f 2a 20 74 .=.1;.i.<.argc;.i++)...)..../*.t
cc80 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 61 6b 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 2a hese.options.take.no.arguments.*
cca0 2f 00 00 00 42 20 20 20 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d /...B....if.(!strcmp(argv[i],."-
ccc0 76 22 29 29 20 7b 20 2f 2a 20 70 72 69 6e 74 73 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 v")).{./*.prints.version.informa
cce0 74 69 6f 6e 20 2a 2f 00 00 00 1d 20 20 20 20 20 20 70 75 74 73 28 22 64 6d 65 6e 75 2d 22 20 56 tion.*/..........puts("dmenu-".V
cd00 45 52 53 49 4f 4e 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 50 20 20 ERSION);..........exit(0);...P..
cd20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d ..}.else.if.(!strcmp(argv[i],."-
cd40 62 22 29 29 20 2f 2a 20 61 70 70 65 61 72 73 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20 6f 66 b"))./*.appears.at.the.bottom.of
cd60 20 74 68 65 20 73 63 72 65 65 6e 20 2a 2f 00 00 00 11 20 20 20 20 20 20 74 6f 70 62 61 72 20 3d .the.screen.*/..........topbar.=
cd80 20 30 3b 00 00 00 4e 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 .0;...N....else.if.(!strcmp(argv
cda0 5b 69 5d 2c 20 22 2d 66 22 29 29 20 2f 2a 20 67 72 61 62 73 20 6b 65 79 62 6f 61 72 64 20 62 65 [i],."-f"))./*.grabs.keyboard.be
cdc0 66 6f 72 65 20 72 65 61 64 69 6e 67 20 73 74 64 69 6e 20 2a 2f 00 00 00 0f 20 20 20 20 20 20 66 fore.reading.stdin.*/..........f
cde0 61 73 74 20 3d 20 31 3b 00 00 00 4b 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 ast.=.1;...K....else.if.(!strcmp
ce00 28 61 72 67 76 5b 69 5d 2c 20 22 2d 69 22 29 29 20 7b 20 2f 2a 20 63 61 73 65 2d 69 6e 73 65 6e (argv[i],."-i")).{./*.case-insen
ce20 73 69 74 69 76 65 20 69 74 65 6d 20 6d 61 74 63 68 69 6e 67 20 2a 2f 00 00 00 1d 20 20 20 20 20 sitive.item.matching.*/.........
ce40 20 66 73 74 72 6e 63 6d 70 20 3d 20 73 74 72 6e 63 61 73 65 63 6d 70 3b 00 00 00 19 20 20 20 20 .fstrncmp.=.strncasecmp;........
ce60 20 20 66 73 74 72 73 74 72 20 3d 20 63 69 73 74 72 73 74 72 3b 00 00 00 1d 20 20 20 20 7d 20 65 ..fstrstr.=.cistrstr;........}.e
ce80 6c 73 65 20 69 66 20 28 69 20 2b 20 31 20 3d 3d 20 61 72 67 63 29 00 00 00 0e 20 20 20 20 20 20 lse.if.(i.+.1.==.argc)..........
cea0 75 73 61 67 65 28 29 3b 00 00 00 29 20 20 20 20 2f 2a 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 usage();...)..../*.these.options
cec0 20 74 61 6b 65 20 6f 6e 65 20 61 72 67 75 6d 65 6e 74 20 2a 2f 00 00 00 4b 20 20 20 20 65 6c 73 .take.one.argument.*/...K....els
cee0 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6c 22 29 29 20 2f 2a e.if.(!strcmp(argv[i],."-l"))./*
cf00 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 69 6e 20 76 65 72 74 69 63 61 6c 20 6c 69 73 .number.of.lines.in.vertical.lis
cf20 74 20 2a 2f 00 00 00 1e 20 20 20 20 20 20 6c 69 6e 65 73 20 3d 20 61 74 6f 69 28 61 72 67 76 5b t.*/..........lines.=.atoi(argv[
cf40 2b 2b 69 5d 29 3b 00 00 00 3a 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 ++i]);...:....else.if.(!strcmp(a
cf60 72 67 76 5b 69 5d 2c 20 22 2d 78 22 29 29 20 2f 2a 20 77 69 6e 64 6f 77 20 78 20 6f 66 66 73 65 rgv[i],."-x"))./*.window.x.offse
cf80 74 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 64 6d 78 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b t.*/..........dmx.=.atoi(argv[++
cfa0 69 5d 29 3b 00 00 00 1d 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 i]);........else.if.(!strcmp(arg
cfc0 76 5b 69 5d 2c 00 00 00 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d v[i],...H....................."-
cfe0 79 22 29 29 20 2f 2a 20 77 69 6e 64 6f 77 20 79 20 6f 66 66 73 65 74 20 28 66 72 6f 6d 20 62 6f y"))./*.window.y.offset.(from.bo
d000 74 74 6f 6d 20 75 70 20 69 66 20 2d 62 29 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 64 6d 79 20 3d ttom.up.if.-b).*/..........dmy.=
d020 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 3f 20 20 20 20 65 6c 73 65 20 69 66 .atoi(argv[++i]);...?....else.if
d040 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 7a 22 29 29 20 2f 2a 20 6d 61 6b .(!strcmp(argv[i],."-z"))./*.mak
d060 65 20 64 6d 65 6e 75 20 74 68 69 73 20 77 69 64 65 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 64 6d e.dmenu.this.wide.*/..........dm
d080 77 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 24 20 20 20 20 65 6c 73 65 w.=.atoi(argv[++i]);...$....else
d0a0 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6d 22 29 29 00 00 00 1c .if.(!strcmp(argv[i],."-m"))....
d0c0 20 20 20 20 20 20 6d 6f 6e 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 4d ......mon.=.atoi(argv[++i]);...M
d0e0 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d ....else.if.(!strcmp(argv[i],."-
d100 70 22 29 29 20 2f 2a 20 61 64 64 73 20 70 72 6f 6d 70 74 20 74 6f 20 6c 65 66 74 20 6f 66 20 69 p"))./*.adds.prompt.to.left.of.i
d120 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 19 20 20 20 20 20 20 70 72 6f 6d 70 74 20 3d 20 nput.field.*/..........prompt.=.
d140 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 3c 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 argv[++i];...<....else.if.(!strc
d160 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 66 6e 22 29 29 20 2f 2a 20 66 6f 6e 74 20 6f 72 20 66 mp(argv[i],."-fn"))./*.font.or.f
d180 6f 6e 74 20 73 65 74 20 2a 2f 00 00 00 1b 20 20 20 20 20 20 66 6f 6e 74 73 5b 30 5d 20 3d 20 61 ont.set.*/..........fonts[0].=.a
d1a0 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 43 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d rgv[++i];...C....else.if.(!strcm
d1c0 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6e 62 22 29 29 20 2f 2a 20 6e 6f 72 6d 61 6c 20 62 61 63 p(argv[i],."-nb"))./*.normal.bac
d1e0 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 2c 20 20 20 20 20 20 63 6f 6c 6f 72 73 kground.color.*/...,......colors
d200 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 6f 6c 42 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b [SchemeNorm][ColBg].=.argv[++i];
d220 00 00 00 43 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d ...C....else.if.(!strcmp(argv[i]
d240 2c 20 22 2d 6e 66 22 29 29 20 2f 2a 20 6e 6f 72 6d 61 6c 20 66 6f 72 65 67 72 6f 75 6e 64 20 63 ,."-nf"))./*.normal.foreground.c
d260 6f 6c 6f 72 20 2a 2f 00 00 00 2c 20 20 20 20 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 4e 6f olor.*/...,......colors[SchemeNo
d280 72 6d 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 45 20 20 20 20 65 rm][ColFg].=.argv[++i];...E....e
d2a0 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 73 62 22 29 29 lse.if.(!strcmp(argv[i],."-sb"))
d2c0 20 2f 2a 20 73 65 6c 65 63 74 65 64 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f ./*.selected.background.color.*/
d2e0 00 00 00 2b 20 20 20 20 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 42 ...+......colors[SchemeSel][ColB
d300 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 45 20 20 20 20 65 6c 73 65 20 69 66 20 28 g].=.argv[++i];...E....else.if.(
d320 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 73 66 22 29 29 20 2f 2a 20 73 65 6c 65 !strcmp(argv[i],."-sf"))./*.sele
d340 63 74 65 64 20 66 6f 72 65 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 2b 20 20 20 20 cted.foreground.color.*/...+....
d360 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 72 67 ..colors[SchemeSel][ColFg].=.arg
d380 76 5b 2b 2b 69 5d 3b 00 00 00 3e 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 v[++i];...>....else.if.(!strcmp(
d3a0 61 72 67 76 5b 69 5d 2c 20 22 2d 77 22 29 29 20 2f 2a 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e argv[i],."-w"))./*.embedding.win
d3c0 64 6f 77 20 69 64 20 2a 2f 00 00 00 18 20 20 20 20 20 20 65 6d 62 65 64 20 3d 20 61 72 67 76 5b dow.id.*/..........embed.=.argv[
d3e0 2b 2b 69 5d 3b 00 00 00 25 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 ++i];...%....else.if.(!strcmp(ar
d400 67 76 5b 69 5d 2c 20 22 2d 62 77 22 29 29 00 00 00 38 20 20 20 20 20 20 62 6f 72 64 65 72 5f 77 gv[i],."-bw"))...8......border_w
d420 69 64 74 68 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 20 2f 2a 20 62 6f 72 64 65 idth.=.atoi(argv[++i]);./*.borde
d440 72 20 77 69 64 74 68 20 2a 2f 00 00 00 08 20 20 20 20 65 6c 73 65 00 00 00 0e 20 20 20 20 20 20 r.width.*/........else..........
d460 75 73 61 67 65 28 29 3b 00 00 00 00 00 00 00 35 20 20 69 66 20 28 21 73 65 74 6c 6f 63 61 6c 65 usage();.......5..if.(!setlocale
d480 28 4c 43 5f 43 54 59 50 45 2c 20 22 22 29 20 7c 7c 20 21 58 53 75 70 70 6f 72 74 73 4c 6f 63 61 (LC_CTYPE,."").||.!XSupportsLoca
d4a0 6c 65 28 29 29 00 00 00 32 20 20 20 20 66 70 75 74 73 28 22 77 61 72 6e 69 6e 67 3a 20 6e 6f 20 le())...2....fputs("warning:.no.
d4c0 6c 6f 63 61 6c 65 20 73 75 70 70 6f 72 74 5c 6e 22 2c 20 73 74 64 65 72 72 29 3b 00 00 00 22 20 locale.support\n",.stderr);...".
d4e0 20 69 66 20 28 21 28 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 79 28 4e 55 4c 4c 29 29 .if.(!(dpy.=.XOpenDisplay(NULL))
d500 29 00 00 00 1f 20 20 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 6f 70 65 6e 20 64 69 73 70 6c 61 )........die("cannot.open.displa
d520 79 22 29 3b 00 00 00 1e 20 20 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e y");......screen.=.DefaultScreen
d540 28 64 70 79 29 3b 00 00 00 21 20 20 72 6f 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 64 70 (dpy);...!..root.=.RootWindow(dp
d560 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 36 20 20 69 66 20 28 21 65 6d 62 65 64 20 7c 7c 20 21 y,.screen);...6..if.(!embed.||.!
d580 28 70 61 72 65 6e 74 77 69 6e 20 3d 20 73 74 72 74 6f 6c 28 65 6d 62 65 64 2c 20 4e 55 4c 4c 2c (parentwin.=.strtol(embed,.NULL,
d5a0 20 30 29 29 29 00 00 00 15 20 20 20 20 70 61 72 65 6e 74 77 69 6e 20 3d 20 72 6f 6f 74 3b 00 00 .0)))........parentwin.=.root;..
d5c0 00 31 20 20 69 66 20 28 21 58 47 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 .1..if.(!XGetWindowAttributes(dp
d5e0 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 77 61 29 29 00 00 00 47 20 20 20 20 64 69 65 28 22 y,.parentwin,.&wa))...G....die("
d600 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 61 could.not.get.embedding.window.a
d620 74 74 72 69 62 75 74 65 73 3a 20 30 78 25 6c 78 22 2c 20 70 61 72 65 6e 74 77 69 6e 29 3b 00 00 ttributes:.0x%lx",.parentwin);..
d640 00 3b 20 20 64 72 77 20 3d 20 64 72 77 5f 63 72 65 61 74 65 28 64 70 79 2c 20 73 63 72 65 65 6e .;..drw.=.drw_create(dpy,.screen
d660 2c 20 72 6f 6f 74 2c 20 77 61 2e 77 69 64 74 68 2c 20 77 61 2e 68 65 69 67 68 74 29 3b 00 00 00 ,.root,.wa.width,.wa.height);...
d680 35 20 20 69 66 20 28 21 64 72 77 5f 66 6f 6e 74 73 65 74 5f 63 72 65 61 74 65 28 64 72 77 2c 20 5..if.(!drw_fontset_create(drw,.
d6a0 66 6f 6e 74 73 2c 20 4c 45 4e 47 54 48 28 66 6f 6e 74 73 29 29 29 00 00 00 25 20 20 20 20 64 69 fonts,.LENGTH(fonts)))...%....di
d6c0 65 28 22 6e 6f 20 66 6f 6e 74 73 20 63 6f 75 6c 64 20 62 65 20 6c 6f 61 64 65 64 2e 22 29 3b 00 e("no.fonts.could.be.loaded.");.
d6e0 00 00 26 20 20 6c 72 70 61 64 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 68 6f 72 ..&..lrpad.=.drw->fonts->h.+.hor
d700 69 7a 70 61 64 62 61 72 3b 00 00 00 00 00 00 00 12 23 69 66 64 65 66 20 5f 5f 4f 70 65 6e 42 53 izpadbar;........#ifdef.__OpenBS
d720 44 5f 5f 00 00 00 28 20 20 69 66 20 28 70 6c 65 64 67 65 28 22 73 74 64 69 6f 20 72 70 61 74 68 D__...(..if.(pledge("stdio.rpath
d740 22 2c 20 4e 55 4c 4c 29 20 3d 3d 20 2d 31 29 00 00 00 12 20 20 20 20 64 69 65 28 22 70 6c 65 64 ",.NULL).==.-1)........die("pled
d760 67 65 22 29 3b 00 00 00 06 23 65 6e 64 69 66 00 00 00 00 00 00 00 1b 20 20 69 66 20 28 66 61 73 ge");....#endif..........if.(fas
d780 74 20 26 26 20 21 69 73 61 74 74 79 28 30 29 29 20 7b 00 00 00 13 20 20 20 20 67 72 61 62 6b 65 t.&&.!isatty(0)).{........grabke
d7a0 79 62 6f 61 72 64 28 29 3b 00 00 00 10 20 20 20 20 72 65 61 64 73 74 64 69 6e 28 29 3b 00 00 00 yboard();........readstdin();...
d7c0 0a 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 10 20 20 20 20 72 65 61 64 73 74 64 69 6e 28 29 3b 00 ...}.else.{........readstdin();.
d7e0 00 00 13 20 20 20 20 67 72 61 62 6b 65 79 62 6f 61 72 64 28 29 3b 00 00 00 03 20 20 7d 00 00 00 .......grabkeyboard();......}...
d800 0a 20 20 73 65 74 75 70 28 29 3b 00 00 00 08 20 20 72 75 6e 28 29 3b 00 00 00 00 00 00 00 1d 20 ...setup();......run();.........
d820 20 72 65 74 75 72 6e 20 31 3b 20 2f 2a 20 75 6e 72 65 61 63 68 61 62 6c 65 20 2a 2f 00 00 00 01 .return.1;./*.unreachable.*/....
d840 7d 35 81 35 81 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 07 00 00 00 01 00 00 02 f3 00 }5.5._..........................
d860 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d9c0 00 00 00 00 00 00 00 00 00 69 a1 0f 7f 04 01 00 00 00 00 00 f5 18 00 00 02 f2 00 00 02 f4 00 00 .........i......................
d9e0 03 a0 00 00 00 02 00 00 00 14 09 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 3b 00 00 ...........bh.=.drw->fonts->h;..
da00 00 01 09 f5 18 00 00 02 f4 00 00 02 f5 00 00 03 a1 00 00 00 00 f5 18 00 00 02 f3 00 00 02 f5 00 ................................
da20 00 03 a1 00 00 00 01 00 00 00 23 09 2b 09 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 ..........#.+.bh.=.drw->fonts->h
da40 20 2b 20 76 65 72 74 70 61 64 62 61 72 3b 35 81 f5 18 00 00 00 00 f2 02 00 00 14 00 00 00 00 00 .+.vertpadbar;5.................
da60 00 00 00 00 00 00 01 00 00 00 01 00 00 00 c1 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 ...............B................
da80 00 00 00 00 00 00 f5 18 00 00 00 00 f3 02 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
daa0 22 00 00 00 c3 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 00 00 00 00 35 81 5f d0 "....B..............".......5._.
dac0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 02 f4 00 00 00 01 00 00 00 00 ................................
dae0 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc40 00 00 69 a1 0f 84 04 01 00 00 00 00 00 f5 18 00 00 02 f3 00 00 02 f5 00 00 03 a1 00 00 00 01 00 ..i.............................
dc60 00 00 22 09 09 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 76 65 72 74 70 61 .."..bh.=.drw->fonts->h.+.vertpa
dc80 64 62 61 72 3b 35 81 f5 18 00 00 00 00 f3 02 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 dbar;5..........................
dca0 00 00 00 00 00 c3 42 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f ......B......................5._
dcc0 d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 03 00 00 02 f4 00 00 00 01 00 00 00 ................................
dce0 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ddc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
de00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
de20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
de40 00 00 00 69 a1 0f 84 04 01 00 00 00 00 00 f5 18 00 00 02 f3 00 00 02 f5 00 00 03 a1 00 00 00 01 ...i............................
de60 00 00 00 21 09 62 68 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 76 65 72 74 70 61 ...!.bh.=.drw->fonts->h.+.vertpa
de80 64 62 61 72 3b 35 81 f5 18 00 00 00 00 f3 02 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 dbar;5..........................
dea0 00 00 00 00 00 c3 42 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f ......B......................5._
dec0 d0 00 00 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 04 00 00 02 f3 00 00 00 01 00 00 00 ................................
dee0 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e020 00 02 f3 00 00 00 02 00 00 00 00 00 00 02 f3 00 00 00 01 00 00 00 00 00 00 00 76 00 00 00 04 00 ..........................v.....
e040 00 00 00 69 a1 0f 85 04 01 00 00 00 00 00 f5 18 00 00 02 f2 00 00 02 f4 00 00 03 a1 00 00 00 01 ...i............................
e060 00 00 00 12 09 20 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 3b 35 81 f5 18 00 00 00 00 f2 02 ......=.drw->fonts->h;5.........
e080 00 00 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ae 42 00 00 00 00 00 00 02 00 .......................B........
e0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 04 00 00 00 06 00 00 00 00 00 00 ..............5._...............
e0c0 00 00 00 00 00 05 00 00 02 f3 00 00 00 01 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 ................................
e0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 f3 00 00 00 02 00 00 00 00 00 00 02 f3 ................................
e220 00 00 00 01 00 00 00 00 00 00 00 76 00 00 00 04 00 00 00 00 69 a1 0f 86 04 01 00 00 00 00 00 f5 ...........v........i...........
e240 18 00 00 02 f2 00 00 02 f4 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 f2 02 00 00 00 00 00 .................5..............
e260 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ad 42 00 00 00 00 00 00 13 00 00 00 00 00 00 ..................B.............
e280 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........5._....................
e2a0 06 00 00 02 f3 00 00 00 01 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 02 00 00 00 00 00 00 00 0b 00 00 00 01 00 ................................
e400 00 00 00 00 00 00 76 00 00 00 04 00 00 00 00 69 a1 0f 87 04 01 00 00 00 01 00 f5 18 00 00 00 0a ......v........i................
e420 00 00 03 a0 00 00 03 a0 00 00 03 97 00 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 61 ................#include.<X11/Xa
e440 74 6f 6d 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 tom.h>....#include.<X11/Xlib.h>.
e460 00 00 16 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 75 74 69 6c 2e 68 3e 00 00 00 0f 23 69 66 ...#include.<X11/Xutil.h>....#if
e480 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 24 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 65 78 def.XINERAMA...$#include.<X11/ex
e4a0 74 65 6e 73 69 6f 6e 73 2f 58 69 6e 65 72 61 6d 61 2e 68 3e 00 00 00 06 23 65 6e 64 69 66 00 00 tensions/Xinerama.h>....#endif..
e4c0 00 18 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 66 74 2f 58 66 74 2e 68 3e 00 00 00 00 00 00 ..#include.<X11/Xft/Xft.h>......
e4e0 00 10 23 69 6e 63 6c 75 64 65 20 22 64 72 77 2e 68 22 00 00 00 11 23 69 6e 63 6c 75 64 65 20 22 ..#include."drw.h"....#include."
e500 75 74 69 6c 2e 68 22 00 00 00 00 00 00 00 0c 2f 2a 20 6d 61 63 72 6f 73 20 2a 2f 00 00 00 50 23 util.h"......../*.macros.*/...P#
e520 64 65 66 69 6e 65 20 49 4e 54 45 52 53 45 43 54 28 78 2c 20 79 2c 20 77 2c 20 68 2c 20 72 29 20 define.INTERSECT(x,.y,.w,.h,.r).
e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
e560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 00 00 00 50 20 20 28 4d 41 58 28 30 2c 20 4d 49 4e ..............\...P..(MAX(0,.MIN
e580 28 28 78 29 20 2b 20 28 77 29 2c 20 28 72 29 2e 78 5f 6f 72 67 20 2b 20 28 72 29 2e 77 69 64 74 ((x).+.(w),.(r).x_org.+.(r).widt
e5a0 68 29 20 2d 20 4d 41 58 28 28 78 29 2c 20 28 72 29 2e 78 5f 6f 72 67 29 29 20 2a 20 20 20 20 20 h).-.MAX((x),.(r).x_org)).*.....
e5c0 20 20 5c 00 00 00 48 20 20 20 4d 41 58 28 30 2c 20 4d 49 4e 28 28 79 29 20 2b 20 28 68 29 2c 20 ..\...H...MAX(0,.MIN((y).+.(h),.
e5e0 28 72 29 2e 79 5f 6f 72 67 20 2b 20 28 72 29 2e 68 65 69 67 68 74 29 20 2d 20 4d 41 58 28 28 79 (r).y_org.+.(r).height).-.MAX((y
e600 29 2c 20 28 72 29 2e 79 5f 6f 72 67 29 29 29 00 00 00 39 23 64 65 66 69 6e 65 20 54 45 58 54 57 ),.(r).y_org)))...9#define.TEXTW
e620 28 58 29 20 28 64 72 77 5f 66 6f 6e 74 73 65 74 5f 67 65 74 77 69 64 74 68 28 64 72 77 2c 20 28 (X).(drw_fontset_getwidth(drw,.(
e640 58 29 29 20 2b 20 6c 72 70 61 64 29 00 00 00 00 00 00 00 0b 2f 2a 20 65 6e 75 6d 73 20 2a 2f 00 X)).+.lrpad)......../*.enums.*/.
e660 00 00 4a 65 6e 75 6d 20 7b 20 53 63 68 65 6d 65 4e 6f 72 6d 2c 20 53 63 68 65 6d 65 53 65 6c 2c ..Jenum.{.SchemeNorm,.SchemeSel,
e680 20 53 63 68 65 6d 65 4f 75 74 2c 20 53 63 68 65 6d 65 4c 61 73 74 20 7d 3b 20 2f 2a 20 63 6f 6c .SchemeOut,.SchemeLast.};./*.col
e6a0 6f 72 20 73 63 68 65 6d 65 73 20 2a 2f 00 00 00 00 00 00 00 0d 73 74 72 75 63 74 20 69 74 65 6d or.schemes.*/........struct.item
e6c0 20 7b 00 00 00 0d 20 20 63 68 61 72 20 2a 74 65 78 74 3b 00 00 00 1c 20 20 73 74 72 75 63 74 20 .{......char.*text;......struct.
e6e0 69 74 65 6d 20 2a 6c 65 66 74 2c 20 2a 72 69 67 68 74 3b 00 00 00 0a 20 20 69 6e 74 20 6f 75 74 item.*left,.*right;......int.out
e700 3b 00 00 00 02 7d 3b 00 00 00 00 00 00 00 1e 73 74 61 74 69 63 20 63 68 61 72 20 74 65 78 74 5b ;....};........static.char.text[
e720 42 55 46 53 49 5a 5d 20 3d 20 22 22 3b 00 00 00 13 73 74 61 74 69 63 20 63 68 61 72 20 2a 65 6d BUFSIZ].=."";....static.char.*em
e740 62 65 64 3b 00 00 00 16 73 74 61 74 69 63 20 69 6e 74 20 62 68 2c 20 6d 77 2c 20 6d 68 3b 00 00 bed;....static.int.bh,.mw,.mh;..
e760 00 34 73 74 61 74 69 63 20 69 6e 74 20 64 6d 78 20 3d 20 30 3b 20 2f 2a 20 70 75 74 20 64 6d 65 .4static.int.dmx.=.0;./*.put.dme
e780 6e 75 20 61 74 20 74 68 69 73 20 78 20 6f 66 66 73 65 74 20 2a 2f 00 00 00 4e 73 74 61 74 69 63 nu.at.this.x.offset.*/...Nstatic
e7a0 20 69 6e 74 20 64 6d 79 20 3d 20 30 3b 20 2f 2a 20 70 75 74 20 64 6d 65 6e 75 20 61 74 20 74 68 .int.dmy.=.0;./*.put.dmenu.at.th
e7c0 69 73 20 79 20 6f 66 66 73 65 74 20 28 6d 65 61 73 75 72 65 64 20 66 72 6f 6d 20 74 68 65 20 62 is.y.offset.(measured.from.the.b
e7e0 6f 74 74 6f 6d 20 69 66 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ottom.if...&....................
e800 20 20 20 74 6f 70 62 61 72 20 69 73 20 30 29 20 2a 2f 00 00 00 37 73 74 61 74 69 63 20 75 6e 73 ...topbar.is.0).*/...7static.uns
e820 69 67 6e 65 64 20 69 6e 74 20 64 6d 77 20 3d 20 30 3b 20 2f 2a 20 6d 61 6b 65 20 64 6d 65 6e 75 igned.int.dmw.=.0;./*.make.dmenu
e840 20 74 68 69 73 20 77 69 64 65 20 2a 2f 00 00 00 1f 73 74 61 74 69 63 20 69 6e 74 20 69 6e 70 75 .this.wide.*/....static.int.inpu
e860 74 77 20 3d 20 30 2c 20 70 72 6f 6d 70 74 77 3b 00 00 00 35 73 74 61 74 69 63 20 69 6e 74 20 6c tw.=.0,.promptw;...5static.int.l
e880 72 70 61 64 3b 20 2f 2a 20 73 75 6d 20 6f 66 20 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 70 rpad;./*.sum.of.left.and.right.p
e8a0 61 64 64 69 6e 67 20 2a 2f 00 00 00 15 73 74 61 74 69 63 20 73 69 7a 65 5f 74 20 63 75 72 73 6f adding.*/....static.size_t.curso
e8c0 72 3b 00 00 00 21 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 73 20 r;...!static.struct.item.*items.
e8e0 3d 20 4e 55 4c 4c 3b 00 00 00 27 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 6d =.NULL;...'static.struct.item.*m
e900 61 74 63 68 65 73 2c 20 2a 6d 61 74 63 68 65 6e 64 3b 00 00 00 2d 73 74 61 74 69 63 20 73 74 72 atches,.*matchend;...-static.str
e920 75 63 74 20 69 74 65 6d 20 2a 70 72 65 76 2c 20 2a 63 75 72 72 2c 20 2a 6e 65 78 74 2c 20 2a 73 uct.item.*prev,.*curr,.*next,.*s
e940 65 6c 3b 00 00 00 1c 73 74 61 74 69 63 20 69 6e 74 20 6d 6f 6e 20 3d 20 2d 31 2c 20 73 63 72 65 el;....static.int.mon.=.-1,.scre
e960 65 6e 3b 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 41 74 6f 6d 20 63 6c 69 70 2c 20 75 74 66 en;........static.Atom.clip,.utf
e980 38 3b 00 00 00 14 73 74 61 74 69 63 20 44 69 73 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 23 73 74 8;....static.Display.*dpy;...#st
e9a0 61 74 69 63 20 57 69 6e 64 6f 77 20 72 6f 6f 74 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 77 69 6e atic.Window.root,.parentwin,.win
e9c0 3b 00 00 00 0f 73 74 61 74 69 63 20 58 49 43 20 78 69 63 3b 00 00 00 00 00 00 00 10 73 74 61 74 ;....static.XIC.xic;........stat
e9e0 69 63 20 44 72 77 20 2a 64 72 77 3b 00 00 00 1f 73 74 61 74 69 63 20 43 6c 72 20 2a 73 63 68 65 ic.Drw.*drw;....static.Clr.*sche
ea00 6d 65 5b 53 63 68 65 6d 65 4c 61 73 74 5d 3b 00 00 00 00 00 00 00 13 23 69 6e 63 6c 75 64 65 20 me[SchemeLast];........#include.
ea20 22 63 6f 6e 66 69 67 2e 68 22 00 00 00 00 00 00 00 45 73 74 61 74 69 63 20 69 6e 74 20 28 2a 66 "config.h".......Estatic.int.(*f
ea40 73 74 72 6e 63 6d 70 29 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 strncmp)(const.char.*,.const.cha
ea60 72 20 2a 2c 20 73 69 7a 65 5f 74 29 20 3d 20 73 74 72 6e 63 6d 70 3b 00 00 00 3d 73 74 61 74 69 r.*,.size_t).=.strncmp;...=stati
ea80 63 20 63 68 61 72 20 2a 28 2a 66 73 74 72 73 74 72 29 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c c.char.*(*fstrstr)(const.char.*,
eaa0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 20 3d 20 73 74 72 73 74 72 3b 00 00 00 00 00 00 00 42 .const.char.*).=.strstr;.......B
eac0 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 static.unsigned.int.textw_clamp(
eae0 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6e 29 const.char.*str,.unsigned.int.n)
eb00 20 7b 00 00 00 43 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 77 20 3d 20 64 72 77 5f 66 6f 6e .{...C..unsigned.int.w.=.drw_fon
eb20 74 73 65 74 5f 67 65 74 77 69 64 74 68 5f 63 6c 61 6d 70 28 64 72 77 2c 20 73 74 72 2c 20 6e 29 tset_getwidth_clamp(drw,.str,.n)
eb40 20 2b 20 6c 72 70 61 64 3b 00 00 00 13 20 20 72 65 74 75 72 6e 20 4d 49 4e 28 77 2c 20 6e 29 3b .+.lrpad;......return.MIN(w,.n);
eb60 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 76 6f 69 64 20 61 70 70 65 6e 64 69 ....}.......=static.void.appendi
eb80 74 65 6d 28 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 73 74 72 75 63 74 20 69 74 tem(struct.item.*item,.struct.it
eba0 65 6d 20 2a 2a 6c 69 73 74 2c 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 em.**list,...,..................
ebc0 20 20 20 20 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 2a 6c 61 73 74 29 20 7b 00 00 00 0c 20 20 .....struct.item.**last).{......
ebe0 69 66 20 28 2a 6c 61 73 74 29 00 00 00 1a 20 20 20 20 28 2a 6c 61 73 74 29 2d 3e 72 69 67 68 74 if.(*last)........(*last)->right
ec00 20 3d 20 69 74 65 6d 3b 00 00 00 06 20 20 65 6c 73 65 00 00 00 11 20 20 20 20 2a 6c 69 73 74 20 .=.item;......else........*list.
ec20 3d 20 69 74 65 6d 3b 00 00 00 00 00 00 00 15 20 20 69 74 65 6d 2d 3e 6c 65 66 74 20 3d 20 2a 6c =.item;..........item->left.=.*l
ec40 61 73 74 3b 00 00 00 15 20 20 69 74 65 6d 2d 3e 72 69 67 68 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 ast;......item->right.=.NULL;...
ec60 0f 20 20 2a 6c 61 73 74 20 3d 20 69 74 65 6d 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1f 73 74 61 ...*last.=.item;....}........sta
ec80 74 69 63 20 76 6f 69 64 20 63 61 6c 63 6f 66 66 73 65 74 73 28 76 6f 69 64 29 20 7b 00 00 00 0b tic.void.calcoffsets(void).{....
eca0 20 20 69 6e 74 20 69 2c 20 6e 3b 00 00 00 00 00 00 00 10 20 20 69 66 20 28 6c 69 6e 65 73 20 3e ..int.i,.n;..........if.(lines.>
ecc0 20 30 29 00 00 00 13 20 20 20 20 6e 20 3d 20 6c 69 6e 65 73 20 2a 20 62 68 3b 00 00 00 06 20 20 .0)........n.=.lines.*.bh;......
ece0 65 6c 73 65 00 00 00 3a 20 20 20 20 6e 20 3d 20 6d 77 20 2d 20 28 70 72 6f 6d 70 74 77 20 2b 20 else...:....n.=.mw.-.(promptw.+.
ed00 69 6e 70 75 74 77 20 2b 20 54 45 58 54 57 28 22 3c 22 29 20 2b 20 54 45 58 54 57 28 22 3e 22 29 inputw.+.TEXTW("<").+.TEXTW(">")
ed20 29 3b 00 00 00 48 20 20 2f 2a 20 63 61 6c 63 75 6c 61 74 65 20 77 68 69 63 68 20 69 74 65 6d 73 );...H../*.calculate.which.items
ed40 20 77 69 6c 6c 20 62 65 67 69 6e 20 74 68 65 20 6e 65 78 74 20 70 61 67 65 20 61 6e 64 20 70 72 .will.begin.the.next.page.and.pr
ed60 65 76 69 6f 75 73 20 70 61 67 65 20 2a 2f 00 00 00 34 20 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 evious.page.*/...4..for.(i.=.0,.
ed80 6e 65 78 74 20 3d 20 63 75 72 72 3b 20 6e 65 78 74 3b 20 6e 65 78 74 20 3d 20 6e 65 78 74 2d 3e next.=.curr;.next;.next.=.next->
eda0 72 69 67 68 74 29 00 00 00 41 20 20 20 20 69 66 20 28 28 69 20 2b 3d 20 28 6c 69 6e 65 73 20 3e right)...A....if.((i.+=.(lines.>
edc0 20 30 29 20 3f 20 62 68 20 3a 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 6e 65 78 74 2d 3e 74 65 78 .0).?.bh.:.textw_clamp(next->tex
ede0 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 41 20 t,.n)).>.n)..........break;...A.
ee00 20 66 6f 72 20 28 69 20 3d 20 30 2c 20 70 72 65 76 20 3d 20 63 75 72 72 3b 20 70 72 65 76 20 26 .for.(i.=.0,.prev.=.curr;.prev.&
ee20 26 20 70 72 65 76 2d 3e 6c 65 66 74 3b 20 70 72 65 76 20 3d 20 70 72 65 76 2d 3e 6c 65 66 74 29 &.prev->left;.prev.=.prev->left)
ee40 00 00 00 47 20 20 20 20 69 66 20 28 28 69 20 2b 3d 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 3f 20 ...G....if.((i.+=.(lines.>.0).?.
ee60 62 68 20 3a 20 74 65 78 74 77 5f 63 6c 61 6d 70 28 70 72 65 76 2d 3e 6c 65 66 74 2d 3e 74 65 78 bh.:.textw_clamp(prev->left->tex
ee80 74 2c 20 6e 29 29 20 3e 20 6e 29 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 01 7d t,.n)).>.n)..........break;....}
eea0 00 00 00 00 00 00 00 1b 73 74 61 74 69 63 20 76 6f 69 64 20 63 6c 65 61 6e 75 70 28 76 6f 69 64 ........static.void.cleanup(void
eec0 29 20 7b 00 00 00 0b 20 20 73 69 7a 65 5f 74 20 69 3b 00 00 00 00 00 00 00 24 20 20 58 55 6e 67 ).{......size_t.i;.......$..XUng
eee0 72 61 62 4b 65 79 62 6f 61 72 64 28 64 70 79 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 rabKeyboard(dpy,.CurrentTime);..
ef00 00 22 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 53 63 68 65 6d 65 4c 61 73 74 3b 20 ."..for.(i.=.0;.i.<.SchemeLast;.
ef20 69 2b 2b 29 00 00 00 14 20 20 20 20 66 72 65 65 28 73 63 68 65 6d 65 5b 69 5d 29 3b 00 00 00 2a i++)........free(scheme[i]);...*
ef40 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 74 65 6d 73 20 26 26 20 69 74 65 6d 73 5b 69 5d 2e ..for.(i.=.0;.items.&&.items[i].
ef60 74 65 78 74 3b 20 2b 2b 69 29 00 00 00 18 20 20 20 20 66 72 65 65 28 69 74 65 6d 73 5b 69 5d 2e text;.++i)........free(items[i].
ef80 74 65 78 74 29 3b 00 00 00 0e 20 20 66 72 65 65 28 69 74 65 6d 73 29 3b 00 00 00 10 20 20 64 72 text);......free(items);......dr
efa0 77 5f 66 72 65 65 28 64 72 77 29 3b 00 00 00 14 20 20 58 53 79 6e 63 28 64 70 79 2c 20 46 61 6c w_free(drw);......XSync(dpy,.Fal
efc0 73 65 29 3b 00 00 00 15 20 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 64 70 79 29 3b 00 00 00 se);......XCloseDisplay(dpy);...
efe0 01 7d 00 00 00 00 00 00 00 35 73 74 61 74 69 63 20 63 68 61 72 20 2a 63 69 73 74 72 73 74 72 28 .}.......5static.char.*cistrstr(
f000 63 6f 6e 73 74 20 63 68 61 72 20 2a 68 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 29 20 7b 00 const.char.*h,.const.char.*n).{.
f020 00 00 0b 20 20 73 69 7a 65 5f 74 20 69 3b 00 00 00 00 00 00 00 0c 20 20 69 66 20 28 21 6e 5b 30 .....size_t.i;..........if.(!n[0
f040 5d 29 00 00 00 15 20 20 20 20 72 65 74 75 72 6e 20 28 63 68 61 72 20 2a 29 68 3b 00 00 00 00 00 ])........return.(char.*)h;.....
f060 00 00 13 20 20 66 6f 72 20 28 3b 20 2a 68 3b 20 2b 2b 68 29 20 7b 00 00 00 0f 20 20 20 20 66 6f .....for.(;.*h;.++h).{........fo
f080 72 20 28 69 20 3d 20 30 3b 00 00 00 4e 20 20 20 20 20 20 20 20 20 6e 5b 69 5d 20 26 26 20 74 6f r.(i.=.0;...N.........n[i].&&.to
f0a0 6c 6f 77 65 72 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 6e 5b 69 5d 29 20 3d 3d 20 74 6f lower((unsigned.char)n[i]).==.to
f0c0 6c 6f 77 65 72 28 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 29 68 5b 69 5d 29 3b 00 00 00 0d 20 lower((unsigned.char)h[i]);.....
f0e0 20 20 20 20 20 20 20 20 2b 2b 69 29 00 00 00 07 20 20 20 20 20 20 3b 00 00 00 15 20 20 20 20 69 ........++i)..........;........i
f100 66 20 28 6e 5b 69 5d 20 3d 3d 20 27 5c 30 27 29 00 00 00 17 20 20 20 20 20 20 72 65 74 75 72 6e f.(n[i].==.'\0')..........return
f120 20 28 63 68 61 72 20 2a 29 68 3b 00 00 00 03 20 20 7d 00 00 00 0e 20 20 72 65 74 75 72 6e 20 4e .(char.*)h;......}......return.N
f140 55 4c 4c 3b 00 00 00 01 7d 00 00 00 00 00 00 00 3d 73 74 61 74 69 63 20 69 6e 74 20 64 72 61 77 ULL;....}.......=static.int.draw
f160 69 74 65 6d 28 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 69 6e 74 20 78 2c 20 69 item(struct.item.*item,.int.x,.i
f180 6e 74 20 79 2c 20 69 6e 74 20 77 29 20 7b 00 00 00 12 20 20 69 66 20 28 69 74 65 6d 20 3d 3d 20 nt.y,.int.w).{......if.(item.==.
f1a0 73 65 6c 29 00 00 00 2a 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 sel)...*....drw_setscheme(drw,.s
f1c0 63 68 65 6d 65 5b 53 63 68 65 6d 65 53 65 6c 5d 29 3b 00 00 00 15 20 20 65 6c 73 65 20 69 66 20 cheme[SchemeSel]);......else.if.
f1e0 28 69 74 65 6d 2d 3e 6f 75 74 29 00 00 00 2a 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 (item->out)...*....drw_setscheme
f200 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4f 75 74 5d 29 3b 00 00 00 06 20 20 65 (drw,.scheme[SchemeOut]);......e
f220 6c 73 65 00 00 00 2b 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 lse...+....drw_setscheme(drw,.sc
f240 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 00 00 00 00 3e 20 20 72 65 74 75 heme[SchemeNorm]);.......>..retu
f260 72 6e 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 79 2c 20 77 2c 20 62 68 2c 20 6c 72 rn.drw_text(drw,.x,.y,.w,.bh,.lr
f280 70 61 64 20 2f 20 32 2c 20 69 74 65 6d 2d 3e 74 65 78 74 2c 20 30 29 3b 00 00 00 01 7d 00 00 00 pad./.2,.item->text,.0);....}...
f2a0 00 00 00 00 1c 73 74 61 74 69 63 20 76 6f 69 64 20 64 72 61 77 6d 65 6e 75 28 76 6f 69 64 29 20 .....static.void.drawmenu(void).
f2c0 7b 00 00 00 16 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 75 72 70 6f 73 3b 00 00 00 14 20 {......unsigned.int.curpos;.....
f2e0 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 3b 00 00 00 16 20 20 69 6e 74 20 78 20 3d .struct.item.*item;......int.x.=
f300 20 30 2c 20 79 20 3d 20 30 2c 20 77 3b 00 00 00 00 00 00 00 29 20 20 64 72 77 5f 73 65 74 73 63 .0,.y.=.0,.w;.......)..drw_setsc
f320 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 heme(drw,.scheme[SchemeNorm]);..
f340 00 24 20 20 64 72 77 5f 72 65 63 74 28 64 72 77 2c 20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 2c 20 .$..drw_rect(drw,.0,.0,.mw,.mh,.
f360 31 2c 20 31 29 3b 00 00 00 00 00 00 00 1a 20 20 69 66 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 1,.1);..........if.(prompt.&&.*p
f380 72 6f 6d 70 74 29 20 7b 00 00 00 2a 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 rompt).{...*....drw_setscheme(dr
f3a0 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 53 65 6c 5d 29 3b 00 00 00 3f 20 20 20 20 78 20 w,.scheme[SchemeSel]);...?....x.
f3c0 3d 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 70 72 6f 6d 70 74 77 2c 20 62 =.drw_text(drw,.x,.0,.promptw,.b
f3e0 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 70 72 6f 6d 70 74 2c 20 30 29 3b 00 00 00 03 20 20 7d h,.lrpad./.2,.prompt,.0);......}
f400 00 00 00 18 20 20 2f 2a 20 64 72 61 77 20 69 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 30 ....../*.draw.input.field.*/...0
f420 20 20 77 20 3d 20 28 6c 69 6e 65 73 20 3e 20 30 20 7c 7c 20 21 6d 61 74 63 68 65 73 29 20 3f 20 ..w.=.(lines.>.0.||.!matches).?.
f440 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 77 3b 00 00 00 29 20 20 64 72 77 5f 73 65 74 73 63 68 mw.-.x.:.inputw;...)..drw_setsch
f460 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 eme(drw,.scheme[SchemeNorm]);...
f480 31 20 20 64 72 77 5f 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 77 2c 20 62 68 2c 20 6c 72 1..drw_text(drw,.x,.0,.w,.bh,.lr
f4a0 70 61 64 20 2f 20 32 2c 20 74 65 78 74 2c 20 30 29 3b 00 00 00 00 00 00 00 2e 20 20 63 75 72 70 pad./.2,.text,.0);..........curp
f4c0 6f 73 20 3d 20 54 45 58 54 57 28 74 65 78 74 29 20 2d 20 54 45 58 54 57 28 26 74 65 78 74 5b 63 os.=.TEXTW(text).-.TEXTW(&text[c
f4e0 75 72 73 6f 72 5d 29 3b 00 00 00 26 20 20 69 66 20 28 28 63 75 72 70 6f 73 20 2b 3d 20 6c 72 70 ursor]);...&..if.((curpos.+=.lrp
f500 61 64 20 2f 20 32 20 2d 20 31 29 20 3c 20 77 29 20 7b 00 00 00 2b 20 20 20 20 64 72 77 5f 73 65 ad./.2.-.1).<.w).{...+....drw_se
f520 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 tscheme(drw,.scheme[SchemeNorm])
f540 3b 00 00 00 32 20 20 20 20 64 72 77 5f 72 65 63 74 28 64 72 77 2c 20 78 20 2b 20 63 75 72 70 6f ;...2....drw_rect(drw,.x.+.curpo
f560 73 2c 20 32 2c 20 32 2c 20 62 68 20 2d 20 34 2c 20 31 2c 20 30 29 3b 00 00 00 03 20 20 7d 00 00 s,.2,.2,.bh.-.4,.1,.0);......}..
f580 00 00 00 00 00 12 20 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 7b 00 00 00 1c 20 20 20 20 ........if.(lines.>.0).{........
f5a0 2f 2a 20 64 72 61 77 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 37 20 20 20 20 /*.draw.vertical.list.*/...7....
f5c0 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b 20 for.(item.=.curr;.item.!=.next;.
f5e0 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 00 00 00 29 20 20 20 20 20 20 64 72 61 item.=.item->right)...)......dra
f600 77 69 74 65 6d 28 69 74 65 6d 2c 20 78 2c 20 79 20 2b 3d 20 62 68 2c 20 6d 77 20 2d 20 78 29 3b witem(item,.x,.y.+=.bh,.mw.-.x);
f620 00 00 00 17 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 1e 20 ......}.else.if.(matches).{.....
f640 20 20 20 2f 2a 20 64 72 61 77 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 .../*.draw.horizontal.list.*/...
f660 10 20 20 20 20 78 20 2b 3d 20 69 6e 70 75 74 77 3b 00 00 00 13 20 20 20 20 77 20 3d 20 54 45 58 .....x.+=.inputw;........w.=.TEX
f680 54 57 28 22 3c 22 29 3b 00 00 00 15 20 20 20 20 69 66 20 28 63 75 72 72 2d 3e 6c 65 66 74 29 20 TW("<");........if.(curr->left).
f6a0 7b 00 00 00 2d 20 20 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 {...-......drw_setscheme(drw,.sc
f6c0 68 65 6d 65 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 34 20 20 20 20 20 20 64 72 77 5f heme[SchemeNorm]);...4......drw_
f6e0 74 65 78 74 28 64 72 77 2c 20 78 2c 20 30 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 text(drw,.x,.0,.w,.bh,.lrpad./.2
f700 2c 20 22 3c 22 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0b 20 20 20 20 78 20 2b 3d 20 ,."<",.0);........}........x.+=.
f720 77 3b 00 00 00 37 20 20 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d w;...7....for.(item.=.curr;.item
f740 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 00 00 00 .!=.next;.item.=.item->right)...
f760 4d 20 20 20 20 20 20 78 20 3d 20 64 72 61 77 69 74 65 6d 28 69 74 65 6d 2c 20 78 2c 20 30 2c 20 M......x.=.drawitem(item,.x,.0,.
f780 74 65 78 74 77 5f 63 6c 61 6d 70 28 69 74 65 6d 2d 3e 74 65 78 74 2c 20 6d 77 20 2d 20 78 20 2d textw_clamp(item->text,.mw.-.x.-
f7a0 20 54 45 58 54 57 28 22 3e 22 29 29 29 3b 00 00 00 0f 20 20 20 20 69 66 20 28 6e 65 78 74 29 20 .TEXTW(">")));........if.(next).
f7c0 7b 00 00 00 15 20 20 20 20 20 20 77 20 3d 20 54 45 58 54 57 28 22 3e 22 29 3b 00 00 00 2d 20 20 {..........w.=.TEXTW(">");...-..
f7e0 20 20 20 20 64 72 77 5f 73 65 74 73 63 68 65 6d 65 28 64 72 77 2c 20 73 63 68 65 6d 65 5b 53 63 ....drw_setscheme(drw,.scheme[Sc
f800 68 65 6d 65 4e 6f 72 6d 5d 29 3b 00 00 00 39 20 20 20 20 20 20 64 72 77 5f 74 65 78 74 28 64 72 hemeNorm]);...9......drw_text(dr
f820 77 2c 20 6d 77 20 2d 20 77 2c 20 30 2c 20 77 2c 20 62 68 2c 20 6c 72 70 61 64 20 2f 20 32 2c 20 w,.mw.-.w,.0,.w,.bh,.lrpad./.2,.
f840 22 3e 22 2c 20 30 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 22 20 20 64 72 ">",.0);........}......}..."..dr
f860 77 5f 6d 61 70 28 64 72 77 2c 20 77 69 6e 2c 20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 w_map(drw,.win,.0,.0,.mw,.mh);..
f880 00 01 7d 00 00 00 00 00 00 00 1d 73 74 61 74 69 63 20 76 6f 69 64 20 67 72 61 62 66 6f 63 75 73 ..}........static.void.grabfocus
f8a0 28 76 6f 69 64 29 20 7b 00 00 00 3a 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 (void).{...:..struct.timespec.ts
f8c0 20 3d 20 7b 2e 74 76 5f 73 65 63 20 3d 20 30 2c 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 .=.{.tv_sec.=.0,..tv_nsec.=.1000
f8e0 30 30 30 30 7d 3b 00 00 00 12 20 20 57 69 6e 64 6f 77 20 66 6f 63 75 73 77 69 6e 3b 00 00 00 13 0000};......Window.focuswin;....
f900 20 20 69 6e 74 20 69 2c 20 72 65 76 65 72 74 77 69 6e 3b 00 00 00 00 00 00 00 1d 20 20 66 6f 72 ..int.i,.revertwin;..........for
f920 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 31 30 30 3b 20 2b 2b 69 29 20 7b 00 00 00 2f 20 20 20 20 .(i.=.0;.i.<.100;.++i).{.../....
f940 58 47 65 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 79 2c 20 26 66 6f 63 75 73 77 69 6e 2c 20 26 XGetInputFocus(dpy,.&focuswin,.&
f960 72 65 76 65 72 74 77 69 6e 29 3b 00 00 00 18 20 20 20 20 69 66 20 28 66 6f 63 75 73 77 69 6e 20 revertwin);........if.(focuswin.
f980 3d 3d 20 77 69 6e 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 3a 20 20 20 20 ==.win)..........return;...:....
f9a0 58 53 65 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 79 2c 20 77 69 6e 2c 20 52 65 76 65 72 74 54 XSetInputFocus(dpy,.win,.RevertT
f9c0 6f 50 61 72 65 6e 74 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 19 20 20 20 20 6e 61 oParent,.CurrentTime);........na
f9e0 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e 55 4c 4c 29 3b 00 00 00 03 20 20 7d 00 00 00 1b 20 20 nosleep(&ts,.NULL);......}......
fa00 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 61 62 20 66 6f 63 75 73 22 29 3b 00 00 00 01 7d 00 00 die("cannot.grab.focus");....}..
fa20 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 67 72 61 62 6b 65 79 62 6f 61 72 64 28 76 ......static.void.grabkeyboard(v
fa40 6f 69 64 29 20 7b 00 00 00 39 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 20 3d oid).{...9..struct.timespec.ts.=
fa60 20 7b 2e 74 76 5f 73 65 63 20 3d 20 30 2c 20 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 30 30 .{.tv_sec.=.0,..tv_nsec.=.100000
fa80 30 7d 3b 00 00 00 08 20 20 69 6e 74 20 69 3b 00 00 00 00 00 00 00 0c 20 20 69 66 20 28 65 6d 62 0};......int.i;..........if.(emb
faa0 65 64 29 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 4f 20 20 2f 2a 20 74 72 79 20 74 ed)........return;...O../*.try.t
fac0 6f 20 67 72 61 62 20 6b 65 79 62 6f 61 72 64 2c 20 77 65 20 6d 61 79 20 68 61 76 65 20 74 6f 20 o.grab.keyboard,.we.may.have.to.
fae0 77 61 69 74 20 66 6f 72 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73 20 74 6f 20 75 6e 67 72 wait.for.another.process.to.ungr
fb00 61 62 20 2a 2f 00 00 00 1e 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 31 30 30 30 3b ab.*/......for.(i.=.0;.i.<.1000;
fb20 20 69 2b 2b 29 20 7b 00 00 00 47 20 20 20 20 69 66 20 28 58 47 72 61 62 4b 65 79 62 6f 61 72 64 .i++).{...G....if.(XGrabKeyboard
fb40 28 64 70 79 2c 20 44 65 66 61 75 6c 74 52 6f 6f 74 57 69 6e 64 6f 77 28 64 70 79 29 2c 20 54 72 (dpy,.DefaultRootWindow(dpy),.Tr
fb60 75 65 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 00 00 00 41 20 20 20 20 20 20 20 20 20 20 ue,.GrabModeAsync,...A..........
fb80 20 20 20 20 20 20 20 20 20 20 20 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 43 75 72 72 65 ............GrabModeAsync,.Curre
fba0 6e 74 54 69 6d 65 29 20 3d 3d 20 47 72 61 62 53 75 63 63 65 73 73 29 00 00 00 0d 20 20 20 20 20 ntTime).==.GrabSuccess).........
fbc0 20 72 65 74 75 72 6e 3b 00 00 00 19 20 20 20 20 6e 61 6e 6f 73 6c 65 65 70 28 26 74 73 2c 20 4e .return;........nanosleep(&ts,.N
fbe0 55 4c 4c 29 3b 00 00 00 03 20 20 7d 00 00 00 1e 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 67 72 ULL);......}......die("cannot.gr
fc00 61 62 20 6b 65 79 62 6f 61 72 64 22 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 ab.keyboard");....}........stati
fc20 63 20 76 6f 69 64 20 6d 61 74 63 68 28 76 6f 69 64 29 20 7b 00 00 00 1c 20 20 73 74 61 74 69 63 c.void.match(void).{......static
fc40 20 63 68 61 72 20 2a 2a 74 6f 6b 76 20 3d 20 4e 55 4c 4c 3b 00 00 00 16 20 20 73 74 61 74 69 63 .char.**tokv.=.NULL;......static
fc60 20 69 6e 74 20 74 6f 6b 6e 20 3d 20 30 3b 00 00 00 00 00 00 00 1c 20 20 63 68 61 72 20 62 75 66 .int.tokn.=.0;..........char.buf
fc80 5b 73 69 7a 65 6f 66 20 74 65 78 74 5d 2c 20 2a 73 3b 00 00 00 12 20 20 69 6e 74 20 69 2c 20 74 [sizeof.text],.*s;......int.i,.t
fca0 6f 6b 63 20 3d 20 30 3b 00 00 00 17 20 20 73 69 7a 65 5f 74 20 6c 65 6e 2c 20 74 65 78 74 73 69 okc.=.0;......size_t.len,.textsi
fcc0 7a 65 3b 00 00 00 40 20 20 73 74 72 75 63 74 20 69 74 65 6d 20 2a 69 74 65 6d 2c 20 2a 6c 70 72 ze;...@..struct.item.*item,.*lpr
fce0 65 66 69 78 2c 20 2a 6c 73 75 62 73 74 72 2c 20 2a 70 72 65 66 69 78 65 6e 64 2c 20 2a 73 75 62 efix,.*lsubstr,.*prefixend,.*sub
fd00 73 74 72 65 6e 64 3b 00 00 00 00 00 00 00 14 20 20 73 74 72 63 70 79 28 62 75 66 2c 20 74 65 78 strend;..........strcpy(buf,.tex
fd20 74 29 3b 00 00 00 42 20 20 2f 2a 20 73 65 70 61 72 61 74 65 20 69 6e 70 75 74 20 74 65 78 74 20 t);...B../*.separate.input.text.
fd40 69 6e 74 6f 20 74 6f 6b 65 6e 73 20 74 6f 20 62 65 20 6d 61 74 63 68 65 64 20 69 6e 64 69 76 69 into.tokens.to.be.matched.indivi
fd60 64 75 61 6c 6c 79 20 2a 2f 00 00 00 4a 20 20 66 6f 72 20 28 73 20 3d 20 73 74 72 74 6f 6b 28 62 dually.*/...J..for.(s.=.strtok(b
fd80 75 66 2c 20 22 20 22 29 3b 20 73 3b 20 74 6f 6b 76 5b 74 6f 6b 63 20 2d 20 31 5d 20 3d 20 73 2c uf,.".");.s;.tokv[tokc.-.1].=.s,
fda0 20 73 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 22 29 29 00 00 00 48 20 20 20 20 69 .s.=.strtok(NULL,."."))...H....i
fdc0 66 20 28 2b 2b 74 6f 6b 63 20 3e 20 74 6f 6b 6e 20 26 26 20 21 28 74 6f 6b 76 20 3d 20 72 65 61 f.(++tokc.>.tokn.&&.!(tokv.=.rea
fde0 6c 6c 6f 63 28 74 6f 6b 76 2c 20 2b 2b 74 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b 76 lloc(tokv,.++tokn.*.sizeof.*tokv
fe00 29 29 29 00 00 00 3c 20 20 20 20 20 20 64 69 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c 6c 6f 63 )))...<......die("cannot.realloc
fe20 20 25 7a 75 20 62 79 74 65 73 3a 22 2c 20 74 6f 6b 6e 20 2a 20 73 69 7a 65 6f 66 20 2a 74 6f 6b .%zu.bytes:",.tokn.*.sizeof.*tok
fe40 76 29 3b 00 00 00 23 20 20 6c 65 6e 20 3d 20 74 6f 6b 63 20 3f 20 73 74 72 6c 65 6e 28 74 6f 6b v);...#..len.=.tokc.?.strlen(tok
fe60 76 5b 30 5d 29 20 3a 20 30 3b 00 00 00 00 00 00 00 48 20 20 6d 61 74 63 68 65 73 20 3d 20 6c 70 v[0]).:.0;.......H..matches.=.lp
fe80 72 65 66 69 78 20 3d 20 6c 73 75 62 73 74 72 20 3d 20 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 65 refix.=.lsubstr.=.matchend.=.pre
fea0 66 69 78 65 6e 64 20 3d 20 73 75 62 73 74 72 65 6e 64 20 3d 20 4e 55 4c 4c 3b 00 00 00 1e 20 20 fixend.=.substrend.=.NULL;......
fec0 74 65 78 74 73 69 7a 65 20 3d 20 73 74 72 6c 65 6e 28 74 65 78 74 29 20 2b 20 31 3b 00 00 00 32 textsize.=.strlen(text).+.1;...2
fee0 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 69 74 65 6d 73 3b 20 69 74 65 6d 20 26 26 20 69 74 65 ..for.(item.=.items;.item.&&.ite
ff00 6d 2d 3e 74 65 78 74 3b 20 69 74 65 6d 2b 2b 29 20 7b 00 00 00 1e 20 20 20 20 66 6f 72 20 28 69 m->text;.item++).{........for.(i
ff20 20 3d 20 30 3b 20 69 20 3c 20 74 6f 6b 63 3b 20 69 2b 2b 29 00 00 00 28 20 20 20 20 20 20 69 66 .=.0;.i.<.tokc;.i++)...(......if
ff40 20 28 21 66 73 74 72 73 74 72 28 69 74 65 6d 2d 3e 74 65 78 74 2c 20 74 6f 6b 76 5b 69 5d 29 29 .(!fstrstr(item->text,.tokv[i]))
ff60 00 00 00 0e 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 2d 20 20 20 20 69 66 20 28 69 20 ............break;...-....if.(i.
ff80 21 3d 20 74 6f 6b 63 29 20 2f 2a 20 6e 6f 74 20 61 6c 6c 20 74 6f 6b 65 6e 73 20 6d 61 74 63 68 !=.tokc)./*.not.all.tokens.match
ffa0 20 2a 2f 00 00 00 0f 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 00 00 00 40 20 20 20 20 2f 2a .*/..........continue;...@..../*
ffc0 20 65 78 61 63 74 20 6d 61 74 63 68 65 73 20 67 6f 20 66 69 72 73 74 2c 20 74 68 65 6e 20 70 72 .exact.matches.go.first,.then.pr
ffe0 65 66 69 78 65 73 2c 20 74 68 65 6e 20 73 75 62 73 74 72 69 6e 67 73 20 2a 2f 00 00 00 37 20 20 efixes,.then.substrings.*/...7..
10000 20 20 69 66 20 28 21 74 6f 6b 63 20 7c 7c 20 21 66 73 74 72 6e 63 6d 70 28 74 65 78 74 2c 20 69 ..if.(!tokc.||.!fstrncmp(text,.i
10020 74 65 6d 2d 3e 74 65 78 74 2c 20 74 65 78 74 73 69 7a 65 29 29 00 00 00 2c 20 20 20 20 20 20 61 tem->text,.textsize))...,......a
10040 70 70 65 6e 64 69 74 65 6d 28 69 74 65 6d 2c 20 26 6d 61 74 63 68 65 73 2c 20 26 6d 61 74 63 68 ppenditem(item,.&matches,.&match
10060 65 6e 64 29 3b 00 00 00 31 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 66 73 74 72 6e 63 6d 70 28 end);...1....else.if.(!fstrncmp(
10080 74 6f 6b 76 5b 30 5d 2c 20 69 74 65 6d 2d 3e 74 65 78 74 2c 20 6c 65 6e 29 29 00 00 00 2d 20 20 tokv[0],.item->text,.len))...-..
100a0 20 20 20 20 61 70 70 65 6e 64 69 74 65 6d 28 69 74 65 6d 2c 20 26 6c 70 72 65 66 69 78 2c 20 26 ....appenditem(item,.&lprefix,.&
100c0 70 72 65 66 69 78 65 6e 64 29 3b 00 00 00 08 20 20 20 20 65 6c 73 65 00 00 00 2d 20 20 20 20 20 prefixend);........else...-.....
100e0 20 61 70 70 65 6e 64 69 74 65 6d 28 69 74 65 6d 2c 20 26 6c 73 75 62 73 74 72 2c 20 26 73 75 62 .appenditem(item,.&lsubstr,.&sub
10100 73 74 72 65 6e 64 29 3b 00 00 00 03 20 20 7d 00 00 00 10 20 20 69 66 20 28 6c 70 72 65 66 69 78 strend);......}......if.(lprefix
10120 29 20 7b 00 00 00 12 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 20 20 20 20 ).{........if.(matches).{.......
10140 20 20 20 6d 61 74 63 68 65 6e 64 2d 3e 72 69 67 68 74 20 3d 20 6c 70 72 65 66 69 78 3b 00 00 00 ...matchend->right.=.lprefix;...
10160 1f 20 20 20 20 20 20 6c 70 72 65 66 69 78 2d 3e 6c 65 66 74 20 3d 20 6d 61 74 63 68 65 6e 64 3b .......lprefix->left.=.matchend;
10180 00 00 00 0a 20 20 20 20 7d 20 65 6c 73 65 00 00 00 18 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 ........}.else..........matches.
101a0 3d 20 6c 70 72 65 66 69 78 3b 00 00 00 19 20 20 20 20 6d 61 74 63 68 65 6e 64 20 3d 20 70 72 65 =.lprefix;........matchend.=.pre
101c0 66 69 78 65 6e 64 3b 00 00 00 03 20 20 7d 00 00 00 10 20 20 69 66 20 28 6c 73 75 62 73 74 72 29 fixend;......}......if.(lsubstr)
101e0 20 7b 00 00 00 12 20 20 20 20 69 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 20 20 20 20 20 .{........if.(matches).{........
10200 20 20 6d 61 74 63 68 65 6e 64 2d 3e 72 69 67 68 74 20 3d 20 6c 73 75 62 73 74 72 3b 00 00 00 1f ..matchend->right.=.lsubstr;....
10220 20 20 20 20 20 20 6c 73 75 62 73 74 72 2d 3e 6c 65 66 74 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 ......lsubstr->left.=.matchend;.
10240 00 00 0a 20 20 20 20 7d 20 65 6c 73 65 00 00 00 18 20 20 20 20 20 20 6d 61 74 63 68 65 73 20 3d .......}.else..........matches.=
10260 20 6c 73 75 62 73 74 72 3b 00 00 00 19 20 20 20 20 6d 61 74 63 68 65 6e 64 20 3d 20 73 75 62 73 .lsubstr;........matchend.=.subs
10280 74 72 65 6e 64 3b 00 00 00 03 20 20 7d 00 00 00 17 20 20 63 75 72 72 20 3d 20 73 65 6c 20 3d 20 trend;......}......curr.=.sel.=.
102a0 6d 61 74 63 68 65 73 3b 00 00 00 10 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 01 matches;......calcoffsets();....
102c0 7d 00 00 00 00 00 00 00 30 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e 73 65 72 74 28 63 6f 6e 73 }.......0static.void.insert(cons
102e0 74 20 63 68 61 72 20 2a 73 74 72 2c 20 73 73 69 7a 65 5f 74 20 6e 29 20 7b 00 00 00 29 20 20 69 t.char.*str,.ssize_t.n).{...)..i
10300 66 20 28 73 74 72 6c 65 6e 28 74 65 78 74 29 20 2b 20 6e 20 3e 20 73 69 7a 65 6f 66 20 74 65 78 f.(strlen(text).+.n.>.sizeof.tex
10320 74 20 2d 20 31 29 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 4d 20 20 2f 2a 20 6d 6f t.-.1)........return;...M../*.mo
10340 76 65 20 65 78 69 73 74 69 6e 67 20 74 65 78 74 20 6f 75 74 20 6f 66 20 74 68 65 20 77 61 79 2c ve.existing.text.out.of.the.way,
10360 20 69 6e 73 65 72 74 20 6e 65 77 20 74 65 78 74 2c 20 61 6e 64 20 75 70 64 61 74 65 20 63 75 72 .insert.new.text,.and.update.cur
10380 73 6f 72 20 2a 2f 00 00 00 4e 20 20 6d 65 6d 6d 6f 76 65 28 26 74 65 78 74 5b 63 75 72 73 6f 72 sor.*/...N..memmove(&text[cursor
103a0 20 2b 20 6e 5d 2c 20 26 74 65 78 74 5b 63 75 72 73 6f 72 5d 2c 20 73 69 7a 65 6f 66 20 74 65 78 .+.n],.&text[cursor],.sizeof.tex
103c0 74 20 2d 20 63 75 72 73 6f 72 20 2d 20 4d 41 58 28 6e 2c 20 30 29 29 3b 00 00 00 0c 20 20 69 66 t.-.cursor.-.MAX(n,.0));......if
103e0 20 28 6e 20 3e 20 30 29 00 00 00 22 20 20 20 20 6d 65 6d 63 70 79 28 26 74 65 78 74 5b 63 75 72 .(n.>.0)..."....memcpy(&text[cur
10400 73 6f 72 5d 2c 20 73 74 72 2c 20 6e 29 3b 00 00 00 0e 20 20 63 75 72 73 6f 72 20 2b 3d 20 6e 3b sor],.str,.n);......cursor.+=.n;
10420 00 00 00 0a 20 20 6d 61 74 63 68 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 ......match();....}.......!stati
10440 63 20 73 69 7a 65 5f 74 20 6e 65 78 74 72 75 6e 65 28 69 6e 74 20 69 6e 63 29 20 7b 00 00 00 0c c.size_t.nextrune(int.inc).{....
10460 20 20 73 73 69 7a 65 5f 74 20 6e 3b 00 00 00 00 00 00 00 4b 20 20 2f 2a 20 72 65 74 75 72 6e 20 ..ssize_t.n;.......K../*.return.
10480 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 6e 65 78 74 20 75 74 66 38 20 72 75 6e 65 20 69 6e 20 74 68 location.of.next.utf8.rune.in.th
104a0 65 20 67 69 76 65 6e 20 64 69 72 65 63 74 69 6f 6e 20 28 2b 31 20 6f 72 20 2d 31 29 20 2a 2f 00 e.given.direction.(+1.or.-1).*/.
104c0 00 00 4c 20 20 66 6f 72 20 28 6e 20 3d 20 63 75 72 73 6f 72 20 2b 20 69 6e 63 3b 20 6e 20 2b 20 ..L..for.(n.=.cursor.+.inc;.n.+.
104e0 69 6e 63 20 3e 3d 20 30 20 26 26 20 28 74 65 78 74 5b 6e 5d 20 26 20 30 78 63 30 29 20 3d 3d 20 inc.>=.0.&&.(text[n].&.0xc0).==.
10500 30 78 38 30 3b 20 6e 20 2b 3d 20 69 6e 63 29 00 00 00 05 20 20 20 20 3b 00 00 00 0b 20 20 72 65 0x80;.n.+=.inc)........;......re
10520 74 75 72 6e 20 6e 3b 00 00 00 01 7d 00 00 00 00 00 00 00 23 73 74 61 74 69 63 20 76 6f 69 64 20 turn.n;....}.......#static.void.
10540 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 69 6e 74 20 64 69 72 29 20 7b 00 00 00 3a 20 20 69 66 20 movewordedge(int.dir).{...:..if.
10560 28 64 69 72 20 3c 20 30 29 20 7b 20 2f 2a 20 6d 6f 76 65 20 63 75 72 73 6f 72 20 74 6f 20 74 68 (dir.<.0).{./*.move.cursor.to.th
10580 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 77 6f 72 64 2a 2f 00 00 00 44 20 20 20 20 77 68 69 e.start.of.the.word*/...D....whi
105a0 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c le.(cursor.>.0.&&.strchr(worddel
105c0 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 imiters,.text[nextrune(-1)]))...
105e0 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 3b 00 00 00 .......cursor.=.nextrune(-1);...
10600 45 20 20 20 20 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 21 73 74 72 63 68 E....while.(cursor.>.0.&&.!strch
10620 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 r(worddelimiters,.text[nextrune(
10640 2d 31 29 5d 29 29 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e -1)]))..........cursor.=.nextrun
10660 65 28 2d 31 29 3b 00 00 00 33 20 20 7d 20 65 6c 73 65 20 7b 20 2f 2a 20 6d 6f 76 65 20 63 75 72 e(-1);...3..}.else.{./*.move.cur
10680 73 6f 72 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 77 6f 72 64 20 2a 2f 00 00 00 sor.to.the.end.of.the.word.*/...
106a0 40 20 20 20 20 77 68 69 6c 65 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 73 74 72 63 @....while.(text[cursor].&&.strc
106c0 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 29 hr(worddelimiters,.text[cursor])
106e0 29 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 )..........cursor.=.nextrune(+1)
10700 3b 00 00 00 41 20 20 20 20 77 68 69 6c 65 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 26 26 20 ;...A....while.(text[cursor].&&.
10720 21 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 63 75 72 !strchr(worddelimiters,.text[cur
10740 73 6f 72 5d 29 29 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e sor]))..........cursor.=.nextrun
10760 65 28 2b 31 29 3b 00 00 00 03 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 25 73 74 61 74 69 63 e(+1);......}....}.......%static
10780 20 76 6f 69 64 20 6b 65 79 70 72 65 73 73 28 58 4b 65 79 45 76 65 6e 74 20 2a 65 76 29 20 7b 00 .void.keypress(XKeyEvent.*ev).{.
107a0 00 00 0f 20 20 63 68 61 72 20 62 75 66 5b 36 34 5d 3b 00 00 00 0a 20 20 69 6e 74 20 6c 65 6e 3b .....char.buf[64];......int.len;
107c0 00 00 00 19 20 20 4b 65 79 53 79 6d 20 6b 73 79 6d 20 3d 20 4e 6f 53 79 6d 62 6f 6c 3b 00 00 00 ......KeySym.ksym.=.NoSymbol;...
107e0 10 20 20 53 74 61 74 75 73 20 73 74 61 74 75 73 3b 00 00 00 00 00 00 00 42 20 20 6c 65 6e 20 3d ...Status.status;.......B..len.=
10800 20 58 6d 62 4c 6f 6f 6b 75 70 53 74 72 69 6e 67 28 78 69 63 2c 20 65 76 2c 20 62 75 66 2c 20 73 .XmbLookupString(xic,.ev,.buf,.s
10820 69 7a 65 6f 66 20 62 75 66 2c 20 26 6b 73 79 6d 2c 20 26 73 74 61 74 75 73 29 3b 00 00 00 13 20 izeof.buf,.&ksym,.&status);.....
10840 20 73 77 69 74 63 68 20 28 73 74 61 74 75 73 29 20 7b 00 00 00 2d 20 20 64 65 66 61 75 6c 74 3a .switch.(status).{...-..default:
10860 20 2f 2a 20 58 4c 6f 6f 6b 75 70 4e 6f 6e 65 2c 20 58 42 75 66 66 65 72 4f 76 65 72 66 6c 6f 77 ./*.XLookupNone,.XBufferOverflow
10880 20 2a 2f 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 3c 20 20 63 61 73 65 20 58 4c 6f .*/........return;...<..case.XLo
108a0 6f 6b 75 70 43 68 61 72 73 3a 20 2f 2a 20 63 6f 6d 70 6f 73 65 64 20 73 74 72 69 6e 67 20 66 72 okupChars:./*.composed.string.fr
108c0 6f 6d 20 69 6e 70 75 74 20 6d 65 74 68 6f 64 20 2a 2f 00 00 00 10 20 20 20 20 67 6f 74 6f 20 69 om.input.method.*/........goto.i
108e0 6e 73 65 72 74 3b 00 00 00 15 20 20 63 61 73 65 20 58 4c 6f 6f 6b 75 70 4b 65 79 53 79 6d 3a 00 nsert;......case.XLookupKeySym:.
10900 00 00 48 20 20 63 61 73 65 20 58 4c 6f 6f 6b 75 70 42 6f 74 68 3a 20 2f 2a 20 61 20 4b 65 79 53 ..H..case.XLookupBoth:./*.a.KeyS
10920 79 6d 20 61 6e 64 20 61 20 73 74 72 69 6e 67 20 61 72 65 20 72 65 74 75 72 6e 65 64 3a 20 75 73 ym.and.a.string.are.returned:.us
10940 65 20 6b 65 79 73 79 6d 20 2a 2f 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 03 20 20 7d e.keysym.*/........break;......}
10960 00 00 00 00 00 00 00 20 20 20 69 66 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f ..........if.(ev->state.&.Contro
10980 6c 4d 61 73 6b 29 20 7b 00 00 00 13 20 20 20 20 73 77 69 74 63 68 20 28 6b 73 79 6d 29 20 7b 00 lMask).{........switch.(ksym).{.
109a0 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 61 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 .......case.XK_a:..........ksym.
109c0 3d 20 58 4b 5f 48 6f 6d 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 =.XK_Home;..........break;......
109e0 20 20 63 61 73 65 20 58 4b 5f 62 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f ..case.XK_b:..........ksym.=.XK_
10a00 4c 65 66 74 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 Left;..........break;........cas
10a20 65 20 58 4b 5f 63 3a 00 00 00 17 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 61 70 e.XK_c:..........ksym.=.XK_Escap
10a40 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 e;..........break;........case.X
10a60 4b 5f 64 3a 00 00 00 17 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 44 65 6c 65 74 65 3b 00 K_d:..........ksym.=.XK_Delete;.
10a80 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 65 .........break;........case.XK_e
10aa0 3a 00 00 00 14 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 6e 64 3b 00 00 00 0c 20 20 20 :..........ksym.=.XK_End;.......
10ac0 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 66 3a 00 00 00 16 20 ...break;........case.XK_f:.....
10ae0 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 52 69 67 68 74 3b 00 00 00 0c 20 20 20 20 20 20 62 .....ksym.=.XK_Right;..........b
10b00 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 67 3a 00 00 00 17 20 20 20 20 20 reak;........case.XK_g:.........
10b20 20 6b 73 79 6d 20 3d 20 58 4b 5f 45 73 63 61 70 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 .ksym.=.XK_Escape;..........brea
10b40 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 68 3a 00 00 00 1a 20 20 20 20 20 20 6b 73 k;........case.XK_h:..........ks
10b60 79 6d 20 3d 20 58 4b 5f 42 61 63 6b 53 70 61 63 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 ym.=.XK_BackSpace;..........brea
10b80 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 69 3a 00 00 00 14 20 20 20 20 20 20 6b 73 k;........case.XK_i:..........ks
10ba0 79 6d 20 3d 20 58 4b 5f 54 61 62 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 20 ym.=.XK_Tab;..........break;....
10bc0 20 20 20 20 63 61 73 65 20 58 4b 5f 6a 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f ....case.XK_j:./*.fallthrough.*/
10be0 00 00 00 20 20 20 20 20 63 61 73 65 20 58 4b 5f 4a 3a 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 ........case.XK_J:./*.fallthroug
10c00 68 20 2a 2f 00 00 00 20 20 20 20 20 63 61 73 65 20 58 4b 5f 6d 3a 20 2f 2a 20 66 61 6c 6c 74 68 h.*/........case.XK_m:./*.fallth
10c20 72 6f 75 67 68 20 2a 2f 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 4d 3a 00 00 00 17 20 20 rough.*/........case.XK_M:......
10c40 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 52 65 74 75 72 6e 3b 00 00 00 20 20 20 20 20 20 20 65 ....ksym.=.XK_Return;..........e
10c60 76 2d 3e 73 74 61 74 65 20 26 3d 20 7e 43 6f 6e 74 72 6f 6c 4d 61 73 6b 3b 00 00 00 0c 20 20 20 v->state.&=.~ControlMask;.......
10c80 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 6e 3a 00 00 00 15 20 ...break;........case.XK_n:.....
10ca0 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 44 6f 77 6e 3b 00 00 00 0c 20 20 20 20 20 20 62 72 .....ksym.=.XK_Down;..........br
10cc0 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 70 3a 00 00 00 13 20 20 20 20 20 20 eak;........case.XK_p:..........
10ce0 6b 73 79 6d 20 3d 20 58 4b 5f 55 70 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 ksym.=.XK_Up;..........break;...
10d00 00 00 00 00 21 20 20 20 20 63 61 73 65 20 58 4b 5f 6b 3a 20 2f 2a 20 64 65 6c 65 74 65 20 72 69 ....!....case.XK_k:./*.delete.ri
10d20 67 68 74 20 2a 2f 00 00 00 1a 20 20 20 20 20 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 ght.*/..........text[cursor].=.'
10d40 5c 30 27 3b 00 00 00 0e 20 20 20 20 20 20 6d 61 74 63 68 28 29 3b 00 00 00 0c 20 20 20 20 20 20 \0';..........match();..........
10d60 62 72 65 61 6b 3b 00 00 00 20 20 20 20 20 63 61 73 65 20 58 4b 5f 75 3a 20 2f 2a 20 64 65 6c 65 break;........case.XK_u:./*.dele
10d80 74 65 20 6c 65 66 74 20 2a 2f 00 00 00 1f 20 20 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c te.left.*/..........insert(NULL,
10da0 20 30 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 .0.-.cursor);..........break;...
10dc0 20 20 20 20 20 63 61 73 65 20 58 4b 5f 77 3a 20 2f 2a 20 64 65 6c 65 74 65 20 77 6f 72 64 20 2a .....case.XK_w:./*.delete.word.*
10de0 2f 00 00 00 46 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 /...F......while.(cursor.>.0.&&.
10e00 73 74 72 63 68 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 strchr(worddelimiters,.text[next
10e20 72 75 6e 65 28 2d 31 29 5d 29 29 00 00 00 2c 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 28 4e 55 rune(-1)]))...,........insert(NU
10e40 4c 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 47 20 LL,.nextrune(-1).-.cursor);...G.
10e60 20 20 20 20 20 77 68 69 6c 65 20 28 63 75 72 73 6f 72 20 3e 20 30 20 26 26 20 21 73 74 72 63 68 .....while.(cursor.>.0.&&.!strch
10e80 72 28 77 6f 72 64 64 65 6c 69 6d 69 74 65 72 73 2c 20 74 65 78 74 5b 6e 65 78 74 72 75 6e 65 28 r(worddelimiters,.text[nextrune(
10ea0 2d 31 29 5d 29 29 00 00 00 2c 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c 2c 20 6e -1)]))...,........insert(NULL,.n
10ec0 65 78 74 72 75 6e 65 28 2d 31 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 0c 20 20 20 20 20 20 extrune(-1).-.cursor);..........
10ee0 62 72 65 61 6b 3b 00 00 00 24 20 20 20 20 63 61 73 65 20 58 4b 5f 79 3a 20 2f 2a 20 70 61 73 74 break;...$....case.XK_y:./*.past
10f00 65 20 73 65 6c 65 63 74 69 6f 6e 20 2a 2f 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 59 3a e.selection.*/........case.XK_Y:
10f20 00 00 00 4f 20 20 20 20 20 20 58 43 6f 6e 76 65 72 74 53 65 6c 65 63 74 69 6f 6e 28 64 70 79 2c ...O......XConvertSelection(dpy,
10f40 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 53 68 69 66 74 4d 61 73 6b 29 20 3f 20 63 6c 69 70 20 .(ev->state.&.ShiftMask).?.clip.
10f60 3a 20 58 41 5f 50 52 49 4d 41 52 59 2c 20 75 74 66 38 2c 00 00 00 30 20 20 20 20 20 20 20 20 20 :.XA_PRIMARY,.utf8,...0.........
10f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 66 38 2c 20 77 69 6e 2c 20 43 75 72 72 65 6e ...............utf8,.win,.Curren
10fa0 74 54 69 6d 65 29 3b 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 11 20 20 20 20 tTime);..........return;........
10fc0 63 61 73 65 20 58 4b 5f 4c 65 66 74 3a 00 00 00 14 20 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f case.XK_Left:........case.XK_KP_
10fe0 4c 65 66 74 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2d 31 29 3b Left:..........movewordedge(-1);
11000 00 00 00 10 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 12 20 20 20 20 63 61 73 65 ..........goto.draw;........case
11020 20 58 4b 5f 52 69 67 68 74 3a 00 00 00 15 20 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 52 69 67 .XK_Right:........case.XK_KP_Rig
11040 68 74 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f 72 64 65 64 67 65 28 2b 31 29 3b 00 00 ht:..........movewordedge(+1);..
11060 00 10 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 00 00 13 20 20 20 20 63 61 73 65 20 58 ........goto.draw;........case.X
11080 4b 5f 52 65 74 75 72 6e 3a 00 00 00 15 20 20 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 K_Return:........case.XK_KP_Ente
110a0 72 3a 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 18 20 20 20 20 63 61 73 65 20 58 r:..........break;........case.X
110c0 4b 5f 62 72 61 63 6b 65 74 6c 65 66 74 3a 00 00 00 10 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 K_bracketleft:..........cleanup(
110e0 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 0c 20 20 20 20 64 65 66 61 );..........exit(1);........defa
11100 75 6c 74 3a 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 ult:..........return;........}..
11120 00 24 20 20 7d 20 65 6c 73 65 20 69 66 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 4d 6f 64 31 4d .$..}.else.if.(ev->state.&.Mod1M
11140 61 73 6b 29 20 7b 00 00 00 13 20 20 20 20 73 77 69 74 63 68 20 28 6b 73 79 6d 29 20 7b 00 00 00 ask).{........switch.(ksym).{...
11160 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 62 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f 72 .....case.XK_b:..........movewor
11180 64 65 64 67 65 28 2d 31 29 3b 00 00 00 10 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 00 dedge(-1);..........goto.draw;..
111a0 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 66 3a 00 00 00 17 20 20 20 20 20 20 6d 6f 76 65 77 6f ......case.XK_f:..........movewo
111c0 72 64 65 64 67 65 28 2b 31 29 3b 00 00 00 10 20 20 20 20 20 20 67 6f 74 6f 20 64 72 61 77 3b 00 rdedge(+1);..........goto.draw;.
111e0 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 67 3a 00 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 .......case.XK_g:..........ksym.
11200 3d 20 58 4b 5f 48 6f 6d 65 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 =.XK_Home;..........break;......
11220 20 20 63 61 73 65 20 58 4b 5f 47 3a 00 00 00 14 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f ..case.XK_G:..........ksym.=.XK_
11240 45 6e 64 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 End;..........break;........case
11260 20 58 4b 5f 68 3a 00 00 00 13 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 55 70 3b 00 00 00 .XK_h:..........ksym.=.XK_Up;...
11280 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 6a 3a 00 .......break;........case.XK_j:.
112a0 00 00 15 20 20 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 4e 65 78 74 3b 00 00 00 0c 20 20 20 20 .........ksym.=.XK_Next;........
112c0 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 6b 3a 00 00 00 16 20 20 ..break;........case.XK_k:......
112e0 20 20 20 20 6b 73 79 6d 20 3d 20 58 4b 5f 50 72 69 6f 72 3b 00 00 00 0c 20 20 20 20 20 20 62 72 ....ksym.=.XK_Prior;..........br
11300 65 61 6b 3b 00 00 00 0e 20 20 20 20 63 61 73 65 20 58 4b 5f 6c 3a 00 00 00 15 20 20 20 20 20 20 eak;........case.XK_l:..........
11320 6b 73 79 6d 20 3d 20 58 4b 5f 44 6f 77 6e 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 ksym.=.XK_Down;..........break;.
11340 00 00 0c 20 20 20 20 64 65 66 61 75 6c 74 3a 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b .......default:..........return;
11360 00 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 00 00 00 00 11 20 20 73 77 69 74 63 68 ........}......}..........switch
11380 20 28 6b 73 79 6d 29 20 7b 00 00 00 0a 20 20 64 65 66 61 75 6c 74 3a 00 00 00 09 20 20 69 6e 73 .(ksym).{......default:......ins
113a0 65 72 74 3a 00 00 00 26 20 20 20 20 69 66 20 28 21 69 73 63 6e 74 72 6c 28 28 75 6e 73 69 67 6e ert:...&....if.(!iscntrl((unsign
113c0 65 64 20 63 68 61 72 29 2a 62 75 66 29 29 00 00 00 17 20 20 20 20 20 20 69 6e 73 65 72 74 28 62 ed.char)*buf))..........insert(b
113e0 75 66 2c 20 6c 65 6e 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 11 20 20 63 61 73 uf,.len);........break;......cas
11400 65 20 58 4b 5f 44 65 6c 65 74 65 3a 00 00 00 14 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 44 65 6c e.XK_Delete:......case.XK_KP_Del
11420 65 74 65 3a 00 00 00 1d 20 20 20 20 69 66 20 28 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 3d 20 ete:........if.(text[cursor].==.
11440 27 5c 30 27 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 1a 20 20 20 20 63 75 '\0')..........return;........cu
11460 72 73 6f 72 20 3d 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 00 00 15 20 20 20 20 2f 2a 20 66 rsor.=.nextrune(+1);......../*.f
11480 61 6c 6c 74 68 72 6f 75 67 68 20 2a 2f 00 00 00 14 20 20 63 61 73 65 20 58 4b 5f 42 61 63 6b 53 allthrough.*/......case.XK_BackS
114a0 70 61 63 65 3a 00 00 00 14 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 3d 3d 20 30 29 00 00 00 pace:........if.(cursor.==.0)...
114c0 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 28 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c .......return;...(....insert(NUL
114e0 4c 2c 20 6e 65 78 74 72 75 6e 65 28 2d 31 29 20 2d 20 63 75 72 73 6f 72 29 3b 00 00 00 0a 20 20 L,.nextrune(-1).-.cursor);......
11500 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 63 61 73 65 20 58 4b 5f 45 6e 64 3a 00 00 00 11 20 20 ..break;......case.XK_End:......
11520 63 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 64 3a 00 00 00 1f 20 20 20 20 69 66 20 28 74 65 78 74 5b case.XK_KP_End:........if.(text[
11540 63 75 72 73 6f 72 5d 20 21 3d 20 27 5c 30 27 29 20 7b 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 cursor].!=.'\0').{..........curs
11560 6f 72 20 3d 20 73 74 72 6c 65 6e 28 74 65 78 74 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 or.=.strlen(text);..........brea
11580 6b 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0f 20 20 20 20 69 66 20 28 6e 65 78 74 29 20 7b 00 00 k;........}........if.(next).{..
115a0 00 3d 20 20 20 20 20 20 2f 2a 20 6a 75 6d 70 20 74 6f 20 65 6e 64 20 6f 66 20 6c 69 73 74 20 61 .=....../*.jump.to.end.of.list.a
115c0 6e 64 20 70 6f 73 69 74 69 6f 6e 20 69 74 65 6d 73 20 69 6e 20 72 65 76 65 72 73 65 20 2a 2f 00 nd.position.items.in.reverse.*/.
115e0 00 00 16 20 20 20 20 20 20 63 75 72 72 20 3d 20 6d 61 74 63 68 65 6e 64 3b 00 00 00 14 20 20 20 .........curr.=.matchend;.......
11600 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 12 20 20 20 20 20 20 63 75 72 72 20 ...calcoffsets();..........curr.
11620 3d 20 70 72 65 76 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 =.prev;..........calcoffsets();.
11640 00 00 2a 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 65 78 74 20 26 26 20 28 63 75 72 72 20 3d 20 ..*......while.(next.&&.(curr.=.
11660 63 75 72 72 2d 3e 72 69 67 68 74 29 29 00 00 00 16 20 20 20 20 20 20 20 20 63 61 6c 63 6f 66 66 curr->right))............calcoff
11680 73 65 74 73 28 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 73 65 6c 20 3d 20 6d 61 sets();........}........sel.=.ma
116a0 74 63 68 65 6e 64 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 11 20 20 63 61 73 65 20 tchend;........break;......case.
116c0 58 4b 5f 45 73 63 61 70 65 3a 00 00 00 0e 20 20 20 20 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0c XK_Escape:........cleanup();....
116e0 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 0f 20 20 63 61 73 65 20 58 4b 5f 48 6f 6d 65 3a 00 ....exit(1);......case.XK_Home:.
11700 00 00 12 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 48 6f 6d 65 3a 00 00 00 19 20 20 20 20 69 66 20 .....case.XK_KP_Home:........if.
11720 28 73 65 6c 20 3d 3d 20 6d 61 74 63 68 65 73 29 20 7b 00 00 00 11 20 20 20 20 20 20 63 75 72 73 (sel.==.matches).{..........curs
11740 6f 72 20 3d 20 30 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 7d or.=.0;..........break;........}
11760 00 00 00 19 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6d 61 74 63 68 65 73 3b 00 00 00 ........sel.=.curr.=.matches;...
11780 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b .....calcoffsets();........break
117a0 3b 00 00 00 0f 20 20 63 61 73 65 20 58 4b 5f 4c 65 66 74 3a 00 00 00 12 20 20 63 61 73 65 20 58 ;......case.XK_Left:......case.X
117c0 4b 5f 4b 50 5f 4c 65 66 74 3a 00 00 00 3a 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 3e 20 30 K_KP_Left:...:....if.(cursor.>.0
117e0 20 26 26 20 28 21 73 65 6c 20 7c 7c 20 21 73 65 6c 2d 3e 6c 65 66 74 20 7c 7c 20 6c 69 6e 65 73 .&&.(!sel.||.!sel->left.||.lines
11800 20 3e 20 30 29 29 20 7b 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d 20 6e 65 78 74 72 .>.0)).{..........cursor.=.nextr
11820 75 6e 65 28 2d 31 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 20 20 20 une(-1);..........break;........
11840 7d 00 00 00 12 20 20 20 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 0d 20 20 20 20 20 }........if.(lines.>.0).........
11860 20 72 65 74 75 72 6e 3b 00 00 00 15 20 20 20 20 2f 2a 20 66 61 6c 6c 74 68 72 6f 75 67 68 20 2a .return;......../*.fallthrough.*
11880 2f 00 00 00 0d 20 20 63 61 73 65 20 58 4b 5f 55 70 3a 00 00 00 10 20 20 63 61 73 65 20 58 4b 5f /......case.XK_Up:......case.XK_
118a0 4b 50 5f 55 70 3a 00 00 00 3f 20 20 20 20 69 66 20 28 73 65 6c 20 26 26 20 73 65 6c 2d 3e 6c 65 KP_Up:...?....if.(sel.&&.sel->le
118c0 66 74 20 26 26 20 28 73 65 6c 20 3d 20 73 65 6c 2d 3e 6c 65 66 74 29 2d 3e 72 69 67 68 74 20 3d ft.&&.(sel.=.sel->left)->right.=
118e0 3d 20 63 75 72 72 29 20 7b 00 00 00 12 20 20 20 20 20 20 63 75 72 72 20 3d 20 70 72 65 76 3b 00 =.curr).{..........curr.=.prev;.
11900 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 05 20 20 20 20 7d .........calcoffsets();........}
11920 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0f 20 20 63 61 73 65 20 58 4b 5f 4e 65 78 74 ........break;......case.XK_Next
11940 3a 00 00 00 12 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 4e 65 78 74 3a 00 00 00 0e 20 20 20 20 69 :......case.XK_KP_Next:........i
11960 66 20 28 21 6e 65 78 74 29 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 16 20 20 f.(!next)..........return;......
11980 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 3b 00 00 00 12 20 20 20 20 63 61 6c 63 ..sel.=.curr.=.next;........calc
119a0 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 63 61 offsets();........break;......ca
119c0 73 65 20 58 4b 5f 50 72 69 6f 72 3a 00 00 00 13 20 20 63 61 73 65 20 58 4b 5f 4b 50 5f 50 72 69 se.XK_Prior:......case.XK_KP_Pri
119e0 6f 72 3a 00 00 00 0e 20 20 20 20 69 66 20 28 21 70 72 65 76 29 00 00 00 0d 20 20 20 20 20 20 72 or:........if.(!prev)..........r
11a00 65 74 75 72 6e 3b 00 00 00 16 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 70 72 65 76 3b eturn;........sel.=.curr.=.prev;
11a20 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0a 20 20 20 20 62 72 ........calcoffsets();........br
11a40 65 61 6b 3b 00 00 00 11 20 20 63 61 73 65 20 58 4b 5f 52 65 74 75 72 6e 3a 00 00 00 13 20 20 63 eak;......case.XK_Return:......c
11a60 61 73 65 20 58 4b 5f 4b 50 5f 45 6e 74 65 72 3a 00 00 00 3f 20 20 20 20 70 75 74 73 28 28 73 65 ase.XK_KP_Enter:...?....puts((se
11a80 6c 20 26 26 20 21 28 65 76 2d 3e 73 74 61 74 65 20 26 20 53 68 69 66 74 4d 61 73 6b 29 29 20 3f l.&&.!(ev->state.&.ShiftMask)).?
11aa0 20 73 65 6c 2d 3e 74 65 78 74 20 3a 20 74 65 78 74 29 3b 00 00 00 25 20 20 20 20 69 66 20 28 21 .sel->text.:.text);...%....if.(!
11ac0 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 20 7b 00 00 00 10 (ev->state.&.ControlMask)).{....
11ae0 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 69 74 28 30 ......cleanup();..........exit(0
11b00 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 0c 20 20 20 20 69 66 20 28 73 65 6c 29 00 00 00 13 20 );........}........if.(sel).....
11b20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 74 20 3d 20 31 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b .....sel->out.=.1;........break;
11b40 00 00 00 10 20 20 63 61 73 65 20 58 4b 5f 52 69 67 68 74 3a 00 00 00 13 20 20 63 61 73 65 20 58 ......case.XK_Right:......case.X
11b60 4b 5f 4b 50 5f 52 69 67 68 74 3a 00 00 00 1f 20 20 20 20 69 66 20 28 74 65 78 74 5b 63 75 72 73 K_KP_Right:........if.(text[curs
11b80 6f 72 5d 20 21 3d 20 27 5c 30 27 29 20 7b 00 00 00 1c 20 20 20 20 20 20 63 75 72 73 6f 72 20 3d or].!=.'\0').{..........cursor.=
11ba0 20 6e 65 78 74 72 75 6e 65 28 2b 31 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 .nextrune(+1);..........break;..
11bc0 00 05 20 20 20 20 7d 00 00 00 12 20 20 20 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 00 00 00 ......}........if.(lines.>.0)...
11be0 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 15 20 20 20 20 2f 2a 20 66 61 6c 6c 74 68 72 .......return;......../*.fallthr
11c00 6f 75 67 68 20 2a 2f 00 00 00 0f 20 20 63 61 73 65 20 58 4b 5f 44 6f 77 6e 3a 00 00 00 12 20 20 ough.*/......case.XK_Down:......
11c20 63 61 73 65 20 58 4b 5f 4b 50 5f 44 6f 77 6e 3a 00 00 00 3a 20 20 20 20 69 66 20 28 73 65 6c 20 case.XK_KP_Down:...:....if.(sel.
11c40 26 26 20 73 65 6c 2d 3e 72 69 67 68 74 20 26 26 20 28 73 65 6c 20 3d 20 73 65 6c 2d 3e 72 69 67 &&.sel->right.&&.(sel.=.sel->rig
11c60 68 74 29 20 3d 3d 20 6e 65 78 74 29 20 7b 00 00 00 12 20 20 20 20 20 20 63 75 72 72 20 3d 20 6e ht).==.next).{..........curr.=.n
11c80 65 78 74 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 05 ext;..........calcoffsets();....
11ca0 20 20 20 20 7d 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0e 20 20 63 61 73 65 20 58 4b ....}........break;......case.XK
11cc0 5f 54 61 62 3a 00 00 00 0d 20 20 20 20 69 66 20 28 21 73 65 6c 29 00 00 00 0d 20 20 20 20 20 20 _Tab:........if.(!sel)..........
11ce0 72 65 74 75 72 6e 3b 00 00 00 31 20 20 20 20 63 75 72 73 6f 72 20 3d 20 73 74 72 6e 6c 65 6e 28 return;...1....cursor.=.strnlen(
11d00 73 65 6c 2d 3e 74 65 78 74 2c 20 73 69 7a 65 6f 66 20 74 65 78 74 20 2d 20 31 29 3b 00 00 00 24 sel->text,.sizeof.text.-.1);...$
11d20 20 20 20 20 6d 65 6d 63 70 79 28 74 65 78 74 2c 20 73 65 6c 2d 3e 74 65 78 74 2c 20 63 75 72 73 ....memcpy(text,.sel->text,.curs
11d40 6f 72 29 3b 00 00 00 18 20 20 20 20 74 65 78 74 5b 63 75 72 73 6f 72 5d 20 3d 20 27 5c 30 27 3b or);........text[cursor].=.'\0';
11d60 00 00 00 0c 20 20 20 20 6d 61 74 63 68 28 29 3b 00 00 00 0a 20 20 20 20 62 72 65 61 6b 3b 00 00 ........match();........break;..
11d80 00 03 20 20 7d 00 00 00 00 00 00 00 05 64 72 61 77 3a 00 00 00 0d 20 20 64 72 61 77 6d 65 6e 75 ....}........draw:......drawmenu
11da0 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 76 6f 69 64 20 62 75 74 74 ();....}.......$static.void.butt
11dc0 6f 6e 70 72 65 73 73 28 58 45 76 65 6e 74 20 2a 65 29 20 7b 00 00 00 14 20 20 73 74 72 75 63 74 onpress(XEvent.*e).{......struct
11de0 20 69 74 65 6d 20 2a 69 74 65 6d 3b 00 00 00 28 20 20 58 42 75 74 74 6f 6e 50 72 65 73 73 65 64 .item.*item;...(..XButtonPressed
11e00 45 76 65 6e 74 20 2a 65 76 20 3d 20 26 65 2d 3e 78 62 75 74 74 6f 6e 3b 00 00 00 1e 20 20 69 6e Event.*ev.=.&e->xbutton;......in
11e20 74 20 78 20 3d 20 30 2c 20 79 20 3d 20 30 2c 20 68 20 3d 20 62 68 2c 20 77 3b 00 00 00 00 00 00 t.x.=.0,.y.=.0,.h.=.bh,.w;......
11e40 00 18 20 20 69 66 20 28 65 76 2d 3e 77 69 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 0b 20 20 ....if.(ev->window.!=.win)......
11e60 20 20 72 65 74 75 72 6e 3b 00 00 00 00 00 00 00 19 20 20 2f 2a 20 72 69 67 68 74 2d 63 6c 69 63 ..return;........../*.right-clic
11e80 6b 3a 20 65 78 69 74 20 2a 2f 00 00 00 1c 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d k:.exit.*/......if.(ev->button.=
11ea0 3d 20 42 75 74 74 6f 6e 33 29 00 00 00 0c 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 00 00 00 =.Button3)........exit(1);......
11ec0 00 18 20 20 69 66 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d 70 74 29 00 00 00 11 20 20 ....if.(prompt.&&.*prompt)......
11ee0 20 20 78 20 2b 3d 20 70 72 6f 6d 70 74 77 3b 00 00 00 00 00 00 00 13 20 20 2f 2a 20 69 6e 70 75 ..x.+=.promptw;........../*.inpu
11f00 74 20 66 69 65 6c 64 20 2a 2f 00 00 00 30 20 20 77 20 3d 20 28 6c 69 6e 65 73 20 3e 20 30 20 7c t.field.*/...0..w.=.(lines.>.0.|
11f20 7c 20 21 6d 61 74 63 68 65 73 29 20 3f 20 6d 77 20 2d 20 78 20 3a 20 69 6e 70 75 74 77 3b 00 00 |.!matches).?.mw.-.x.:.inputw;..
11f40 00 00 00 00 00 26 20 20 2f 2a 20 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 6e 70 75 74 3a 20 .....&../*.left-click.on.input:.
11f60 63 6c 65 61 72 20 69 6e 70 75 74 2c 00 00 00 43 20 20 20 2a 20 4e 4f 54 45 3a 20 69 66 20 74 68 clear.input,...C...*.NOTE:.if.th
11f80 65 72 65 20 69 73 20 6e 6f 20 6c 65 66 74 2d 61 72 72 6f 77 20 74 68 65 20 73 70 61 63 65 20 66 ere.is.no.left-arrow.the.space.f
11fa0 6f 72 20 3c 20 69 73 20 72 65 73 65 72 76 65 64 20 73 6f 00 00 00 29 20 20 20 2a 20 20 20 20 20 or.<.is.reserved.so...)...*.....
11fc0 20 20 61 64 64 20 74 68 61 74 20 74 6f 20 74 68 65 20 69 6e 70 75 74 20 77 69 64 74 68 20 2a 2f ..add.that.to.the.input.width.*/
11fe0 00 00 00 1e 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 31 20 ......if.(ev->button.==.Button1.
12000 26 26 00 00 00 23 20 20 20 20 20 20 28 28 6c 69 6e 65 73 20 3c 3d 20 30 20 26 26 20 65 76 2d 3e &&...#......((lines.<=.0.&&.ev->
12020 78 20 3e 3d 20 30 20 26 26 00 00 00 46 20 20 20 20 20 20 20 20 65 76 2d 3e 78 20 3c 3d 20 78 20 x.>=.0.&&...F........ev->x.<=.x.
12040 2b 20 77 20 2b 20 28 28 21 70 72 65 76 20 7c 7c 20 21 63 75 72 72 2d 3e 6c 65 66 74 29 20 3f 20 +.w.+.((!prev.||.!curr->left).?.
12060 54 45 58 54 57 28 22 3c 22 29 20 3a 20 30 29 29 20 7c 7c 00 00 00 36 20 20 20 20 20 20 20 28 6c TEXTW("<").:.0)).||...6.......(l
12080 69 6e 65 73 20 3e 20 30 20 26 26 20 65 76 2d 3e 79 20 3e 3d 20 79 20 26 26 20 65 76 2d 3e 79 20 ines.>.0.&&.ev->y.>=.y.&&.ev->y.
120a0 3c 3d 20 79 20 2b 20 68 29 29 29 20 7b 00 00 00 1a 20 20 20 20 69 6e 73 65 72 74 28 4e 55 4c 4c <=.y.+.h))).{........insert(NULL
120c0 2c 20 2d 63 75 72 73 6f 72 29 3b 00 00 00 0f 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 ,.-cursor);........drawmenu();..
120e0 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 20 20 7d 00 00 00 2b 20 20 2f 2a 20 6d 69 64 ......return;......}...+../*.mid
12100 64 6c 65 2d 6d 6f 75 73 65 20 63 6c 69 63 6b 3a 20 70 61 73 74 65 20 73 65 6c 65 63 74 69 6f 6e dle-mouse.click:.paste.selection
12120 20 2a 2f 00 00 00 1e 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f .*/......if.(ev->button.==.Butto
12140 6e 32 29 20 7b 00 00 00 4d 20 20 20 20 58 43 6f 6e 76 65 72 74 53 65 6c 65 63 74 69 6f 6e 28 64 n2).{...M....XConvertSelection(d
12160 70 79 2c 20 28 65 76 2d 3e 73 74 61 74 65 20 26 20 53 68 69 66 74 4d 61 73 6b 29 20 3f 20 63 6c py,.(ev->state.&.ShiftMask).?.cl
12180 69 70 20 3a 20 58 41 5f 50 52 49 4d 41 52 59 2c 20 75 74 66 38 2c 00 00 00 2e 20 20 20 20 20 20 ip.:.XA_PRIMARY,.utf8,..........
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 74 66 38 2c 20 77 69 6e 2c 20 43 75 72 72 65 ................utf8,.win,.Curre
121c0 6e 74 54 69 6d 65 29 3b 00 00 00 0f 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 20 ntTime);........drawmenu();.....
121e0 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 20 20 7d 00 00 00 11 20 20 2f 2a 20 73 63 72 6f 6c 6c ...return;......}....../*.scroll
12200 20 75 70 20 2a 2f 00 00 00 26 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 .up.*/...&..if.(ev->button.==.Bu
12220 74 74 6f 6e 34 20 26 26 20 70 72 65 76 29 20 7b 00 00 00 16 20 20 20 20 73 65 6c 20 3d 20 63 75 tton4.&&.prev).{........sel.=.cu
12240 72 72 20 3d 20 70 72 65 76 3b 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b rr.=.prev;........calcoffsets();
12260 00 00 00 0f 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 20 20 20 20 72 65 74 75 72 ........drawmenu();........retur
12280 6e 3b 00 00 00 03 20 20 7d 00 00 00 13 20 20 2f 2a 20 73 63 72 6f 6c 6c 20 64 6f 77 6e 20 2a 2f n;......}....../*.scroll.down.*/
122a0 00 00 00 26 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 35 20 ...&..if.(ev->button.==.Button5.
122c0 26 26 20 6e 65 78 74 29 20 7b 00 00 00 16 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e &&.next).{........sel.=.curr.=.n
122e0 65 78 74 3b 00 00 00 12 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 0f 20 20 ext;........calcoffsets();......
12300 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 03 ..drawmenu();........return;....
12320 20 20 7d 00 00 00 1c 20 20 69 66 20 28 65 76 2d 3e 62 75 74 74 6f 6e 20 21 3d 20 42 75 74 74 6f ..}......if.(ev->button.!=.Butto
12340 6e 31 29 00 00 00 0b 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 1f 20 20 69 66 20 28 65 76 2d 3e n1)........return;......if.(ev->
12360 73 74 61 74 65 20 26 20 7e 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 00 00 00 0b 20 20 20 20 72 65 74 state.&.~ControlMask)........ret
12380 75 72 6e 3b 00 00 00 12 20 20 69 66 20 28 6c 69 6e 65 73 20 3e 20 30 29 20 7b 00 00 00 31 20 20 urn;......if.(lines.>.0).{...1..
123a0 20 20 2f 2a 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 3a 20 28 63 74 72 6c 29 6c 65 66 74 2d 63 ../*.vertical.list:.(ctrl)left-c
123c0 6c 69 63 6b 20 6f 6e 20 69 74 65 6d 20 2a 2f 00 00 00 0f 20 20 20 20 77 20 3d 20 6d 77 20 2d 20 lick.on.item.*/........w.=.mw.-.
123e0 78 3b 00 00 00 39 20 20 20 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d x;...9....for.(item.=.curr;.item
12400 20 21 3d 20 6e 65 78 74 3b 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 20 7b 00 .!=.next;.item.=.item->right).{.
12420 00 00 0d 20 20 20 20 20 20 79 20 2b 3d 20 68 3b 00 00 00 2b 20 20 20 20 20 20 69 66 20 28 65 76 .........y.+=.h;...+......if.(ev
12440 2d 3e 79 20 3e 3d 20 79 20 26 26 20 65 76 2d 3e 79 20 3c 3d 20 28 79 20 2b 20 68 29 29 20 7b 00 ->y.>=.y.&&.ev->y.<=.(y.+.h)).{.
12460 00 00 19 20 20 20 20 20 20 20 20 70 75 74 73 28 69 74 65 6d 2d 3e 74 65 78 74 29 3b 00 00 00 27 ...........puts(item->text);...'
12480 20 20 20 20 20 20 20 20 69 66 20 28 21 28 65 76 2d 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f ........if.(!(ev->state.&.Contro
124a0 6c 4d 61 73 6b 29 29 00 00 00 12 20 20 20 20 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 lMask))..............exit(0);...
124c0 13 20 20 20 20 20 20 20 20 73 65 6c 20 3d 20 69 74 65 6d 3b 00 00 00 12 20 20 20 20 20 20 20 20 .........sel.=.item;............
124e0 69 66 20 28 73 65 6c 29 20 7b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 74 if.(sel).{..............sel->out
12500 20 3d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 .=.1;..............drawmenu();..
12520 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 ..........}............return;..
12540 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 17 20 20 7d 20 65 6c 73 65 20 69 ........}........}......}.else.i
12560 66 20 28 6d 61 74 63 68 65 73 29 20 7b 00 00 00 22 20 20 20 20 2f 2a 20 6c 65 66 74 2d 63 6c 69 f.(matches).{..."..../*.left-cli
12580 63 6b 20 6f 6e 20 6c 65 66 74 20 61 72 72 6f 77 20 2a 2f 00 00 00 10 20 20 20 20 78 20 2b 3d 20 ck.on.left.arrow.*/........x.+=.
125a0 69 6e 70 75 74 77 3b 00 00 00 13 20 20 20 20 77 20 3d 20 54 45 58 54 57 28 22 3c 22 29 3b 00 00 inputw;........w.=.TEXTW("<");..
125c0 00 1d 20 20 20 20 69 66 20 28 70 72 65 76 20 26 26 20 63 75 72 72 2d 3e 6c 65 66 74 29 20 7b 00 ......if.(prev.&&.curr->left).{.
125e0 00 00 29 20 20 20 20 20 20 69 66 20 28 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d 3e 78 ..)......if.(ev->x.>=.x.&&.ev->x
12600 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 73 65 6c 20 3d 20 63 75 .<=.x.+.w).{............sel.=.cu
12620 72 72 20 3d 20 70 72 65 76 3b 00 00 00 16 20 20 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 rr.=.prev;............calcoffset
12640 73 28 29 3b 00 00 00 13 20 20 20 20 20 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0f 20 s();............drawmenu();.....
12660 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 .......return;..........}.......
12680 20 7d 00 00 00 33 20 20 20 20 2f 2a 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 73 74 3a 20 28 63 .}...3..../*.horizontal.list:.(c
126a0 74 72 6c 29 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 69 74 65 6d 20 2a 2f 00 00 00 39 20 20 20 trl)left-click.on.item.*/...9...
126c0 20 66 6f 72 20 28 69 74 65 6d 20 3d 20 63 75 72 72 3b 20 69 74 65 6d 20 21 3d 20 6e 65 78 74 3b .for.(item.=.curr;.item.!=.next;
126e0 20 69 74 65 6d 20 3d 20 69 74 65 6d 2d 3e 72 69 67 68 74 29 20 7b 00 00 00 0d 20 20 20 20 20 20 .item.=.item->right).{..........
12700 78 20 2b 3d 20 77 3b 00 00 00 36 20 20 20 20 20 20 77 20 3d 20 4d 49 4e 28 54 45 58 54 57 28 69 x.+=.w;...6......w.=.MIN(TEXTW(i
12720 74 65 6d 2d 3e 74 65 78 74 29 2c 20 6d 77 20 2d 20 78 20 2d 20 54 45 58 54 57 28 22 3e 22 29 29 tem->text),.mw.-.x.-.TEXTW(">"))
12740 3b 00 00 00 29 20 20 20 20 20 20 69 66 20 28 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d ;...)......if.(ev->x.>=.x.&&.ev-
12760 3e 78 20 3c 3d 20 78 20 2b 20 77 29 20 7b 00 00 00 19 20 20 20 20 20 20 20 20 70 75 74 73 28 69 >x.<=.x.+.w).{............puts(i
12780 74 65 6d 2d 3e 74 65 78 74 29 3b 00 00 00 27 20 20 20 20 20 20 20 20 69 66 20 28 21 28 65 76 2d tem->text);...'........if.(!(ev-
127a0 3e 73 74 61 74 65 20 26 20 43 6f 6e 74 72 6f 6c 4d 61 73 6b 29 29 00 00 00 12 20 20 20 20 20 20 >state.&.ControlMask))..........
127c0 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 13 20 20 20 20 20 20 20 20 73 65 6c 20 3d 20 69 74 ....exit(0);............sel.=.it
127e0 65 6d 3b 00 00 00 12 20 20 20 20 20 20 20 20 69 66 20 28 73 65 6c 29 20 7b 00 00 00 17 20 20 20 em;............if.(sel).{.......
12800 20 20 20 20 20 20 20 73 65 6c 2d 3e 6f 75 74 20 3d 20 31 3b 00 00 00 15 20 20 20 20 20 20 20 20 .......sel->out.=.1;............
12820 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 0f 20 20 ..drawmenu();............}......
12840 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 07 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 ......return;..........}........
12860 7d 00 00 00 23 20 20 20 20 2f 2a 20 6c 65 66 74 2d 63 6c 69 63 6b 20 6f 6e 20 72 69 67 68 74 20 }...#..../*.left-click.on.right.
12880 61 72 72 6f 77 20 2a 2f 00 00 00 13 20 20 20 20 77 20 3d 20 54 45 58 54 57 28 22 3e 22 29 3b 00 arrow.*/........w.=.TEXTW(">");.
128a0 00 00 0f 20 20 20 20 78 20 3d 20 6d 77 20 2d 20 77 3b 00 00 00 2f 20 20 20 20 69 66 20 28 6e 65 .......x.=.mw.-.w;.../....if.(ne
128c0 78 74 20 26 26 20 65 76 2d 3e 78 20 3e 3d 20 78 20 26 26 20 65 76 2d 3e 78 20 3c 3d 20 78 20 2b xt.&&.ev->x.>=.x.&&.ev->x.<=.x.+
128e0 20 77 29 20 7b 00 00 00 18 20 20 20 20 20 20 73 65 6c 20 3d 20 63 75 72 72 20 3d 20 6e 65 78 74 .w).{..........sel.=.curr.=.next
12900 3b 00 00 00 14 20 20 20 20 20 20 63 61 6c 63 6f 66 66 73 65 74 73 28 29 3b 00 00 00 11 20 20 20 ;..........calcoffsets();.......
12920 20 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 0d 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 ...drawmenu();..........return;.
12940 00 00 05 20 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 .......}......}....}........stat
12960 69 63 20 76 6f 69 64 20 70 61 73 74 65 28 76 6f 69 64 29 20 7b 00 00 00 0e 20 20 63 68 61 72 20 ic.void.paste(void).{......char.
12980 2a 70 2c 20 2a 71 3b 00 00 00 09 20 20 69 6e 74 20 64 69 3b 00 00 00 13 20 20 75 6e 73 69 67 6e *p,.*q;......int.di;......unsign
129a0 65 64 20 6c 6f 6e 67 20 64 6c 3b 00 00 00 0a 20 20 41 74 6f 6d 20 64 61 3b 00 00 00 00 00 00 00 ed.long.dl;......Atom.da;.......
129c0 4a 20 20 2f 2a 20 77 65 20 68 61 76 65 20 62 65 65 6e 20 67 69 76 65 6e 20 74 68 65 20 63 75 72 J../*.we.have.been.given.the.cur
129e0 72 65 6e 74 20 73 65 6c 65 63 74 69 6f 6e 2c 20 6e 6f 77 20 69 6e 73 65 72 74 20 69 74 20 69 6e rent.selection,.now.insert.it.in
12a00 74 6f 20 69 6e 70 75 74 20 2a 2f 00 00 00 4f 20 20 69 66 20 28 58 47 65 74 57 69 6e 64 6f 77 50 to.input.*/...O..if.(XGetWindowP
12a20 72 6f 70 65 72 74 79 28 64 70 79 2c 20 77 69 6e 2c 20 75 74 66 38 2c 20 30 2c 20 28 73 69 7a 65 roperty(dpy,.win,.utf8,.0,.(size
12a40 6f 66 20 74 65 78 74 20 2f 20 34 29 20 2b 20 31 2c 20 46 61 6c 73 65 2c 20 75 74 66 38 2c 00 00 of.text./.4).+.1,.False,.utf8,..
12a60 00 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 64 61 2c 20 .P.........................&da,.
12a80 26 64 69 2c 20 26 64 6c 2c 20 26 64 6c 2c 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2a &di,.&dl,.&dl,.(unsigned.char.**
12aa0 29 26 70 29 20 3d 3d 20 53 75 63 63 65 73 73 20 26 26 00 00 00 0a 20 20 20 20 20 20 70 29 20 7b )&p).==.Success.&&..........p).{
12ac0 00 00 00 42 20 20 20 20 69 6e 73 65 72 74 28 70 2c 20 28 71 20 3d 20 73 74 72 63 68 72 28 70 2c ...B....insert(p,.(q.=.strchr(p,
12ae0 20 27 5c 6e 27 29 29 20 3f 20 71 20 2d 20 70 20 3a 20 28 73 73 69 7a 65 5f 74 29 73 74 72 6c 65 .'\n')).?.q.-.p.:.(ssize_t)strle
12b00 6e 28 70 29 29 3b 00 00 00 0d 20 20 20 20 58 46 72 65 65 28 70 29 3b 00 00 00 03 20 20 7d 00 00 n(p));........XFree(p);......}..
12b20 00 0d 20 20 64 72 61 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1d 73 74 61 74 ....drawmenu();....}........stat
12b40 69 63 20 76 6f 69 64 20 72 65 61 64 73 74 64 69 6e 28 76 6f 69 64 29 20 7b 00 00 00 14 20 20 63 ic.void.readstdin(void).{......c
12b60 68 61 72 20 2a 6c 69 6e 65 20 3d 20 4e 55 4c 4c 3b 00 00 00 25 20 20 73 69 7a 65 5f 74 20 69 2c har.*line.=.NULL;...%..size_t.i,
12b80 20 69 74 65 6d 73 69 7a 20 3d 20 30 2c 20 6c 69 6e 65 73 69 7a 20 3d 20 30 3b 00 00 00 0e 20 20 .itemsiz.=.0,.linesiz.=.0;......
12ba0 73 73 69 7a 65 5f 74 20 6c 65 6e 3b 00 00 00 00 00 00 00 3d 20 20 2f 2a 20 72 65 61 64 20 65 61 ssize_t.len;.......=../*.read.ea
12bc0 63 68 20 6c 69 6e 65 20 66 72 6f 6d 20 73 74 64 69 6e 20 61 6e 64 20 61 64 64 20 69 74 20 74 6f ch.line.from.stdin.and.add.it.to
12be0 20 74 68 65 20 69 74 65 6d 20 6c 69 73 74 20 2a 2f 00 00 00 43 20 20 66 6f 72 20 28 69 20 3d 20 .the.item.list.*/...C..for.(i.=.
12c00 30 3b 20 28 6c 65 6e 20 3d 20 67 65 74 6c 69 6e 65 28 26 6c 69 6e 65 2c 20 26 6c 69 6e 65 73 69 0;.(len.=.getline(&line,.&linesi
12c20 7a 2c 20 73 74 64 69 6e 29 29 20 21 3d 20 2d 31 3b 20 69 2b 2b 29 20 7b 00 00 00 1b 20 20 20 20 z,.stdin)).!=.-1;.i++).{........
12c40 69 66 20 28 69 20 2b 20 31 20 3e 3d 20 69 74 65 6d 73 69 7a 29 20 7b 00 00 00 15 20 20 20 20 20 if.(i.+.1.>=.itemsiz).{.........
12c60 20 69 74 65 6d 73 69 7a 20 2b 3d 20 32 35 36 3b 00 00 00 3e 20 20 20 20 20 20 69 66 20 28 21 28 .itemsiz.+=.256;...>......if.(!(
12c80 69 74 65 6d 73 20 3d 20 72 65 61 6c 6c 6f 63 28 69 74 65 6d 73 2c 20 69 74 65 6d 73 69 7a 20 2a items.=.realloc(items,.itemsiz.*
12ca0 20 73 69 7a 65 6f 66 28 2a 69 74 65 6d 73 29 29 29 29 00 00 00 43 20 20 20 20 20 20 20 20 64 69 .sizeof(*items))))...C........di
12cc0 65 28 22 63 61 6e 6e 6f 74 20 72 65 61 6c 6c 6f 63 20 25 7a 75 20 62 79 74 65 73 3a 22 2c 20 69 e("cannot.realloc.%zu.bytes:",.i
12ce0 74 65 6d 73 69 7a 20 2a 20 73 69 7a 65 6f 66 28 2a 69 74 65 6d 73 29 29 3b 00 00 00 05 20 20 20 temsiz.*.sizeof(*items));.......
12d00 20 7d 00 00 00 1e 20 20 20 20 69 66 20 28 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 3d 20 27 .}........if.(line[len.-.1].==.'
12d20 5c 6e 27 29 00 00 00 1b 20 20 20 20 20 20 6c 69 6e 65 5b 6c 65 6e 20 2d 20 31 5d 20 3d 20 27 5c \n')..........line[len.-.1].=.'\
12d40 30 27 3b 00 00 00 28 20 20 20 20 69 66 20 28 21 28 69 74 65 6d 73 5b 69 5d 2e 74 65 78 74 20 3d 0';...(....if.(!(items[i].text.=
12d60 20 73 74 72 64 75 70 28 6c 69 6e 65 29 29 29 00 00 00 15 20 20 20 20 20 20 64 69 65 28 22 73 74 .strdup(line)))..........die("st
12d80 72 64 75 70 3a 22 29 3b 00 00 00 00 00 00 00 15 20 20 20 20 69 74 65 6d 73 5b 69 5d 2e 6f 75 74 rdup:");............items[i].out
12da0 20 3d 20 30 3b 00 00 00 03 20 20 7d 00 00 00 0d 20 20 66 72 65 65 28 6c 69 6e 65 29 3b 00 00 00 .=.0;......}......free(line);...
12dc0 0c 20 20 69 66 20 28 69 74 65 6d 73 29 00 00 00 19 20 20 20 20 69 74 65 6d 73 5b 69 5d 2e 74 65 ...if.(items)........items[i].te
12de0 78 74 20 3d 20 4e 55 4c 4c 3b 00 00 00 18 20 20 6c 69 6e 65 73 20 3d 20 4d 49 4e 28 6c 69 6e 65 xt.=.NULL;......lines.=.MIN(line
12e00 73 2c 20 69 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 17 73 74 61 74 69 63 20 76 6f 69 64 20 72 s,.i);....}........static.void.r
12e20 75 6e 28 76 6f 69 64 29 20 7b 00 00 00 0c 20 20 58 45 76 65 6e 74 20 65 76 3b 00 00 00 00 00 00 un(void).{......XEvent.ev;......
12e40 00 21 20 20 77 68 69 6c 65 20 28 21 58 4e 65 78 74 45 76 65 6e 74 28 64 70 79 2c 20 26 65 76 29 .!..while.(!XNextEvent(dpy,.&ev)
12e60 29 20 7b 00 00 00 1f 20 20 20 20 69 66 20 28 58 46 69 6c 74 65 72 45 76 65 6e 74 28 26 65 76 2c ).{........if.(XFilterEvent(&ev,
12e80 20 77 69 6e 29 29 00 00 00 0f 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 00 00 00 16 20 20 20 .win))..........continue;.......
12ea0 20 73 77 69 74 63 68 20 28 65 76 2e 74 79 70 65 29 20 7b 00 00 00 17 20 20 20 20 63 61 73 65 20 .switch.(ev.type).{........case.
12ec0 44 65 73 74 72 6f 79 4e 6f 74 69 66 79 3a 00 00 00 2a 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 DestroyNotify:...*......if.(ev.x
12ee0 64 65 73 74 72 6f 79 77 69 6e 64 6f 77 2e 77 69 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 0e destroywindow.window.!=.win)....
12f00 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 20 20 20 20 63 6c 65 61 6e 75 70 28 ........break;..........cleanup(
12f20 29 3b 00 00 00 0e 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 15 20 20 20 20 63 61 73 65 );..........exit(1);........case
12f40 20 42 75 74 74 6f 6e 50 72 65 73 73 3a 00 00 00 17 20 20 20 20 20 20 62 75 74 74 6f 6e 70 72 65 .ButtonPress:..........buttonpre
12f60 73 73 28 26 65 76 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 10 20 20 20 20 ss(&ev);..........break;........
12f80 63 61 73 65 20 45 78 70 6f 73 65 3a 00 00 00 20 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 65 78 case.Expose:..........if.(ev.xex
12fa0 70 6f 73 65 2e 63 6f 75 6e 74 20 3d 3d 20 30 29 00 00 00 28 20 20 20 20 20 20 20 20 64 72 77 5f pose.count.==.0)...(........drw_
12fc0 6d 61 70 28 64 72 77 2c 20 77 69 6e 2c 20 30 2c 20 30 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 0c map(drw,.win,.0,.0,.mw,.mh);....
12fe0 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 11 20 20 20 20 63 61 73 65 20 46 6f 63 75 73 49 6e ......break;........case.FocusIn
13000 3a 00 00 00 2b 20 20 20 20 20 20 2f 2a 20 72 65 67 72 61 62 20 66 6f 63 75 73 20 66 72 6f 6d 20 :...+....../*.regrab.focus.from.
13020 70 61 72 65 6e 74 20 77 69 6e 64 6f 77 20 2a 2f 00 00 00 22 20 20 20 20 20 20 69 66 20 28 65 76 parent.window.*/..."......if.(ev
13040 2e 78 66 6f 63 75 73 2e 77 69 6e 64 6f 77 20 21 3d 20 77 69 6e 29 00 00 00 14 20 20 20 20 20 20 .xfocus.window.!=.win)..........
13060 20 20 67 72 61 62 66 6f 63 75 73 28 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 ..grabfocus();..........break;..
13080 00 12 20 20 20 20 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 00 00 00 19 20 20 20 20 20 20 6b 65 ......case.KeyPress:..........ke
130a0 79 70 72 65 73 73 28 26 65 76 2e 78 6b 65 79 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b ypress(&ev.xkey);..........break
130c0 3b 00 00 00 19 20 20 20 20 63 61 73 65 20 53 65 6c 65 63 74 69 6f 6e 4e 6f 74 69 66 79 3a 00 00 ;........case.SelectionNotify:..
130e0 00 29 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 73 65 6c 65 63 74 69 6f 6e 2e 70 72 6f 70 65 72 .)......if.(ev.xselection.proper
13100 74 79 20 3d 3d 20 75 74 66 38 29 00 00 00 10 20 20 20 20 20 20 20 20 70 61 73 74 65 28 29 3b 00 ty.==.utf8)............paste();.
13120 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 1a 20 20 20 20 63 61 73 65 20 56 69 73 69 .........break;........case.Visi
13140 62 69 6c 69 74 79 4e 6f 74 69 66 79 3a 00 00 00 37 20 20 20 20 20 20 69 66 20 28 65 76 2e 78 76 bilityNotify:...7......if.(ev.xv
13160 69 73 69 62 69 6c 69 74 79 2e 73 74 61 74 65 20 21 3d 20 56 69 73 69 62 69 6c 69 74 79 55 6e 6f isibility.state.!=.VisibilityUno
13180 62 73 63 75 72 65 64 29 00 00 00 1f 20 20 20 20 20 20 20 20 58 52 61 69 73 65 57 69 6e 64 6f 77 bscured)............XRaiseWindow
131a0 28 64 70 79 2c 20 77 69 6e 29 3b 00 00 00 0c 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 05 20 (dpy,.win);..........break;.....
131c0 20 20 20 7d 00 00 00 03 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 63 20 76 ...}......}....}........static.v
131e0 6f 69 64 20 73 65 74 75 70 28 76 6f 69 64 29 20 7b 00 00 00 11 20 20 69 6e 74 20 78 2c 20 79 2c oid.setup(void).{......int.x,.y,
13200 20 69 2c 20 6a 3b 00 00 00 12 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 75 3b 00 00 00 1b .i,.j;......unsigned.int.du;....
13220 20 20 58 53 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 0a 20 ..XSetWindowAttributes.swa;.....
13240 20 58 49 4d 20 78 69 6d 3b 00 00 00 15 20 20 57 69 6e 64 6f 77 20 77 2c 20 64 77 2c 20 2a 64 77 .XIM.xim;......Window.w,.dw,.*dw
13260 73 3b 00 00 00 17 20 20 58 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 s;......XWindowAttributes.wa;...
13280 25 20 20 58 43 6c 61 73 73 48 69 6e 74 20 63 68 20 3d 20 7b 22 64 6d 65 6e 75 22 2c 20 22 64 6d %..XClassHint.ch.=.{"dmenu",."dm
132a0 65 6e 75 22 7d 3b 00 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 1b 20 20 58 enu"};....#ifdef.XINERAMA......X
132c0 69 6e 65 72 61 6d 61 53 63 72 65 65 6e 49 6e 66 6f 20 2a 69 6e 66 6f 3b 00 00 00 0c 20 20 57 69 ineramaScreenInfo.*info;......Wi
132e0 6e 64 6f 77 20 70 77 3b 00 00 00 19 20 20 69 6e 74 20 61 2c 20 64 69 2c 20 6e 2c 20 61 72 65 61 ndow.pw;......int.a,.di,.n,.area
13300 20 3d 20 30 3b 00 00 00 06 23 65 6e 64 69 66 00 00 00 17 20 20 2f 2a 20 69 6e 69 74 20 61 70 70 .=.0;....#endif....../*.init.app
13320 65 61 72 61 6e 63 65 20 2a 2f 00 00 00 22 20 20 66 6f 72 20 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 earance.*/..."..for.(j.=.0;.j.<.
13340 53 63 68 65 6d 65 4c 61 73 74 3b 20 6a 2b 2b 29 00 00 00 32 20 20 20 20 73 63 68 65 6d 65 5b 6a SchemeLast;.j++)...2....scheme[j
13360 5d 20 3d 20 64 72 77 5f 73 63 6d 5f 63 72 65 61 74 65 28 64 72 77 2c 20 63 6f 6c 6f 72 73 5b 6a ].=.drw_scm_create(drw,.colors[j
13380 5d 2c 20 32 29 3b 00 00 00 00 00 00 00 2e 20 20 63 6c 69 70 20 3d 20 58 49 6e 74 65 72 6e 41 74 ],.2);..........clip.=.XInternAt
133a0 6f 6d 28 64 70 79 2c 20 22 43 4c 49 50 42 4f 41 52 44 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 30 om(dpy,."CLIPBOARD",.False);...0
133c0 20 20 75 74 66 38 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 64 70 79 2c 20 22 55 54 46 38 5f ..utf8.=.XInternAtom(dpy,."UTF8_
133e0 53 54 52 49 4e 47 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 00 00 00 00 1f 20 20 2f 2a 20 63 61 6c STRING",.False);........../*.cal
13400 63 75 6c 61 74 65 20 6d 65 6e 75 20 67 65 6f 6d 65 74 72 79 20 2a 2f 00 00 00 22 20 20 62 68 20 culate.menu.geometry.*/..."..bh.
13420 3d 20 64 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 76 65 72 74 70 61 64 62 61 72 3b 00 00 00 =.drw->fonts->h.+.vertpadbar;...
13440 27 20 20 62 68 20 3d 20 75 73 65 72 5f 62 68 20 3f 20 62 68 20 2b 20 75 73 65 72 5f 62 68 20 3a '..bh.=.user_bh.?.bh.+.user_bh.:
13460 20 62 68 20 2b 20 32 3b 00 00 00 18 20 20 6c 69 6e 65 73 20 3d 20 4d 41 58 28 6c 69 6e 65 73 2c .bh.+.2;......lines.=.MAX(lines,
13480 20 30 29 3b 00 00 00 18 20 20 6d 68 20 3d 20 28 6c 69 6e 65 73 20 2b 20 31 29 20 2a 20 62 68 3b .0);......mh.=.(lines.+.1).*.bh;
134a0 00 00 00 0f 23 69 66 64 65 66 20 58 49 4e 45 52 41 4d 41 00 00 00 08 20 20 69 20 3d 20 30 3b 00 ....#ifdef.XINERAMA......i.=.0;.
134c0 00 00 44 20 20 69 66 20 28 70 61 72 65 6e 74 77 69 6e 20 3d 3d 20 72 6f 6f 74 20 26 26 20 28 69 ..D..if.(parentwin.==.root.&&.(i
134e0 6e 66 6f 20 3d 20 58 69 6e 65 72 61 6d 61 51 75 65 72 79 53 63 72 65 65 6e 73 28 64 70 79 2c 20 nfo.=.XineramaQueryScreens(dpy,.
13500 26 6e 29 29 29 20 7b 00 00 00 21 20 20 20 20 58 47 65 74 49 6e 70 75 74 46 6f 63 75 73 28 64 70 &n))).{...!....XGetInputFocus(dp
13520 79 2c 20 26 77 2c 20 26 64 69 29 3b 00 00 00 1c 20 20 20 20 69 66 20 28 6d 6f 6e 20 3e 3d 20 30 y,.&w,.&di);........if.(mon.>=.0
13540 20 26 26 20 6d 6f 6e 20 3c 20 6e 29 00 00 00 0e 20 20 20 20 20 20 69 20 3d 20 6d 6f 6e 3b 00 00 .&&.mon.<.n)..........i.=.mon;..
13560 00 3a 20 20 20 20 65 6c 73 65 20 69 66 20 28 77 20 21 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d .:....else.if.(w.!=.root.&&.w.!=
13580 20 50 6f 69 6e 74 65 72 52 6f 6f 74 20 26 26 20 77 20 21 3d 20 4e 6f 6e 65 29 20 7b 00 00 00 40 .PointerRoot.&&.w.!=.None).{...@
135a0 20 20 20 20 20 20 2f 2a 20 66 69 6e 64 20 74 6f 70 2d 6c 65 76 65 6c 20 77 69 6e 64 6f 77 20 63 ....../*.find.top-level.window.c
135c0 6f 6e 74 61 69 6e 69 6e 67 20 63 75 72 72 65 6e 74 20 69 6e 70 75 74 20 66 6f 63 75 73 20 2a 2f ontaining.current.input.focus.*/
135e0 00 00 00 0a 20 20 20 20 20 20 64 6f 20 7b 00 00 00 41 20 20 20 20 20 20 20 20 69 66 20 28 58 51 ..........do.{...A........if.(XQ
13600 75 65 72 79 54 72 65 65 28 64 70 79 2c 20 28 70 77 20 3d 20 77 29 2c 20 26 64 77 2c 20 26 77 2c ueryTree(dpy,.(pw.=.w),.&dw,.&w,
13620 20 26 64 77 73 2c 20 26 64 75 29 20 26 26 20 64 77 73 29 00 00 00 15 20 20 20 20 20 20 20 20 20 .&dws,.&du).&&.dws).............
13640 20 58 46 72 65 65 28 64 77 73 29 3b 00 00 00 25 20 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 77 .XFree(dws);...%......}.while.(w
13660 20 21 3d 20 72 6f 6f 74 20 26 26 20 77 20 21 3d 20 70 77 29 3b 00 00 00 46 20 20 20 20 20 20 2f .!=.root.&&.w.!=.pw);...F....../
13680 2a 20 66 69 6e 64 20 78 69 6e 65 72 61 6d 61 20 73 63 72 65 65 6e 20 77 69 74 68 20 77 68 69 63 *.find.xinerama.screen.with.whic
136a0 68 20 74 68 65 20 77 69 6e 64 6f 77 20 69 6e 74 65 72 73 65 63 74 73 20 6d 6f 73 74 20 2a 2f 00 h.the.window.intersects.most.*/.
136c0 00 00 2d 20 20 20 20 20 20 69 66 20 28 58 47 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 ..-......if.(XGetWindowAttribute
136e0 73 28 64 70 79 2c 20 70 77 2c 20 26 77 61 29 29 00 00 00 1f 20 20 20 20 20 20 20 20 66 6f 72 20 s(dpy,.pw,.&wa))............for.
13700 28 6a 20 3d 20 30 3b 20 6a 20 3c 20 6e 3b 20 6a 2b 2b 29 00 00 00 49 20 20 20 20 20 20 20 20 20 (j.=.0;.j.<.n;.j++)...I.........
13720 20 69 66 20 28 28 61 20 3d 20 49 4e 54 45 52 53 45 43 54 28 77 61 2e 78 2c 20 77 61 2e 79 2c 20 .if.((a.=.INTERSECT(wa.x,.wa.y,.
13740 77 61 2e 77 69 64 74 68 2c 20 77 61 2e 68 65 69 67 68 74 2c 20 69 6e 66 6f 5b 6a 5d 29 29 20 3e wa.width,.wa.height,.info[j])).>
13760 00 00 00 15 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 65 61 29 20 7b 00 00 00 15 20 20 20 ..................area).{.......
13780 20 20 20 20 20 20 20 20 20 61 72 65 61 20 3d 20 61 3b 00 00 00 12 20 20 20 20 20 20 20 20 20 20 .........area.=.a;..............
137a0 20 20 69 20 3d 20 6a 3b 00 00 00 0b 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d ..i.=.j;..............}........}
137c0 00 00 00 49 20 20 20 20 2f 2a 20 6e 6f 20 66 6f 63 75 73 65 64 20 77 69 6e 64 6f 77 20 69 73 20 ...I..../*.no.focused.window.is.
137e0 6f 6e 20 73 63 72 65 65 6e 2c 20 73 6f 20 75 73 65 20 70 6f 69 6e 74 65 72 20 6c 6f 63 61 74 69 on.screen,.so.use.pointer.locati
13800 6f 6e 20 69 6e 73 74 65 61 64 20 2a 2f 00 00 00 1b 20 20 20 20 69 66 20 28 6d 6f 6e 20 3c 20 30 on.instead.*/........if.(mon.<.0
13820 20 26 26 20 21 61 72 65 61 20 26 26 00 00 00 42 20 20 20 20 20 20 20 20 58 51 75 65 72 79 50 6f .&&.!area.&&...B........XQueryPo
13840 69 6e 74 65 72 28 64 70 79 2c 20 72 6f 6f 74 2c 20 26 64 77 2c 20 26 64 77 2c 20 26 78 2c 20 26 inter(dpy,.root,.&dw,.&dw,.&x,.&
13860 79 2c 20 26 64 69 2c 20 26 64 69 2c 20 26 64 75 29 29 00 00 00 1d 20 20 20 20 20 20 66 6f 72 20 y,.&di,.&di,.&du))..........for.
13880 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 00 00 00 30 20 20 20 20 20 20 20 20 69 (i.=.0;.i.<.n;.i++)...0........i
138a0 66 20 28 49 4e 54 45 52 53 45 43 54 28 78 2c 20 79 2c 20 31 2c 20 31 2c 20 69 6e 66 6f 5b 69 5d f.(INTERSECT(x,.y,.1,.1,.info[i]
138c0 29 20 21 3d 20 30 29 00 00 00 10 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 00 00 ).!=.0)..............break;.....
138e0 00 00 1c 20 20 20 20 78 20 3d 20 69 6e 66 6f 5b 69 5d 2e 78 5f 6f 72 67 20 2b 20 64 6d 78 3b 00 .......x.=.info[i].x_org.+.dmx;.
13900 00 00 43 20 20 20 20 79 20 3d 20 69 6e 66 6f 5b 69 5d 2e 79 5f 6f 72 67 20 2b 20 28 74 6f 70 62 ..C....y.=.info[i].y_org.+.(topb
13920 61 72 20 3f 20 64 6d 79 20 3a 20 69 6e 66 6f 5b 69 5d 2e 68 65 69 67 68 74 20 2d 20 6d 68 20 2d ar.?.dmy.:.info[i].height.-.mh.-
13940 20 64 6d 79 29 3b 00 00 00 29 20 20 20 20 6d 77 20 3d 20 28 64 6d 77 20 3e 20 30 20 3f 20 64 6d .dmy);...)....mw.=.(dmw.>.0.?.dm
13960 77 20 3a 20 69 6e 66 6f 5b 69 5d 2e 77 69 64 74 68 29 3b 00 00 00 05 20 20 20 20 3b 00 00 00 10 w.:.info[i].width);........;....
13980 20 20 20 20 58 46 72 65 65 28 69 6e 66 6f 29 3b 00 00 00 08 20 20 7d 20 65 6c 73 65 00 00 00 06 ....XFree(info);......}.else....
139a0 23 65 6e 64 69 66 00 00 00 03 20 20 7b 00 00 00 33 20 20 20 20 69 66 20 28 21 58 47 65 74 57 69 #endif......{...3....if.(!XGetWi
139c0 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 ndowAttributes(dpy,.parentwin,.&
139e0 77 61 29 29 00 00 00 49 20 20 20 20 20 20 64 69 65 28 22 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 wa))...I......die("could.not.get
13a00 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 61 74 74 72 69 62 75 74 65 73 3a 20 30 78 .embedding.window.attributes:.0x
13a20 25 6c 78 22 2c 20 70 61 72 65 6e 74 77 69 6e 29 3b 00 00 00 0c 20 20 20 20 78 20 3d 20 64 6d 78 %lx",.parentwin);........x.=.dmx
13a40 3b 00 00 00 2c 20 20 20 20 79 20 3d 20 74 6f 70 62 61 72 20 3f 20 64 6d 79 20 3a 20 77 61 2e 68 ;...,....y.=.topbar.?.dmy.:.wa.h
13a60 65 69 67 68 74 20 2d 20 6d 68 20 2d 20 64 6d 79 3b 00 00 00 24 20 20 20 20 6d 77 20 3d 20 28 64 eight.-.mh.-.dmy;...$....mw.=.(d
13a80 6d 77 20 3e 20 30 20 3f 20 64 6d 77 20 3a 20 77 61 2e 77 69 64 74 68 29 3b 00 00 00 03 20 20 7d mw.>.0.?.dmw.:.wa.width);......}
13aa0 00 00 00 40 20 20 70 72 6f 6d 70 74 77 20 3d 20 28 70 72 6f 6d 70 74 20 26 26 20 2a 70 72 6f 6d ...@..promptw.=.(prompt.&&.*prom
13ac0 70 74 29 20 3f 20 54 45 58 54 57 28 70 72 6f 6d 70 74 29 20 2d 20 6c 72 70 61 64 20 2f 20 34 20 pt).?.TEXTW(prompt).-.lrpad./.4.
13ae0 3a 20 30 3b 00 00 00 3b 20 20 69 6e 70 75 74 77 20 3d 20 6d 77 20 2f 20 33 3b 20 2f 2a 20 69 6e :.0;...;..inputw.=.mw./.3;./*.in
13b00 70 75 74 20 77 69 64 74 68 3a 20 7e 33 33 25 20 6f 66 20 6d 6f 6e 69 74 6f 72 20 77 69 64 74 68 put.width:.~33%.of.monitor.width
13b20 20 2a 2f 00 00 00 0a 20 20 6d 61 74 63 68 28 29 3b 00 00 00 00 00 00 00 1a 20 20 2f 2a 20 63 72 .*/......match();........../*.cr
13b40 65 61 74 65 20 6d 65 6e 75 20 77 69 6e 64 6f 77 20 2a 2f 00 00 00 1f 20 20 73 77 61 2e 6f 76 65 eate.menu.window.*/......swa.ove
13b60 72 72 69 64 65 5f 72 65 64 69 72 65 63 74 20 3d 20 54 72 75 65 3b 00 00 00 39 20 20 73 77 61 2e rride_redirect.=.True;...9..swa.
13b80 62 61 63 6b 67 72 6f 75 6e 64 5f 70 69 78 65 6c 20 3d 20 73 63 68 65 6d 65 5b 53 63 68 65 6d 65 background_pixel.=.scheme[Scheme
13ba0 4e 6f 72 6d 5d 5b 43 6f 6c 42 67 5d 2e 70 69 78 65 6c 3b 00 00 00 12 20 20 73 77 61 2e 65 76 65 Norm][ColBg].pixel;......swa.eve
13bc0 6e 74 5f 6d 61 73 6b 20 3d 00 00 00 4b 20 20 20 20 20 20 45 78 70 6f 73 75 72 65 4d 61 73 6b 20 nt_mask.=...K......ExposureMask.
13be0 7c 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 56 69 73 69 62 69 6c 69 74 79 43 68 61 6e 67 |.KeyPressMask.|.VisibilityChang
13c00 65 4d 61 73 6b 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 3b 00 00 00 00 00 00 00 41 eMask.|.ButtonPressMask;.......A
13c20 20 20 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 64 70 79 2c 20 70 61 72 65 6e ..win.=.XCreateWindow(dpy,.paren
13c40 74 77 69 6e 2c 20 78 2c 20 79 2c 20 6d 77 2c 20 6d 68 2c 20 62 6f 72 64 65 72 5f 77 69 64 74 68 twin,.x,.y,.mw,.mh,.border_width
13c60 2c 00 00 00 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 70 79 46 ,...E......................CopyF
13c80 72 6f 6d 50 61 72 65 6e 74 2c 20 43 6f 70 79 46 72 6f 6d 50 61 72 65 6e 74 2c 20 43 6f 70 79 46 romParent,.CopyFromParent,.CopyF
13ca0 72 6f 6d 50 61 72 65 6e 74 2c 00 00 00 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 romParent,...L..................
13cc0 20 20 20 20 43 57 4f 76 65 72 72 69 64 65 52 65 64 69 72 65 63 74 20 7c 20 43 57 42 61 63 6b 50 ....CWOverrideRedirect.|.CWBackP
13ce0 69 78 65 6c 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b 2c 20 26 73 77 61 29 3b 00 00 00 13 20 20 ixel.|.CWEventMask,.&swa);......
13d00 69 66 20 28 62 6f 72 64 65 72 5f 77 69 64 74 68 29 00 00 00 3f 20 20 20 20 58 53 65 74 57 69 6e if.(border_width)...?....XSetWin
13d20 64 6f 77 42 6f 72 64 65 72 28 64 70 79 2c 20 77 69 6e 2c 20 73 63 68 65 6d 65 5b 53 63 68 65 6d dowBorder(dpy,.win,.scheme[Schem
13d40 65 53 65 6c 5d 5b 43 6f 6c 42 67 5d 2e 70 69 78 65 6c 29 3b 00 00 00 1f 20 20 58 53 65 74 43 6c eSel][ColBg].pixel);......XSetCl
13d60 61 73 73 48 69 6e 74 28 64 70 79 2c 20 77 69 6e 2c 20 26 63 68 29 3b 00 00 00 00 00 00 00 15 20 assHint(dpy,.win,.&ch);.........
13d80 20 2f 2a 20 69 6e 70 75 74 20 6d 65 74 68 6f 64 73 20 2a 2f 00 00 00 35 20 20 69 66 20 28 28 78 ./*.input.methods.*/...5..if.((x
13da0 69 6d 20 3d 20 58 4f 70 65 6e 49 4d 28 64 70 79 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 im.=.XOpenIM(dpy,.NULL,.NULL,.NU
13dc0 4c 4c 29 29 20 3d 3d 20 4e 55 4c 4c 29 00 00 00 37 20 20 20 20 64 69 65 28 22 58 4f 70 65 6e 49 LL)).==.NULL)...7....die("XOpenI
13de0 4d 20 66 61 69 6c 65 64 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 69 6e 70 75 74 20 64 M.failed:.could.not.open.input.d
13e00 65 76 69 63 65 22 29 3b 00 00 00 00 00 00 00 4a 20 20 78 69 63 20 3d 20 58 43 72 65 61 74 65 49 evice");.......J..xic.=.XCreateI
13e20 43 28 78 69 6d 2c 20 58 4e 49 6e 70 75 74 53 74 79 6c 65 2c 20 58 49 4d 50 72 65 65 64 69 74 4e C(xim,.XNInputStyle,.XIMPreeditN
13e40 6f 74 68 69 6e 67 20 7c 20 58 49 4d 53 74 61 74 75 73 4e 6f 74 68 69 6e 67 2c 00 00 00 41 20 20 othing.|.XIMStatusNothing,...A..
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 4e 43 6c 69 65 6e 74 57 69 6e 64 6f 77 2c 20 ................XNClientWindow,.
13e80 77 69 6e 2c 20 58 4e 46 6f 63 75 73 57 69 6e 64 6f 77 2c 20 77 69 6e 2c 20 4e 55 4c 4c 29 3b 00 win,.XNFocusWindow,.win,.NULL);.
13ea0 00 00 00 00 00 00 17 20 20 58 4d 61 70 52 61 69 73 65 64 28 64 70 79 2c 20 77 69 6e 29 3b 00 00 .........XMapRaised(dpy,.win);..
13ec0 00 0e 20 20 69 66 20 28 65 6d 62 65 64 29 20 7b 00 00 00 2f 20 20 20 20 58 52 65 70 61 72 65 6e ....if.(embed).{.../....XReparen
13ee0 74 57 69 6e 64 6f 77 28 64 70 79 2c 20 77 69 6e 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 78 2c 20 tWindow(dpy,.win,.parentwin,.x,.
13f00 79 29 3b 00 00 00 4b 20 20 20 20 58 53 65 6c 65 63 74 49 6e 70 75 74 28 64 70 79 2c 20 70 61 72 y);...K....XSelectInput(dpy,.par
13f20 65 6e 74 77 69 6e 2c 20 46 6f 63 75 73 43 68 61 6e 67 65 4d 61 73 6b 20 7c 20 53 75 62 73 74 72 entwin,.FocusChangeMask.|.Substr
13f40 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 29 3b 00 00 00 40 20 20 20 20 69 66 20 28 58 51 uctureNotifyMask);...@....if.(XQ
13f60 75 65 72 79 54 72 65 65 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 26 64 77 2c 20 26 77 ueryTree(dpy,.parentwin,.&dw,.&w
13f80 2c 20 26 64 77 73 2c 20 26 64 75 29 20 26 26 20 64 77 73 29 20 7b 00 00 00 2f 20 20 20 20 20 20 ,.&dws,.&du).&&.dws).{.../......
13fa0 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 64 75 20 26 26 20 64 77 73 5b 69 5d 20 21 3d 20 for.(i.=.0;.i.<.du.&&.dws[i].!=.
13fc0 77 69 6e 3b 20 2b 2b 69 29 00 00 00 33 20 20 20 20 20 20 20 20 58 53 65 6c 65 63 74 49 6e 70 75 win;.++i)...3........XSelectInpu
13fe0 74 28 64 70 79 2c 20 64 77 73 5b 69 5d 2c 20 46 6f 63 75 73 43 68 61 6e 67 65 4d 61 73 6b 29 3b t(dpy,.dws[i],.FocusChangeMask);
14000 00 00 00 11 20 20 20 20 20 20 58 46 72 65 65 28 64 77 73 29 3b 00 00 00 05 20 20 20 20 7d 00 00 ..........XFree(dws);........}..
14020 00 10 20 20 20 20 67 72 61 62 66 6f 63 75 73 28 29 3b 00 00 00 03 20 20 7d 00 00 00 1a 20 20 64 ......grabfocus();......}......d
14040 72 77 5f 72 65 73 69 7a 65 28 64 72 77 2c 20 6d 77 2c 20 6d 68 29 3b 00 00 00 0d 20 20 64 72 61 rw_resize(drw,.mw,.mh);......dra
14060 77 6d 65 6e 75 28 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 19 73 74 61 74 69 63 20 76 6f 69 64 wmenu();....}........static.void
14080 20 75 73 61 67 65 28 76 6f 69 64 29 20 7b 00 00 00 4d 20 20 64 69 65 28 22 75 73 61 67 65 3a 20 .usage(void).{...M..die("usage:.
140a0 64 6d 65 6e 75 20 5b 2d 62 66 69 76 5d 20 5b 2d 6c 20 6c 69 6e 65 73 5d 20 5b 2d 70 20 70 72 6f dmenu.[-bfiv].[-l.lines].[-p.pro
140c0 6d 70 74 5d 20 5b 2d 66 6e 20 66 6f 6e 74 5d 20 5b 2d 6d 20 6d 6f 6e 69 74 6f 72 5d 5c 6e 22 00 mpt].[-fn.font].[-m.monitor]\n".
140e0 00 00 3b 20 20 20 20 20 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 2d 78 20 78 6f 66 66 73 ..;......".............[-x.xoffs
14100 65 74 5d 20 5b 2d 79 20 79 6f 66 66 73 65 74 5d 20 5b 2d 7a 20 77 69 64 74 68 5d 5c 6e 22 00 00 et].[-y.yoffset].[-z.width]\n"..
14120 00 49 20 20 20 20 20 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 2d 6e 62 20 63 6f 6c 6f 72 .I......".............[-nb.color
14140 5d 20 5b 2d 6e 66 20 63 6f 6c 6f 72 5d 20 5b 2d 73 62 20 63 6f 6c 6f 72 5d 20 5b 2d 73 66 20 63 ].[-nf.color].[-sb.color].[-sf.c
14160 6f 6c 6f 72 5d 20 5b 2d 77 20 22 00 00 00 13 20 20 20 20 20 20 22 77 69 6e 64 6f 77 69 64 5d 22 olor].[-w.".........."windowid]"
14180 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 22 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 );....}......."int.main(int.argc
141a0 2c 20 63 68 61 72 20 2a 61 72 67 76 5b 5d 29 20 7b 00 00 00 17 20 20 58 57 69 6e 64 6f 77 41 74 ,.char.*argv[]).{......XWindowAt
141c0 74 72 69 62 75 74 65 73 20 77 61 3b 00 00 00 12 20 20 69 6e 74 20 69 2c 20 66 61 73 74 20 3d 20 tributes.wa;......int.i,.fast.=.
141e0 30 3b 00 00 00 00 00 00 00 1c 20 20 66 6f 72 20 28 69 20 3d 20 31 3b 20 69 20 3c 20 61 72 67 63 0;..........for.(i.=.1;.i.<.argc
14200 3b 20 69 2b 2b 29 00 00 00 29 20 20 20 20 2f 2a 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 ;.i++)...)..../*.these.options.t
14220 61 6b 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 2a 2f 00 00 00 42 20 20 20 20 69 66 20 28 21 ake.no.arguments.*/...B....if.(!
14240 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 76 22 29 29 20 7b 20 2f 2a 20 70 72 69 6e strcmp(argv[i],."-v")).{./*.prin
14260 74 73 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2a 2f 00 00 00 1d 20 20 20 ts.version.information.*/.......
14280 20 20 20 70 75 74 73 28 22 64 6d 65 6e 75 2d 22 20 56 45 52 53 49 4f 4e 29 3b 00 00 00 0e 20 20 ...puts("dmenu-".VERSION);......
142a0 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 50 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 21 ....exit(0);...P....}.else.if.(!
142c0 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 62 22 29 29 20 2f 2a 20 61 70 70 65 61 72 strcmp(argv[i],."-b"))./*.appear
142e0 73 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65 20 73 63 72 65 65 6e 20 2a 2f s.at.the.bottom.of.the.screen.*/
14300 00 00 00 11 20 20 20 20 20 20 74 6f 70 62 61 72 20 3d 20 30 3b 00 00 00 4e 20 20 20 20 65 6c 73 ..........topbar.=.0;...N....els
14320 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 66 22 29 29 20 2f 2a e.if.(!strcmp(argv[i],."-f"))./*
14340 20 67 72 61 62 73 20 6b 65 79 62 6f 61 72 64 20 62 65 66 6f 72 65 20 72 65 61 64 69 6e 67 20 73 .grabs.keyboard.before.reading.s
14360 74 64 69 6e 20 2a 2f 00 00 00 0f 20 20 20 20 20 20 66 61 73 74 20 3d 20 31 3b 00 00 00 4b 20 20 tdin.*/..........fast.=.1;...K..
14380 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 69 22 ..else.if.(!strcmp(argv[i],."-i"
143a0 29 29 20 7b 20 2f 2a 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 69 74 65 6d 20 6d 61 )).{./*.case-insensitive.item.ma
143c0 74 63 68 69 6e 67 20 2a 2f 00 00 00 1d 20 20 20 20 20 20 66 73 74 72 6e 63 6d 70 20 3d 20 73 74 tching.*/..........fstrncmp.=.st
143e0 72 6e 63 61 73 65 63 6d 70 3b 00 00 00 19 20 20 20 20 20 20 66 73 74 72 73 74 72 20 3d 20 63 69 rncasecmp;..........fstrstr.=.ci
14400 73 74 72 73 74 72 3b 00 00 00 1d 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 69 20 2b 20 31 20 strstr;........}.else.if.(i.+.1.
14420 3d 3d 20 61 72 67 63 29 00 00 00 0e 20 20 20 20 20 20 75 73 61 67 65 28 29 3b 00 00 00 29 20 20 ==.argc)..........usage();...)..
14440 20 20 2f 2a 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 61 6b 65 20 6f 6e 65 20 61 72 67 75 ../*.these.options.take.one.argu
14460 6d 65 6e 74 20 2a 2f 00 00 00 4b 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 ment.*/...K....else.if.(!strcmp(
14480 61 72 67 76 5b 69 5d 2c 20 22 2d 6c 22 29 29 20 2f 2a 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e argv[i],."-l"))./*.number.of.lin
144a0 65 73 20 69 6e 20 76 65 72 74 69 63 61 6c 20 6c 69 73 74 20 2a 2f 00 00 00 1e 20 20 20 20 20 20 es.in.vertical.list.*/..........
144c0 6c 69 6e 65 73 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 3a 20 20 20 20 lines.=.atoi(argv[++i]);...:....
144e0 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 78 22 29 29 else.if.(!strcmp(argv[i],."-x"))
14500 20 2f 2a 20 77 69 6e 64 6f 77 20 78 20 6f 66 66 73 65 74 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 ./*.window.x.offset.*/..........
14520 64 6d 78 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 1d 20 20 20 20 65 6c dmx.=.atoi(argv[++i]);........el
14540 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 00 00 00 48 20 20 20 20 20 se.if.(!strcmp(argv[i],...H.....
14560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 79 22 29 29 20 2f 2a 20 77 69 6e 64 6f 77 ................"-y"))./*.window
14580 20 79 20 6f 66 66 73 65 74 20 28 66 72 6f 6d 20 62 6f 74 74 6f 6d 20 75 70 20 69 66 20 2d 62 29 .y.offset.(from.bottom.up.if.-b)
145a0 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 64 6d 79 20 3d 20 61 74 6f 69 28 61 72 67 76 5b 2b 2b 69 .*/..........dmy.=.atoi(argv[++i
145c0 5d 29 3b 00 00 00 3f 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 ]);...?....else.if.(!strcmp(argv
145e0 5b 69 5d 2c 20 22 2d 7a 22 29 29 20 2f 2a 20 6d 61 6b 65 20 64 6d 65 6e 75 20 74 68 69 73 20 77 [i],."-z"))./*.make.dmenu.this.w
14600 69 64 65 20 2a 2f 00 00 00 1c 20 20 20 20 20 20 64 6d 77 20 3d 20 61 74 6f 69 28 61 72 67 76 5b ide.*/..........dmw.=.atoi(argv[
14620 2b 2b 69 5d 29 3b 00 00 00 24 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 ++i]);...$....else.if.(!strcmp(a
14640 72 67 76 5b 69 5d 2c 20 22 2d 6d 22 29 29 00 00 00 1c 20 20 20 20 20 20 6d 6f 6e 20 3d 20 61 74 rgv[i],."-m"))..........mon.=.at
14660 6f 69 28 61 72 67 76 5b 2b 2b 69 5d 29 3b 00 00 00 4d 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 oi(argv[++i]);...M....else.if.(!
14680 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 70 22 29 29 20 2f 2a 20 61 64 64 73 20 70 strcmp(argv[i],."-p"))./*.adds.p
146a0 72 6f 6d 70 74 20 74 6f 20 6c 65 66 74 20 6f 66 20 69 6e 70 75 74 20 66 69 65 6c 64 20 2a 2f 00 rompt.to.left.of.input.field.*/.
146c0 00 00 19 20 20 20 20 20 20 70 72 6f 6d 70 74 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 3c .........prompt.=.argv[++i];...<
146e0 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d ....else.if.(!strcmp(argv[i],."-
14700 66 6e 22 29 29 20 2f 2a 20 66 6f 6e 74 20 6f 72 20 66 6f 6e 74 20 73 65 74 20 2a 2f 00 00 00 1b fn"))./*.font.or.font.set.*/....
14720 20 20 20 20 20 20 66 6f 6e 74 73 5b 30 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 43 20 ......fonts[0].=.argv[++i];...C.
14740 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6e ...else.if.(!strcmp(argv[i],."-n
14760 62 22 29 29 20 2f 2a 20 6e 6f 72 6d 61 6c 20 62 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 b"))./*.normal.background.color.
14780 2a 2f 00 00 00 2c 20 20 20 20 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 */...,......colors[SchemeNorm][C
147a0 6f 6c 42 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 43 20 20 20 20 65 6c 73 65 20 69 olBg].=.argv[++i];...C....else.i
147c0 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 6e 66 22 29 29 20 2f 2a 20 6e f.(!strcmp(argv[i],."-nf"))./*.n
147e0 6f 72 6d 61 6c 20 66 6f 72 65 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 2c 20 20 20 ormal.foreground.color.*/...,...
14800 20 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d 65 4e 6f 72 6d 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 ...colors[SchemeNorm][ColFg].=.a
14820 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 45 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d rgv[++i];...E....else.if.(!strcm
14840 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 73 62 22 29 29 20 2f 2a 20 73 65 6c 65 63 74 65 64 20 62 p(argv[i],."-sb"))./*.selected.b
14860 61 63 6b 67 72 6f 75 6e 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 2b 20 20 20 20 20 20 63 6f 6c 6f ackground.color.*/...+......colo
14880 72 73 5b 53 63 68 65 6d 65 53 65 6c 5d 5b 43 6f 6c 42 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d rs[SchemeSel][ColBg].=.argv[++i]
148a0 3b 00 00 00 45 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 ;...E....else.if.(!strcmp(argv[i
148c0 5d 2c 20 22 2d 73 66 22 29 29 20 2f 2a 20 73 65 6c 65 63 74 65 64 20 66 6f 72 65 67 72 6f 75 6e ],."-sf"))./*.selected.foregroun
148e0 64 20 63 6f 6c 6f 72 20 2a 2f 00 00 00 2b 20 20 20 20 20 20 63 6f 6c 6f 72 73 5b 53 63 68 65 6d d.color.*/...+......colors[Schem
14900 65 53 65 6c 5d 5b 43 6f 6c 46 67 5d 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 3e 20 20 20 eSel][ColFg].=.argv[++i];...>...
14920 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 77 22 29 .else.if.(!strcmp(argv[i],."-w")
14940 29 20 2f 2a 20 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 69 64 20 2a 2f 00 00 00 18 20 )./*.embedding.window.id.*/.....
14960 20 20 20 20 20 65 6d 62 65 64 20 3d 20 61 72 67 76 5b 2b 2b 69 5d 3b 00 00 00 25 20 20 20 20 65 .....embed.=.argv[++i];...%....e
14980 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 61 72 67 76 5b 69 5d 2c 20 22 2d 62 77 22 29 29 lse.if.(!strcmp(argv[i],."-bw"))
149a0 00 00 00 38 20 20 20 20 20 20 62 6f 72 64 65 72 5f 77 69 64 74 68 20 3d 20 61 74 6f 69 28 61 72 ...8......border_width.=.atoi(ar
149c0 67 76 5b 2b 2b 69 5d 29 3b 20 2f 2a 20 62 6f 72 64 65 72 20 77 69 64 74 68 20 2a 2f 00 00 00 08 gv[++i]);./*.border.width.*/....
149e0 20 20 20 20 65 6c 73 65 00 00 00 0e 20 20 20 20 20 20 75 73 61 67 65 28 29 3b 00 00 00 00 00 00 ....else..........usage();......
14a00 00 35 20 20 69 66 20 28 21 73 65 74 6c 6f 63 61 6c 65 28 4c 43 5f 43 54 59 50 45 2c 20 22 22 29 .5..if.(!setlocale(LC_CTYPE,."")
14a20 20 7c 7c 20 21 58 53 75 70 70 6f 72 74 73 4c 6f 63 61 6c 65 28 29 29 00 00 00 32 20 20 20 20 66 .||.!XSupportsLocale())...2....f
14a40 70 75 74 73 28 22 77 61 72 6e 69 6e 67 3a 20 6e 6f 20 6c 6f 63 61 6c 65 20 73 75 70 70 6f 72 74 puts("warning:.no.locale.support
14a60 5c 6e 22 2c 20 73 74 64 65 72 72 29 3b 00 00 00 22 20 20 69 66 20 28 21 28 64 70 79 20 3d 20 58 \n",.stderr);..."..if.(!(dpy.=.X
14a80 4f 70 65 6e 44 69 73 70 6c 61 79 28 4e 55 4c 4c 29 29 29 00 00 00 1f 20 20 20 20 64 69 65 28 22 OpenDisplay(NULL)))........die("
14aa0 63 61 6e 6e 6f 74 20 6f 70 65 6e 20 64 69 73 70 6c 61 79 22 29 3b 00 00 00 1e 20 20 73 63 72 65 cannot.open.display");......scre
14ac0 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 64 70 79 29 3b 00 00 00 21 20 20 72 6f en.=.DefaultScreen(dpy);...!..ro
14ae0 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 64 70 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 ot.=.RootWindow(dpy,.screen);...
14b00 36 20 20 69 66 20 28 21 65 6d 62 65 64 20 7c 7c 20 21 28 70 61 72 65 6e 74 77 69 6e 20 3d 20 73 6..if.(!embed.||.!(parentwin.=.s
14b20 74 72 74 6f 6c 28 65 6d 62 65 64 2c 20 4e 55 4c 4c 2c 20 30 29 29 29 00 00 00 15 20 20 20 20 70 trtol(embed,.NULL,.0)))........p
14b40 61 72 65 6e 74 77 69 6e 20 3d 20 72 6f 6f 74 3b 00 00 00 31 20 20 69 66 20 28 21 58 47 65 74 57 arentwin.=.root;...1..if.(!XGetW
14b60 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 28 64 70 79 2c 20 70 61 72 65 6e 74 77 69 6e 2c 20 indowAttributes(dpy,.parentwin,.
14b80 26 77 61 29 29 00 00 00 47 20 20 20 20 64 69 65 28 22 63 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20 &wa))...G....die("could.not.get.
14ba0 65 6d 62 65 64 64 69 6e 67 20 77 69 6e 64 6f 77 20 61 74 74 72 69 62 75 74 65 73 3a 20 30 78 25 embedding.window.attributes:.0x%
14bc0 6c 78 22 2c 20 70 61 72 65 6e 74 77 69 6e 29 3b 00 00 00 3b 20 20 64 72 77 20 3d 20 64 72 77 5f lx",.parentwin);...;..drw.=.drw_
14be0 63 72 65 61 74 65 28 64 70 79 2c 20 73 63 72 65 65 6e 2c 20 72 6f 6f 74 2c 20 77 61 2e 77 69 64 create(dpy,.screen,.root,.wa.wid
14c00 74 68 2c 20 77 61 2e 68 65 69 67 68 74 29 3b 00 00 00 35 20 20 69 66 20 28 21 64 72 77 5f 66 6f th,.wa.height);...5..if.(!drw_fo
14c20 6e 74 73 65 74 5f 63 72 65 61 74 65 28 64 72 77 2c 20 66 6f 6e 74 73 2c 20 4c 45 4e 47 54 48 28 ntset_create(drw,.fonts,.LENGTH(
14c40 66 6f 6e 74 73 29 29 29 00 00 00 25 20 20 20 20 64 69 65 28 22 6e 6f 20 66 6f 6e 74 73 20 63 6f fonts)))...%....die("no.fonts.co
14c60 75 6c 64 20 62 65 20 6c 6f 61 64 65 64 2e 22 29 3b 00 00 00 26 20 20 6c 72 70 61 64 20 3d 20 64 uld.be.loaded.");...&..lrpad.=.d
14c80 72 77 2d 3e 66 6f 6e 74 73 2d 3e 68 20 2b 20 68 6f 72 69 7a 70 61 64 62 61 72 3b 00 00 00 00 00 rw->fonts->h.+.horizpadbar;.....
14ca0 00 00 12 23 69 66 64 65 66 20 5f 5f 4f 70 65 6e 42 53 44 5f 5f 00 00 00 28 20 20 69 66 20 28 70 ...#ifdef.__OpenBSD__...(..if.(p
14cc0 6c 65 64 67 65 28 22 73 74 64 69 6f 20 72 70 61 74 68 22 2c 20 4e 55 4c 4c 29 20 3d 3d 20 2d 31 ledge("stdio.rpath",.NULL).==.-1
14ce0 29 00 00 00 12 20 20 20 20 64 69 65 28 22 70 6c 65 64 67 65 22 29 3b 00 00 00 06 23 65 6e 64 69 )........die("pledge");....#endi
14d00 66 00 00 00 00 00 00 00 1b 20 20 69 66 20 28 66 61 73 74 20 26 26 20 21 69 73 61 74 74 79 28 30 f..........if.(fast.&&.!isatty(0
14d20 29 29 20 7b 00 00 00 13 20 20 20 20 67 72 61 62 6b 65 79 62 6f 61 72 64 28 29 3b 00 00 00 10 20 )).{........grabkeyboard();.....
14d40 20 20 20 72 65 61 64 73 74 64 69 6e 28 29 3b 00 00 00 0a 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 ...readstdin();......}.else.{...
14d60 10 20 20 20 20 72 65 61 64 73 74 64 69 6e 28 29 3b 00 00 00 13 20 20 20 20 67 72 61 62 6b 65 79 .....readstdin();........grabkey
14d80 62 6f 61 72 64 28 29 3b 00 00 00 03 20 20 7d 00 00 00 0a 20 20 73 65 74 75 70 28 29 3b 00 00 00 board();......}......setup();...
14da0 08 20 20 72 75 6e 28 29 3b 00 00 00 00 00 00 00 1d 20 20 72 65 74 75 72 6e 20 31 3b 20 2f 2a 20 ...run();..........return.1;./*.
14dc0 75 6e 72 65 61 63 68 61 62 6c 65 20 2a 2f 35 81 f5 18 00 00 00 00 0a 00 00 00 0f 00 00 00 94 03 unreachable.*/5.................
14de0 00 00 01 00 00 00 96 03 00 00 02 00 00 00 e7 00 00 00 00 00 00 00 35 58 00 00 00 00 00 00 b2 5e ......................5X.......^
14e00 00 00 00 00 00 00 35 81 e7 aa ......5...