<p>speedwmisawindowmanagerforkedfromsuckless.org's dwm or dynamic window manager. It manages the user's open windows and tiles them according to a set layout (dynamic). </p>
<p>Tilingwindowmanagers(unlikefloatingwindowmanagersthatyoumaybeusedto)tilewindowsbasedonasetlayoutmakingthemeasytogetproductiveon.<br>Theyalsoencouragetheusertousetheirkeyboardinsteadofthemousesothattheuserdoesn't have to move their hands much but there are mouse keybinds and more can be added.</p>
<li>VeryminimalCcompilerthatspeedwmusestospeedupcompiletimes.Ifyoudon't want this dependency, edit host.mk and set CC to 'cc' (or what you prefer).</li>
<p>Ifyou're used to dwm, speedwm might be a little unfamiliar to you at first. This is because speedwm doesn't use config.h (or config.def.h).<br>Instead, config.h is split into different parts to make it easier to edit. Instead of editing config.h you'll want to edit:</p>
<p>Afteryou've edited one of the files, you need to run 'make clean install' to reinstall speedwm.<br>Remember that you can change colors through your .Xresources file (see .Xresources and Pywal) meaning you do not need to recompile speedwm.</p>
<p>Anotherimportantdetailyoumustkeepinmindisthatthisbuildcomeswithastatusbarsimplynamed'speedwm_status'.<br>It can be found in the speedwm source code directory. It is just a shell script which adds stuff to your status bar. It will automatically be started when speedwm starts.</p>
<p>Youcaneditthestatusbarsimplybyediting'speedwm_stellar' or its modules (modules_*) and running 'make clean install'.<br>You can also configure it by editing '~/.config/speedwm/statusrc'.</p>
<p>Ifyouwanttochangestatusbar,editoptions.handset'static char status' to your status bar binary (must be in $PATH).<br>Alternatively, you can also set it in .Xresources (See .Xresources and Pywal).</p>
<p>Ifitisnotoryouwantitsomewhereelse,youcanedit'autostart.h' and 'make clean install'.</p>
<ul>
<li>speedwm.bar.height:4</li>
<li>speedwm.bar.position:1</li>
<li>speedwm.bar.paddingh:10</li>
<li>speedwm.bar.paddingv:10</li>
<li>speedwm.bar.hide:0</li>
<li>speedwm.bar.hide.tags:0</li>
<li>speedwm.bar.hide.emptytags:1</li>
<li>speedwm.bar.hide.powerlinetags:0</li>
<li>speedwm.bar.hide.powerlinetitle:0</li>
<li>speedwm.bar.hide.floating:0</li>
<li>speedwm.bar.hide.layout:0</li>
<li>speedwm.bar.hide.sticky:0</li>
<li>speedwm.bar.hide.status:0</li>
<li>speedwm.bar.hide.systray:1</li>
<li>speedwm.bar.hide.title:0</li>
<li>speedwm.bar.hide.unseltitle:0</li>
<li>speedwm.bar.hide.icon:0</li>
<li>speedwm.bar.layoutposition:1</li>
<li>speedwm.border.roundedcorners:0</li>
<li>speedwm.border.cornerradius:2</li>
<li>speedwm.border.size:1</li>
<li>speedwm.client.allowurgent:1</li>
<li>speedwm.client.automove:0</li>
<li>speedwm.client.autofocus:0</li>
<li>speedwm.client.autoresize:0</li>
<li>speedwm.client.decorhints:1</li>
<li>speedwm.client.fade.inactive:1</li>
<li>speedwm.client.fade.windows:1</li>
<li>speedwm.client.floatscratchpad:0</li>
<li>speedwm.client.savefloat:1</li>
<li>speedwm.client.swallow:1</li>
<li>speedwm.client.swallowfloating:1</li>
<li>speedwm.client.wmclass:1</li>
<li>speedwm.fonts.font:NotoSansRegular8</li>
<li>speedwm.col.background:#222222</li>
<li>speedwm.col.layout:#99b3ff</li>
<li>speedwm.col.layouttext:#000000</li>
<li>speedwm.col.status0:#131210</li>
<li>speedwm.col.status1:#bf616a</li>
<li>speedwm.col.status2:#A16F9D</li>
<li>speedwm.col.status3:#68ABAA</li>
<li>speedwm.col.status4:#A89F93</li>
<li>speedwm.col.status5:#D3A99B</li>
<li>speedwm.col.status6:#AFC9AC</li>
<li>speedwm.col.status7:#eae1cb</li>
<li>speedwm.col.status8:#a39d8e</li>
<li>speedwm.col.status9:#6D5E8E</li>
<li>speedwm.col.status10:#a16f9d</li>
<li>speedwm.col.status11:#d3a99b</li>
<li>speedwm.col.status12:#afc9ac</li>
<li>speedwm.col.status13:#eae1cb</li>
<li>speedwm.col.status14:#6d5e8e</li>
<li>speedwm.col.status15:#ffffff</li>
<li>speedwm.col.systray:#222222</li>
<li>speedwm.col.tag1:#99b3ff</li>
<li>speedwm.col.tag1.text:#eeeeee</li>
<li>speedwm.col.tag2:#99b3ff</li>
<li>speedwm.col.tag2.text:#eeeeee</li>
<li>speedwm.col.tag3:#99b3ff</li>
<li>speedwm.col.tag3.text:#eeeeee</li>
<li>speedwm.col.tag4:#99b3ff</li>
<li>speedwm.col.tag4.text:#eeeeee</li>
<li>speedwm.col.tag5:#99b3ff</li>
<li>speedwm.col.tag5.text:#eeeeee</li>
<li>speedwm.col.tag6:#99b3ff</li>
<li>speedwm.col.tag6.text:#eeeeee</li>
<li>speedwm.col.tag7:#99b3ff</li>
<li>speedwm.col.tag7.text:#eeeeee</li>
<li>speedwm.col.tag8:#99b3ff</li>
<li>speedwm.col.tag8.text:#eeeeee</li>
<li>speedwm.col.tag9:#99b3ff</li>
<li>speedwm.col.tag9.text:#eeeeee</li>
<li>speedwm.col.tagurgent:#f0e68c</li>
<li>speedwm.col.textnorm:#bbbbbb</li>
<li>speedwm.col.textsel:#222222</li>
<li>speedwm.col.titlenorm:#222222</li>
<li>speedwm.col.titlesel:#99b3ff</li>
<li>speedwm.col.titlehid:#222222</li>
<li>speedwm.col.windowbordernorm:#000000</li>
<li>speedwm.col.windowbordersel:#eeeeee</li>
<li>speedwm.col.windowborderurg:#f0e68c</li>
<li>speedwm.color.hiddentitle:1</li>
<li>speedwm.color.layout:0</li>
<li>speedwm.color.selectedtitle:0</li>
<li>speedwm.bar.powerline.tag.shape:0</li>
<li>speedwm.bar.powerline.title.shape:1</li>
<li>speedwm.cursor.warp:1</li>
<li>speedwm.focus.spawned:0</li>
<li>speedwm.fullscreen.hidebar:1</li>
<li>speedwm.fullscreen.lockfullscreen:1</li>
<li>speedwm.fullscreen.movefullscreenmon:0</li>
<li>speedwm.gaps.enable:1</li>
<li>speedwm.gaps.sizeih:10</li>
<li>speedwm.gaps.sizeiv:10</li>
<li>speedwm.gaps.sizeoh:10</li>
<li>speedwm.gaps.sizeov:10</li>
<li>speedwm.gaps.smartgaps:0</li>
<li>speedwm.gaps.smartgapsize:0</li>
<li>speedwm.icon.size:10</li>
<li>speedwm.icon.spacing:5</li>
<li>speedwm.layout.deck.count:0</li>
<li>speedwm.layout.deck.format:[%d]</li>
<li>speedwm.layout.monocle.clientcount:0</li>
<li>speedwm.layout.monocle.count:0</li>
<li>speedwm.layout.monocle.format:[%d/%d]</li>
<li>speedwm.mfact:0.50</li>
<li>speedwm.mfact.lowest:0.05</li>
<li>speedwm.mouse.clicktofocus:0</li>
<li>speedwm.mouse.mfact:1</li>
<li>speedwm.mouse.cfact:1</li>
<li>speedwm.mouse.mousepreview:1</li>
<li>speedwm.rule.refresh:1</li>
<li>speedwm.stack.attachdirection:3</li>
<li>speedwm.stack.centerfloating:1</li>
<li>speedwm.stack.i3mcount:0</li>
<li>speedwm.stack.mastercount:1</li>
<li>speedwm.stack.snap:20</li>
<li>speedwm.status.defaultstatus:</li>
<li>speedwm.status.status:speedwm_status</li>
<li>speedwm.status.statusallmons:1</li>
<li>speedwm.switcher.maxheight:200</li>
<li>speedwm.switcher.maxwidth:600</li>
<li>speedwm.switcher.menupositionv:1</li>
<li>speedwm.switcher.menupositionh:1</li>
<li>speedwm.systray.padding:2</li>
<li>speedwm.systray.pinning:0</li>
<li>speedwm.systray.position:0</li>
<li>speedwm.tag.pertag:1</li>
<li>speedwm.tag.preview:1</li>
<li>speedwm.tag.preview.bar:0</li>
<li>speedwm.tag.preview.paddingh:0</li>
<li>speedwm.tag.preview.paddingv:0</li>
<li>speedwm.tag.preview.scale:2</li>
<li>speedwm.tag.resetgaps:1</li>
<li>speedwm.tag.resetlayout:1</li>
<li>speedwm.tag.resetmfact:1</li>
<li>speedwm.tag.start:1</li>
<li>speedwm.tag.underline:0</li>
<li>speedwm.tag.underlineall:0</li>
<li>speedwm.tag.underlinepad:5</li>
<li>speedwm.tag.underlinestroke:2</li>
<li>speedwm.tag.underlinevoffset:0</li>
<li>speedwm.tag.urgentwindows:1</li>
<li>speedwm.tiling.resizehints:0</li>
<li>speedwm.run.shell:/bin/sh</li>
</ul>
<h2id="signals">Signals</h2>
<p>Thankstothe'fsignal' patch available on suckless.org's website, we can easily write shell scripts to interact with dwm and therefore speedwm.<br>I made some changes to this patch, because it has some.. questionable behaviour in my opinion.</p>
<p>Ifyoudonothavespeedwm-extrasorlibspeedwm,youcanusethespeedwmbinaryitself.Thesyntaxisspeedwm-s"#cmd:<signum>"<br>This option is not as solid though as signums can and will likely be moved around breaking your scripts. Therefore I highly recommend you use libspeedwm when writing scripts.</p>
<p>Tocreateapatch,simplymakecleaninstallonceandthenthedocsfolderwillcontainbackupsofyoursourcecode.Ifyouperformchangestoanyofthesefourfiles,runmakepatchtocreatepatchesagainstthebackupsindocsandyourmodifiedfiles.Thenonceyou're updating, do make patch_remove, git pull, make patch_install, and make clean install and all your settings will be there.</p>
<p>Ifthisseemslikemoreeffortthanitisworth,maintainingyourownforkisalwaysanoption.Thisallowsyoutoperformanyoptionsyouwantyourself.Thishoweverdoesn't allow you to grab any updates so this should be your second choice.</p>
<p>Anotheroption,ifyouuseGentoo,youcanaddmyoverlayandinstallspeedwmusingthe'savedconfig' USE flag. This USE flag will combine all the headers into one and will be placed in /etc/portage/savedconfig/x11-wm/speedwm-version. To use the settings, simply emerge speedwm again.</p>
<p>DonotethatitwillNOTjustrunonce.Itwillruneverytimeyourestartandstartspeedwm(signalscountaswell).<br>Togetaroundthis,youmaywrapstuffinafunctioninthescriptandhavesomewayofcheckingifithasranbefore.Ifithasn't, call the function.</p>