- about
- customisation/
- dynamic window management/
- faq/
- multi monitor/
- multi pointer/
- patches/
- accessnthmonitor/
- activemonitor/
- activetagindicatorbar/
- actualfullscreen/
- adjacenttag/
- allowkillrule/
- alpha/
- alt tab/
- alt tab class/
- alternativetags/
- alttagsdecoration/
- alwayscenter/
- alwaysfullscreen/
- alwaysontop/
- anybar/
- aspectresize/
- attachabove/
- attachaside/
- attachasideandbelow/
- attachbelow/
- attachbottom/
- attachdirection/
- attachtop/
- autoresize/
- autostart/
- awesomebar/
- azerty/
- bar height/
- barconfig/
- barpadding/
- bartabgroups/
- bartoggle/
- bidi/
- blanktags/
- bottomstack/
- canfocusfloating/
- canfocusrule/
- center/
- center first window/
- centeredmaster/
- centeredwindowname/
- centretitle/
- cfacts/
- clientindicators/
- clientmonoclesymbol/
- clientopacity/
- clientspertag/
- cmdcustomize/
- colemak keys/
- colorbar/
- columngaps/
- columns/
- combo/
- cool autostart/
- cropwindows/
- current desktop/
- cursorwarp/
- cyclelayouts/
- deck/
- decoration hints/
- default tag apps/
- defaultlayoutpermonitor/
- defaulttransparency/
- desktoponly/
- destroyfocus/
- dmenumatchtop/
- doublepressquit/
- dragmfact/
- dualstatus/
- dwmc/
- dwmfifo/
- dynamicscratchpads/
- dynamicswallow/
- emptyview/
- environmentvars/
- ewmhtags/
- exitmenu/
- exresize/
- extrabar/
- fadeinactive/
- fakefullscreen/
- fancybar/
- fibonacci/
- fixmultimon/
- flextile/
- float border color/
- floatborderwidth/
- floatrules/
- focusadjacenttag/
- focusbynum/
- focusfullscreen/
- focusmaster/
- focusmonmouse/
- focusonclick/
- focusonnetactive/
- focusurgent/
- freespace/
- fsignal/
- fullgaps/
- fullscreen/
- functionalgaps/
- gaplessgrid/
- gaps/
- gestures/
- goatcmd/
- goback/
- graballkeycodes/
- gridmode/
- hide vacant tags/
- hideborder/
- historical/
- holdbar/
- horizgrid/
- horizontal/
- horizontal vertical i3/
- ignore transient windows/
- inplacerotate/
- insets/
- integrated status text/
- ipc/
- ispermanent/
- keychain/
- keychord/
- keycodes/
- keymodes/
- keypressrelease/
- killfocusnext/
- killunsel/
- launcher/
- layoutmenu/
- layoutmonitorrules/
- layoutscroll/
- leftlayout/
- leftstack/
- locktagsfor/
- mainmon/
- mark/
- maximize/
- monocle count/
- monoclesymbol/
- movecenter/
- movekeyboard/
- moveontagmon/
- moveplace/
- moveresize/
- movestack/
- movethrow/
- movetoedge/
- mpdcontrol/
- multikey/
- multimon/
- multimonitorscratchpads/
- multipledynamicscratchpads/
- namedscratchpads/
- nametag/
- nextprev/
- nmaster/
- nmaxmaster/
- noborder/
- noborderflicker/
- notallowed/
- notitle/
- nrowgrid/
- onlyquitonempty/
- pango/
- pertag/
- preserveonrestart/
- push/
- pwkl/
- qubesdecorations/
- qubesrules/
- quitprompt/
- rainbowtags/
- ratiofullscreen/
- rearrangebar/
- rebootcmd/
- refreshrate/
- removeborder/
- reorganizetags/
- resetlayout/
- resetnmaster/
- resizecorners/
- resizehere/
- restartsig/
- restoreafterrestart/
- rmaster/
- rotatestack/
- rotatetags/
- rulerefresher/
- save floats/
- scheme switch/
- scratchpad/
- scratchpads/
- script tags/
- selectivefakefullscreen/
- selfrestart/
- sendmoncenter/
- setborderpx/
- setstatus/
- sgrstatus/
- shift tools/
- showselmon/
- shutdowncmd/
- single tagset/
- singularborders/
- sizehints/
- smartborders/
- spawn cwd/
- spawnprograms/
- spawntag/
- splitstatus/
- sshawarespawn/
- stacker/
- stackmfact/
- stairs/
- staticstatus/
- status2d/
- statusallmons/
- statusbarfont/
- statusbutton/
- statuscmd/
- statuscolors/
- statuspadding/
- stdin/
- steam/
- sticky/
- stickyindicator/
- swallow/
- swapfocus/
- swaptags/
- switch all monitor tags/
- switchcol/
- switchtotag/
- systray/
- tab/
- tag previews/
- tagall/
- tagcolorscheme/
- tagfun/
- taggrid/
- tagintostack/
- taglabels/
- taglayouts/
- tagothermonitor/
- tagshift/
- tagspawn/
- tapresize/
- tatami/
- three column/
- tilegap/
- tilewide/
- titlecolor/
- togglebartag/
- toggleborder/
- togglefloatingcenter/
- toggletopbar/
- transfer/
- truecenteredtitle/
- underlinetags/
- unfloatvisible/
- unicode ellipsis/
- urgentborder/
- uselessgap/
- vanitygaps/
- viewonrulestag/
- viewontag/
- vtcolors/
- warp/
- win31theme/
- windowfollow/
- windowmap/
- winicon/
- winview/
- xfce4 panel/
- xkb/
- xrdb/
- xresources/
- xtheme/
- xtile/
- zeroastag/
- zoomswap/
- screenshots/
- status monitor/
- tutorial/
noborderflicker
Description
Depending on machine configuration and luck, borders may flicker when changing focus to a new client. This happens because there may be a tangible delay between unfocus(), which sets the normal border, and focus(), which sets the focused border.
This patch avoids that flickering by deferring drawing the normal border around the newly unfocused client until the new focused border has already been drawn. Even better, in reality, these are now close enough together that it's very likely the two updates will be rendered on the same monitor refresh.
Download
Authors
- Chris Down - chris@chrisdown.name