From b662b8e7c2aa23a4673edb1e601f7337458dcc7e Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:50:26 -0500 Subject: [PATCH] docs(gh-pages): migrate site to jekyll format (#3517) --- .github/workflows/update-pages.yml | 69 +- gh-pages-template/_config.yml | 4 + .../banners}/AdobeStock_231616343.jpeg | Bin .../AdobeStock_231616343_1920x1280.jpg | Bin .../banners}/AdobeStock_303330124.jpeg | Bin .../AdobeStock_303330124_1920x1280.jpg | Bin .../banners}/AdobeStock_305732536.jpeg | Bin .../AdobeStock_305732536_1920x1280.jpg | Bin .../assets/img/navbar-avatar.png | Bin 0 -> 20640 bytes gh-pages-template/index.html | 1301 +++++++---------- 10 files changed, 584 insertions(+), 790 deletions(-) create mode 100644 gh-pages-template/_config.yml rename gh-pages-template/assets/{images => img/banners}/AdobeStock_231616343.jpeg (100%) rename gh-pages-template/assets/{images => img/banners}/AdobeStock_231616343_1920x1280.jpg (100%) rename gh-pages-template/assets/{images => img/banners}/AdobeStock_303330124.jpeg (100%) rename gh-pages-template/assets/{images => img/banners}/AdobeStock_303330124_1920x1280.jpg (100%) rename gh-pages-template/assets/{images => img/banners}/AdobeStock_305732536.jpeg (100%) rename gh-pages-template/assets/{images => img/banners}/AdobeStock_305732536_1920x1280.jpg (100%) create mode 100644 gh-pages-template/assets/img/navbar-avatar.png diff --git a/.github/workflows/update-pages.yml b/.github/workflows/update-pages.yml index 5db0f94da68..3c3219b30b7 100644 --- a/.github/workflows/update-pages.yml +++ b/.github/workflows/update-pages.yml @@ -3,10 +3,15 @@ name: Build GH-Pages on: pull_request: - branches: [master] - types: [opened, synchronize, reopened] + branches: + - master + types: + - opened + - synchronize + - reopened push: - branches: [master] + branches: + - master workflow_dispatch: concurrency: @@ -14,49 +19,29 @@ concurrency: cancel-in-progress: true jobs: - update_pages: + prep: runs-on: ubuntu-latest - steps: - name: Checkout uses: actions/checkout@v4 - - name: Checkout gh-pages - uses: actions/checkout@v4 - with: - ref: gh-pages - path: gh-pages - persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of the personal token - fetch-depth: 0 # otherwise, will fail to push refs to dest repo - - - name: Prepare gh-pages - run: | - # empty contents - rm -f -r ./gh-pages/* - - # copy template back to pages - cp -f -r ./gh-pages-template/. ./gh-pages/ - - - name: Upload Artifacts - if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} + - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: gh-pages - if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` - path: | - ${{ github.workspace }}/gh-pages - !**/*.git - - - name: Deploy to gh-pages - if: >- - (github.event_name == 'push' && github.ref == 'refs/heads/master') || - (github.event_name == 'workflow_dispatch') - uses: actions-js/push@v1.5 - with: - github_token: ${{ secrets.GH_BOT_TOKEN }} - author_email: ${{ secrets.GH_BOT_EMAIL }} - author_name: ${{ secrets.GH_BOT_NAME }} - directory: gh-pages - branch: gh-pages - force: false - message: sync gh-pages to ${{ github.sha }} + name: prep + path: gh-pages-template/ + if-no-files-found: error + include-hidden-files: true + retention-days: 1 + + call-jekyll-build: + needs: prep + uses: LizardByte/LizardByte.github.io/.github/workflows/jekyll-build.yml@master + with: + site_artifact: 'prep' + target_branch: 'gh-pages' + clean_gh_pages: true + secrets: + GH_BOT_EMAIL: ${{ secrets.GH_BOT_EMAIL }} + GH_BOT_NAME: ${{ secrets.GH_BOT_NAME }} + GH_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} diff --git a/gh-pages-template/_config.yml b/gh-pages-template/_config.yml new file mode 100644 index 00000000000..17e327744f5 --- /dev/null +++ b/gh-pages-template/_config.yml @@ -0,0 +1,4 @@ +--- +# See https://github.com/daattali/beautiful-jekyll/blob/master/_config.yml for documented options + +avatar: "/Sunshine/assets/img/navbar-avatar.png" diff --git a/gh-pages-template/assets/images/AdobeStock_231616343.jpeg b/gh-pages-template/assets/img/banners/AdobeStock_231616343.jpeg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_231616343.jpeg rename to gh-pages-template/assets/img/banners/AdobeStock_231616343.jpeg diff --git a/gh-pages-template/assets/images/AdobeStock_231616343_1920x1280.jpg b/gh-pages-template/assets/img/banners/AdobeStock_231616343_1920x1280.jpg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_231616343_1920x1280.jpg rename to gh-pages-template/assets/img/banners/AdobeStock_231616343_1920x1280.jpg diff --git a/gh-pages-template/assets/images/AdobeStock_303330124.jpeg b/gh-pages-template/assets/img/banners/AdobeStock_303330124.jpeg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_303330124.jpeg rename to gh-pages-template/assets/img/banners/AdobeStock_303330124.jpeg diff --git a/gh-pages-template/assets/images/AdobeStock_303330124_1920x1280.jpg b/gh-pages-template/assets/img/banners/AdobeStock_303330124_1920x1280.jpg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_303330124_1920x1280.jpg rename to gh-pages-template/assets/img/banners/AdobeStock_303330124_1920x1280.jpg diff --git a/gh-pages-template/assets/images/AdobeStock_305732536.jpeg b/gh-pages-template/assets/img/banners/AdobeStock_305732536.jpeg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_305732536.jpeg rename to gh-pages-template/assets/img/banners/AdobeStock_305732536.jpeg diff --git a/gh-pages-template/assets/images/AdobeStock_305732536_1920x1280.jpg b/gh-pages-template/assets/img/banners/AdobeStock_305732536_1920x1280.jpg similarity index 100% rename from gh-pages-template/assets/images/AdobeStock_305732536_1920x1280.jpg rename to gh-pages-template/assets/img/banners/AdobeStock_305732536_1920x1280.jpg diff --git a/gh-pages-template/assets/img/navbar-avatar.png b/gh-pages-template/assets/img/navbar-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..785bc479b9655ce9dd158be2f045c25d9e53f137 GIT binary patch literal 20640 zcmZ5nRa{h08(vaa>29Q?Q@XpQyIVR0X;`|uOF&9eLZo5I1w^E!8Fffeb&267Yu@qSI1Li)3f9-=8zEzyrsxq!s{-J zz{bN%dkh<`6S_vg@9zBXk513ldxPvHyVlM&db>HV>#hrpg{g32hqgWce@JPIxw52A zdE2}wy~;g}gmy4yFgLS_jYZbY3jQU zn5gLqdN!sR`jObQdpp_?phtI{T1chVPf(u$@O39RX|yQ~xPwh|t@J3vaV53yi24<< z!rFTEnMF_OFHu-H0!3nnPe;9ADPzri4#slg|>5|xTD+BBs3jv`qqWNqemP%EWSkQcd!O-E5< zB+F7j>qP zCX%KcQCs00!1Fm093=7CAa&{67|K~y=}MqC{*9{#RYRF9iD0O;#xz_UZ>z1k<>(ix zB}=qlEyrWJAd`!FAZ~F2J|b`Y#?p7WQSDk^v**HO+(S*8h`gs5o+? z4LP$zbWLwpT5(K{_4n$b&W20#woUm+rKT)uF)~aF_>8=4z#BY%>&GHrEM14=FIAW` zOBH$QkGFaOO=!m7b;C#Z_M!oOni9S{+GR58qlHp*1faxFJmp+Jn!4I_3go;3HLc4q!v z3Z(uKGg{5oRKbzyLBiIaj8;@@($AvYUzxFW@r?oZ%acuksSd18UX<=HA7g3h@xYHY55> zeI88^`!NK>7A3*56vDbHAb=@@Xa9yA)0pB4h&4o>46aL&pcxt~x77dlJBKDlunwaL z+0lM_uIzXPxeee@J3VA{*Y{Y<@9=)%>*>t~M@)BNR zITd4A;RCo&wRu4w}^$F z6B4ZGg7cPh7N1>znBqN3Ne4mRkaf(BBIs;b6L9eZDt!(iz&=}O8{BG)Nq z+iRSK1&ion=35x(_4=cf_Qk)tjil4pm)7QL9ym&d>iq);vD1iSdr6 z`+Kv6%7j3Up93DH8&b4|PLQS61ww`NMx+bMT_<9}I%V+d3l?FQ6|)%5=78W5THqAJwH(82)nU`Tiw1=n=sT#de zTi-yILuucol8^bzh@p8%0xknpuu98puDde#d

Ham7aEv9?}_6 z1O&<%O*mMub1t9Gwy=8)rM9p&-HCl>OiQJ8c3YuAG@H9p3mIX zFMCP~`dEdoy2kC5DjJEOl6ue+^*`bATib;1$MFE<@iok0|>X zs|+C6J%&+SwXPSAjoffQ$b+fxzL$GpHZ0(E75DmhoE<~JQ(u)#BLV^iKEsIpH4#|| zQCZu&{o8toFz^%$c#;A?vx?hFL_Qd*bZ7dKWoNuW8+mFtuOm zA2v|8LlIl1P~U%41j1hz*Fj14^JuM@f4o*Kqz|4T*$wI{%$-U7Q2gLr%X(J{%{YUD z7uY*YEmNa|N7H30_9MPMck)KRW9gKWUBHebIG9jyMn6&}9O|kJ0Fo{{$2j8t_=Pvg z8pc82{C55M-7+3ml%ge={d~%-Br!B@rc-M8ZgjZ~P|gDFmH2W#u8{GbU#azR;pp{R zxhhmhjmJ{c%PX|)LNKWB=bf-Vi+aOQ#vCOn*}L!^GDA;Zu>9|@>f7h zn2*@9*V2?DtboLxG5SHSE3*AMS*QuO&GX4_j`pk8w4e3v;Wzu0_xSLrtx?C@Mcxz` z)?70I$S-13++V@yvnNY-e?t$hTmXB-L@W`G+i0amC%zm~e)a(+Tlld)>zTU~(~1U? z9of6^w)L$yf@PGQoxdkea0i)M&!63BPwWG?KCYv62N}pkL?W35$7cQ+oK@tQ=M^u7 z$E_|K5$s-5PsZhI@%-H1#T6teEKSDT&}X^#3gRk5JqkpYRyQsBJq44Sauumue%S>B z9A&7gIn_c!$O4`E*ooWgI5E17u}aQ7+m$pok}>y>Hm*pELRMZ&SuQ39@)k=_}z+*&&Rk8`{CU39iD>^s_#z3)FKRQ+W_1lnBM<2Tyt~H*IJ@dGI1Yf(0=}p z6VmLDYs!PBuK_hB+2?U}Y2Q*b4IjTjrNBEx$E(TERP|pBJD1k9dcFG7$(g5EPghn- zg|1u}4G(|n$mK+H0)gVrWq^)5yI`5>=2?Fj_1(uW>E1?`+<@)R8&;8FbS;HCgzpA( zo-^sr6z2eeFvTcUB9bq*dpUtHmmcYtwV)b8$1Uz9bk%AtjcaF_k4s`(MAE1|9Ef5l zel*As2zO~cLi88=+&}G#clk0O1dBez8)@x4Gj_}5f@L{J&1+Fpcd>i^Mu9(B;q=3+ zsM?RnAdlTT3=h#&d`AYIWp1rWTU8 zyyn%8SrWZ^i)IR>X|Z(4JykB?2Sf)+ymo&ZJLt{bk4P`dXoQI-RAEjn2K0(+d=QL3 zar3W3W@*DO(S7MYCH z1t2x?oS|A7o zsJ)zcm+9o{GLCI{m+$p=u$aJA54salay1C$iD519XE@y9`?hQtAWv;Z<&z?Lba3hT zP^z1N#sXTgE@|rJqc{HXd7UoA*Hn)cUjJuH@CQLjEp5PDpvVfIgXInHg1;H%$-i^e zWFO3gFODokJUkn3c-y!G6DI|?CRoD&OEpP|>!!x|ZQlmo!Btj64YmjLk1A(7br8`X zX!i$=7eSv?pJVMsS8(>}^-n+?RG32z-uMese+aR-&8juLpkjX(DYKeU4q=COs z4x9xvN@M!G>n>i;{$Lm^(PRBR)zhfv^}`~ZRRg*z>C8ZKi~|j+4i1Y#<|8N#*9sfV z`#}8LUOAu$%zpgxk3sb%X=}Fch!BD*ZZ!G-G2{T>oT_H$N*&0p3F(IC-o7=fl^pO9 z5RrF1aQsm%Qf)x()yOui2LCo6x8<=ltNcuh*79m~HF_VbF@f>F1p#;Xd-?ffR<)j) zKRTjFYor>$S34o`u#u~$2NUwHy4s5}i|A|ebMW5IvoE9=s^~Xp{uY<^DM*K*(vok% z#r9bSxVv=5)y~XM#9~L1i&Bje4W7=~vU1+G)V*-2?b|a@&atcqHwrpE*xUS$ofqoR zrj2df4Wd59|4#d@iWI6Qm~3SpFdK6el{Vh=+%S*+?|9jNa5I}2R&|2+%hjjsqGUJ` z6vVlmYs$t27PiOSZiMJSp4yKEI(}n;g8=l_Xio4Ki4dCdqTZj4fz& z|9ArXM=j)DfvKbfNx-`bOCLG|@VOSt%XoKJu&Znf~O+T%);{KK%jXVdv z{-{zGfC`2nA66XQR|hgro?5T!MZxb;x`1KzA)G3yv+c=l4fe*bf+;@ND#nd=un-m) z`>kS;%63U*%E$arC4v!XHygwoZs5#F`i8T*IjU6l14V^*lW>rQbhiPZ%=pwN=?4&0 zDl3^x${-nN%E!Q$ro;iZY~8khtZU|J#3HRh^EZ0$ZtUGH@-a1#fKm_Z-Qfag_gwWo zd2ZD#ge0gXgyz`8zUZz2&^9XUyj0jQF!LkIlA|wapAh#=_#j&^TJ91yG{_G*D%gTFW!v zRCj8;bD52Ycz%o6GZI1p-i1fso=NNXCLyL-%QW^C)ahV{^}ux;oVVJ!{Xz-JFpo z$gM(OfcH{t)sZfFVf^l<0;U(^Xb9}rP*Ae>LW&N2+Yp+p#x%$s8DMAOM;ofR?`>JF z=E>?Y&F)Ut$iQ-B9f;KHDPb6C7^NEEIk#`mPr0>xN405XA9q&?Ao`tbY^J!Knz~20 z2UI34!J1Y+bB(ud-bi96D|uct4plO`(e=+Pd+Y<}Qyk*B+BirH&e^nWqPSKra%c0d z^dL8p{QNE3oF8L3o!q5bS3wgZ5~Pi$v$soXp72+QgemEPTaW!BDe-|?dxrWV4qQMn zj-*UB9aZ9l{r1A1Oe&)pxFOg8kcaY4)*XV=2SH4lZB5FgaswkSn)%g+o^M;7R)M9j&nmio zL_K6Dqp)|xq^cJS-Ej-JMinEcEh?7w zlgyS+)Ze0EcvWC5ce5QTrqb&4xeiNtmNBo)G71=o5XK+Us)(A9!8{Q z4+g(n#*A0W+d(bnwALCbhi?uM2{ zhS>w$3*YIgK7ABMruTlT(eTF>9FDZo5f?9V>&`=WFO!fMHj7H0ZX=Qg6}f%-oM)+= zb^j;7HvA8$l51cxkbc8Zw;-X1D&?RW85Wz-*8hS%6!_lf74VN0%j)A9+`(=o3c1Oz z?0bGn9r?uOFkx+o#?GrTD^+lh5R#N>mC%lX0H)?cH&sggRx<8Ek_g50Hg-*&(95iN+P|8>0> zK}RD^Xzxg5W>5T<&rI1R&$CV+VBxpvlVr0M`Z^kXNAxrPtS_c`%p_VN@U^=R27aap zl~b94Z8>Xy?0@14y;-OyM2}2Mjn9DH-A7g3vW3-wB8f2m@2|~*NM@66G ztqG$M8uf$VH2|&BcfMD==0s&|S~|0=qBu@a{vm)0Y8x%umNA^1Oy>TdsQVwT_$)T5 z!{b~oF#2zG{cW`R{*Xs`5Bj&U<;zxct+o8a2hv^$6fC)NDk|4S1x?g8QM53p163x^ z$OYjzil)12mYRpU>!=M>y=r|uz@jd6@jsj$Mo4(D#zt*G-<=o*I3=BHiGB>UIe%X~ zVwkBV3cH_9k+kLB6L=8B?YV1K6Dl!_L9bFPJ+_otMDVeN-NVdrlni*l!vJsWn1{k2 zhcQ3cxaDc2Wy6R90Nhwj&^|DEfk8Q-=d2G~c)dRK>4W&e%559q0Z> z^jShShG&;os9snGJa>Uc*;bw4(d{vsoS7iBn6mi^`Gr9eZx1YX*yMcN#jAYK%Cs<7 zs-UISu@(S5vgR*W#l^&$#En;l$6sU8MQ^8LCx&saDPcgN6-nGxJDP7(_RB4qTn@u834AO9PfKxF=edN*6T zFw%R&9Wn9dIheVCay>UMNLQC$&x%XnpE_t_+mTDYgLCN5wrlzAo*J{;9vr|5Y$?94es&P` z1#S|E`kEw)3yVh<8_Ss&*#BGB&&3nR@R*c8?wFea&P2VW^}`Z587+_>e&iuSB{JgM z&joi5L}f)MAQD|NV%G!A{vAa@;7naJ(rATHa_cW-XsCF#1_!l)k39LsEMUEr4tB+- z^J9d;SL9U%c$i0}!2VLH-e|?yUFYZKMY@?io#E4TIsRdnIQze0~hkD zAcCt_USfQzt$Xy|O9_VO{v-a%Jbn0k4|BPOuFw&+O`N#4n`S7jgOs492bruN57qd$V${m{F;~^STUqD8+KN!}M zz!lL37(nEDc>-{|oh~uO!(xK&m=1I4FaKFLWqshywve7y9^W3rk#Ia0vrYmt{b27s zm8RP95Wp?@y}n@iT3&+)aHi;I>&XQY7qQlfGy;vogm^kXm}fx>owF!!b{&!Ghw)VP zKGqRGIG6cwUN3cNj;hMIi-#erR~<_&Z`P+8!2!+SQjX#~L+X^Zmd%tv<(X6V6AK7_VtducIVE@%{jK)lj-FOYo2S-c3lMDTJapy#v4CcIy}C zK|d71+`|#{*nPxc9*R^iC5NGQjCjM=JiqzZb1%moJ83jG*zj8C42)hD@I%)y=}V4y zj?{{0dx;qv`8?TPhLdYW%;(5v88H>AloOk$Z7q;MZtE|qFd;Clr?7y{ZZv)wNrWAI zm*d|(r_VA-Nv)qMMbdRur@g?`PGb;{zvPvc#<7PdW`plgXGrrS-!7=%LbnT1GIQ5> zEA(=}S!ywzn}{D4ggR&PToLF5Kab^JtAA$!9NvF55zQUk?1)iMg1*jxWkPBFl|o29 zx(mcIm>RXMRS~R?>wS@uqAbl^WlqXcz0}4i7)8mGIrcb&3&l{iRL7L!WL?o*bSl61 zy#$v>Pm``{LnDkgRXr@~_8ahAqw3iKV#Mo?&5d7f8}F+t8sd=ggqS<7uWDxf7cBjR zKc=h`XC9!SQYTRURE>rCu(UJ+u9~>l5zTOiAx1U?@>VC}$}T(IXz%=^@W+Hs6o%#B z_Za~XFM4#$G0exQ0oXqQqof+Obb72|;)@XJkkhN-ko-cRj2IN9aY*-$i5!|Pkpk5Vc z=);-o=)eacQ0S{xb?mm?6bcWS^5#D)P@R|EpH@#LZB_H9PVkxM9+pQ}qYYJ5-_rV~ zK4qlN50a7xQ-LgN!v^G)PY-%zXr)6cx_^iO(Fh_IehES2Q1dRhETc#k#56E!5&PhU zRM*;8-Mhl(f8ydGS{mN^$CWQ}0<`JRw3JljjoCU{{7w3zSXd31A};CWW4|70g)>hR zJ9W)#hZ;jT(YWLG40S*+R{o3T6B#m#EOy|AO}|r0##Z{yN9cjceES@AwEdB9Y zG%axdS6iFHLsI^3HN<&0Pg*r`5QkjHfBi)rL5RXaPy>>t|Bm;Gjo$Nzn+Z046xxE;sW?a@2~YfQNN;3MNp`C132l( zgF+iHOG!acc_D(}@2yA}O2=7P`g{r_GC|A_IDYmwbCdtzBIggFBM!@DOpSh*My?A; zlJKp1D(Sk?#6!dLTsb#ksjn>a@&*WhRKm)fMp_N(eR_{tu_0Y*bc$csmI2`<>6g=} z8h=xcgHDXaEBih@R|L1;#^%j2w=#_OTi zUps}0`V)G5%?mcow!*P!yfo;w9-=PD!vS;A=hFp^JH7!oM{n;jFaZ1228YVR*k*EC|h057%b-o1*uuO~T&fmXUfv&{{Lx{1ROlzQtw#412G?{tFnEWBC>a zV+FJNZ#qDc-^4O}@c$EJc%q54x}kQg0^5{-^Rt~zkGZF!YQ7qCHC!Wv81nEE5x{#B zj2m{t%kM!j{o78@oj1ag2nGUhxQbcsA1?tr7Sb%Ugd;$Y zoz##ArU5XsDrVDAI*Kcu;P4Z0HNuR-_;uMq8LPINDw0;jAgQ^j^|rcjdP^dF#RAr>D9 z(k7RZKN9pnC3>DLt2p)#W19vy3G)uxpe7a+R#^tyG)gDWWiWgG#}!hES1*5m3Jc1* zj$LI_tq`I@mp-9K`7XFlCqgIQGM?#ZrXT=tg1HoPi3k-v$c$u?p%GO1rmd20a_SLH zPyNBnR2N~5!K$)LdZ>FlYV{RBwLIcGgkzA6h@XKE2%DIVKR)wmLhBwT--*t~0D`j*h2E^%T?B$Zsw zdc51aWLe+$ONQ7Et5#Oz&tg7$Fp97BK~o`kfuBB^01=z5I%z53KeP!{@Ch=DDu(TD zJtHvf2+|I~UFE=QBl}nejsP-uA}(9PWTl-9Se;a}VPv&VPr1RLBtUECL4$!U3z*#~ zyWR-yXufB9b2720}&S zqh4@l=i#f^VC9tlq1CY_C?V(_{|r&T3D%CKAfnVFd83wPSXZAa1+c_Cy>1Zr?NQ@W zLcRrV^Q>zR56K#=gSPlSOM$&`99l!^4(B(zp)S_1kd%0OviD`89eUq?#F7Sl0X z1N$@A7(&&9+m6T{t(KZa&ab_=8bHCt&aBY%U!Z<#fhsCB1*B>vmq*~Q=A}YYhUdw7 zd5-jd=fAhr5`fW=_hoj~{rCK~m zIU)W%bX!eX^E6?;(&dPpP`*$NZo-J&rA{R3U#H?xgk51)ODb;Jl!@eRj^&A2iES_^!Q@8y({$MkVvpnaG_Vx z7H!9t{Bjkb``!tH_g|b4xUKa~@fuK($%u_6{dm29vehU?HFKD_>-LK3z+(h|g4V%g z(m6O8?NisbDlbI<9Swph^02%EK~ZA#d87PlkR6an2b=j~k*!B0Z&+ClAi9DMg*4>yFTL8nmM?q+q;cPJIO0mI~VT^}X_bZty>B9C2)$v3h5h zc%yQ}J9r^j*+U*i0xe9(Yy@m|3JO$aSgUZu@3#z3WG_n&UTl;B@~~@H-oA+#OI;uK zZ(s~i^&vm2c%8E$+!{snyBp1^N9EhDCvKfqvs1iK7|2|f6#xP@S^Io0iv^Ht0eX<- z{P%(`jmlVfl*ESn;%wfLO1-1@s`=gcPSDcfF}>4Aw)H*Xkd15VDC|A1X}@4iQ#*K> zpZ-S2o6PqLcVLT>c&Kr19L|ivBwd>%%6@|S<`X_=;l8ylk`oZ|`z}*ilgy{}om~X3 zX>_Ezq(+@kc(TvE$_cF^^a0E@@;M37t}&=`56&9|A)~P^?Ow_w#a+a$FBHn~FJbU`yCk9E#H$$rO-TSV|wPF{a^b#=q29G5-J{%RHRDzzm! zma6GWDKh3Q=uwpwnU?xCLUKdx9ivyP@h`;m=-m)MWdD})dsG?U3ip`0)VQ8awn^mZ zjje$9MgHZ12N6yc4;p()rlvwGTy>Wi{@e|BSc%dB2*%KNZ49s%Q81v;h4nXzOut5> zN)h!Rw2Uix$FfEG5{YL{|o{B>^fLPS)&VNi!{OL+J1 zSei{n;hy6EMybAg6q#!r!d+gUB@>4t*U2Sy`nJBdvycM9_1iE$=t7Tizo)bIRjzVJ z(CL&|R~2O50C1v_h54~EzVv9Nm$I0H zqND_KfqUMdcMLCS8a_+sc^T<(yD^lDCNgF2EpZP)L#1wrWHgQI>wg7j(8}K~r3MO7 z7RAeyf@jPdS(b%fAy;{zB!$L2h`t{GKw$asY3`Dg?B9~~e9+ZJLNT!$909@j3P}3L zU%8y9xkt&jH+-=}I{SKQV&9e&lv_@1Q!Hb+O8qbYcSppaC0J5^CzSOry{shd8(3%` z^sZP5bN{JZyxR4xPFRFyGWXjTR>~aNLRYh)-QaBAK~?~^LU>|YUv=bKSeP#7D_L8{ z=kmx?7(W{kbweQz^vhw`gik1ninEhP#ziKVls2mMj8TK=4(pGy--Mv>MA(AW%^tyk zW@T>@YjS(J_#->WtOZ_PukV;=rEeAe-oey)am5FngR z{euX)i5aQ-s;CovHNNsWJ$(CoY5~{o+qqQ!8e3S>tpntXqU1mi?GEp+6obT&*Xypt zp?^D{DSDsRf8cBC?t~s*C1RMLFX{_<>`YQ%-L(RPpf9%OF)i=4X8Bv-fgtGJ?w$rx zoI^@l@_QLe=l#vq2kql}Do$#)0DDP=bk_cbKU-9STQRiVFX<#+Fblvq6@YL>i$4G0 z{PDe-K#(bC4s7@C*OZKZ(XX}JzG4|0V9V*hVdWqu}io4(C01tLgtGmbbV-)bHQFF_w+qHO!~x zeJJsMQ;zwXD|A@V57#d_6+DNrbC$STqDcDP2t;va z*xcvZMjVvG4r$O+=iv{@?LTG?Zy<`jKZUl{_W14+79<;lGarjCS(oblTJl`*Oq zsdic`L(uAsYU$q+D*^W^W)wClq9#bi6OBBX_h)1qL-XccvkS}$E!sbWGp)oPN>Z$=z=zi7&kC9xj~B>U?m!Dm zdUp^7^-L0PvEla?$|q)wN`T%Jb)D9{#2`PAHOWBoIh++M%DMam|<{m6U8vis$9J=n*c{Yy_5?-X_Fq2zM*-UIO>7q?# zHag)ZXU-?#w_$GOHBvYRiGetV@|$BYD*>)kyuA8LjShTK>U2WfYMp>^=KRK5Lv!c% z;oBtF~n3qCmiDf)#djE!v#S=Yc+&H=e| zugrkYjKYkxD_g4VLD-US0?wtB!fR={JQ^B!rm21i{#qXFb>Z}bahdsx?c2aH0g~z~ zPQN-in)RdD72`#p_U6G7?HN?ReT4#fC_~cy{X^0pP)Z-e?gDQzfhtmIS5}!bpJhM0 z@^Af~Fn;sSs;%)m`yxNqAJ;0r+JyRcDfPRbF3po8Pn3kFc>dCweW}Yy{UaJy`JNG0 z(I|z&nQqXo!#$k+C?33jo*=d54LR?#ZP%k!@L=o^PBe}ud%6~8V}WTd|Nd0WUt}-K z7ADIED5S6$u{19=*tjlBRSp=i%HR1a!K=Wuu2O716cg)=0Uko=7!>$gi^_d?6!$t3M z{RF?>lD_aAmO@-x>%;UTJI-Z4T{pLbOKj8PHARNylB(dK9|gJk&X}+TCqlW%{gq7) zdCIYm3`P*En=IdR8Gz3&LXW)Iu+Zx>nEV5Ws8RGpryy4!!<(|fvTpb^uXiIHOj(if z#rTCK^GNr(<-w61s`;9zZ}INACjR5e#sYeo5ea1L7>rSu21w*}vz4dh{kdQw!S z*K$!-m=oOVA>_3QAKpAgo1}K@h36`+0izL)T${E}7{!px)|Q(mC1n^Ue|5bW+l&Cjrl}yPNN#3twrZBQa#sbx-I#x9ll1Z zj*nifhCo5lQX1Dk+58o$wL7A7$pY`vZ7klcQx*p>a2w4BXhhN#e0s&TT?T2zUrgez z^AByGQz(o{XW4eqFl)_8l6Zx7=i?fSmS=~)9qcoTvGG0Sri%VYT|;q+-P1cNy8>s| zX_rgNTVi-c)j~zS({uOCb&$Nn!{rOIkKB94{WGs%!7^x_seSFf1TCHMRe-7;vf_UJ zje{Fnq5@#&v|NXLi9Qpb_$Z%6DM%Z7{&#;hP|w}NKy9En)$Js7DZTlerV4ydRJ@fs z;*OAV~f-;gA}cudL%P?=T#qTl*feRJ&$lOMMG9t#AtAFGf^IHtXP zfJX>G3%@~(kF2?0!rLz!ehC!a*m-yb;*k}NgAk*o4Q&LrsWod~*Ps^bptm3ME*Dle zS6Xu^kuFd&=kp5x^c_}SCy#t?pOxDQ$|u#S@2l8rc>}AWV!yE|s`aP|sQzjNvGs$m zm2`BGu6lWD=hTDkfb@67mqOsJRP$2w?M^d$cxHS(;FnL)uiV%j)5({2``%V&!8zZH(}=)5Evy*_l~x`l|utZ+f&PZLp~29k~4;uKuZ zb=(o$mwoD6&3S4$!(sPFlqM_Zb+1`mFD-8`s_wo)eAusF$2h$&dpnG$aC-O7=qvFz zt$SO=tINHNF`>D&NVnuc9l^N$LT}C1#--x8X2Ys&Z1eM2bc789oOXSQ`?kHXJx5G; z$%W-cf)^;qvjS;~JxzF?p%$~3-^xsP;ARz$zqgmSY>NU@)ZGTcD7bBMLci^Y-}n-U z7V?>?37N%Ezw+q*NIVRUJEq-ExZvkp9iOYE_-D6E4$_YQ27t%W&*9VRunJoG=ok%732|4X*!rS+Ej^OGYK$sOkQIDR*t|W5pRr1cnwh7al zra}``?ad%%`zUzC*~;#sPb_K20Hc1?;tft< z>!avFom=xNG2DQ$EX)ORMT@tjPv4c0*^llZuhNzuCfsk~f7%cF%tGXZ^+6@P=*RFQ zdHp{R40uxYuA$>IxE%EFfsAHe;%Ca}WsefyK(!CoE2Sul*{GcW#WXS+-K3Z+(Gc1y zXtxR03~?BLebD84-bjeJ$V}>FqMZ#Bjmvg)x2vaO_6}_=!MS!%-xspJuYxmZ^%2eX zKDwH}TzktuCm@TZU3M!rA4R#h0mQ2Hm!f|Lrky4?>lF|Ac;#>e%e|Boph@i9I9LOr zcK!|Q2jRW-g1bHvBf3H~Fcr7^VbqxV_U{cblz*AMz#Y%C8)X<^ne18UyWU#0h1RwC zCn1Fw)bhHUGsj0=Ez0BJ-}dFogbr!4;tNdkn5W5Hv2y-+pk)sziNnc=2Vd0!EbBfQ z$wspw^eoHQ7R1X~!!Gz3^Q{)0-HS3LZ#Qx=Hj+TjX$jRhDQ6XAOce3~O*NV+wS4KjiU}?O;Q7go_vH%?e5D zxZOBxsuH&$!JJb(!GOl6ZWE$I)-coQ0pEc}e`^rrHG5Y}K)R)R6iTPlj?*?PD*3rV z@GbN|((q;vQsH5M_@5#M(}+x8 zxyxE)0l2*JuSwg^zgWW(YP*Ued{G!(c2I?j%0$h1<9E{RrWx&cuVzfZg+;c_Pi3(+ z!}{|rq)j0)YLtmG>9HwFpPnDCVc!pZp1D=HB;1`UJbqj^r6GP|xpm68R?q8>g2?!`+|k(7r% zT&1LJ$K-IpWLJRFG$p@WZr*B&)=lxay!5H0m1Pu>8n(S-oXsgv?!3!5n6QZfb5#M^ zZxq+mqu(XEX_)CXkq^(=$*R;^$-LtF6 z+X5Xk&DT`lx;4|HTCyG$PtSA1B}wM=kSvr9R5`OTa5O?H)TY%(EwcwP;osKi3ruhN zZq|P${~9wE6(1f{TkkUp$ybnimGDQeT+eOLyo)l_`1s*j2hu~8Y2!j3REV)lJWQnu zk=ikv(NkT>3MUW5yw|&vwP`sZj-hn)J|wkQz`xHb?69i(oqk!Rlmy0ZVLnswYQUO zlk$}TP_ttVAKW-URM)?RpJ4<9aeQNE95HUBPCqkdURq5R2!chNH~4v&e4fs=|8^L! zn{-!0+y_0sV}fTF$Qp-IH1Tn@>-&bE@tGn<+tNURm7%2pG)MWYd{uxZGRi~WbyXop zmk0Yq=__O%!nX$OL7DmO62o1IBe@@B5}BF&1pJ&Vnqk?_4CYS+YZV~v?&N%g9Oyeu z>h$&M=q52v^P|owX>(~(Zml}|S|zaXzD6?tP5Df-I+EL!r;uF4(6c#bqP)8_8%8A~ zqxVsx+Z$PKTk;Waf+sd=BhEL;BY7ZfTey=mQs~zYe;8rn?I2D_!N)bl32-}DjB0k1 zTYwQiaoOp@&g7iZ$;{oUW<>IRx;DPnKWkoY2%%5xu#;KnZj77BF{3C$CP2JA~?MuV~16-h#yp*DDBK(P8r z%|%m7-V8;waD#ZcqOJ2>901(KhS1{a5wnkScia#uII%E({p zqwzP$XLDV|ME_LfUfOl`$(4u0-30jYNG(amqm_fX@AP&8mlp?lh>eQck-&d1C#xK=OsrTuoNkziRdi)nE@Q?)}Xu zUI*%`D}&SRa~vi5UG5P{eDt)Lrg8n}h|@=8Aj12yw;{KFS@h@RkKlM*7dOta24bXi zs_?8fRdtT#q(3C|%0i!w{4l)`&6U$dJqBqM_^{rDZ5?_-Q|GM=H@*f1_#O7gl zMBn*UfW^e=VLER}KHXG9fG@2#dUO`I_pQz?4xdl;eE2EAJGij5&4tIbI)>~h9ZIg| zGRDM;2^Qzw@wYpSYWBr;mrN!kl}yJCEaNK2@GO(m;{~>!@~Q;`{X3QuO4C@W*;Crx zb71NknBU>%wh79sN*>xeTVZM5a#UP+xHM_9W=)J!T9+>1QEr^Z&Xiaby@$D{O=k0+ z;ECWvF4XL;%J2dGuNJPxmbh%vR0UMY05C@bM%Qy?ErIvELs1o5Q{SKJJ{6WW1!&H4 zTz99RRfR9(z1)@fq540!rs)3?2M-_q=xa3Os|zgz<~ilL5}j?CXA+sN%6=qRn~a>v#y7^SWa%z5Y=Gq&W?`6&T=qgqU(gzn$)Fa$$dnt+AgMosf+5~hT&{h z*BO`PI_AcGV7!XR(B=6369M++%J69_8>}<}xvEaw?CbgDWobKB<|j0(b6H&7FsX}J zjcdOjZhHx;J6c3CvKNGnEsb9)$}svcx_aJbg}w1rBw1cWPge(T#93NPz%BgbOGMDj zPYt2b4Ul-z97v?HJUR2*nEjJhMf!C;-9C!2ZVKVH!gjaOr5L(Csf#CHO0soAeD{f6G?9KK{Ab&2GePHWu=! zJ#~?gOoTt;=suH|U#<)uRaMpJ=?A^K$Tmqs5ovZP#T$&{eoL3i&DqmVG1XY9Dsi`3 zjVX17U$C#^AiD{-s2C1OOZXF(KdSJH+uy0@Q)<`&*R*Bf7n)50=%1hh)zqlKW3&RT zt!LelCKUc9x(q+lpWp_@`&;MiPhiI5GE;&(R5cFscSR!+^G6qcOUwTnE&s37pzf`! zjwJ%k76K&jpCxcFHP3$jE=L=N%6_xjjDM;vxKs7To5_=S2=++ypv!-*DaYlE_oWUq zI+86&SpEnto5yOD#^YQr)-&rXskTV7D*(Y$0vgY9b%$0}D(nb_iD9{3=Z)XL-QQIU zdk99GGF-v1;6#5{bTZM^Cy##5_Y!_>s;jRlnlA^CgzAMa`NNk`^jp>JDURUK<$o=2 zJ@4`7nC0)Ph20ki$F^WvMucAye(4E+8LiNxO3@2xN5U`U%=*gHg?Zz?Yb;|z?LGP5 z(FTwSGE^z1(~X{?Uco~3s5iK0E9N-#qKJvhe+D;qpdpBEgrxOKd2f1S`n?Bu@OXdI z7W?^AkyH2EK7vA9g2}uIx3Cqoy-LA$1O>kWl~_QR|0=rU|J9e)u9f!&^Q=T)n~&@4 zW}K2%|GpqCSNiwG@=JkL1Q_$nqr0w99Wh(o)jlVT%c%lLV5Z}ADuElQ1YC_kE5z8m z)vCI1rdm{XueuqZvr*M5Z?eatyWN0;O(lM{GxTL!{DdY@N;fak8S)=O_@TO zs==WUSn(61^E6cDFxScM)O!VeRqD3lz z1a>Mdio&_HC^ElbkqZf$54y}2h22)Fz7ro(d3LHg>^Do48dq;79DB_<9c|f~%gvkr zIS!?pccY-CAL|P;Z-N95GIMX#Ouxa`Y%{m1LfogO)qa$iBTlOjD1U0PKT#Qsp-S)S z6hZbdmDt3qyG(WJ`X7DFoNHB&J?cH=#agTJ@GU*8~Ghi@H@=l*iMS@!wq zx@6ss{_e~mF2BV3BK!?an-&1Z`zzTlrprR%U+V96G(oFU00Lc3g=y$TC-ivU@JqQ% zW{S;B+}TbrG8LyqIV$m$F2fC|!hhALC~2r)+`cunz|MZECzdbxzFEHbr`**;o2vB6 zc$1M9n3%vrvi#x&gv2|af}$_G>%jP}9_926N+UaC#;b?UVAQ^L)S6hAomBJZp zINPx8NN=&D5ll4&yc#Q1DPB~I@g%;$fAw<>SHjsBXBFF*U)TX_*BoINymygWzasO+ zSz_tM<(EWX)GWUYK2mtbEADB<&*;k)ty%#HQb9;ne*`^(1NeG0l|c0AquVH^3L7Z& zbCtpCSb@2SVXnTzdr(+|m;-wb!_K1*HD529jJ02n)>RcU;5M^})fabP6hKs$-{3Q? zFoU-Kao4{ejaIJ!1gRUq8g!)+*qLi%*f6fw+OsR|8d}GV%Hl7o98ai^v4H=rRC5|H ze>LNI4K03dwf;7WiwEhlE$LVB)kRvIJcw29jsy}BTOiNv4eE^xY*);uGLt7KI3my{ z6hJbbGFXr8t-@gjIEU6@D8qwJZ9P1o(z85Ic}~y@3jKR@i=S2bc!t~M_yH=oT`wlK zlaOyKD2~+_$?J78m&x3noogj6P27A*^oat966?#OP7RjuT>e6D=2rcHcfO7^Xmbi6 znZ$ep*5E*T2cx)42Bk#oU2b_$=%t?hYu?3W6pED;{Fy3-`RcsX6>qfmyYpojwZeC~ z9M0&|ETP^%xDkJ?3Y9Iw5 zjbWW$O@X`~f!_2F4x}yI)eOL~Y-XJ)B>8+-ns6tbAGMPzH73U6uSN-fZwp1ag1;G~ zHUCay8ql>Pvafj%c(R1t6H&H;=GWuR7aSRO~}RSj2-D7kHkYhnM}2q>Vio z-E0>Opr6o@N@0}k!+$&aJqp$6fN~6`V0Gczj#NV3DOidvRy8y}feo4edyAz~S&K3( z;pZz=XTQwW^1m1=)DnDzO^oH&QrxTfehFjx=e?)>heF(YUYEVB!XW1{DLN5=+ z&OZDh&)pY`AJN_CG0PSCf^q)++;~FI=5=vol~$zy1UnWTjmFQ}$j@dQ+m?-H0Z-y( zE{oatU!%4Ah6>?h|Kl0Odsh8W^rw~U#7KG|8+=z@!T5hv0{+KpkiF8R#cFS$J^vER zRg3~Y4Ga8Fq=g(071B7Kv*a~KbJ>l*IEKn7^ZoXXA!jWDFPVK&0MSS8t>*oElHtt* zstj{olCODabqYW*quAs+U~jt5H*<4@XNBWW&EH4?kObKaTwdkg|8UueH8ARPFN@qN zT}d9a#xUgDuEvUy|5ff+Sg_m?z|~dlo-_ z-#*M!_$9yZO)AIGo{u9s&DUVEfSG`PbjPRA8~6?zf4xa4*uW%d^g6A|5}xQ&Jli!~ zR;X%jzumHDf)!84=3@{&hV6OG{dq2O5IbQmVw{iq2(U<2=oR43le zFz6-yP~(+}j_lE@6@cJ*14TI5D4fGqHJa{kqfV%=5Zd7J#b4GRbf%R;3 zFY_M!hu+Mr_BHF$Xi1Lc8C~b^PKj6{{KRKHP!Fehq{gPDk){EkEYO;Fg2sj$Xy-yr(H{rFqrK<9J22iLn()>>AVq!jT; zj4#43{UH%s4X^h+arJE;7O3s9QcXd%|CS?1vHBRLTete9)1!Wg+a$l+^$@HUekMP!Hej1fjX%|l#$`of2?PxO~uDzrZMfkB(#;nT1QBwv z@N%`p&5wB1q=1JnE0xAVHn7|DeRwYZj-#c~CKW&ebK9j8?1!&>&o2G!XkD^yh`-xW z7x6>H+KZ(ZKP94@PZwW0JwKwgf0BPbM-^h8%j&mm+Oz_&mVv-a_jSYUspHIN?;dF@ zE6$^lbKZa;cU}ZtTzu)rm#Y%J55I!e{&`94Q31Tf?^&d0Vw3;2qXpBZ6+i;U;tG?H zXG^iI)%cUO7{#4E8G}pnZy(5=78hUAjfv;!C*t~$t-zatOA@Gx@x8^n%3zA>fX}fl zVrq&w0*=-~yHEhhNRI)=wD}Jc^fgzqZ0U_y+2jAtA)%+$i{v#cMqVzcn&iE z2{8UHM$g!k7$L57&fg$CDyBQY;raFZHsoV z0P5nE;10un3=Q^11@^Gz*p06;kyUqH#_J^&0iqBj(v3V2IRtWtlI!fns>>q#5|&<; zh<8#FcvKWp6}gFD@iv#wcy90N+4x8N6OOh_#AeezFsCpiD8LBDyCdis9L6xAH^pTq zRHLu96hRrrB1%A%LBdOrbxDyWwv*TEBC&Yl4v4i*-j-Jpa@i*Wo=^f3!>4iAd@H|( zzxN5hMjrdMP#L_!?PdBtyc7SFqrH$uQ)*wBGqD|Cx=`TzQ&@WNbyq5dV<=2xDZ3)R zaq4;o36G&6k}bQuCT|Og?KJNa52=z$>7yCu!0 z)qXJ-(k`z@H@f2;R1CctCy%FKjo=mSMu9J~7Q?vSSJwF&|1VAfB{H8XBc5LffN! - - - LizardByte - Sunshine - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - -
-
-
- - -
-
-

- Sunshine is a self-hosted game stream host for Moonlight. Offering low latency, cloud gaming - server capabilities with support for AMD, Intel, and Nvidia GPUs for hardware encoding. Software - encoding is also available. You can connect to Sunshine from any Moonlight client on a variety - of devices. A web UI is provided to allow configuration, and client pairing, from your favorite - web browser. Pair from the local server or any mobile device. -

-
- - -
-
-

Features

- -
-
-
-
-
-
- -
-
-
Self-hosted
-

- Run Sunshine on your own hardware. No need to pay monthly fees to a - cloud gaming provider. -

-
-
-
+
+
+
+
+
+
+ Moonlight
-
-
+
+
+
+
+
+
-
-
-
-
-
-
- -
-
-
Low Latency
-

- Sunshine is designed to provide the lowest latency possible to achieve optimal gaming performance. -

-
-
-
+
+
Hardware Encoding
+

+ Sunshine supports AMD, Intel, and Nvidia GPUs for hardware encoding. + Software encoding is also available. +

-
-
-
-
-
- -
-
-
Control
-

- Sunshine emulates an Xbox, PlayStation, or Nintendo Switch controller. - Use nearly any controller on your Moonlight client!
- -

    -
  • Nintendo Switch emulation is only available on Linux.
  • -
  • Gamepad emulation is not currently supported on macOS.
  • -
- -

-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
- -
-
-
Configurable
-

- Sunshine offers many configuration options to customize your experience. -

-
-
-
+
+
Low Latency
+

+ Sunshine is designed to provide the lowest latency possible to achieve optimal gaming performance. +

-
- - -
-
-

Clients

- -
- - -
-
-
-
-
- -
- -
- Official -
-
-
- +
+
+
+
+
+
+
-
- - -
-
-
-
-
- -
- -
- Official -
-
-
- +
+
Control
+

+ Sunshine emulates an Xbox, PlayStation, or Nintendo Switch controller. + Use nearly any controller on your Moonlight client!
+ +

    +
  • Nintendo Switch emulation is only available on Linux.
  • +
  • Gamepad emulation is not currently supported on macOS.
  • +
+ +

- - -
-
-
-
-
- -
-
-
- - iOS - -
-
-
- Official -
-
-
- +
+
+
+
+
+
+
+
+
-
- - -
-
-
-
-
- - - - -
-
-
- - QT - -
-
-
- Official -
-
-
- +
+
Configurable
+

+ Sunshine offers many configuration options to customize your experience. +

- - -
-
-
-
-
- -
- -
- Official -
-
-
- +
+
+
+
+
+
+ + +
+
+

Clients

+ +
+ + +
+
+
+
+
+ +
+ +
+ Official
+
+ +
+
- -
-
-
-
-
- -
- -
- Community -
-
-
- + +
+
+
+
+
+ +
+ +
+ Official
+
+ +
+
- -
-
-
-
-
- -
- -
- Community -
-
-
- + +
+
+
+
+
+ +
+
+
+ + iOS + +
+
+
+ Official
+
+ +
+
- -
-
-
-
-
- -
- -
- Community -
-
-
- + +
+
+
+
+
+ + + +
+
+
+ + QT + +
+
+
+ Official +
+
+
+ +
+
- -
-
-
-
-
- -
- -
- Community -
-
-
- + +
+
+
+
+
+ +
+ +
+ Official
+
+ +
+
- -
-
-
-
-
- -
- -
- Community -
-
-
- + +
+
+
+
+
+ +
+ +
+ Community
- - +
+
-
+ - -
-
- -
-
-
-
- -
-

Documentation

-

- Read the documentation to learn how to install, use, and configure Sunshine. -

-
-
-
-
+
+ +
+ - -
-
-
-
- -
-

Download

-

- Download Sunshine for your platform. -

-
-
-
-
+ + - - + - -
-
-
-
-
-
Support Center
-
Find answers and ask questions.
-
-
-

- The one who knows all the answers has not been asked all the questions. - – Confucius. -

-
- -
- -
- - - - - - - - - - - - - - - - - - + + + + + +
+
+ +
+
+
+
+ +
+

Documentation

+

+ Read the documentation to learn how to install, use, and configure Sunshine. +

+
+
+
+ +
+
+ + +
+
+
+
+ +
+

Download

+

+ Download Sunshine for your platform. +

+
+
+
+ +
+
+
+
+ + +