From 44803b0026e13f68d14a4d0fcda9e2cd76dd18cc Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Thu, 30 Apr 2009 17:27:58 +0200 Subject: [PATCH] Some more work on the how to hack documentation --- docs/Makefile | 2 +- docs/bigpicture.png | Bin 0 -> 9179 bytes docs/bigpicture.xcf | Bin 0 -> 30613 bytes docs/hacking-howto | 59 ++++++++++++++++++++++++++++++++++++++------ 4 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 docs/bigpicture.png create mode 100644 docs/bigpicture.xcf diff --git a/docs/Makefile b/docs/Makefile index 720f6387..e69aefc5 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -2,7 +2,7 @@ all: hacking-howto.html debugging.html hacking-howto.html: hacking-howto - asciidoc -n $< + asciidoc -a toc -n $< debugging.html: debugging asciidoc -n $< diff --git a/docs/bigpicture.png b/docs/bigpicture.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3c8db751232c1cdb2b7132a19de8bef39f7a39 GIT binary patch literal 9179 zcmaKS2UJtr7HvQTv7w@(G(iIh2&e>*UIimnq*og~0i-EitQS#`(0f1>=~AQ@6$R;? z5CTL*YA7lMr2iGY<-Pyz|3l7*ImzB<@3mK%bFKvI>1gcP$-WbTK)p+UJ>w4BRYiyDOXKvf#Ig zYzPDo0nrzHN=}$?ggh(i239`W7t&0-4vXlUnZ+liHO*uxkSsJQ10Qx}8D^Ww3GxZ**9@^b ztc6U@u{p*u`z1;BdIFZsn0M5=$!C-t==LK*Y3AEiNw3t=t0snp#?V z3T>JVtgVl^-3$&64sRIk6e%4%UP{Uh+Q#Jg{mVyXw#1U9TMeOH@iLxS`j;<{xs{^= z)^E=ayvhC;V!BXURK3e8 z>XrQ)QQ1P4+1%xEN|J)VPbH;Hprq1ujl52VJrpgpD=Ma2z0^+dGNS63zsODFnh-YJ zxA|4@)F~7?Iy&0+0dqMa+7p8wmsJuF+!F&bU+3(!`y+ zcFmGpY9&(I?QCppq9Y=%+uCm5zMa1jPRWi#${7{baGg7>K@!t{B{MUVzcE_WlD&{+ zwEk&PnBr!?qodP`CKk@$sN7Y$)k^sxRlD*OU6`u+$jsZje8o>eSWK*xSM_0{VKvRF zJg9adRKrsaI~-y>&z{x7VF!u@ZDU9d9j}JdM8}y4T3H z+(O24I#P~13|!Of)ToDyp|P<*K0&yY#8uovp$bV$o9bkUzuwYb>*(mfmz9+nEsG3p zCM)=x2^;0;!9s~-nMl$5PpDtOl{gQvm$ZBv zspCWQ@$vCCTLr9);i-w(u*${?PYM#9Ac@sCG>l^B;80a(T1xks&lRotc@5nK-ou5e zU8$}7@hc8^P^8F|6ftyDTU(!ayWH~=8lkUJQ(=d?5cEQ)PWAl!K1#CCh129i`!3Bm z5SUT7<_6y`5%Mgv=WEt<0&1<-mS($K;>7vT?&B@t$RSUH6=8<;%|}l6^&A zleKMRgus+Co)^28!%X|TK*jzhFMnX^b(4j+F`T54@&p()}S(_`e zlEOxnJeK@sR!XI#(>^iY6Ph1(vIT#?s;X))%V_O%R`vjAec)J>@k5b_sHj7zv$|YI z(hoWZ+O;JfJsUXPlbO3W-M$_FbS`W8g7d9hk*!rq{%nKd=FR@=`;Q$XPx)lzb{V~! zBo@`&o*gXj{_*1nrUS1$?s~3e%EQdZr($ek!ra^2J0WH3N3)oSloVlgdEVvBnKQF8 z4(kE6BIYG6;KirToar2NE`?Ae_T`#yvzeZr&cWk(^y*;_b@hjk@zPuKMT#XA2RFH8 zy;^Kr<84G^njx8ChpW6H+`uV&7$FA%@RM{0MYYW8)=L(>RD^NMMEr2I)-P zx0P^_2??6p>4xqn^Y055aE>M4=aTm+Zfa_ZeD+L`&R5>X|Ef;T_&e?o8;UNuhBF}c z#Usjs=yzx%5WlZQh7s zQo6J;i)ZOnpo*)o4&7ajv(M#1@Sy05S>dx(<~vsWO7`>!CHpUlOQ&xmnFi?Kt^LGP z)()e})LD4)q|MSv2M348!NHxC^EDi(t=!V#oeaiWT2B<94&leZMf0v*yXMiz7o!(E z^!0g|g1)kHkZA3?+sFF)5(@v_4u(62cq%n#gJBhPL zc8R7$oeb$D9S#Y{ND<45p7nsh5P|^|f?I<(A5rJYos6?ksfoTdOBM(O0fPyjp z{r1c|renp$#VGf4oPDJ()|IQ%*-)vmycB8gAL&Crlw8_f&5IWc6B9YtW{TSH_F0>m zITDG)XdLdEPDXcL*_WN9a(BB6NxcLDsVPbryExf7?p4`3FFlmUVDz7{c!k{$rVFG!=yI6Wb^)5EiEkuyXA_-E=_G5troSkfPZS?Y;0}g zJ;YHBLTv**u(+&A&HG2-6cB8Sbzsc!R}H6%Zcwq@wXUS_8*CP?L0pOfRlQEtbtA7IKYpxqw3h5buyEJTCSfs{VrlpB z`yvs^$e72D8VKm z9jMd2S$TQUP%NO1LS8sj7|NpXQwbdG$BN%TsY^;%SC_})4Lq39p5RR1JSnM8nef1v9 zWdJM5$`V@H2!QNh5Ab63^F5Zu{_A0$?eEev8b5qc(=GC?{`P(sf8$G?Bu86Yf|YMB zdZ(PTAEa0<9IPuYj`-xLxE2l|BvW5_c=%Nuru(HfFGWm9Xypr3rJVx|9@SHumdH@nTn1auNl zqrFBRurZE$F!-8*KN`EUyXJad`K1W?++p=6 zM^eF|@!kMO34of;{c*{4oisqU@2m|Bgsom=V&OIbhpn>8uYYp%IfN%#-_5Ns;73G? zJ=9!)f?dI^0w}K;lNT>vCR0l+MUAtYIXE~B&CRp(YgUDB5F-UI)BI$%zd+S@d9F8F z#C)+)AZ47XD<0vxm+W--;6aA!c1+iz)dEZ4 zPt{LrEiV(a(L#cP%%;oDVzr!Q=-F2SDSrA?Dz)N!JqP$s&$Y?6*fXlSa^KZ>PO@;z z9XVj(QnO;)QA@r(x(7|(D!YfwH80h{6+3kELzrh46kLM15*fDF?1B8iS1)%Hiaf2gGPyhvTO();D!<}1wQwR9Wv3?#oNnGMfW;C=>K@HP zr0*uSHyjHbM4AGD$Tcmh4?U*ntdP>a`8_PqL`NqyE{=8+N&Nio9(Jh0bLk_SwTZuf zHEjYo>6y%oxm{#ux7Mv!cft?;4p(_H*-UGCY`%^Eu@+9 z3#7dL6TU$0u(@%gAIGP8m%d0m)xoyJZ{^3^b;XS--4ehT&8@9(=(aJ^7X0GH3*wiL zA@}I3GyOb0-?XMEl4-2Nxs(KK;%Z93ssnzo;Cch5FUNG;t^AaPMDKWOf*tsP$lN1f zQxG}ZH+3K_KtknJbbjqVq0`*lT%>%DF|KapbVj!WB=_i)6caz}SCEEaMcLJSEg=--kv6FVS3o6RV< z9iJCuucFI}k734_E~DrWgT!!}yqBtA5F{)Z-|+ zJFX0=!EK|?xa%zM_XA?t7s`WDZl^Ea{^z?vt^ELW_T7cAF(dAu0NldEsSMa;WCwtk z9U6c|l+FQ~K>Yc28hF7YY2V;E!u&s<0>ZiDs%8-KVkg4G?&QN=>h!FC@qYM-27vzc z`i-GzIO<=ne-PMTNbL9PZvaIDQU7}Z=%N9yf4^W$G;sI#rB-n}3-1K}c)vwlT!;}d z>F|3(gi6s`@uL0Vzn}1X#v*}H3P0RSJIY8$_iM#}udww(9S;xeuygmlJ2aH|ABu-< z`qh2=;F0zZm6d)?NSo|VTX0wp*Zfr2d2h@v1mMplM+d*K_tmS~2LJcLsI&hvSFkN@@P9kPi9LUt%XZ?l+dl^XJ%c*CdK*1J?Em*j zHF4Tw|MN`u#fQ@j4M+Ivl>R;;8k+xoN{CbB5cRDb?2g3=89?(7HVXYgb zQHcOU+U-xL&1vlDq8skYKr<;XZHAy-zjib!`6PLk|4HI@girka;iI=vyAbzn4W>dr zKaYXX`lWyQsIwdb!>AwPZiOwOzjZd#W)VVw?J$>(mydYU#_(61v8RKfJ*j_=<3Y&| zU;o;93buGDQ+V4mjUvQ8uH&m)Ze3jRwQV^O+$Vq0ng7_!J?uGk#5dKDS3ydao|pDY zxe5%f%9?S*9>j&toTXWK>6w)nJay&}?*%bd#J=8C^uAIlY zC@qd0V)`c@eg%}0ZoLU3*t+B0XQbS(Oc88#GFb@G5%Io=*&0nJuZ_SjGXup^nr8)< zzB4S)(ZiVgXt3huaYX0yslx6<6Y|x%YBu(pdZ~lS5it=5CRe1|5;M-RrL88}`s$q3 zQR6x5lTx+Dkm?;ecf}jEd$A>fShPp)J?nj27D_NZ%nq?L=}+IPwqdLTR#vmRldS#i z`laC zQf5@${l?N`h}FKOd6jcAKuWClK2l|~_A7uAkx@zxke!}>Kd~?suEE{O7h{p8;J-SF z(-iGI5hi!MmaMC)T)8bWNOgzI%c^dJ{PGiiQ!ip7V`4Huvb0*0@=|kl&a?9S{_*ex z@T7&rjmag-&Iw-m)>jVw;gcheju~CQ{v2?^OBTg-JpeMR;|VT{gYNAPUFqmchHL<% zvS9Ri>MY5a_J5runHR>^{)YZ*OTD|qs_#NLnG-xs-Ce9QmE5yvhzIvUJf2Rwl3rc zL=JGFzN2Fnh?LI(FF208e*lbNFVWVwSrSVa{XQ9O?i@~)LtV?%b}4%J7=lC)J;-O2q;al zNZjiS|y`r86NQFL5t4pXPEYmLsz8@>km@|Jv%mGwFeS#h{jbprBs z38+rH{zLb3pfwE_P2rj2618~xNn{6#ET5BKyZ5va6%5H-rKfhfa@>^*2St8o;p+#df zGjx)04Wr;5`U#$p9LJYa3ibzT;jT?Cb~G*w_jcv0SBJ zzuo{03xBYRx9joo?7(;gL9GG#C zO@r#P)x(R69_X&M`PyS1%JvGL#TerwvR*mJsVHMB=6Ler{F&?Zu1lj#EPDImf6_hW zkkSdO z?b${ z0q|Tvq^k=lTc^+!Q!f+jPfuQ|*7ZpX=XE4IEY&|G4v@JxII>$4q=coUj6ru)$7-NArNUb8R#qY|Dcyv?qH~Gf8wlB`9{}jG$?Ex0qa`|Qx5b>A@4d+ zv}O&E>z=L`n!Ww~{n%7hp7Zv;XDX}_X>zDK(=yl8=u@U{eH7=Zv!rnA($!ST!&rO< zGeSAuYPP4R$9}5o1uk8}sZZ|=fDj(enC2J2iFI*bsXnUFYyaNNxx2aSWw&&t-EW=L zR~U*JZD}_)Hg*D~6U4<%aE5K~0%!Wq4BZ}m3SF5lxIwKXZ{*dUR4Ss z{xHMMv}j%h-Cch3=O}+;VNub&rav1u+fp19w3FqCAd7YQBqEJmj`=T! zLtkP5$gc~nn^XRAg+{Yv4Wv{b?k=EF(iJ}%CDqi_goNZe@?MEpRV63u`uPqtT4de6 z{?VE&PeKxBh(+cW6ExNdB0OZ&!J3{@lI z2K3$R4#g)8)hlkTw7;za#{RN*1&u~?WhH>nBVxa~G)vOPJ>`@>J7f1x-{mGvTiH*v zIwHS|CrjcO?*J4yU4<33+KpKkYL}+iRIosD2kb@+?Ix21!gB29WZMpy6`57G9l8&7q*t`ZKfydPvyl z)vH$*px6faN2K4s&#>ZG^USlar{~j{+j%QrUKHKF_*7oE^`AHQaGukn>3gA^(p{sf z-2*F%nEB8Szt2HT#n(PQ?yGO}a9oqWG{Z7vk`SozSZtks5*^AVd-&%(P<%}sxS>i@ z_45B9uwVwg*yVKk-SjOV#&>NI?*HamCIVC)8@I^Jd|Mgw0;j&D?G+8>BVq{ z?WKv#pb(fqW`p$A{OQwcKF#R+e*RxTA1WRkw4jh{Yk?FpSh|>*_l08QpLX_k5 zl{+G4#h;+#MXIVqiPJP6&^XPYSq_<(LMqL-^r!ZgU`djBrxE);R@f|JK&=6>GYfEs zk%s=8o9|GG2*fra+HV0Ck5{e8iFZSY=j`E-EH2A~QV8yt=|ZkiPHBf`%gviN^@zRM z#uP&Brl($c^wR7@4(AR~-v&6hGa~*F9Xh+u9@0Pb256B0ZCfgwToY8ZoE$A_X=yGq z0+=Kh<~|7y2EAX{4URld>wfWT#o}pFaG3m($)|};sBe>_VTwlJMWF5^3z(b-7{T8EJ4 zT_CDTc+K?V+XGj|Vk#ilp)mcYK>}s;--M(BjrmBV|3a(OYG+sg5_+SH+ge5*`dNE) zo?rbEA{LpHlnWw{5m2u@9~r zc}AXRS@rV`*nYyo-kDruDK+E~p_6!Sf2@?pq@FxvdUgrNgSm__N%GNnZHl9&(>z+1 zJ-%zX_BK3e@9a>eF@#ZP=W`7S+m<8MP>ze)5r60p{irIKA_zer)TfW)xO(k74X7;6 z6|D4R%04tw=^k@)07=#7ORxaFvNv=O80kTUAif!IOA+ z>exQ&>s{P+&O>czHyB5nj6f7Qm}^|bpd#jPR3=x>#zr7Xi#P>Er8x@ z02Bxsl*bN6R^FO7f;Wu2kKiFM077zr-%_luk+*b0Xiq{QJ~IJC_*-=NjUoO;0s3#1 m;2#x;cAq9@e4bfXw0gpE`3zHJ4*bjpfj+OJmZx&%?*9P?e!C(7 literal 0 HcmV?d00001 diff --git a/docs/bigpicture.xcf b/docs/bigpicture.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ead007194446ee1a582c654682e84765d0929a29 GIT binary patch literal 30613 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

Z7s30iYY65&%&wY3=&dx^in99 zD$Yq34HQOm1Hg!#h433ulUrUD#sz~q$#XGPFC1sPVD0Eq^~y!O$e6)!yOS|dOU78u z?T5l;{6-9qJZAbJ2FCxjjxurMzboO0=SUjp=U9Nks%Kj62)M%lV{C2_wWdS`7^$pT zw{vT2-w&Unl=UukN-Z^DtFQL7w!>+QVI(Yr-KmtY5Pq%2$}y){v2B2{tx6f{%%QZd z$10MN3(3yDiQfVCzcMxwI}*kDw=Qbu$OkR&&ylL~<&I z;iYC}U`q*xbdS&E0fN=6H?=9NTIyh0>acB0ZTgcsPD?(9fpi>9>o%WxAe}=eHRCWw zw1{gA$i;DAso>^d`Q4SZH4W7jLP|OEgXdzh23l)Bux1 z156GLOLajeebO47V{avz+<}vamx!i+gQ#>Y0QpOizZCgrmjQl4bQ4(9P5*?=`3Jb4 z^#j18fL%l@koJdbiB`V@_=xC^PXMO?km+l{PQQU$80%gpy89$i6>k63U;|i#D z>J0GEmmpFF+&mO%Vig{C7S}_wRKB!3ko$c3zMom+un<-dJ1n>W;e2)KSZbA2phDAZ z+lk~(C^cnA@Z3i*z*E?6OVfVmZgz&O?WYR}r2QD~6@EVi2 z#dwib++1Af7dHo%sF6GYFqX#hNSX-S?lfFknTg9L3z2Thxt!eqOHav1V+F3y!Bg^O_i{Sso^ zZLWRJ*4p!VraAW%y7b^gNvww^u6x%5J|+43uREZR*jcl)e=(>uJNp-7RQn1~8Nh?V z`GjNIZ%UY*=lR4R89Yulu6v$DNBulc<^=Q3+A>{`P--&-`! zyEyhcI)ku}GIcp~^*(ex)?fOjPc~%6vu}<>)>hb^tuVX#g?*vuD-rP zt5;q-ack0MJv&!>aaY#Tz8rV%7W2N`+pgN49RcTxu&)kthgV!}hwZ=i)eCJ4Dv>WH zj#X-vht4NZjF<9yV;na|^kI0@O!9Z<4#mO7nJ*;SUr_4b2KFogSj2jv2co~0cRq{W zf%E(30KP6R@t%)yxwppOJP@2*9L@twfjg|$cqme=D@(_vs^C@BIO$j zKARhH?E$XyHAcBoksZ72*lGH^cyw0`I?Ebvvqr7UhYEUs=#ZJyevpwq;5e&qy1ceL z9SV%_;p}=yTCZ_md8VDd*`rJKj91qoCoI^4 zJDdL!uw7>|t!l(K{2G4-cpmVd0DN1p5%`U-0)7M73&8gR8~+!8?+G^IyMc`;uklmB z=YST#X#l=U*qA{1sBg0ufTnLQ0t^HU1&joY0gMAo1WW;x0%ii{0u};p1S|n81C#+) q0=^1Z4Oj#Cb3hOf0)zn@r7ztIXrT(6;$HIfo~RI%gf5(wivAy=S{{D@ literal 0 HcmV?d00001 diff --git a/docs/hacking-howto b/docs/hacking-howto index 74715bcb..ad8b9ab4 100644 --- a/docs/hacking-howto +++ b/docs/hacking-howto @@ -1,7 +1,7 @@ Hacking i3: How To ================== Michael Stapelberg -March 2009 +May 2009 This document is intended to be the first thing you read before looking and/or touching i3’s source code. It should contain all important information to help you understand @@ -103,7 +103,9 @@ include/data.h:: Contains data definitions used by nearly all files. You really need to read this first. include/*.h:: -Contains forward definitions for all public functions. +Contains forward definitions for all public functions, aswell as doxygen-compatible +comments (so if you want to get a bit more of the big picture, either browse all +header files or use doxygen if you prefer that). src/commands.c:: Parsing commands @@ -140,19 +142,27 @@ src/xinerama.c:: See include/data.h for documented data structures. The most important ones are explained right here. -TODO: We need a slick graphic here +image:bigpicture.png[The Big Picture] + +So, the hierarchy is: + +. *Virtual screens* (Screen 0 in this example) +. *Workspaces* (Workspace 1 in this example) +. *Table* (There can only be one table per Workspace) +. *Container* (left and right in this example) +. *Client* (The two clients in the left container) === Virtual screens A virtual screen (type `i3Screen`) is generated from the connected screens obtained -through Xinerama. The difference to the raw Xinerama monitors as seen when using xrandr(1) +through Xinerama. The difference to the raw Xinerama monitors as seen when using +xrandr(1)+ is that it falls back to the lowest common resolution of the logical screens. For example, if your notebook has 1280x800 and you connect a video projector with -1024x768, set up in clone mode (xrandr \--output VGA \--mode 1024x768 \--same-as LVDS), +1024x768, set up in clone mode (+xrandr \--output VGA \--mode 1024x768 \--same-as LVDS+), i3 will have one virtual screen. -However, if you configure it using xrandr \--output VGA \--mode 1024x768 \--right-of LVDS, +However, if you configure it using +xrandr \--output VGA \--mode 1024x768 \--right-of LVDS+, i3 will generate two virtual screens. For each virtual screen, a new workspace will be assigned. New workspaces are created on the screen you are currently on. @@ -291,7 +301,15 @@ is re-rendered. == Size hints -TODO +Size hints specify the minimum/maximum size for a given window aswell as its aspect ratio. +At the moment, as i3 does not have a floating mode yet, only the aspect ratio is parsed. +This is important for clients like mplayer, who only set the aspect ratio and resize their +window to be as small as possible (but only with some video outputs, for example in Xv, +while when using x11, mplayer does the necessary centering for itself). + +So, when an aspect ratio was specified, i3 adjusts the height of the window until the +size maintains the correct aspect ratio. For the code to do this, see src/layout.c, +function resize_client(). == Rendering (src/layout.c, render_layout() and render_container()) @@ -373,3 +391,30 @@ direction to move a window respectively or snap. * Forgetting to call `xcb_flush(conn);` after sending a request. This usually leads to code which looks like it works fine but which does not work under certain conditions. +== Using git / sending patches + +For a short introduction into using git, see TODO. + +When you want to send a patch because you fixed a bug or implemented a cool feature (please +talk to us before working on features to see whether they are maybe already implemented, not +possible because of some reason or don’t fit into the concept), please use git to create +a patchfile. + +First of all, update your working copy to the latest version of the master branch: + +-------- +git pull +-------- + +Afterwards, make the necessary changes for your bugfix/feature. Then, review the changes +using +git diff+ (you might want to enable colors in the diff using +git config diff.color auto+). +When you are definitely done, use +git commit -a+ to commit all changes you’ve made. + +Then, use the following command to generate a patchfile which we can directly apply to +the branch, preserving your commit message and name: + +----------------------- +git format-patch origin +----------------------- + +Just send us the generated file via mail. -- 2.39.5