From 5c6773d87a610549076115e3db75efaebdeb0a33 Mon Sep 17 00:00:00 2001 From: Tait Hoyem Date: Sun, 14 Aug 2022 13:35:56 -0600 Subject: [PATCH] Update docs with newest version --- INSTALL.md | 38 + com.github.sohkd.pkexec.policy | 13 + docs/INSTALL.md | 28 - docs/assets/swhkd-svg-bg.svg | 1 - docs/assets/swhkd-svg.svg | 1 - docs/assets/swhkd.png | Bin 31908 -> 0 bytes docs/sohkdrc | 26 - docs/swhkd-keys.5.gz | 1435 ++++++++++++++++++++++++++++++++ docs/swhkd-keys.5.scd | 174 ++++ docs/swhkd.1.gz | 157 ++++ docs/swhkd.1.scd | 59 ++ docs/swhkd.5.gz | 186 +++++ docs/swhkd.5.scd | 106 +++ docs/swhks.1.gz | 52 ++ docs/swhks.1.scd | 20 + rust-toolchain.toml | 2 + 16 files changed, 2242 insertions(+), 56 deletions(-) create mode 100644 INSTALL.md create mode 100644 com.github.sohkd.pkexec.policy delete mode 100644 docs/INSTALL.md delete mode 100644 docs/assets/swhkd-svg-bg.svg delete mode 100644 docs/assets/swhkd-svg.svg delete mode 100644 docs/assets/swhkd.png delete mode 100644 docs/sohkdrc create mode 100644 docs/swhkd-keys.5.gz create mode 100644 docs/swhkd-keys.5.scd create mode 100644 docs/swhkd.1.gz create mode 100644 docs/swhkd.1.scd create mode 100644 docs/swhkd.5.gz create mode 100644 docs/swhkd.5.scd create mode 100644 docs/swhks.1.gz create mode 100644 docs/swhks.1.scd create mode 100644 rust-toolchain.toml diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..8abe656 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,38 @@ +# AUR: + +We have packaged `swhkd-git`. `swhkd-bin` has been packaged separately by a user of swhkd. + +# Building: + +`swhkd` and `swhks` install to `/usr/local/bin/` by default. You can change this behaviour by editing the [Makefile](../Makefile) variable, `TARGET_DIR`. + +# Dependencies: + +**Runtime:** + +- Policy Kit Daemon ( polkit ) +- Uinput kernel module +- Evdev kernel module + +**Compile time:** + +- git +- scdoc (If present, man-pages will be generated) +- make +- rustup + +# Compiling: + +- `git clone https://github.com/waycrate/swhkd;cd swhkd` +- `make setup` +- `make clean` + - `make` for a musl compile. + - `make glibc` for a glibc compile. +- `sudo make install` + +# Running: + +``` +swhks & +pkexec swhkd +``` diff --git a/com.github.sohkd.pkexec.policy b/com.github.sohkd.pkexec.policy new file mode 100644 index 0000000..45e7d25 --- /dev/null +++ b/com.github.sohkd.pkexec.policy @@ -0,0 +1,13 @@ + + + + + Authentication is required to run Simple Wayland Hotkey Daemon + + no + no + yes + + /usr/bin/sohkd + + diff --git a/docs/INSTALL.md b/docs/INSTALL.md deleted file mode 100644 index 99dda2f..0000000 --- a/docs/INSTALL.md +++ /dev/null @@ -1,28 +0,0 @@ -# Install - -`sohkd` and `sohks` install to `/usr/local/bin/` by default. You can change this behaviour by editing the [Makefile](../Makefile) variable, `TARGET_DIR`. - -# Dependencies: - -## Runtime: - -* Policy Kit Daemon (polkit) - -## Compile time: - -* rustup -* make - -# Compiling: - -* `git clone https://github.com/waycrate/sohkd;cd sohkd` -* `make setup` -* `make clean` - * `make` for a musl compile. - * `make glibc` for a glibc compile. -* `sudo make install` - -# Running: - -`sohks` -`pkexec sohkd` diff --git a/docs/assets/swhkd-svg-bg.svg b/docs/assets/swhkd-svg-bg.svg deleted file mode 100644 index 6e80e7b..0000000 --- a/docs/assets/swhkd-svg-bg.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/assets/swhkd-svg.svg b/docs/assets/swhkd-svg.svg deleted file mode 100644 index 10520ed..0000000 --- a/docs/assets/swhkd-svg.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/assets/swhkd.png b/docs/assets/swhkd.png deleted file mode 100644 index 526cba618167e0095624cc3c10824a874700750a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31908 zcmbrlWmI0>vL%cLc_6ri;O_43E+M$PySqCCcXtTxZh=5>cMtAv!F%UD=bpZ|NB{W7 z*JB`CmanQ+vu4$f_#!WX2#*5~1_p*GB`Nw93=BdYxE_N20Q_am&20w$fjfPb5C*HB zz&!$P;Or$eoWQ_7_W%6_Pp0|!84L_c!$MizSzS(++sMv_-oV(-(1hOI#vUjQ2F5Gk zZf{^@W#UX|Xkunz%SUn1(L+IKVa!LN#wN!oXD?!6ZXxOEXrkmPuWaOLWyEDnA;1sM z>&^`{U}NHJK@-qBgU2BVfEy_PP|6Y~<)cDtu{j1=A+m`?DTV-tYpKY>takTzN z1dNRsOsq|8Ol+P1ZW7bKH_6zD+u6d|+T?$4k&w0X|J))#_PDJLY|Z#6-06%>ObuMD zohkU0{x8$`cTHY~|JLaL!zAqgn<)PkwtqD0ub2TZfElp-dj`NAw~&joxt$}wl(Dr1 z@88$|^#Bm%2a0k3Bc67S%64|v{2~Unt_Hje|L5cX z>rnnRIzW2?J!bfiwgWf+IWJ6XfkVO(I1Pv#t9Zb`2*IR8g_Pa1PP^RFNESUxpL5EE zE%TgWSZ4XsaX(5S&f53O#wQumWU4l2nP|zM+?_vpK4^H={PcA5aqBv+5 zt|yg2C;O_L*UxB(n~-=T>!xrZE7fN*akUo}1aU{WiU2j{8z|n^M>qV?0gv`H77$yDq`nRZX{v|e9?LQY^ zD0#*IUyFYGr(bjuAqZh~8)|B-V{5D#VOTG{0PW>qWJ##6=2p#$OZ4i?rGE!xDGYR1 zpjb)m8BFIM2W66x)+Q-RZq9xXp&1oiiB9x2*d)?_tiT{3shOX+CJ_oVFpE(Vg`A|X zsEHA-D#D{HxyYQjdO*@5o(!CP;dA0UERhNNG!ys%TWOXRx6#p^Q z1Pjed4Q@xJM$HD`N3;@3h$bW@mKkFu@74jsSS+r{+)&rbV8Pr>{K8n?ilmG!9s}Hw z*gv8UeXG3bC!0Cw!Aayj)8l%rRB{i~=STz?KTZJ9OGr&pdA|SHl6D* zi6z~Vp|mM{hx8FtTv0!&q14W9CQT$~RdH7lGJ05ZQ9}^2ejJ(U1WLm`_EAj(+=lR-ff4Rt*OP$HTOV?gCaUc%B+*PC0bP%H8^XwS4t^SPf5YDMCw) ziR3ucAY3NQi1eu2jMUnC9P$rTD5f)qd)oRSEQp`RjkUACzOq(p&X{I76YJhx0TNQD z2#8JH5wdx3G`7}CwVB%D8L!_XO;*mUP+^#u?y&g`F{x5xM#DE_d8RBrnFcm95I*<- z6NOi%wi4r`l$4{l?hsdj6nsEvh&ZqlQwcdntX|)e!tJNAw`J{?6VQFDzF}-utpydYV^hBW7L$P?a zvOP7h6!^@9cMez?qon&tQKC51KGIL)_(od$tt`RFq(Ts6!0$hE53Q&Iv;Oh4a^T`)oQ3Iy zr$hK;ru4w(F|d;65ozR zL7nAYOl}olH^$^zqMI-EOCy1ZFpG&R1{CrRqMej|2;`>ZRD7Yv122{GEH6j6xh!qVX7MZ1xikvuV9N-zo}?4j`jBW>)u{ujwFB<35jO^QW3) zSh@K9AukR&(MYjkz5R?IZij))kB^$@2)am|+VycvS zvRD_KGe%}B%P&^SB_+5&6qPC5{k5)EQ|_S>b0}WyT?=D^M7nfbe1ea=0wrVvK}R6? zTMwAo8!X8cY7oTJHdd>uSIj}iM|<|#@%x2xBBJgd53Cl1uFSY;s9i+q)T$ix`(}T9 z(;^pwR7~BU3Hz4gRKRIy_gB-Ld40ATv~@YfBWeOb2y~*PQ^HDl$^NDi%8_{eAtabZ zg>j-AdxEgy%%z{$Xd$*<)dwoTKo6?g`x;CX*a8p{i8Qa3w0RbwMts^8^|dF*ffPHz zpk25$ulinM8Q~`gULTe|$I#Mck-50Wbe6TcKQ8niLjMT;Ave8qb=35ihN*(fwmGvS z{4Rk^cF}w7TI3W;YO}=;p_$g0o;N+sA0mA91e~D*B|BrMP8eqlQ`qLqf=Dcx?V?}oh;a@D38gZnP?tX$raNRnj3eU*k8v84$C<9lYf|Kf?P{+z z5e7?~X2K?YBy_=mO z;MOGV55gF`x;{o?>7Z}6h1w4D7ADj(vjkmArG=)Tbxde zpfo5r8_dpJXr|Nv)>m};ti?hiMEI&1(L znNU}RKYpk+MvdHGyCw+ChXI!LgVw#h{^eO?sONOBICIMnw@KfG1}BC&8(hfo4lc$& z?9M2)qa&~#X^uWfx3oT(O~0GQ{;B^Lfd-GpV4+ zQ(ReZaPl6o*Nd>_QbGp==V$fcrU}|)IAWE#=HSA2>P@;`wQUpHA1GzQS~!9vBWF$#bMtXpaKjQ&tME6*hjv>H&L|9K)sYB&m1e?!;ER}8Eqb@T>AA;8y%!2u3kjrzWsh#3 z^NVx^g}Hn;A+=dpJ~^%U39&UyH8Bo~*pVrSHSRwjJrTz@Xsd)bJQbaiopq=)$}t3W z8|!+9Pu4r#)PZf+xsq@f+4c&q+WpF8L3m7Bp_XBpGD3&R9|YK9MFjx2{rMF?Jm_&g zlbSB4v;DdBEupM`x&4*~8KFs6gmX%^ZM061IMemVB||<+e(mAAC6en9+c^iS+5A@b z98xRE8)a9U%r49#>Txr4s`J4LL$N3!pmefU!ws^4^d5%*sAdxxR(_IykOnQ5<&%I& zmoQViDIgV#zJ#fCRy3dT!19S2!3-}+rtUwip59n?VPa)w&?7}xnZ#&H1d|P?ZXZqR z{>~Ywsb_P7s6E4^b_{SUfkjK_O5UvoU{m1V4&o%A3|B4S9==Y}xJwwP-P`*qx>b0Q z1=xp@3EBmn`RP9^?6u*9s0wLA|G*CXF_rM3T3AXPQW#b&3M&=)=24@n5 z&|#_QQ3IFkOK%;Qp$tE(1)!>a7TaGD5M^bOfl#Vmk5ZSUA&_NEB1Q;{`x7wBP78V< zRRLtlwuHS|9$Ar+$TE33^QX{7gDZ{VyM+IC|Gf*c*z)d7;2Y8kdA_-t0n})OHsTBR zw-?kg0g%}{OWJJhbOEoS#Z?J8F%-nviNZs5Aer3PHt5A?8o=PBQf7V#shQ*PR6!FC z5~M)zg~H5%`Q(QC>oXr?O`PCIQ~aiRQ8Tewyiq){y``))aY4=HeN<)J22I+~SPOweGlWy%TJOb+h1a>;E>NTIVPEa& zXcU(pEwE9)EzAtSnA}e)(3w`ETd-{HECF*cv;l-uTWl#%Xe6s*yO)M?qi09=(36Hn zM}h;{akm%J3qL5Cvbg5YTd8dYFGFf ztyeb~+jcduPs*EiQF$jIV>eV*$-l11jKV^h$Q%xA3tIrLcf{6ev;#G!0uI-pybhmGZ4AXcgrG zD3LDTRzg%Irk^-I+lbpCXSn|p`A%v2w_I|oVqW|<7|Dp3;ppK~Y${B($Fd^J(gAoy zTJZR@DPLInEXpR<%fvmnqY8_GJ}a4@SDO&^6LOH173SA^{^v=<4j$Xk`WoaBr=7Ww zN`Ml%C_-2zqOfOtvfdciAGQ6Ud5_Gb$!nvRhl1FMW@BU4>O!E;W2mR?o;=$y>EL=F zk}>uf8iL4~HvLAwHt?)$5qlJuOix@4g4k=IBa0+oXmWL{@BPA>(z11daM{ubUCa$W z;$&ZXnk+I_0h3MNW;=Y|5lV89y)ZD5E+FX>MSS*+ll@=UhF)6V2Ey5(w&_*e)ooo~ z!8yrOPlzp_WzG>%glti~}Ai;tTloKooxxc3;_-A@t=63#cL1cs!aA+mmY)*W<)*MdBkiNlBc1JjF# z$Ii^`KuCV_&A)WQFU5Uf-I7iYTlAZ${5XEK1A4;!8oC<;zp$Vw@<7BIggP&TDei3v zPN8hfCDY2;Q*fdlH3n-_@Ni@%V=-NM!D{{q(P1k=MhzqlBEt);dRZ}K$|@c0rYoC) z2J%s0O6K?eUOZY&%v>{4mjtIRCRf*uiI5NyTGJ9A+)BXuB^5v|d?2;%Z|%Mya&^HI zMoT7rSU~GtX#V`kvMtn%!8cxwoPa@Vip#9n!}o=z$%Tdtg=Sc8m;!EumCO_Y8g$_> zBp=8xe0Kbk%lBfCh(m^mIwd{$VAJ41Ne=5#Qr#Kr)(?#PJZQ-!PmGWSeCHh$^O})Z zdEPs^B#Rz38IT*SuK+!`k_#Kp{j+zMX(GlOO4tWC`>7fUQUwsPCP2g>^WlPgx*qCk z9stPPI{niDK$op1hdSRHbw@emU)etC$s{hFpL)$OOl5WihX`uve$#**G9~nY?<3i` z`)nRWqZd4y>k>#xH8hTuQ!NQ5l?91_{bI3nUC~Tsd5j?I3r_Ecv!4s@_(oAtlL@n+ zFU-ey%Q69(8Z^RSd*}(;I>h(Q}9H0PubqB`ji*Q@>*t zt0hI?MSvs-?T1@6HF#l(;{*{at+?tyO&PT$JVT!7AcF^|H6TE_Q#~#`?QDo zAZRFZMC@GiC4;UyGV&>fSST%ycYH>rdnC&8Es(x0v8vE306ET4RP|17wM`9ldCbta z`yOhI<6Nig7mKq}ZH(X{iaz8&ru@(@-KeoaEJDwBu;IVXf1!!q?q^=cr)ETn6Pzx} z^JEo%%Vj&JtKWBM(0Ayz7z4}y$q!o?nhZxGQ7)RG;KF7&r$2uX3s zTgbb`#5R zTQlx?&^Lw7W|6~_vU?iy+{|wivWbI~44mfY+inAt@x(-j=E;+KE38#qH$)pWF9yAE z*tr|+p68y3#e6F}tn`3HAuZNS;^lSN)+s^nUQg-%O|h8%eTV(I-Kkxww9-7O>s0xT z+w3536qkYlJ&N+H2;W7hBvMFO=bm-*?{IP=5A>M# z4{0}Z_YkCMYQOvR0#%K#HKyTZ;Kq#rD0B3~F;Eh7y>6TFO(PDDvb>CnHj12PLN4OM zaL5`O5^!H4kAW4LSYy7eUJPl4SZ#X^edAc13N)tl3O!3-Je3k!RN_H(oNZQ9;s3U+ zg0ET&)4mD$wKT5An5$)5a={c?bD&*JtGNqPr#<6S`6?ux{%?{AXA?3>z-gCCd;FDQ zbUd!JoiPW(X#UIFBo{)d;w{g+g!8Stv3p{>n8>X9W5e$-ex# z!_tDs+Iz3<28X3YydN|vL|uj6z4GqJ&D(m@7gj`Rb4w~!)g#z!ZR3}SIhP=O2>M-a zExEAXG3%Ww!x^RFW8S@#7^Y0+8@QBfh4YsxDKkU4r}5T*Rf$|!+%g`=2pYL95`ENr zDtHbm%4T6n;u1;a3P3OTVl`z_>PqbSGVdMap18KV#4qah^DY;{38hcVrl#Z+UDg{j z=9PM=qVa=nL{$*M8OXc`hM0sPs z!U*(ny?#FB*jln%N&%^TrYYeKd6>-Ot;Us@S=qh*HUI@3RTn81jt6_bqf9-Mo-&?x(kB-#Yl$dWu(K z9WEZvJz5ASg||KeKWK$QwZH=H>P~fbgC|Az$3p$_fX_n``n^PJVy+9zX zCTA@^5np6AbosfGbd+&7dh#S-tIadsr3X$BzYjt^fxzDBRIzjiAiCmhy$;A?EFynLw6o z`d<8w-^kuTAzMpR%QOAG>*iVScWXcm8Xu72*pzV7y}j3cU^3jU0N$X0YD&|o$AV?T zZQ=#eY(J-_t*U8h)rSM1<0>xIu|9+~dxHi1Ub=noK54;ihn-qx6$X6hsx5rYpIrcn z5&@-&jPX`S=5#Yg%E0tVU|?@xM_ZRSluRyHyqXdSUF33cUSFQLTGplo>}Pj+?nPYl zz+;c&lh7s(MfOOi#Ak=>I>5Tpv7LXKC~rz1G}&5XukV=UZ5YXa* zle{42|LXJL^yq#DQNh7}+#9aSyi{LW`GcGDT34YTV@a`=r{xtp*W3P&_sk)HBcA!ZDz9h#E$5K(EFL^q;u9}QVThy?2q24=kc_L)%}jH5 z4(A@Q^?1*v2qNbdAx0&do7V*uoGYh)E+IEcXp6#S9nMQW-F`LnqRSXcsQpu)O|!>^ zI>xE}r&UM0-FD9=rCkrJ=2t=u)pzhjJx5yf3?dH5HZEx+VU;hGSX6nhF~!lC79FcRwp+h1e_HWhv$`ST$|MaCjxp~I6Sdc5=ZFbMh5tvlkq{W#0xTNZmJ(Y8c%Y`99j*uIWq7< zz68UZRn5GOp)o#-zLrAm)j!vpgFVjh=oaT-tY9!cuy#J(`6GSB)Ul^03{~VNdSpAIjY0sw}by)*-nX5gcxz&=zh+OAP?IXi= zwJM2CwVo&S>2{WK&}t_`i?x*>Bp{>yju%aC#4=MTpNcrxRgslZ3X4PU*N8QSWM^?t zwVh(mORClc?iK0B2)2fuat(=CRKgs(e7``9Qn)&AG@rwG6{4|c@V$~%!ey7}^IVPL zY!64^pAL0~#%Ns9mg7s9({>wE$bkw8w|NV9=$CE|E=Lr&LyAxQp;qIRR&un)pU?V+ zJh6>2O?x0C(2Cm(b<;wn;fnOP{c3n)=bQDCM#MM0&X{>H2r7kaH(U#`RK<+qQIQh> zX0A^)q4oUyrW(Xk)|&P$-I(1a0+2S;;j(lykNa&b#zsOO9;5{JMA{+>sXa`|eN4C` zMF`LEx_d}q?m_F~6PYXNLb1dKqf!UkC;S96nchbn$y&FSRdiL)ZB8d)IurzR#P#B< zc7~NZV0_bxn;VIDoE#6R4BrGsGMoL9{F}QE@vWCfSMOgwce|al;M(b*FVBafs`C?0 zEiHQa6^1GPNFXm;BhHwD`!ub|l389tw$#-81L6aV+0jIFD$U+0KH};!4+l)ZM_wd0 z3pwOvI4J*b4~m7nqjadEXt!&KTJMOB8>;PguJH1&>{+i$$Zf?tR(NWFcM%)cme#E! zM^fV|O9<74#Ne_m4s}pUj}rIEZRF+4wAHv9S{!1S~mlpA-i|K{2L+03=IQGlg8frO&A*JgZG)#)Xr^R zt_3u{uYxynQ;ij4F(<6J0uZL{)M`C1MR(P=qqvCYWJkpCXxb*ZZ~NK1m8=C26n=7t zjhJ%1sc4M0$gl`>%1%5L@e@@7A)n?7yKhg#pelg4%EPxe(hM1chAe5Zg^7vPk#nPl zdox|bD}|a@3jFSSH^#=i(fjK`Y5s?i3kUPj=j9Ct8L`3hvu=Q6-iesa{X$$Jo;3X( z>GY_(@I{`V1w~-^K=08I0A5BIl68!wpq1X}JJvPU z>-L$)WO+H+6Y=6HjS8#L+pp>H(9w0MB0c-JiI-uanT04uFe0-1z2RF9hazKHcc3m z_sL4%4Pkql{j;Uhqg&TH5_^Z|=By<$7&k(9 zc^Dx;VO6}acA$?rR=~*zCq5{7V!$f0z?s8l@9m7B zO1h{r^m9Dfl=dCg9LZYO8HIT)LUo&h(|1p#o&_8%%4nChzB3X5O{LE@Zb?6`u^;jc z-re`N1(IKzxIPK!C}w_Q8BSk5u>7=eT#;EsYDzbi+E6H)QA#bif`UpDV>hg*`6I^g zQHVcZCs_Z1K=@&m>W^KOI8lAcGTh})0gzmW#ahi53yIl@SB}+E>7nFD<9q|HV8!CA z{N&*N_()YGdI`yhki3D6LJAID*Y_!IB?F(jY?aubQMi?c6);Ns?glUM8LMNn;kcEW z*EQTEKRYd+Cp#vD9A&uTF{WPA3v8hNk}iWET1#wHfhnX_*>JEnz60P3jlMuBd7lmH z4pwW`w$fD{tb)Q7UZ{ghtit3ooF`^)Iac4Lf<8E*!6gafpPfe&JNcd@sb34$EK~Wp z^>Vx?boKCik-DL??{H&nGY0@ShP{yO3^Ix&(X?!21wnuy`MQaWmZL z;6j_^L$r5PXP2@=*(#j9HabS3H0|6@Kb5EBC%L{QTg<=oqR4+$S2$+|PuFU@Q=ak~dmp_pfhR~wBI`u}EzSBgr>Dtw! z_AAtOTGe|EDs+r7ji*Cuu^g5MrlK}u(uhN)u2)krdgVhuCzF;jRsn(xFo^s0gE*Suy(wK}t1sH-Uu3`7 z8RmJo&C`(3T?UC(4UD&_ zk}((pu}aM6ZoP=z0877o_#c52Uipt71hu$+Z9kVZs)@R;BcbGCSxTM`Y2LUfzpyDI z`vGk5H2+#*n~BIi_HdTtie8soPYG-nBMu!0Uooh#Jd0Gxlqs9?Mw3-jUkvh$w{-_g zXOeg~#PsSxzgST;LYrw`lOaIG4v5DNH4H%1U;*j?D*~EUF&J96qNh`C4lLV(0AY{g zI^~Qi%vzJ<24I}R961PGc>D14A>g^C?CZ7RXij&F^EmU>dJ=dD7uKFU{QhlKyQjCb zJ%F^V#rwMSD$fImoF$sLpMkSgP91B{L8AmjevU*}Qu7Rk}*ScjShR z_HvV5(fGeg0JIqkgfiK@V?3!HstaDbsK>W3N2%clWTfUai#9d*4o#pllmFlnfSe7z z?w{gb9wZV=W6OxevJ)R@tSvM_6b zn#jb}8%fFRfVreD!x<4E@u=Nt$4a7BTQ``d4(q!bUY~mMhoL>xHR!%l+{%#pXCSi% z$>v>MF69FlVD5i|YF@z^V*JME-v&!^c0;aes+V+YNFT&&J5Ij*qzjK>VMb_(X`Q)RDwHL`0y15CU3x#2I z7648r;U>9`@Iipx{=+TKOE$3z&m<_I)di2MGO&q-*FvgUBlW4t!ivz{^DJ)2b>z$jZ zoDwsLrDrzijmo(iS8ZQ&J_@PV{^3=R8ii5jfp~IEWgM!)8E{1Ftsf^>dmdvy|%unoWOg#3ojQtMDb-vb_we4`(WU+fTr#{ z$D)O*4se?#ByI!E-R;5d*xKOfqsFbzQJ9>igr$Kb^%j)bRSG&k_*h19s6?J=vU7}y)#qR2VX#~ z)Z9AY!qP>^{gu#$`w$IJBTwl~vLS3??X3>Kt7OS0l9x#Ts2sL&&5iF37~KvuD~(1_ zWA$q0{63#&ozav!55?RLI1^AXGhRycz0S(^3g}JYvr3tlGClaSawVX{p=aA5UJHac zO~0mwe^@bxyQ^&5Olf{S?4#^B6awOOW~|VwBNw|Y(}FZtV~r=TRow3ZyOEBy!pw4G znm^>}Qr@8JpyDzIKd%2lsl`A(3>C!wiVr77A^7tL4B?X2iW(j3CRiO`GoywB^_r$2 z=X;pj4>muNC2}9hlX;4n0#vwhtJ74(WG6Zcvp7D6@aU{IWCI%KM(RB%ShG7FPtoR)0-7P zu0#lsyb_w33~3w*?_OPRJ9K-#_~{Sh!bog%RR5R}^FKfQen3U4Mk1~6 zAzFwi4$e(1BHORfwy_yaRF+En3Xd6F1tq5n@q(@fCb=rMHWGL~IHBU3+^1YwvQY-o@&ojIs)n)R zU)g2K(dxB9`(MnKk2FL;DeCl4x5!$WH6+IU*cMb52TPlsfHlJcJQ@^V*)o+8!BJb? zu4}r*=S&wYbs2-Zk4_`5W7ROG3FTJnRT8>{<_6)`0c~bf=vvj#RHsLsL)elv#C8*6 z#W!;H_pyQtX{m|)NQ1uf-Fn~CDFaw(yP-e~kg-dvtay!SI_S@#et}DG1qLcqxD@<0 z3WZNhCp2WjLHBE{oTJnw>x6)|bfajtt zm2mg?n0gdr>vFcjk1rr)_1#TJh%>W&%=wxaoK6{8eUsR`;-Mv_wWO} z4T)-1gPK{WW;Ky@zjo$Lv5x1Md&n!z=o|F1g>ISNpz5z-&^5?l@%4r{jX0Q2+>=1p za+QUY^{lQ?rc6nh?RSARFWIcqfQK`LmO92gTW?lN=|_@zas2CShCcU>f+ z(^ktUwlI1*N9>SAROWJqo_hR^D&pINZC(06wmHY>(rtKYv^8iPH=9>jz;R7Fo&Efo z=IEjSR_QRK&UAfl<4}Fscl9S^;{yZPL=Wqg3$T5`Ck|Lq+A{l=u9~^wxw|J6?=#6J z&`Y{z3OUabC8!5&KD$0_cL0Shr-fqf!qC#Z{G|ex@5c#4isf`jou%)fCXnIy%$boq zR!ncilOwa@^r+30i@FA?SPv$tmGuhJgS#_8Qq_h(Jye;+U)@@xX_yo~!X1^Dv|F(e zsCHR!c-+}*F(h^Un1)hVZf;1VC)2l<7{__h;E@6N5c+X+M}s}gT)Kbs;UM_MW=5;N zd_3HE=(vUaVn4WmR9AfVl>BPBl@NSe7n5m4FReEQh`9Sx-vKpu2`9|S+RJEl3C5xk z6U&*VHinb)aYt5`M@fN^F7|tQ1;Js)l*P>toE=LE0HoDkV_hKrVB>peWk=%$7+#tP z7XH|w{lhsob!XJeAZEF!tg1(x3wWYaDq*YSWG7wJj)h07@@uC!te_I;E&+sIet5qe zUDY28BvYNaed!Msos;#pDBO+fx{dibxB0f3!c-o0jm#mdKLJ-;B@Z=FJGiZBuR=dX^hP0*Sp+m1o1M zF+Wqgl`n-d!*gk^mK|&+eX4JcxY_+5cEn4sZZy^4O2(?%8e4LJa1u|8Z#V!m_3!=*h| z@0=XxGB-M1km0q_Xd@tCC0zML>CfkX+;U84drV+vI#FCOpToj>;A}w@7z2WCqvy}t ze+soX-{Vdem0|#%1fTE9tO7HTUZQSEdrWrm_h+)lUu8Y}Kvtv*J`#}SOTJBU6dg0& z5LvTzO(iRLXgmf5N-wL�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 Kt~3#Y!2balM=W*# diff --git a/docs/sohkdrc b/docs/sohkdrc deleted file mode 100644 index 84d14fa..0000000 --- a/docs/sohkdrc +++ /dev/null @@ -1,26 +0,0 @@ -# This goes in /etc/sohkd/sohkdrc -# ! = consume key -# [XYZ] = only in mode XYZ; if not mode is specified, the hotkey is *always* used - -! + [browse] + h - sohkctl "nextInTree" "role=Header" -! + [browse] + k - sohkctl "nextInTree" "role=Link" -! + [browse] + b - sohkctl "nextInTree" "role=Button" -! + [browse] + t - sohkctl "nextInTree" "role=Table" -! + [browse] + Shift + h - sohkctl "prevInTree" "role=Header" -! + [browse] + Shift + k - sohkctl "prevInTree" "role=Link" -! + [browse] + Shift + b - sohkctl "prevInTree" "role=Button" -! + [browse] + Shift + t - sohkctl "prevInTree" "role=Table" - -! + super + b - sohkmc "browse" "browse mode" - -! + super + f - sohkmc "focus" "focus mode" diff --git a/docs/swhkd-keys.5.gz b/docs/swhkd-keys.5.gz new file mode 100644 index 0000000..c185737 --- /dev/null +++ b/docs/swhkd-keys.5.gz @@ -0,0 +1,1435 @@ +.\" Generated by scdoc 1.11.2 +.\" Complete documentation for this program is not available as a GNU info page +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.nh +.ad l +.\" Begin generated content: +.TH "swhkd" "5" "2022-08-14" "github.com/waycrate/swhkd" "File Formats Manual" +.P +.SH NAME +.P +swhkd - Hotkey daemon inspired by sxhkd written in rust +.P +.SH VALID MODIFIERS +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Ctrl +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Control +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Super +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Mod4 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Alt +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Mod1 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Shift + +.RE +.P +.RE +.SH VALID KEYS +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +q +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +w +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +e +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +r +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +t +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +y +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +u +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +i +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +o +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +p +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +a +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +s +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +d +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +g +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +h +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +j +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +k +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +l +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +z +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +x +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +c +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +v +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +b +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +n +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +m +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +1 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +2 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +3 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +4 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +5 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +6 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +7 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +8 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +9 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +0 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +escape +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +backspace +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +capslock +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +return +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +enter +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +tab +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +space +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +plus +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp0 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp1 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp2 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp3 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp4 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp5 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp6 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp7 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp8 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kp9 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpasterisk +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpcomma +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpdot +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpenter +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpequal +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpjpcomma +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpleftparen +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpminus +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kpplusminus +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +kprightparen +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +minus +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +- +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +equal +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} += +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +grave +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +` +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +print +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +volumeup +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audioraisevolume +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +volumedown +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audiolowervolume +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +mute +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audiomute +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +brightnessup +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86monbrightnessup +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +brightnessdown +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audiomedia +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audiomicmute +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +micmute +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audionext +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audioplay +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audioprev +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86audiostop +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +xf86monbrightnessdown +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +, +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +comma +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\&.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +dot +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +period +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +/ +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +question +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +slash +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +backslash +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +leftbrace +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +[ +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +bracketleft +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +rightbrace +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +] +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +bracketright +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +; +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +scroll_lock +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +semicolon +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\&'\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +apostrophe +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +left +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +right +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +up +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +down +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +pause +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +home +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +delete +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +insert +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +end +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +pause +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +prior +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +next +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +pagedown +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +pageup +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f1 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f2 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f3 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f4 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f5 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f6 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f7 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f8 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f9 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f10 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f11 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f12 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f13 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f14 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f15 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f16 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f17 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f18 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f19 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f20 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f21 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f22 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f23 +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +f24 + +.RE +.P +.RE +.SH AUTHORS +.P +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria .\& +For more information about development, see .\& +.P +.SH SEE ALSO +.P +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(1)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(5)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhks(1)\fR +.RE diff --git a/docs/swhkd-keys.5.scd b/docs/swhkd-keys.5.scd new file mode 100644 index 0000000..a5e0370 --- /dev/null +++ b/docs/swhkd-keys.5.scd @@ -0,0 +1,174 @@ +swhkd(5) "github.com/waycrate/swhkd" "File Formats Manual" + +# NAME + +swhkd - Hotkey daemon inspired by sxhkd written in rust + +# VALID MODIFIERS + + - Ctrl + - Control + - Super + - Mod4 + - Alt + - Mod1 + - Shift + +# VALID KEYS + - q + - w + - e + - r + - t + - y + - u + - i + - o + - p + - a + - s + - d + - f + - g + - h + - j + - k + - l + - z + - x + - c + - v + - b + - n + - m + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 0 + - escape + - backspace + - capslock + - return + - enter + - tab + - space + - plus + - kp0 + - kp1 + - kp2 + - kp3 + - kp4 + - kp5 + - kp6 + - kp7 + - kp8 + - kp9 + - kpasterisk + - kpcomma + - kpdot + - kpenter + - kpequal + - kpjpcomma + - kpleftparen + - kpminus + - kpplusminus + - kprightparen + - minus + - - + - equal + - = + - grave + - ` + - print + - volumeup + - xf86audioraisevolume + - volumedown + - xf86audiolowervolume + - mute + - xf86audiomute + - brightnessup + - xf86monbrightnessup + - brightnessdown + - xf86audiomedia + - xf86audiomicmute + - micmute + - xf86audionext + - xf86audioplay + - xf86audioprev + - xf86audiostop + - xf86monbrightnessdown + - , + - comma + - . + - dot + - period + - / + - question + - slash + - backslash + - leftbrace + - [ + - bracketleft + - rightbrace + - ] + - bracketright + - ; + - scroll_lock + - semicolon + - ' + - apostrophe + - left + - right + - up + - down + - pause + - home + - delete + - insert + - end + - pause + - prior + - next + - pagedown + - pageup + - f1 + - f2 + - f3 + - f4 + - f5 + - f6 + - f7 + - f8 + - f9 + - f10 + - f11 + - f12 + - f13 + - f14 + - f15 + - f16 + - f17 + - f18 + - f19 + - f20 + - f21 + - f22 + - f23 + - f24 + +# AUTHORS + +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria . +For more information about development, see . + +# SEE ALSO + +- *swhkd(1)* +- *swhkd(5)* +- *swhks(1)* diff --git a/docs/swhkd.1.gz b/docs/swhkd.1.gz new file mode 100644 index 0000000..4370bb2 --- /dev/null +++ b/docs/swhkd.1.gz @@ -0,0 +1,157 @@ +.\" Generated by scdoc 1.11.2 +.\" Complete documentation for this program is not available as a GNU info page +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.nh +.ad l +.\" Begin generated content: +.TH "swhkd" "1" "2022-08-14" "github.com/shinyzenith/swhkd" "General Commands Manual" +.P +.SH NAME +.P +swhkd - Hotkey daemon inspired by sxhkd written in rust +.P +.SH SYNOPSIS +.P +\fBpkexec swhkd\fR [\fIflags\fR] +.P +.SH CONFIG FILE +.P +The config file goes in \fB/etc/swhkd/swhkdrc\fR.\& Since swhkd is written with a pkexec privilege escalation model in mind, we can'\&t detect +\fB$XDG_CONFIG_HOME\fR.\& +.P +This can be avoided as such: +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Using the \fBinclude\fR statement in your config file.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Using the \fB-c\fR flag to mention a custom config file at runtime.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Symlinking the config file from \fB~/.\&config/swhkd/swhkdrc\fR or any other directory of choice to \fB/etc/swhkd/swhkdrc\fR.\& + +.RE +.P +.RE +More about the config file syntax in `swhkd(5)` +.P +.SH OPTIONS +.P +\fB-h\fR, \fB--help\fR +.RS 4 +Print help message and quit.\& +.P +.RE +\fB-V\fR, \fB--version\fR +.RS 4 +Print version information.\& +.P +.RE +\fB-c\fR, \fB--config\fR +.RS 4 +Set a custom config file path.\& +.P +.RE +\fB-C\fR, \fB--cooldown\fR +.RS 4 +Set a custom repeat cooldown duration.\& Default is 250ms.\& Most wayland +compositors handle this server side however, either way works.\& +.P +.RE +\fB-d\fR, \fB--debug\fR +.RS 4 +Enable debug mode.\& +.P +.RE +\fB-D, --device\fR +.RS 4 +Manually set the keyboard devices to use.\& Can occur multiple times.\& +.P +.RE +.SH SIGNALS +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Reload config file: `sudo pkill -HUP swhkd` +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Pause Hotkey checking: `sudo pkill -USR1 swhkd` +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Resume key checking: `sudo pkill -USR2 swhkd` + +.RE +.P +.RE +.SH AUTHORS +.P +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria .\& +For more information about development, see .\& +.P +.SH SEE ALSO +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(5)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd-keys(5)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhks(1)\fR +.RE diff --git a/docs/swhkd.1.scd b/docs/swhkd.1.scd new file mode 100644 index 0000000..f83e712 --- /dev/null +++ b/docs/swhkd.1.scd @@ -0,0 +1,59 @@ +swhkd(1) "github.com/shinyzenith/swhkd" "General Commands Manual" + +# NAME + +swhkd - Hotkey daemon inspired by sxhkd written in rust + +# SYNOPSIS + +*pkexec swhkd* [_flags_] + +# CONFIG FILE + +The config file goes in */etc/swhkd/swhkdrc*. Since swhkd is written with a pkexec privilege escalation model in mind, we can't detect +*$XDG_CONFIG_HOME*. + +This can be avoided as such: + - Using the *include* statement in your config file. + - Using the *-c* flag to mention a custom config file at runtime. + - Symlinking the config file from *~/.config/swhkd/swhkdrc* or any other directory of choice to */etc/swhkd/swhkdrc*. + +More about the config file syntax in `swhkd(5)` + +# OPTIONS + +*-h*, *--help* + Print help message and quit. + +*-V*, *--version* + Print version information. + +*-c*, *--config* + Set a custom config file path. + +*-C*, *--cooldown* + Set a custom repeat cooldown duration. Default is 250ms. Most wayland + compositors handle this server side however, either way works. + +*-d*, *--debug* + Enable debug mode. + +*-D, --device* + Manually set the keyboard devices to use. Can occur multiple times. + +# SIGNALS + + - Reload config file: `sudo pkill -HUP swhkd` + - Pause Hotkey checking: `sudo pkill -USR1 swhkd` + - Resume key checking: `sudo pkill -USR2 swhkd` + +# AUTHORS + +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria . +For more information about development, see . + +# SEE ALSO + + - *swhkd(5)* + - *swhkd-keys(5)* + - *swhks(1)* diff --git a/docs/swhkd.5.gz b/docs/swhkd.5.gz new file mode 100644 index 0000000..bc9a8a9 --- /dev/null +++ b/docs/swhkd.5.gz @@ -0,0 +1,186 @@ +.\" Generated by scdoc 1.11.2 +.\" Complete documentation for this program is not available as a GNU info page +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.nh +.ad l +.\" Begin generated content: +.TH "swhkd" "5" "2022-08-14" "github.com/waycrate/swhkd" "File Formats Manual" +.P +.SH NAME +.P +swhkd - Hotkey daemon inspired by sxhkd written in rust +.P +.SH CONFIG FILE +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +A global config can be defined in \fB/etc/swhkd/swhkdrc\fR.\& Swhkd attempts to look in your \fB$XDG_CONFIG_HOME\fR, failing which it defaults to \fB~/.\&config\fR.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +A local config overrides the global one.\& Local configs should be placed in the root of the project.\& + +.RE +.P +.RE +.SH SYNTAX +.P +Each line of the configuration file is interpreted as so: +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +If it is empty or starts with #, it is ignored.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +If it starts with a space, it is read as a command.\& +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +Otherwise, it is read as a hotkey.\& + +.RE +.P +.RE +For valid keys and modifiers, check \fBswhkd-keys(5)\fR +.P +.SH EXAMPLE +.P +.nf +.RS 4 +# Import another configuration file\&. +# NOTE: the path provided must be absolute and not relative such as `~`\&. +include /home/YourUserName/\&.config/swhkd/swhkdrc + +ignore alt + print # globally ignore a key binding + +# terminal +super + ReTuRn # case insensitive + alacritty + +super + shift + enter # enter = return + kitty + +# file manager +super + shift + f + pcmanfm + +# web-browser +super + w + firefox + +# bspwm +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +super + ctrl + alt + {Left +,Down +,Up +,Right} + n=10; + { d1=left; d2=right; dx=-$n; dy=0; + , d1=bottom; d2=top; dx=0; dy=$n; + , d1=top; d2=bottom; dx=0; dy=-$n; + , d1=right; d2=left; dx=$n; dy=0; + } + bspc node --resize $d1 $dx $dy || bspc node --resize $d2 $dx $dy + +super + {,, \&.} + bspc node -f {next\&.local,prev\&.local} + +# screenshot +print + scrot + +any + print # any represent at least one of the valid modifiers + scrot -s + +# Append with @ to run on key-release\&. +@super + shift + f + pcmanfm + +# Append with ~ to emit the hotkey after the command is triggered\&. Aka, don\&'t swallow the hotkey\&. +~super + shift + f + pcmanfm + +super + m + # commands starting with @ are internal commands\&. + # internal commands can be combined with normal commands with \&'&&\&'\&. + # \&'@enter\&' pushes a mode into the mode stack and starts listening only the + # key bindings defined in that mode + @enter music && echo "music" > ~/\&.config/waybar/swhkd-mode + +mode music # use the mode statement to define a mode +q + # \&'@escape\&' pops the current mode out of the mode stack + # the default mode is \&'normal mode\&', which is always on the bottom of the mode + # stack and can never be escaped + @escape && echo "normal" > ~/\&.config/waybar/swhkd-mode +{n, p, space, r, z, y} + mpc {next, prev, toggle, repeat, random, single} +endmode # use endmode if you want to set more key bindings for normal mode + +.fi +.RE +.SH AUTHORS +.P +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria .\& +For more information about development, see .\& +.P +.SH SEE ALSO +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(1)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd-keys(5)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhks(1)\fR +.RE diff --git a/docs/swhkd.5.scd b/docs/swhkd.5.scd new file mode 100644 index 0000000..1579733 --- /dev/null +++ b/docs/swhkd.5.scd @@ -0,0 +1,106 @@ +swhkd(5) "github.com/waycrate/swhkd" "File Formats Manual" + +# NAME + +swhkd - Hotkey daemon inspired by sxhkd written in rust + +# CONFIG FILE + + - A global config can be defined in */etc/swhkd/swhkdrc*. Swhkd attempts to look in your *$XDG_CONFIG_HOME*, failing which it defaults to *~/.config*. + - A local config overrides the global one. Local configs should be placed in the root of the project. + +# SYNTAX + +Each line of the configuration file is interpreted as so: + - If it is empty or starts with #, it is ignored. + - If it starts with a space, it is read as a command. + - Otherwise, it is read as a hotkey. + +For valid keys and modifiers, check *swhkd-keys(5)* + +# EXAMPLE + +``` +# Import another configuration file. +# NOTE: the path provided must be absolute and not relative such as `~`. +include /home/YourUserName/.config/swhkd/swhkdrc + +ignore alt + print # globally ignore a key binding + +# terminal +super + ReTuRn # case insensitive + alacritty + +super + shift + enter # enter = return + kitty + +# file manager +super + shift + f + pcmanfm + +# web-browser +super + w + firefox + +# bspwm +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +super + ctrl + alt + {Left\ +,Down\ +,Up\ +,Right} + n=10; \ + { d1=left; d2=right; dx=-$n; dy=0; \ + , d1=bottom; d2=top; dx=0; dy=$n; \ + , d1=top; d2=bottom; dx=0; dy=-$n; \ + , d1=right; d2=left; dx=$n; dy=0; \ + } \ + bspc node --resize $d1 $dx $dy || bspc node --resize $d2 $dx $dy + +super + {\,, .} + bspc node -f {next.local,prev.local} + +# screenshot +print + scrot + +any + print # any represent at least one of the valid modifiers + scrot -s + +# Append with @ to run on key-release. +@super + shift + f + pcmanfm + +# Append with ~ to emit the hotkey after the command is triggered. Aka, don't swallow the hotkey. +~super + shift + f + pcmanfm + +super + m + # commands starting with @ are internal commands. + # internal commands can be combined with normal commands with '&&'. + # '@enter' pushes a mode into the mode stack and starts listening only the + # key bindings defined in that mode + @enter music && echo "music" > ~/.config/waybar/swhkd-mode + +mode music # use the mode statement to define a mode +q + # '@escape' pops the current mode out of the mode stack + # the default mode is 'normal mode', which is always on the bottom of the mode + # stack and can never be escaped + @escape && echo "normal" > ~/.config/waybar/swhkd-mode +{n, p, space, r, z, y} + mpc {next, prev, toggle, repeat, random, single} +endmode # use endmode if you want to set more key bindings for normal mode + +``` +# AUTHORS + +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria . +For more information about development, see . + +# SEE ALSO + + - *swhkd(1)* + - *swhkd-keys(5)* + - *swhks(1)* diff --git a/docs/swhks.1.gz b/docs/swhks.1.gz new file mode 100644 index 0000000..02c76b3 --- /dev/null +++ b/docs/swhks.1.gz @@ -0,0 +1,52 @@ +.\" Generated by scdoc 1.11.2 +.\" Complete documentation for this program is not available as a GNU info page +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.nh +.ad l +.\" Begin generated content: +.TH "swhks" "1" "2022-08-14" "github.com/shinyzenith/swhkd" "General Commands Manual" +.P +.SH NAME +.P +swhks - Server for swhkd, used to run user level commands over IPC.\& +.P +.SH SYNOPSIS +.P +\fBswhks\fR +.P +.SH AUTHORS +.P +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria .\& +For more information about development, see .\& +.P +.SH SEE ALSO +.P +.RS 4 +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(1)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd(5)\fR +.RE +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.IP \(bu 4 +.\} +\fBswhkd-keys(5)\fR +.RE diff --git a/docs/swhks.1.scd b/docs/swhks.1.scd new file mode 100644 index 0000000..7fded90 --- /dev/null +++ b/docs/swhks.1.scd @@ -0,0 +1,20 @@ +swhks(1) "github.com/shinyzenith/swhkd" "General Commands Manual" + +# NAME + +swhks - Server for swhkd, used to run user level commands over IPC. + +# SYNOPSIS + +*swhks* + +# AUTHORS + +Maintained by Shinyzenith , EdenQwQ , and Angelo Fallaria . +For more information about development, see . + +# SEE ALSO + + - *swhkd(1)* + - *swhkd(5)* + - *swhkd-keys(5)* diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..292fe49 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "stable"