From e912dfaab39238e8629c35162eedeabe1103f93b Mon Sep 17 00:00:00 2001 From: TitanE Date: Thu, 28 Sep 2023 01:06:44 +0300 Subject: [PATCH] st --- patch/st-anysize-20220718-baa9357.diff | 164 +++++++++++++++++++++++++ st | Bin 106272 -> 106272 bytes x.c | 56 +++++---- x.c.orig | 21 ++++ x.o | Bin 76368 -> 77224 bytes 5 files changed, 215 insertions(+), 26 deletions(-) create mode 100644 patch/st-anysize-20220718-baa9357.diff diff --git a/patch/st-anysize-20220718-baa9357.diff b/patch/st-anysize-20220718-baa9357.diff new file mode 100644 index 0000000..675ffdf --- /dev/null +++ b/patch/st-anysize-20220718-baa9357.diff @@ -0,0 +1,164 @@ +From 8dcdc4b21a73268e167d98aa30f24315c7f3b7ff Mon Sep 17 00:00:00 2001 +From: Bakkeby +Date: Mon, 18 Jul 2022 16:52:03 +0200 +Subject: [PATCH] Adding anysize patch + +--- + x.c | 56 ++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 30 insertions(+), 26 deletions(-) + +diff --git a/x.c b/x.c +index 2a3bd38..f534347 100644 +--- a/x.c ++++ b/x.c +@@ -81,6 +81,7 @@ typedef XftGlyphFontSpec GlyphFontSpec; + typedef struct { + int tw, th; /* tty width and height */ + int w, h; /* window width and height */ ++ int hborderpx, vborderpx; + int ch; /* char height */ + int cw; /* char width */ + int mode; /* window state/mode flags */ +@@ -331,7 +332,7 @@ ttysend(const Arg *arg) + int + evcol(XEvent *e) + { +- int x = e->xbutton.x - borderpx; ++ int x = e->xbutton.x - win.hborderpx; + LIMIT(x, 0, win.tw - 1); + return x / win.cw; + } +@@ -339,7 +340,7 @@ evcol(XEvent *e) + int + evrow(XEvent *e) + { +- int y = e->xbutton.y - borderpx; ++ int y = e->xbutton.y - win.vborderpx; + LIMIT(y, 0, win.th - 1); + return y / win.ch; + } +@@ -739,6 +740,9 @@ cresize(int width, int height) + col = MAX(1, col); + row = MAX(1, row); + ++ win.hborderpx = (win.w - col * win.cw) / 2; ++ win.vborderpx = (win.h - row * win.ch) / 2; ++ + tresize(col, row); + xresize(col, row); + ttyresize(win.tw, win.th); +@@ -869,8 +873,8 @@ xhints(void) + sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize; + sizeh->height = win.h; + sizeh->width = win.w; +- sizeh->height_inc = win.ch; +- sizeh->width_inc = win.cw; ++ sizeh->height_inc = 1; ++ sizeh->width_inc = 1; + sizeh->base_height = 2 * borderpx; + sizeh->base_width = 2 * borderpx; + sizeh->min_height = win.ch + 2 * borderpx; +@@ -1152,8 +1156,8 @@ xinit(int cols, int rows) + xloadcols(); + + /* adjust fixed window geometry */ +- win.w = 2 * borderpx + cols * win.cw; +- win.h = 2 * borderpx + rows * win.ch; ++ win.w = 2 * win.hborderpx + 2 * borderpx + cols * win.cw; ++ win.h = 2 * win.vborderpx + 2 * borderpx + rows * win.ch; + if (xw.gm & XNegative) + xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2; + if (xw.gm & YNegative) +@@ -1242,7 +1246,7 @@ xinit(int cols, int rows) + int + xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y) + { +- float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp; ++ float winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp; + ushort mode, prevmode = USHRT_MAX; + Font *font = &dc.font; + int frcflags = FRC_NORMAL; +@@ -1375,7 +1379,7 @@ void + xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) + { + int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1); +- int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, ++ int winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, + width = charlen * win.cw; + Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; + XRenderColor colfg, colbg; +@@ -1465,17 +1469,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i + + /* Intelligent cleaning up of the borders. */ + if (x == 0) { +- xclear(0, (y == 0)? 0 : winy, borderpx, ++ xclear(0, (y == 0)? 0 : winy, win.hborderpx, + winy + win.ch + +- ((winy + win.ch >= borderpx + win.th)? win.h : 0)); ++ ((winy + win.ch >= win.vborderpx + win.th)? win.h : 0)); + } +- if (winx + width >= borderpx + win.tw) { ++ if (winx + width >= win.hborderpx + win.tw) { + xclear(winx + width, (y == 0)? 0 : winy, win.w, +- ((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch))); ++ ((winy + win.ch >= win.vborderpx + win.th)? win.h : (winy + win.ch))); + } + if (y == 0) +- xclear(winx, 0, winx + width, borderpx); +- if (winy + win.ch >= borderpx + win.th) ++ xclear(winx, 0, winx + width, win.vborderpx); ++ if (winy + win.ch >= win.vborderpx + win.th) + xclear(winx, winy + win.ch, winx + width, win.h); + + /* Clean up the region we want to draw to. */ +@@ -1569,35 +1573,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) + case 3: /* Blinking Underline */ + case 4: /* Steady Underline */ + XftDrawRect(xw.draw, &drawcol, +- borderpx + cx * win.cw, +- borderpx + (cy + 1) * win.ch - \ ++ win.hborderpx + cx * win.cw, ++ win.vborderpx + (cy + 1) * win.ch - \ + cursorthickness, + win.cw, cursorthickness); + break; + case 5: /* Blinking bar */ + case 6: /* Steady bar */ + XftDrawRect(xw.draw, &drawcol, +- borderpx + cx * win.cw, +- borderpx + cy * win.ch, ++ win.hborderpx + cx * win.cw, ++ win.vborderpx + cy * win.ch, + cursorthickness, win.ch); + break; + } + } else { + XftDrawRect(xw.draw, &drawcol, +- borderpx + cx * win.cw, +- borderpx + cy * win.ch, ++ win.hborderpx + cx * win.cw, ++ win.vborderpx + cy * win.ch, + win.cw - 1, 1); + XftDrawRect(xw.draw, &drawcol, +- borderpx + cx * win.cw, +- borderpx + cy * win.ch, ++ win.hborderpx + cx * win.cw, ++ win.vborderpx + cy * win.ch, + 1, win.ch - 1); + XftDrawRect(xw.draw, &drawcol, +- borderpx + (cx + 1) * win.cw - 1, +- borderpx + cy * win.ch, ++ win.hborderpx + (cx + 1) * win.cw - 1, ++ win.vborderpx + cy * win.ch, + 1, win.ch - 1); + XftDrawRect(xw.draw, &drawcol, +- borderpx + cx * win.cw, +- borderpx + (cy + 1) * win.ch - 1, ++ win.hborderpx + cx * win.cw, ++ win.vborderpx + (cy + 1) * win.ch - 1, + win.cw, 1); + } + } +-- +2.37.1 + diff --git a/st b/st index 691ce26340cbd2258bda2a075a07d525e1a45c4d..4f0308c1c1652fd57ca2d0a53904e24ecdd3fb46 100755 GIT binary patch delta 14031 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 delta 13876 zcmb7Ld3+Pa+uupMZ8=H`G_*jE6j~^hatM)Dh!6;{g^GZv93mixpn?JgMUjAMg>{Xh zgRTe)c*9TRs9GpcdeL%Qko&&fQf{;y0{ecS-2~D9-h4jUXXg7H^UO0d&&*ERB?Tc% z3PM(ev6}b35RA{gFL*sRk#?Sn!_TytS`|NXuZpmE~bha@Y z&u7O+HN3UU)Ed`;8HF&jD%9tz!M(G?tj_%pcRN1??)L2_cgcUa`*~e^RKp*CG`SW3 z;qK%vaK(cr*Y5atyJ371xYxFt+_e92J$$J>iZ#w%XIC4rINrZwR7Tt(Q?%cRe;eBF zZ{W56;FtYw&HE3&ny>B{)o`Xi92NiJ&g7>$zRo7_!D+9vnS6IzFZMfcnBE4@4C6VS zp1I4?KaOV!xt#}(jZPXoSr95aS_Gj$fMag?iq?yeBtqm=acLueEA zM0*w0g6P6P^?y_qx|#}KlIV;FqV9i-&Y~&}AlaTmqWvF;HvG5f(^QQxL_JqDiDaAk z-MsqRzuIp_lEN(0XgmqtgIa-LH<55cstg1@qlW*6ekBb`fe>sWm4uW7@jCDC2C-)6 zvJRv6LUMg*P)grzi;lOPik6Pe9{g2)9>qg z0SpS8;HRLyk_l|g0}PO$4a)sSO$%dP__4)5hrRchAmkKI-N36BC*>9_Im0X^Y5eQ2 zhID(>DF~9{9B~pF?{tQhKCtS&$E+W8Ljjzg#2H7Nb^%VZ$!SHL>dv`czILz>*@4O= z{^mFDv*&r}w@cZ$+-2XcVwS^ceCYSR*`xfs?@zMfe9jMZEF02!#Ijh{jJIAkm}TY8 zT~@_H-fIo@$$a|%e)EJiqApp45~WvHuV#6pfnqz=kO{utdU~<7Z_$FA&hx02tc8$J zbxrBz_6rsMTWI4$LQ=Unz_2O^Ysq+t*OP3?icrKQ5b|zevZ#`@BF<~bY6#ww_p2^@ zld}2#ACo+0;%F(mBXiav4CyP%4pm7u=pCh}EA@d5UhAt;| z**a6tHjeZZXMbWX`T;C&X;=vvdg1A(B=5yAN&Z`s|ANHLXh>}P)K@D~i1u&NwH1(1l=h*9W1c} z@-?|wlJ7%iAX%|~<9AB2N&L5!?HW7-9qY9tb=JFO=c+9FsY&q|^%FTxH z8LN7QoU=i>E#JE8^VYW`nQ+4zA%6R~AXIO*WQ9>>J}Nh?gDY-W>kdq8>)I4V0rkaR zYrsER-LKyOs0g0;sy8x&Qv0CXBmM2Ltlk;Efr%{L_9%dvy))#!Psryoip~W~ir5@b zZ>2-B8zEJkGHTl1rMjL|m{ougs}afDt!d7V^1*AGcqV+Q>lt#Xwr?>yCU2HxcVe1b zu9oC-ZOs=1UBL8d+EWlRp+AB*`K7!6paeBMlu+Ylp?uJ{e3qAmj4&z@l4$61l#05!z8^B&KOP|2)@@EoFV~&;bJwLrLzQT-h6W&082Di(%Bz zsH;-Zd4%0*K~3wmnS{jZx=g4ngq+q2T1uKGqB$%(O!1ey1g3a9KJMoZY!UzB=VA62 zpdcS`Sy$fjc`Wjb#9+*)@C<-GS`)tgyXtk-!AjS5+j zM(DmsJE#-8O>zcfm@37}dW0t%4aZZQH{u|RV`*fHY~&1<0ycxM0@1uQy+87*Mh>Efu)F% zcw$+m7rCuZIIXC-*=@z07?x8gm$|Gxs`Fvna32m;Au zu)UQ70V%N;ff$pD{a(2Wh|8LXn2p`7jYY~yHflAE8h>qFtIX!65AzJ-tV=#*k`F_n zxekMcSl%)Eg+&^y?fDC=d(=$$$F(W+cMNzv!NPrBxh~!k^C+*G9~V-(08nS%IzNh? z;XU(P)q0bFyHM3C_}lr9v-W&LesuED+Y}}E^μb>7mpLx;JZE767^(6otYzwo>H z@oY7ZS)Wv6A>5PX6WS==dwq{OK9vkOKd1%A>wdz&Sf9c=@U82cG%F%q`GVqD3l=1b zYC>Yh=LDXXtX zs+pka58(CGW|*XOw@b4c3s@-seUV_ekeZv`R05lonyzt1^_m^1l@8)JJ8 zqvCpaf)igIT3qQEduw(c@?&{-Y)>>l!)uX&#t#{2OF zlq1$`8Jc4=tP}T+wYIS>$BEPW?uSP2Q*UF@(7u5Isfj*d54#A2s(*is#RZ*GKf9LE z)uau4dO;JmfG;X&oW3rU31h8S3U63jiY;o;Zr!R-78e6WTq6z3=gHLDFqJg9Q{s3^3z?Odmf*0_Xn_@bB^^Zg?l7K+K#C8lKEoq-~T^NR_EtV7pJ!dL< zMJ-(9vp1!BCeo0~C6yBq70ek3zXFTqsp<4D2-oulw(k}Z**RNY6f)g~U~RjmQtkL2)06dP^hV zz|`h&z_$cCDKHsu;A}gX|NayI%C4NI2THG?r0t@0L0K#tUC-g~7q?>Bd|h#Dlei$* z%_)?uZgJrvnmNIV7_PK`&>ViNIMwq#^<6HJ%7sCgol1Cn2*^^T;%G*N*CG^K5*7Nj zQbaoyx+j-+ccVu_dH1eFyv4!tQ!(DcV7Ys=*V!4J5whw_WkuQXiwqr2L=s`C!;==${Hbpd~+2MZyz@AQ11|t4jITr z3os`kHJhYj=JDR;&f1sH;vkMUj}uyrbDWo_gtxqp8DO*HsW{f~?d2^Wxq&+kE1j8u zyaoJbS;QM+<+fND$zYmm z=bvfdmqUd1-Z<8gF<~LkK8ua{xot1BGMgN z+Hsnwc;QsKr%CA*SXP>k%c?D<7f*cxNE+3yRx78q@CSUBIYBt`@XiL-Ktc#(h2VY^mfo1?O{#!MAdu#J|QtD z_=%m(Em1%7uw4VfKD~*FE=J$tFYM|+CgGMKtRu(q615o&GyID4Hp*JC7p@rLgbPMI zFpO7Q7{hpw1g6X-U&~y^PJ~_NcYu;y1Y6Uoq&U}*)J7itTYBi?YHBut5Blxt$nR&< zpi};*!yhJQitQpV`mLeoFobYK+In5Gw%m5z`h0keP6Cb+gNj@m=yZ-#M!5bMiL}`= zrI(Z6-p`L-iOR=B{RiPA~R&5%x}PD<)uBWzn;Beebv?*3f8(d z$5V#lt1*ezy0IO}HpVaYXdsW=KSCqvmQTx-MQ|3 z3d%#vxPsT+lfu5?&OI$HwmkCbsiI2wRg z3q~~}=ZKM7tbGsT%=l!5N8TszM_hKSL^KZKcB&ghWic5~>&n!2R7s7;6FbKH260XR z(dK58W6qHTjS_pqX}sWvN+mdq3IA*M8H|xM>W2U7B$AA5r3)ims-Ubm-X$gH3_P`8dBWbdk$q9b zn`Ivmxc3<`rtmR)zycq_yM`m$#pSwW}X+Db%(SdxTZXBh> z;r!aZ6iY1!kK5nWGnU5IxZ)X}5XhY$F9t@JVCJ=W)3<25EX$N{OHDINM@$WKZ6K$s z!nK4leftizmeob_ElNBIG4o~rNn$Oh>0`d&{5HeLBc;4>|C5%s z9eCXXJrgS0|Fe$%M0u<=dG~eea}`))po48&_!|de!Y(0&WhzNoe9?i&$3F3p%1ER9 z+!ma?XYQZ{i-lY?rIB{{H?*oauV01-JK=%+Tw+Y6@17Y8x6w|UqG>f}hi5~Ajx@6! zZ~9A{B7kVidDnxDJeM9pm%mVYrF9Y?1AA&M#r7y@`m>#J0z?W^Uhjo~n zJ>;;|dz-(0s0rK8KR?vcQ-UG!U!NcS`Pb8)pUceAa z)935hDIaVQhLqO(cR%EM#`Uyo;L}feo!?f$hpZWr5L?&+qaN%A2q zsNvKf#j(X8&I}N3Alj3>B@s9{kA#lLKQ4VqKfPq~7Tif@pp4_$96Z(ykLaMWz?L-sA)T=!)Ha@4`{6Q)nII1!O=!oTIUkl3XPfRoUJ0E;mkbwcQx|pZTvx?L(vl9H_5I zHBR8p64!*aGci$i9HV7XP$>vM%(CWe#XfD#doD3z?Cdi>%MbRfx4ql#O6u@&bhmb% zekgp>XH3-&ir5XHe@Oq}ZI2~IzlmOKM31l~&x^n)Sz8QDv@5nde8RDYQ5k;yBRCWy zS7vi~tl0K|7wy@IR}(?j{KlR#O+ek9Xs;HJV28m)FYbS_(fy8!_g07}%X=%>`e7+- zcyC!|4s$EwYH(b*jbgYUUy5=M>q^b#d)h*2*6uQH2eEW}p`V%s@4S_tkv&_d7tsek z=~$#oNsU3d@`>%g@dA26NipU@)%dRm;W%FIYrLV&q1lD0Q}?GS~?lQGulYCZd0LmkRl_l zhZL-#H!D!WFG+GSeg@d*Ek=)?qaMM!;P!RJGN8L&iPVEU&{xE_p&%DQdI$XgC10?v zv`r)%#TK_u(p|>nG_~rJ)~+m4k{(uqdx)bg&Cp{1)j9@P`wUtLyA9<)*u_8WIEG}f zKod=0zvt*>s+MGCrgQNqobfKbhREmZ|gSIUsFJ zgLZ-pgO`D#wFAVQY%s~-+E)#O{f$UYImcf+)r{qG^;8q~70*94j{VJ>o?gg~^G&Be z^=#P<*%g#fUlLxzn7wvJ5c(k@5HU~HE@R@LAM1?9Y-_+mUvdrNoDZUPK@X4^emDyb zZYHWl2T*%fGex{K5)dU?B@%hYG0pUMI4KPwB@bX{R??5W8f#tY zJa-x+Uv3#IJLiDqEn@&3I|wWT=*R+S?i-42BI)`ZT^fMM<%Z|l8k}j&?UoGU5c((@ z`IZE|TRdHnf{g}!;e7xFt}A|nbp&=Th!%u6ntO~QzG|qQ+*Gwi5uXB6zFwpF=Kh4T z9NpUEy6or*sNK~c>{FTX1F-fA{boj8G$yQ94}HCs?2Lzy;aN$wSicS`mMl};+zDlV z?(8GIYoa0gl#6#EVU{lYOPegHYdEDK=t1!R{z=+rUJi44FEYGghaq^@>|>C@9@H&~ zk39DTyUACci>lW;448ZgYtpL??A+8kr#?S;F4gk>NgjGW*3)bYw*J>%M)KG?Gt%uF zsb~5og!RZdJ2Ny>PLFmh09Z_58nHXnx7e@PIGDbH4erY}*-)`(wf0D(Y*P)L)6fZj z)6n_I&>0ZZq8Kkkq~o^Sm&G9{DdLV{)PV70@C4FRFc#u=Qj^8KAm!p7JSoTG>~RG} z>yoCB5|d34>KJ@`={N`$MU*EWlIH0`J8r~rGh#l~rZ`TTl9iCu&b~xZ*^I;W0HBJa z)a30X-Vew-c%O3t>OZbgGP3Hxmsr1-Xa^Y#K2mL85G8yOY1%#}P2(5vd8C{YYFHNM z^EFya56Nq#=4cKxI_K;O2=8reNbSGxZTm6X726Ixkz`UymvSKD&;n&e^gL(i&`;`i zQde-EbA*^?uRuw=Ky4#ADB}C5_H%ob@L4FBsV|UQ_8Y2>14b*(wWL=y7rxnN7rVcGit&8cIWaVuy_^(zx_XZ zp_OM16*rFa-+&@(K5j@lKPTKlwq@~Gl#O`-c5{>c7O@+c?8OhU8=CCrh<(!>xw#Lq zLru1m*awN-Ll!5YV&47uY)_+%4zxCiGm6CC8UK%ON34eX`Vrut8`kmHD`MJF-m5Ck za}p?`wUwAOY0AaPDAHdxX?GVPsr^LpRUGR~v9CzX2ipZC1HF$3*g-?-a|}b-%)_ea$qFMAj2vG~uOBZnMC^9JxDi%?GJT+u>lgsB0qlnkuRRk&F z%^-^5yNjGu;37yqVeVStXw842O23+&fPgk0PHSm+Z_=z9Ip=P~W~B*J`7f7jb;Dt| zaz4Gn?JdG1ZVZ<%+MO2%k@@gSgV^3Q8k>AqJBJ|2;;X1u_9T^eNu^>mMXonM${Cf1 zZ}H`q>~&v1gmMT8^(3KrqYd@}Ql6=_HY#5cwet+wF?)#Us7_aEH=&P%ZJWrSC`rG&p!*>k66Y!mi@3zyp z6gl(%`-UDd<-7UmT+n5wbp0^CWGne0o8!!KOML+f9Uo!@8Vxwm3W|S&AHr9Qw!DIx z>`RMh>{4B?z7omanKH+8DAmxpsPV=fbIjG4?5`^U0(%S z47vj}8+R`;b&*9^>iR37WuQwy_kykkZM6#R)x}?>WT9{uz~(i&o>or~PW+* zbp12X4?uqgt+fur5Be%-aD73zwH}5+9UF9gE@(-Ct`~xy0zC@49y28|QV^ag!toyT z0_ZHz2F1F*2s8*Ib2ic=2oq6=unEFa&}2{zv@7UfoZ7NLrw`eogJyx&*`@3AK!<_;2zng!Am}yFtDwQZ>3Ucc_TdURHX4ONC=3F< z0y+cKgNe5TwD~?Lfc^#=87&BhK$AfW4xk~>UI!6U&~HH3f?fgL3mSV!*Dr#$2NfD( z2=bg(wy;)u64nQOFgn7bT8J!ujD8qf1#B@e42JO`xl&+@)VhsX{T9o>!pZRg>mpcR z07DDL2Qd`{ETym1CmORT_Ln-QF>BK>^dtK!}7Ug!HOY!GcbyBZ0G{YEBGm-!Se=T}M7N zOlQC}jv7LCxFAHTyJJ`i>#E+1VNoHkL8`w+jcdpns_kQ0EXz^*$FfdrlrQIY5Svu9PME7! z2UG`Q#eAzSjbj}xe=k=L$FWA1d&|}8IM$PWs5;|WJgcb=i$|+3s0-rJ-^nX<{gPnx zS3O4TDD_@EOKJGbPrBZo>?2we(ItxMpBRTps>_a;E>Q>DS$oT|mFfp})|Y*+9<#H? z(Q8*@iTZti*W#)Z?G19*u?Iz|5eY0ZL+V8I^^Zs* z7S<-qbY0JD0ic-*CYe@NcjE<8_R&5W9rN(mZZMi6oc1I^)+QFj>Vgh zlu58(od`>xI$<;iv*GMn;C%>3w5JKF&g# zusF5u2-u2K+kqqm{#hZQDf$cD{q(XriKJJn9}$_Ut~SZ;5o|G=piUae@Lvf8Mt%AM zli2TS#tRVpT^(-{*&un#USPU7*zPwOfwxzSP)F$hqX`5OQ3F3d?LT;oA7ALl14*hm za3(YomZ)qz`{%zt68z0L{AxSZcEsN2*AC>YP|R`i;<7rD*dxkl83_VSSo(Y%VzLLT z9}&A~g$Wz^48=^p@pEd?c-Dr^R>}PHmf`Q z!CvSW8(|zb1Yw$A{X0LtUtRqYd^qc85Aw6=K9G9QSv^JU7m7{1v!DIDpPjANeHkw9 zQ(Z5!UI|wUP4*PiQz16UH1efi`)zgE%dAVo#{Q`^+Hb6@U(BPjSI|~q1{w(wB2W9- zJ=Auuu;Cd0k4P#oFAw|Mde<+tT`dB;-Pj$b@%jEXKJl{y|N7I)kALCEo2fM>U|R_+ zpqKsZjehn_wf_WIUF~0Az5MJ7KRdAgCi$H?;K#?S3ns8$%&VS)cB55$Of@5^qFC*h zs`y>4H<3+y@Xtd=76rdiuo=EK>e7kuEwGxN@;C1Av*YqACt_W&_`Djgu~23?aWb#o zB=)!kOQ`=8tZ$}{pTgSE8vT3teC!XVk~0 zV{aLkH+wpJk+EmJNCD#^&dYBx$POI~sVd3E1rDzp52CU5yn z_9xbutton.x - borderpx; + int x = e->xbutton.x - win.hborderpx; LIMIT(x, 0, win.tw - 1); return x / win.cw; } @@ -341,7 +342,7 @@ evcol(XEvent *e) int evrow(XEvent *e) { - int y = e->xbutton.y - borderpx; + int y = e->xbutton.y - win.vborderpx; LIMIT(y, 0, win.th - 1); return y / win.ch; } @@ -742,6 +743,9 @@ cresize(int width, int height) col = MAX(1, col); row = MAX(1, row); + win.hborderpx = (win.w - col * win.cw) / 2; + win.vborderpx = (win.h - row * win.ch) / 2; + tresize(col, row); xresize(col, row); ttyresize(win.tw, win.th); @@ -872,8 +876,8 @@ xhints(void) sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize; sizeh->height = win.h; sizeh->width = win.w; - sizeh->height_inc = win.ch; - sizeh->width_inc = win.cw; + sizeh->height_inc = 1; + sizeh->width_inc = 1; sizeh->base_height = 2 * borderpx; sizeh->base_width = 2 * borderpx; sizeh->min_height = win.ch + 2 * borderpx; @@ -1155,8 +1159,8 @@ xinit(int cols, int rows) xloadcols(); /* adjust fixed window geometry */ - win.w = 2 * borderpx + cols * win.cw; - win.h = 2 * borderpx + rows * win.ch; + win.w = 2 * win.hborderpx + 2 * borderpx + cols * win.cw; + win.h = 2 * win.vborderpx + 2 * borderpx + rows * win.ch; if (xw.gm & XNegative) xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2; if (xw.gm & YNegative) @@ -1245,7 +1249,7 @@ xinit(int cols, int rows) int xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y) { - float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp; + float winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp; ushort mode, prevmode = USHRT_MAX; Font *font = &dc.font; int frcflags = FRC_NORMAL; @@ -1378,7 +1382,7 @@ void xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) { int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1); - int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, + int winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, width = charlen * win.cw; Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; XRenderColor colfg, colbg; @@ -1468,17 +1472,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i /* Intelligent cleaning up of the borders. */ if (x == 0) { - xclear(0, (y == 0)? 0 : winy, borderpx, + xclear(0, (y == 0)? 0 : winy, win.hborderpx, winy + win.ch + - ((winy + win.ch >= borderpx + win.th)? win.h : 0)); + ((winy + win.ch >= win.vborderpx + win.th)? win.h : 0)); } - if (winx + width >= borderpx + win.tw) { + if (winx + width >= win.hborderpx + win.tw) { xclear(winx + width, (y == 0)? 0 : winy, win.w, - ((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch))); + ((winy + win.ch >= win.vborderpx + win.th)? win.h : (winy + win.ch))); } if (y == 0) - xclear(winx, 0, winx + width, borderpx); - if (winy + win.ch >= borderpx + win.th) + xclear(winx, 0, winx + width, win.vborderpx); + if (winy + win.ch >= win.vborderpx + win.th) xclear(winx, winy + win.ch, winx + width, win.h); /* Clean up the region we want to draw to. */ @@ -1572,35 +1576,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) case 3: /* Blinking Underline */ case 4: /* Steady Underline */ XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + (cy + 1) * win.ch - \ + win.hborderpx + cx * win.cw, + win.vborderpx + (cy + 1) * win.ch - \ cursorthickness, win.cw, cursorthickness); break; case 5: /* Blinking bar */ case 6: /* Steady bar */ XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, cursorthickness, win.ch); break; } } else { XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, win.cw - 1, 1); XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, 1, win.ch - 1); XftDrawRect(xw.draw, &drawcol, - borderpx + (cx + 1) * win.cw - 1, - borderpx + cy * win.ch, + win.hborderpx + (cx + 1) * win.cw - 1, + win.vborderpx + cy * win.ch, 1, win.ch - 1); XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + (cy + 1) * win.ch - 1, + win.hborderpx + cx * win.cw, + win.vborderpx + (cy + 1) * win.ch - 1, win.cw, 1); } } diff --git a/x.c.orig b/x.c.orig index fba89f3..4864c28 100644 --- a/x.c.orig +++ b/x.c.orig @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -2099,3 +2100,23 @@ run: return 0; } + +void +opencopied(const Arg *arg) +{ + char * const clip = xsel.clipboard; + pid_t chpid; + + if(!clip) { + fprintf(stderr, "Warning: nothing copied to clipboard\n"); + return; + } + + if ((chpid = fork()) == 0) { + if (fork() == 0) + execlp(arg->v, arg->v, clip, NULL); + exit(1); + } + if (chpid > 0) + waitpid(chpid, NULL, 0); +} diff --git a/x.o b/x.o index e9b2d06d53ee09da0490c668e4a58a5329fdff23..e379be7ff6f4531a7809b9be77509641df0d9c08 100644 GIT binary patch delta 23606 zcmZ{s30zgx_Q&r5azx?gaJY`3D4?cZXHAQ%lu(qCT0OIpvhu0*&!kdcdPVfrO)Y6_ z*UVSqv!|A+M3!TMX=;{F%qge9p}>64$RSOQ|5|77C5zR&`|~-Rd%nLl?S1wc?!ei* zKVtdOh`EVji3z#w;%l_O#RV-lqt(qU!>&)d)jv!9Qh)Qq1k=ttnPu8)W4{Z-VQvubPI?7Dt1Nxr;&TGY&q>i)$rL; zvV~Pg&5s;pm8vt5E!&r0udFQJf1|Q8WmX%kE3N2sM4Gj~d?27%&5@)Qor*}czAOKy z>QrxJ_xq9SAq@Qf1?sb4yvo*Hf-qOP=HNWUl{eIv^-`?cRjvAI);0A&{Q*rpzyn3T zK)Ek)ICWOH_|#cL<7=e{ek$8pu)6+pHLT$UEgJn|jdX@9Fu0*k7)XuYk=y}#z6^a$h>Mg#^lW3OX!oW1JGYLL1kd?L67?u`xH8xt539~h#Zw*Ro6D|jmA zVp!x?r=g_nsevELPMrQn(c2&bjz~Fp0?53O_|40c`mi>OBAV2Pnu)4L5 zQM!Zbp7?`SK*hDmvKkh=-KL}EPtog;9g{1`fd7-F;Wm&Xho5QCZ6rtFZV=z?p|ptA9_r8rTWY+DR;M5DErw zSKzQYAkbDtC(Nk%#?i{k)F&^f=Cy3~Ny6T+iW>zp65kEChN{>O_djs>DyVauGRnST zuM64hPvP~`QRfRUL=6v5)g_mmg;929jXnsz023#F*}{Ut4qdE9|JVm{bGFs`GBxL1 zEyu9z(mqwQ<7w+%b*|%vu##f6ywelzz@^l{(D<0tKx8}|qUp1is%D+rhNlNksk=IR zlhfk1!CXqM{R13EFtH-j1AmmgbsXlcGY-q)Xt*8*Blh`-_~@szPt6Hi9-B2KXLqbQ z0s{Y4pLM>|`kT7kxwHG8z<*N$=baK^cxQazQoFs)Yx_1?Fy<+N5;elxJT(Dcn+bQN zM%0_xFq}D8BBI{h>%0h?I>zkIIrmxSw4zTBIptv~fwR7-)qBI8iLUa!G1dn4wYNoo zQ%d=;N}NBF63btQ9648NM$OEI7pd!Tmw{B7+ByYBpTg5DIn^bu*-h0qXBc#yrO7#~V!Fn~{&_^KY9mrGxa&d7YN`^tkG3Wk%+2ak%YNj6OReEb5I3Uvl|49jy=9CTX+dAsimg=tF>0$5hP^x#5wO(!R{gU;( z>ei>Lb)OpDCq81|!OBWi(Y1lc@uPQ!se)YnHWDegC%v zYiWV?$^;88#xG83Wld2Frj-1JQoA8sn9Fk2rSxWP8{SoLyz-&_BZi|tHjHPvB3!Ym zc&hCg=P;Km&a8XD8olNy%WqrrmB-)7v&v{=&ALCVF+z#T1RIZ<1U7h3V~f`-*L|?Y zI3K7Ye<#bQD*Sd_GMuuoUC}Go6R<{`x571mp`7-RcX%zmRpQJ8mur!+>Qi6ym-NcD z%IS1Wj?y62@a=~8ZLC3G!}lBhm~v-#vQ{f!_Q1GZ4YfGI^sNP~ zvEGTsccxmAeW&LJ?f__`^vdNkR+-A0ZZ|pGL}Psgcex%kYC==hW%^^*T9rH9_I!u? z3fd8q=v8C%u_^*JHP#Vb^YqH~wo#9%is^P(tvFRD=Wgqg%E+-jBU@=3nhQIOsZ!aX z9x>{8ljg8d?^XFZ1HDhd85o;$(t!1OqrPRhGj)OgX80MEG~?waO*){D%hgV=Tuosg z;~1rMP#b1+Y*J$6Ax7?Di79~_wLq7+ou_~u|}R^c+l`khBxf2!B#ct?K`c5YW>@fhfVFKngly`Y3rQqT&_CC zB@A9*1)U8)V}>l!@J2n=W9KD0f@g-ThhWtTW2NnRi+MfF)I}J?f4nK%-Gj zH++iVGT6nb?RM1fg-X?)P}!?(s~l~tTU9>9>0U!SVrIPapsM<*Qcwpobp=z0EB6}P^8`~r zWa@Lu2kJ{q{fMcrsqvuBW$MRFU8(XwU29Yt$r)gQZ6nqUx2E{_J7wj=Sx{I~Pfsdu zzHR--vAlwoR&7-Qe;cY?@Jgzw<57I_>Zppqrl(^G_jX{JW-M`haPH9f3{i2P*j5%s zv-YZtPi)Ug5tC~E#mRVy#VKHMt~+WCb8m=QaOP5$da4v6+eXD|A7yHsau?W{4>I2+ zO#PI3VO*Mxg@UgH4cj+@(-Cw~`3h|R1)=W7VxZN4dk}0il0n0p2p(>Zw~>O=S?d|W z>8$mf=C|HVK)Y&!vOcx_bA%h6n3jg%+Xbf+)^~zaobMU`Cv=l`OeeUhfmU@PqkiTUZuB=C_Ygn(rU`p0Xb|HcK>nK*{euY@j0##RI2H7f;8f5W!(~B-guQdu zghs!r?6tOaMdh!xy?+QJI@{JVZ|-Q8EC)Yq%~kPdw$)vgLWJA#wI@wj(kvXL+@IM= z!-Pul9}|4J%J|GygFma~nJpBG_ZG(UFAyrlTP8SpZ4sQVU)v1F@mLBAO_RgIp5k27 zylVPTAXg*~i@tIC4AvB=f#EcOWFN!qKWFy6LfH3X_Ul~gxzFpQeI!h2;(Q`FO`P?D z)5Q5g6@6~|4+@p$?J>dWz&p?Q2do2@^O=r5ukZu!LB?^ksoF<1Z}+DIZzNqj|HdOhOLbMg>~aN<5({3x09OtojYVcWBwx?C_yFT_{N4NMuPc# zKu(MfhGSA5zX#(>Tx#n2I@U@xe!UIv*z?xg{#_zm2XlkAS8y7|11ucAy`i$s3ww%l zS#XMTO>@wFkfw4szzvH~XBe+x7}GP|s5mIgShXLh ziVb$!D&ZT6siCbEoHA};(eU$d>igF!W25aU3E_1{WrG?X?Syt_>*LI~t||pJo~a|5 z+QCt8XDVJ*DenN~-eh|oW-9iRs(n=XHrZA#+Q3HysHu+hLw+kg({3R94r5d@dnKPDaMnk|D zWf&$n**_!rU@RWmc){t0ZHneqr#4FPs&JsI%NxqQ#rC{oR5=7Iln>Mb;k(Hcu|tgq zbzcbIlj!R|Cw%E0i_3h@g`xN~s%yBcq$%S&!H0HU8x{wBW|-RgXs&t|x;>+r?=I#$ zS!EX5)(n+jWLpbVZlUd2%q+iVmiej()b%3QIIzI>t*QX^KnUOCDh}e8sqCWGYEfaN z_d2uN0p8S;@PXL^oiyrJ@KwY@EjihX>askbpN)W(_q!+WwK+tZ(U@&3Ra(pKB^ zyz~WsY<|q>2{2!tae<>Q38CgY>c$Z2c2&I9PK#-z^I)l1Go5yt8;)!@EHp9+!hW1N zQ70?!m$v6F=JgHp%21i0KEZs)F!dRg3+e=>V%AqoRh3A0}E{Ls_~%yOQ@r?=*oB0A6VXE zP-qgISH;_H{}ti8)c7_xUqH~5`qc0w!Rb8NUGOM#*klNfALV1q)V%5@yrB`s2!|NM zCkWom@UH}?S@5mkG@$zo$3fnQ-+R$`oKO{C+5W3cUIHehM#Ny%Rd2OZ%rtNdo^E(A z!ReOU7lIGbT)n!(?RnJLV2S%-p&DLS`8#Y+u82S#ds~%)x`(NJTK=HiJMF)mW|6nC z$Ss_2U8{OmVtSDz_#(r*3l8^2JMG$3iBIM2v@`D$HWc$=!71h_!D&a16`Zm>k6FBv zg-Tx8f|J+ZRpu_+|GrUigb%TC_)vIl1`XSOW`7vAX^$KUVSj=DT*6<9mqt^4iWj@h_o` z^@u8hIAfaYENFFvWtprhK%Hh(>Z1t@r|7tEZO>-rTf}_7RTv-5%Du<--w<9@Ls(0l4zuw6Ue9nE zhtt~3)l%?thIeLh_{a>=TrJz<_Kah`FM%IbI6)Qfu{~2*gyT#NIO;;?`!ZACSKfcy z{uRu32~)phUf4srC-|1xpJ4Xi3Hwc;VLK6mpVz$V;z$XuvIIXs0P1R`2(-}&55Fvl z)h}qcDRDgG6TyVyBpHsKI?OMQeO1O@+vBSySGj$pviI6)yO~-F0VwE6!>NdMpkZql zr`O1P!9w=WsnWf+ztE^y%1Nd+Yy}(8C|aW4bTtv2vOFs|o&P2YPRGYg&HwzF_v^~L z&$ixIdBt$YC7fy6f24|w?X-~p7m&TRe$J`{5suZ$Y?;7bpqVhwoNp&AA|>O;ae61xCxoEm?~wq8)B2W`(JVME9JROLQor@bar%KoO{ zv*~y=9P9ZnEL6`zC*xwwn7LW__BFm+nQsB}-4(+A--0g&A8ZG3oc%{wwDUlzlDg&; zM0<0o;{(5K5`4Mg9>HlgwlExf`U{JHhvrqk;UR|s%%Org3}*aS#$Pg=3LOC&wkfLO zFx+=CbqY}G-YgaOJ-p>+F)uLnoXYs#&a9t=arA*b1lHu+-*D^_o{oqQVjQO{@%bzc z`cO|7s=On%N<0#&&V3*0ImoOgGw*B4eZ=^o9-;C zOPD&ua2#9IvS7hBHH7^vVSi4WyB08eyq}@$D>YZooN#+KGv67^W~<6QVS9Fkh;T?1 zfqIsyH<<4YRdK@hckQUlpkA0;C|5th=_}t9!Bfx?+Hk?+&6Oil@Og%h*1YPi2u+J; zjROv87#P!VOca4AagN|r=$nEMFoiB*d!jcj+@ahBe|1Ms86q;VG=1V^J5>u(O@*e|N#O=X>iZ#9KV7q|CSCaC#BrAj_i z-qW_XNT}rdwcwO-FJ`okIgu|38;blpMox2et?CP}xvtmyXE_AbFG*I>aZ*Mm;3XN5|+UT|_v5-R!T2u?Kw1g9F_adNE?D&<;*xjg%f zisN_l@Pm2&t11Qc)^62Dm=1DVd4IC~$wKX5P7MPEC$DtFF&F;ko#x~aVL!sec~o$U zKT7ke57Q~ZUs-}kmSBRa_{sK6W-9OMLS=!vK_sJ?Tb!Q%dOOa}en69kdeb$U@uo1=@b9Ni z+oF8uY|km9VkdEADcUtP{+#U(>r)jIEzH|hS2W}Jo{zkm8;-WkS+q8cG6YE6M4&N5+7x9TgIJ>J&SuGt7&&G>Ia z&vxb*fF6*+UX}k}+y4Vov7c1lkAhQqKO2s=ZCJWrg*}#n?Kfs`F?;-nF=$nn`E|}V z{P%+vZk~=-8Xm2DzuIZGP(L+lbHV8@DM4_$aNVYIf3f|&gi4(sAUJh?nBa6Gcsv9j zBRIu>QS(1v_+J$c^fQ^<5Io2@ei?52Wh0=z>oe7)f74BsX= z{S4&ag3~lODEM`Z(+rm5LKtdxXobqCusxMRr2(v=N-x@Jb^B^#>|p`~q?z5waJr(= zq0&@viq^`BmcXLn16L?oN8z=|3_*XvX=XK>q-(1l(@6t)Qz5k zQ$c+V$Aa3k9gxa+xYfF9P7M-)`kHZiP-XmP`yUl5&EHXiQ(0pLr?Q?m9LvJ}L^Jwj zVL#hspQ?HPo9A8%^saCqzL+Jz|68U6AFKS|Y|p15yw)r0vhCT<)YqXv^8E&f!1Enb zv3$ySSY=*@-={Ej7W0j`12&-1grT!fUBM|@wBeYc6RW>p2>bq;4|m=lb!HCtGl$s_ zj5;%nao&yLh9g_Z>@$`3s_lQ4dCg&J7UMkHq!7`j3Hx-jpJy}v28*vWuR2a>oEC&g z@IDKK1r0R`K4Sb$mf#b{c?UkP79Z}&Y5cwr4kJv0uLY-`6$_5D9@}BTsbj}g@fF)& z&eXYJP1%28oR@paaAbV%RSNr2CVR^}v4*N?NmaGg{Lkav-Z)@_W3W&`UJ;1ynffq$ zd`KST4Xw=8t8 zszNv{RM|J+XTB`WJV-(NMo|vXX;*63hEK2;+Rv3KPvYhw&ypdzRi5EW8`~k z^#=qEha(6J<*jEp#(SUf?#v!FIuiQyS4;kA>**N>3>r$)~4-wWz7qo#grh&duzgHeL#8a`U^i2fRk6Z|J_AAHEN-2O;olqHO!4WB4@S5x#Wg2x#9X@ZY4 z_A>;puesm#nh@empxJ^a8jcrcY++{UVE8$}J{GjXLH@X<=7WX&anOtMn);g4UZCLP zf|($v;Y}g7HG1VDnVzs!A~-!+>=(hm3l?Fv%oxq_D?@A)?#Aa8;g-L#x9e@1%XGx| zYWb#LNieSogk5DYJ?V(Ts$en7^Z>HKBJ0SY)zms~jSN;awFX*igT0$sonZA>y?RHl zb~Upe_n2?DZeGo3k3JIgHHQQ=|K${%6C95+o^7$M)T^8GVO1~>WsfQAqL8zL#VCJZ zWc;K68|C%|trj5DbL!>^d3ex^GCiP^Lptv%w6M6PoIvy(09Qg0Br`qfF1M zTO{O30iTGjSiOhn$@#S4|+lN({t@c3z?p4 zH%;&)^IMfog42WU_6kl9y1OX2dC;BTl~SvET?ft4HCphg-L&0o!RfJhiv_30;++$` zk@-?8rZ&c_TQw`+3ud&k?96LMPj~bxnVy|DN^p91-bBIa*?DsXU-tQ~R@O6Cy#f7o zf1JO;+(fHEaB#d8Q|Ffzn#VpId?DWIVJ!}>h_~*nojgF}UcriZt7lm9fMB~e)*WFZ z(}H7g9h)Bf5Z2+*VOH?xHda5YB$(9Jx--mGBRHll=*bTTKg9LO+QGB9p7wmOT>`8h zZXO&1YpXE0BEh=T+8Hdz)!|@LA~<)>3XVwxqx3A5-M?|LFwsg38=Mt9i)>m}uw4?Y ilVgKpa6NHq@Izb={zvdEtZOH>)n}mV!Tdz4<^KbObAQ$V delta 22683 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