From 335e9365087b7e7d88a1047314b30b1c9ae40562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Mu=C3=B1oz=20Solera?= Date: Thu, 4 Apr 2019 22:35:20 -0700 Subject: [PATCH] Extension structure and instructions --- .gitignore | 1 + README.md | 24 ++++++++++++++++++++++-- src/icons/128.png | Bin 0 -> 2144 bytes src/icons/48.png | Bin 0 -> 902 bytes src/icons/96.png | Bin 0 -> 1581 bytes src/js/background.js | 3 +++ src/js/content.js | 10 ++++++++++ src/manifest.json | 28 ++++++++++++++++++++++++++++ 8 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 src/icons/128.png create mode 100644 src/icons/48.png create mode 100644 src/icons/96.png create mode 100755 src/js/background.js create mode 100755 src/js/content.js create mode 100755 src/manifest.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/README.md b/README.md index caf9792..03d1d81 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,22 @@ -# close-figma-tab -Close Figma tab if you have "Open in Desktop App" active +# Close Figma Tab - Chrome extension + +The extension will automatically close your Chrome tab after the Figma file opens in the [Figma desktop app](https://www.figma.com/downloads/). + +## Install from the Chrome Web Store + +You know the drill +1. [Install extension](https://chrome.google.com/webstore/detail/close-figma-tab/oonojkdagfgjmempbfipokgjjigkoocj) from Chrome Web Store. +2. Go and open files in Chrome like crazy + +## Install it manually: + +1. Download the [latest release](https://github.com/mamuso/close-figma-tab/releases/latest) of the extension and unzip it +2. Launch Chrome +3. Go to Extensions (`chrome://extensions/`) +4. Toggle `Developer mode` +5. Click `Load unpacked extension` +6. Select `src` folder inside the unzipped folder + +## Something broken? + +Please, [file an issue](https://github.com/mamuso/close-figma-tab/issues) in the repository. diff --git a/src/icons/128.png b/src/icons/128.png new file mode 100644 index 0000000000000000000000000000000000000000..6048a838f7c50205d62df62433f46524906e04e2 GIT binary patch literal 2144 zcmX|B2{@E%8~$b(V;#ecbrxgLFt)LU3}*bs)?hNWn&eA45izz>4!%@OtBHo3oJgo6 zrx{6||8JpGmO3aZEkat*-?7tJ&-WkK^*`73-tTkY@AF*Gdp+-Sy~lY$z8b2AssI3J z`1^T>z&rH6rK|ws?9f>`03eU?xS<@FT3T9KTU*oVbQsOe&0%U~Wd-{%G8hc(KekR` z1wMs^bw^7}%goGd-G|dD6v}!qtZQp)uj9J%|3sL=N3g*PY(ye)y)KM!JZ$DHXOl3m z1%Zo&hmSNOXuqHID%+%(|9LuyY?@G@dp4#oBo$Y?uM-Sa?LJ~_Yip7&aj~&H8q^u- zo<+!spnLd4Ihq^ZUB%<^hK7cuORtRcr8pdpk}q9bTWe}+f-8zdBGUvBhe6jn8w0v; zg0Hd3&S&r5y~D%9gzN}1nT)xU>F>PLK(sy2ZNnCO3#=@SL?YGH)R_D7X*_T`X~$)L zz)p8pVa61VM$7VH`8YZd>pt=9=|=H^^o@2#@mylv2$f1D5C}<}%VsfI{?6bYuM!Ji zzJVypEWrH=+l0_KNxJmfINEnDHHMm9WfIDsoSgJ#(A6L3NP>MY9>^&uD6n*L&G3`* zT{qsmdDFqh74E#N9pl<&$Io0N4-b#h($ehB_d3Gj&3WLx?OUq0uIcINWo)^Z+- zJ6)dS<$f%7?@8WkvzSAa!n+s3r%g;uE_j+^8&X?aTa$BExm<4gwocxrq~n{t4<0=D z;>8Q?+I=M@CAGD+1_e?3U1?Hq+bLeZ`lB4oe=`oWMd9UT(7xn;bpC5O<5Q ztmx+4ZZV^xyCRuaSRsX2jKW~);KvQ^-2i~v=I_l8&3ya)f?Po0=tH+l%#_$?!ne_N zbfh9fF_Mk2z=y;k1hdy_SQ2u0LSnspz2p@+oFB{_**AHAB6D!zuy)PNLOZU=;70Mv z{(-WAZ1VRd{!;JKPhT#)8TcBn(-wL22i4Q~QS^?KTOXN^PkzNcSx%cF%~wcXI1mHP zZD`EZUee6hCI9fCFkWX}>d%sgR(e&qg9P+v9v5U*~Hr@x8eJt zKQ4mhtxLb{&>qt`zxc(bE<2+&*7VpsBitJJH@7-ab8bF~;;{YYyE`S-SKDVxGuifT z%1uFfJ)U#V-RyR$+5ltqrt#rsYCkO}jOmIwsw0Y(ejgCwm2<_af)xhG5oMIH{K;|S zDyUG33q1TPcsYF)qGl->EO3`J%~npGi$-NBj4t=~UR7yta)RWVDX2ss@mIv5)uKIz z30^PN=7o)~fDRVL%( zEl2`QMUTZ+AMuQ~b3zsazayGzg0nOQRzIL`oS|bpffpB z^MF#l()OpqPg>EAG*HYvwuhfmU`- zGmfk1pz<;R6FIXBuM($`dURueMr1FRgREU)9zSibKt4l7oDMzl-@Hgx7GC9QpkgBq zhXDx?YF2SBGc^1kQDa=YSf>X<5tYYrXK|BUyjp*OVtom&=M0Le1$6Gl>>3DNW;06ckGZB ztS;8z@r3ad@UzM|>wt=nTQ%x#K8oc$Z7RkC$smGsxn0Rm6%vSn{^H*&-Kbd)-^){PYz$3B*Gxbroq47mzn-VMR zhQn)XPfKA(_vELy&1-dem)=J4>hy;jGvw|k?8b>Q6{(bKckD`!le+-*rjZx<@LNh< wKv%I&N=z&!rfuzO!xf6}DP&P3qYMWYKx^zi+S*~hQm4<`4kB^VO zzW%9%5GzA{>CGQ_j?^7+RebpHp?s#VvA*RNXC>*{@GV=mY~8w5vLjZ@%&^+cL9up` zv7V)5d#rr_o;+hzhH(2hx-oi-xu_spHRO+VZr+S2Kf{2C(NHOVDHmV0*r=Zo-U3d6>&>1 zhEBh2AkYwa^rp(}yK3F7k~jH28yOoaX@UUS(9PDBg6Eb%#ijoHj$i zlR4sy3W^5|q?jh!o`0SzU^uOFab@$}C*_rwr%7*m@%~>-+_z7yIa!CT4|C}|Otb%^Tq<{FAB?9@hX+2lmP72>oz-;KBdF;*svdN1S^Pr}Nhs?)wtXuh3^{YcFAQ&}}^-3=!gw zCmtv>m6BNR#`1kp)6@SqHY{hIJ~2w&U>%DlW7~!6QPOJ`8g+M0`X}md^Fd_lQOVa; zuUfCY$$8DbYPZ(GttxFg^Aa~rk-RYR~0Zt=$x af7ue3Fm2;x^Kg(d>>YUwk-sipdxzBsfd++<6yHhHOcCd4| z0|3B5v@A-7?DGE>294k~VFi)^C#5k70wi?)U<*DNolb`!h{0eW7!VME;71-|a5x+y zM3BW|Ata4PLr6qVp-_+z@exD>|DQq}M2r~X`1|`KSwxJ;NF)-meG1!CN)Ho~boV@( zt{+%2?Ojmqxh9sekgG|t(D)(rMM0rKLUth6H%qy9`Gj5nc1mR@q|Z<0DRY+A_+}M* z?Pw#GCT|sYeNvZ8(v4$Jm-;Bwo|T>Mo#w@#3E51p$3_{s_8g?&NGwfqJXz$?G*lw) zl838(6cuv5+CNOVD}HE~bSNjXrd-muH(`RfH7S_M#c9{#>vHjRIXRKYePW31&xu=; zo%I`Czt3_!QS`AuCX+d_CUsgu_Vx807I|9ovnFCZU0q$r#>Olb3n!2vT*&T-obTr5 zR>|{4N)`sQr>3T+*JZf4xRfoX4h{~g)oL=CoSK^2l_taE@g5!?1Oh=R_LZ(~v$Z6pEU-Xl@{b$Kyq@=vu8-z@mqRg|#I~s8niN zT3R8;uR1Qer>Cb+o}d;-wY0Q^1~Jv2NBUmgvL1P9zXF+LInX`YZIbi*DN?8n&a3RN zf~qK)RS$U=kEBz zuuY8#LUN7xA?h2uGdesKbo%!7{h|D+wza&b*$rc_J|%y7N}pXP<<7ehuzd|##>}*} zRWoI0HySet7Zlzv58c@&HuRRh=gAhKSLDm@7^}x_c}2ps3gjjQ2*Oaw~Gm zI5|>t^K5x;*saU+kdF}~p9x~$3HQM^J7PEn+N?!&6}Z_wcZHNJ!IFNPJ?ieV!nSsM z&(Yx$uUdJ3C_nq)#L2_(#2n|T>T6H`AhU(FYSmlNy?&s21N?gTC|;TW7yeb1rXnZ9 zwsYooQN)sio7=sAJIR1%nKuVC<`NXXtm3)mfTne%(xd|e=f3>OI<6E{h^!0Jc>L0e zXFDIAI;SJtdxRQl_Flq^U$QUN&Uk1MG-stF-n#PY%_%EE{|i-Q)t1EXbj4gnDD(&| z2{u0ZBQ$D>?wJx`q4Qp<0O|`1nCZz0L9KjiXmZv!JJq>^yQQvq`}f1MiL2%XUwQ%9 zV8J(yo6|#L!N6A447C=O(A(gM%|QF0j2CCFr*J-X<20Dl%ulahDs-u60Gt? zaBNiBmoDlUiy$@?d-w`fIwqh zRmgIt3F5gOPpwzo_`SkBo@dfJhrc-fZqq;d!V`|w)+5i`O#)5K5AeIZ2iE@J%CXbu z(NiTY@MGmys^xJ31JihP>@~yQuM7zeMV=^<7V`$mn-6?J8?m=~Vh<$Rh3tSENCp{j z&%aJ_M#Y_2W)I_fbwv~4=U|l>HR3{Wlm5I2E$41Y@84&0^)9L=zUo!O-|%|#@u`{l zvFkQR)SmpY&2Hr{gZD-z%?H-JHO2lk-O{XIkSMhlT)ARXfIm_v@}M<$)3pwG=jC4M zjd0eHgSLmg8_UWbC(V#Q6Z|Mmi9-+c(f&Lf+>|uXeSUH^u+|~yRQS4F;s{^6Kl9uX b4Re?|`Xr_$raoprG7SKcKoa%qQhC|GGBJV@ literal 0 HcmV?d00001 diff --git a/src/js/background.js b/src/js/background.js new file mode 100755 index 0000000..580ecb9 --- /dev/null +++ b/src/js/background.js @@ -0,0 +1,3 @@ +chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { + if(message.closeThis) chrome.tabs.remove(sender.tab.id); +}); \ No newline at end of file diff --git a/src/js/content.js b/src/js/content.js new file mode 100755 index 0000000..63456ba --- /dev/null +++ b/src/js/content.js @@ -0,0 +1,10 @@ +(function() { + // Adding a delay before chacking + setTimeout(function(){ + // Check if the desktop interstitial is open + var interstitial = window.document.querySelectorAll("*[class^=\"desktop_app_interstitial\"]")[0] + if(interstitial) { + chrome.runtime.sendMessage({closeThis: true}); + } + }, 5000); +})(); \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json new file mode 100755 index 0000000..b01fda8 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,28 @@ +{ + "name": "Close Figma Tab", + "version": "0.0.1", + "manifest_version": 2, + "description": "Close Figma tab if you have \"Open in Desktop App\" active", + "homepage_url": "https://github.com/mamuso/close-figma-tab", + "icons": { + "48": "icons/48.png", + "96": "icons/96.png", + "128": "icons/128.png" + }, + "background": { + "scripts": [ + "js/background.js" + ], + "persistent": false + }, + "content_scripts": [ + { + "matches": ["http://*.figma.com/file/*", "https://*.figma.com/file/*"], + "js": ["js/content.js"], + "run_at": "document_end" + } + ], + "permissions": [ + "activeTab" + ] +} \ No newline at end of file