- about
- customisation/
- dynamic window management/
- faq/
- multi monitor/
- multi pointer/
- patches/
- accessnthmonitor/
- activemonitor/
- activetagindicatorbar/
- actualfullscreen/
- adjacenttag/
- allowkillrule/
- alpha/
- alt tab/
- alt tab class/
- alternativetags/
- alttab2/
- alttagsdecoration/
- alwayscenter/
- alwaysfullscreen/
- alwaysontop/
- amixer integration/
- anybar/
- aspectresize/
- attachabove/
- attachaside/
- attachasideandbelow/
- attachbelow/
- attachbottom/
- attachdirection/
- attachtop/
- autodarkmode/
- autoraise windows/
- autoresize/
- autostart/
- autostarttags/
- autoswitch/
- awesomebar/
- azerty/
- backlight/
- bar height/
- barconfig/
- barpadding/
- bartabgroups/
- bartoggle/
- bidi/
- blanktags/
- borderrule/
- bottomstack/
- bulkill/
- canfocusfloating/
- canfocusrule/
- center/
- center first window/
- centered tags/
- centeredmaster/
- centeredwindowname/
- centretitle/
- cfacts/
- clientindicators/
- clientmonoclesymbol/
- clientopacity/
- clientresizehints/
- clientspertag/
- cmdcustomize/
- colemak keys/
- colorbar/
- colorschemes/
- columngaps/
- columns/
- combo/
- cool autostart/
- cropwindows/
- current desktop/
- cursorwarp/
- cyclelayouts/
- cyclewindows/
- dash above activeWindow/
- deck/
- decoration hints/
- default tag apps/
- defaultlayoutpermonitor/
- defaulttag/
- 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/
- focusvisibletagstacks/
- foreground/
- 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/
- keybindings/
- keychain/
- keychord/
- keycodes/
- keymodes/
- keypressrelease/
- killfocusnext/
- killunsel/
- launcher/
- launcher colors/
- 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/
- preventfocusshift/
- preview all win/
- 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/
- setxkbgroup/
- sgrstatus/
- shift tools/
- showselmon/
- shutdowncmd/
- single tagset/
- singularborders/
- sizehints/
- smartborders/
- solarized/
- 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/
- throwtoothertag/
- tiledmove/
- tilegap/
- tilewide/
- titlecolor/
- toggleallmons/
- togglebartag/
- toggleborder/
- togglefloatingcenter/
- toggletopbar/
- torus/
- transfer/
- truecenteredtitle/
- two monitor setup/
- 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